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

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

help-circle
  • 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.




  • Thanks, I thought about something like that as well, but figured it’d be more hassle in the long run. I like to keep my mail in one basket.

    But honestly, I feel like there just isn’t a good solution anyway. Email comes from simpler times and any encryption is bolted on and either awkward to use or has some problems with functionality. Hell, even Proton’s bridge was a pain to get running properly with send-email because for some reason it insisted on reformatting outgoing mails. I honestly wonder if I should even bother at this point, because most of the stuff I use email for isn’t even private. It’s mostly corporate communication and mailing lists which are public anyway. All private communication goes over other channels (and some of which are arguably even worse than email, like Discord).

    Not saying that this is the conclusion everyone should come to and YMMV, but spending the last weeks combing through the email landscape this feels like the realization I’m starting to arrive at, because I want my email to just work.