So. It really comes down to a few things, right? Number one for me is the “economy”. Quotes intentional. The thing is, right now, the stock market and thus the “economy” is being held hostage by these bitches. Nvidia’s valuation is absolutely sky-high right now, and all the companies that are jumping on this bandwagon are getting their valuations pumped as well. Why is this happening? Well,…
If you need a single shell script, you just use writeShellApplication , but if you need to download and chmod +x a set of shell scripts, what do you do? TLDR Use the posix shell function makeWrapper in your installPhase to patch every .sh file with --set PATH "${pkgs.lib.makeBinPath [ pkgs.curl pkgs.coreutils ]}" (or using whatever other packages your shell script needs) Take makeWrapper as an…
So you want to wait for DNS to be functioning before running a systemd service. TLDR Add Requires = NetworkManager-wait-online.service and After = NetworkManager-wait-online.service to the [Unit] section of your configuration file. For some reason, every time somebody else asks ‘how do I start up a systemd service only after dns is available’ on the internet, nobody will actually give a real…
Say you only want to use firefox with your vpn, so you can watch your favorite region-locked shows. Or you only want to torrent over your ethernet interface, since you know it has a faster connection (while everything else can use wifi). Well then this is the article for you. While trying to do something like this for myself, I looked at many different articles, but none of them worked for me.…
This semester, for my undergraduate capstone, I wrote this paper about the Matrix messaging protocol . It is much more formal than most of the articles I post here, and quite a bit more dense. I hope that it’s still enjoyable for all of you, and I just wanted to give this disclaimer at the beginning so that y’all readers have the proper context for this. I also have some more thoughts about this…
A few years ago, I wrote a paper for one of my undergraduate classes regarding iMessage’s security. It’s mostly a deep analysis of the various moving parts involved in iMessage and how they could be used as attack vectors. It wasn’t peer-reviewed or anything, and I haven’t edited it since I sent it into my professor, so there are probably errata here and there. In case anyone is interested in this…
I just thought this would be fun and silly. Don’t take it too seriously, but feel free to criticize or share your own takes, obviously :) Without further ado, the tier list (made with tierking.com ): Rationale S clone : It’s so important. You gotta be able to clone data around, and you gotta be able to restrict that ability. Crucial collections : I use this every-fucking-where. Gotta have my…
Introducing kathy : a library for zero-cost, const-evaluatable, swift-style keypaths in rust. A bit ago, I was struggling with how to write something in rust elegantly , and I remembered using Swift (the programming language, of course); specifically, swift’s keypaths. For anyone who hasn’t worked with them before, it’s basically a way to index-by-field, instead of index-by-value (such as you’d do…
I’ve referenced it in some previous posts, but in case you haven’t heard: I’m doing a series of blog posts about trying out different system configurations for my laptops, and article this is the third installation in that series: nixOS! I’ve heard a lot about nixOS over the past few years, about the single system-wide configuration file, the massive package index, the nix-shell <pkg> command to…
TL;DR : cargo-restore is a tool for migrating your cargo install ed crates between machines, using the data in your ~/.cargo/crates2.json file. How did we get here Recently, as I mentioned in a previous blog post , I’ve been moving between systems a lot. I regularly switch between an x86 machine running arch, an arm mac running macOS, and that same mac running fedora asahi remix. And (once again,…
This will be the first post in a series of 3 about trying out some new linux distros, basically. I also built a fun tool for helping me migrate between these systems, so I’ll talk about that in part 2. For now, let’s talk about asahi linux! So I have two main computers that I use: a Thinkbook 13s that I used to only have arch linux running on, and an apple silicon macbook pro. And I always felt…
Well, I’ve wanted to build a blog for a long time. Having a place to post long-form rants about various programming or tech things has always been something appealing to me, and I haven’t been able to find a good alternative to just building my own thing. Something like tumblr seems nice; it has a built-in way to share your posts with people who would care about them, and a very easy-to-use…
Since Rust 1.51, Rust has had support for constant generics. For anyone who’s not familiar with them, you can check out this overview here , but the TL;DR is that they allow you to do something like this: struct ArrayWrapper<const N : usize , T> { inner : [T; N] } This allows you to make structs that are generic over constant values, not types. N in the above example could also be changed to a…