I wrangle code, draw pictures, and write things. You might find some of it here.

  • 3 Posts
  • 176 Comments
Joined 9 months ago
cake
Cake day: March 13th, 2024

help-circle

  • I use Posteo for mail and calendar now (they’re not encrypted between users like Proton but you can just hook it up to any mail client and PGP your shit) .Mail is IMAPS, calendar is CalDAV, contacts are CardDAV, etc. Depending on where you fall on the security-convenience sliding scale, that might be an option. I’ve decided that I care more about portability and standards than super-thick encryption which made me choose them over Tuta, because Tuta offers no way to access the mail over IMAP whatsoever, not even an optional bridge like Proton, and that was a total dealbreaker for me. Posteo also claim they’re 100% green energy which is a nice bonus.

    For drive I use Filen.io now. They’re relatively new so I can’t make any assumptions about how long they’ll be around but the price is fair and they offer lifetime payments too. Also their Linux client is pretty solid and doesn’t fucking eat my RAM for breakfast. They’re also in the process of adding support for rclone as per a GitHub issue I’m following.

    VPN I pretty much don’t use because I’ve never felt I needed it, so no recommendations there from me.


  • I’m a senior software engineer

    Nice, me too, and whenever some tech-brained C-suite bozo tries to mansplain to me why LLMs will make me more efficient, I smile, nod politely, and move on, because at this point I don’t think I can make the case that pasting AI slop into prod is objectively a worse idea than pasting Stack Overflow answers into prod.

    At the end of the day, if I want to insert a snippet (which I don’t have to double-check, mind you), auto-format my code, or organize my imports, which are all things I might use ChatGPT for if I didn’t mind all the other baggage that comes along with it, Emacs (or Vim, if you swing that way) does this just fine and has done so for over 20 years.

    I empirically work quicker with it than without and the engineers I know who are still avoiding it work noticeably slower.

    If LOC/min or a similar metric is used to measure efficiency at your company, I am genuinely sorry.




  • That’s gotta be one of my favorite Zitron piece to date. Ed managed to articulate some points which have been floating around in my mind for a while which I did not have the words to explain. Especially how using any form of out-of-the-box computer these days is just a completely user-hostile pile of steaming horseshit, and why I am anal-retentive about what software gets installed on my devices and how exactly my window manager has to work, &c.

    I mean, it’s probably because I’m an obsessive nerd, but the fact that it makes me feel in control when I can rip shit of the source code that bugs me (or put shit in that I miss) is a major factor, too.







  • Day 2, Part 1
    use strict;
    use List::Util qw( min max );
    
    open(FH, '<', $ARGV[0]) or die $!;
    my @lines;
    while (<FH>) {
    	my @report = split /\s/, $_;
    	push @lines, \@report;
    }
    
    close FH;
    
    sub in_range {
    	my $diff = max($_[0], $_[1]) - min($_[0], $_[1]);
    	return $diff >= 1 && $diff <= 3;
    }
    
    sub is_safe {
    	my $prev = @$_[0];
    	my $dir = 0;
    
    	for (my $i = 1; $i < scalar @$_; ++$i) {
    		my $el = @$_[$i];
    		if ($el > $prev) {
    			return 0 unless $dir >= 0;
    			$dir = 1;
    		} elsif ($el < $prev) {
    			return 0 unless $dir <= 0;
    			$dir = -1;
    		}
    
    		return 0 unless in_range $prev, $el;
    		$prev = $el;
    	}
    
    	return 1;
    }
    
    sub part1 {
    	my $safe_reports = 0;
    
    	foreach (@_) {
    		$safe_reports++ if is_safe @$_;
    	}
    
    	return $safe_reports;
    }
    
    print 'Part 1: ', part1(@lines), "\n";
    

    My part 2 solution didn’t work with the real input but worked with all the test cases I threw at it, so I couldn’t figure out what was wrong with it and I’m too lazy to debug any more right now.


  • Advent of Code is one of these things I wanna do every year and then I end up in fucking end-of-the-year crunch time every December and work for 10-12 hours and really don’t wanna code after work anymore.

    But hey, here’s a quick solution for day 1. Let’s see how far I make it.

    Day 1
    use strict;
    use List::Util qw( min max );
    
    open(FH, '<', $ARGV[0]) or die $!;
    
    my @left;
    my @right;
    
    while (<FH>) {
    	my @nums = split /\s+/, $_;
    	push(@left, $nums[0]);
    	push(@right, $nums[1]);
    }
    
    @left = sort { $b <=> $a } @left;
    @right = sort { $b <=> $a } @right;
    
    my $dist = 0;
    my $sim = 0;
    my $i = 0;
    
    foreach my $lnum (@left) {
    	$sim += $lnum * grep { $_ == $lnum } @right;
    
    	my $rnum = $right[$i++];
    	$dist += max($lnum, $rnum) - min($lnum, $rnum);
    }
    
    print 'Part 1: ', $dist, "\n";
    print 'Part 2: ', $sim, "\n";
    
    close(FH);
    





  • That was a great read.

    The point of all of this is to say: the tech utopia fantasy is truly dead to me. The image of the cool, hippie, leftist Silicon Valley tech is wrong.

    I feel this in my soul, because I was that leftist hippie who got into tech because he believed all this shit and getting disillusioned over time was just fucking painful and made me hate those goons with a passion.

    The straw I have left is that I’m not alone and that more people realize this and we make our own communities again that don’t suck. There’s still a long way to go, and Fedi has its own problems, especially when it comes to kick out the racists, sexists, and other bigots, but I try to stay positive that we’ll get there. At least to a degree.

    (I mean, we have Awful and it’s an example that you can keep the bar nazi-free if you want to.)


  • Seems like they’ve actually done this now. There’s a preface note now.

    This topic was chosen based on the technical merit of the project before we were aware of its author’s political views and controversies. Our coverage of technical projects is never an endorsement of the developers’ political views. The moderation of comments here is not meant to defend, or defame, anybody, but is in keeping with our longstanding policy against personal attacks. We could certainly have handled both topic selection and moderation better, and will endeavor to do so going forward.

    Which is better than nothing, I guess, but still feels like a cheap cop-out.

    Side-note: I can actually believe that they didn’t know about Justine being a fucking nazi when publishing this, because I remember stumbling across some of her projects and actually being impressed by it, and then I found out what an absolute rabbit hole of weird shit this person is. So I kinda get seeing the portable executables project, thinking, wow, this is actually neat, and running with it.

    Not that this is an excuse, because when you write articles for a website that should come with a bit of research about the people and topic you choose to cover and you have a bit more responsibility than someone who’s just browsing around, but what do I know.