I think it has been about 1.5 years since my last blog.
Some more patches to Firefox by me has been landed. Have done some coding on Github. Nothing really finished, some started... i guess my Gentoo deploy script is the thing closest to be finished.
Wrote a kindof bruteforce sha256 resolver but its not smart, and definitively not fast or optimized. Inspired by the likes of Folding@Home, i thought i'd write a general Worker that you can use do do work of your machine and on a worker-server.
Then i started to look into how difficult it would be to write a SSL library in C (TLDR: hard!), without using openssl (because, even though openssl is used a shit ton, the code is, in my opinion, a mess) Found a nice python example, but because it is python, the lenght of the variables does not really matter. Which would be a problem when using C. 100 character integer variables is not possible. So again, i could have used the gmp library to handle large numbers in C, and again i felt that their things was kindof a mess. So i wrote my own, which works, but miiight have some memory issues. And when using it in the ecdhe formula, ill get some weird memory issues on my Mac and segfaults in Linux. So that has been dormant for a while.
While looking into the ssl parts, i dug around all over the place, finding good examples of like ecdhe implementations in C. After a lot of digging i found myself looking in NetBSDs crypto source and realized it was really well written. Started looking into that more, and understood how nice BSD is. The fact you can compile the whole system (kernel & userland) from more or less one build command. With NetBSD you can even very simply cross compile the os to a different architecture without much of a problem.
And that you dont have a large number of distributions, is in my mind also a plus.
But where BSD Really exceeds, is their complete Guide, Handbook or FAQ You really can find most stuff you look for how to do in those.
The three major ones, FreeBSD, NetBSD and OpenBSD all overlap, but exceed better in different parts. FreeBSD focuses on server and desktop, NetBSD focuses on beeing portable and OpenBSD focuses on security. But in the end you can use them all for either server or desktop or whatever. Free and Open use pkg as a package manager for binary packages, and have a ports tree to compile things yourself (ie tweaking features to packages) Net uses pkgin for binary and pkgsrc for source related installs.
Parts where they lack, is for one, beeing forgiving. If the user is a dumbo and does not realize that if a host resolves with a ip but does not respond to ping, icmp might be disabled (took far to long to figure out that) Disabling ipv6 in netbsd virtual machine, will increase speed a ton. Machine learning with Cuda is a no go.
The plan i had for the summer, was to migrate my Linux machines to BSD. Probably a mixture of FreeBSD and NetBSD and some Qemu virtual machines, where i will have some linuxes
I do sometimes add patches to Firefox and took for granted that either free or net would have support to build mozilla-central without a problem. I was wrong. None of the BSD’s are Tier 1 supported OSes for Mozilla. Meaning, they dont have test machines to run automated tests on, and meaning that building might be broken at any time. Which they are now. Though, following how build support was added for open, i have successfully built on netbsd-current as of writing this. Will reprise that for freebsd, and i believe i might just have had wrong config in my mozconfig file when trying to build on openbsd… Key problem was, use GCC10+, use Clang 14+, newer version of v4l and generate gn-configs
If any of the above is wrong, then keep the thoughts to your self and move along. I dont care.