721 karma · joined May 3, 2018
Will test forgejo's CI first as we'll use the repo anyway, but if it ain't for me, it's going to be jenkins I assume.
- It doesn't shut down properly most of the time, I have to cut the power ; which I do anyway to go to sleep but sometimes I forget after I use it in the morning before going to work, and it stays with a black screen and the fan running all day
- There are a lot of updates, a few Gbs per week, and I have to type my password several times a week (even when logged in), I can't find how to change that
- Sometimes after an update I'll lose an icon or two, or some settings like scroll speed, etc ; not a huge deal but forces me to google around to get the setting back
- Lots of apps are in flatpacks or snaps, I could try some other repos or maybe nix/guix/pkgsrc but I would lose the appstore anyway so I might as well look around for something else
- Some things seem painful to setup, nvidia drivers, incus/lxc, zfs on root... NVidia was the most important and I managed to make it work well now but didn't bother with the rest
I remember a long time ago one of our client was a bank, they had 2 datacenters with a LACP router, SPARC machines, Solaris, VxFS, Sybase, Java app. They survived 20 years with app, OS and hardware upgrades and 0 second of downtime. And I get lectured by a 3 years old developer that I should know better.
But mostly what happens is that a move isn't so good, but it isn't so bad either, and as the computer will tell you it is sub-optimal, a human won't be able to refute it in finite time and his practical (as opposed to theoretical) chances are reduced. One great recent example of that is Pentala Harikrishna's recent queen sacrifice in the world cup, amazing conception of a move that the computer say is borderline incorrect, but leads to such complications and a very uncomfortable position for his opponent that it was practically a great choice.
More recently in a new gig I'm finally able to install stuff on my machine (with homebrew) and not just work remotely, wanted to revisit my choice between (neo)vim and emacs again, but I guess muscle memory is too strong and still chose the former, although trying emacs I can tell that it is maybe even better polished now with the package manager and everything. Turns out neovim has the same with lazyvim, mason, etc. Just a bit more friction sometimes maybe.
My main pain point right now is the lack of tooling for devops/sre in general. Yes we have LSPs for ansible, groovy, terraform... But they do not cover the entirety of plugins and modules that can be used, and I'm not aware of good tools for testing and debugging. Yes there is teamcity but that needs a license and I can't have that at work apparently. I don't think it is at the editor level though, just the ecosystem is lacking.
BUT as from W11 which I tried for 11 minutes, I switched to Fedora and didn't look back. Everything felt buggy, start menu taking forever, buttons switching places, apps wouldn't start but then randomly would, and of course ads. I know there are debloat scripts around but didn't have the patience, I felt if I'm going to try a new OS I might as well try Linux before buying a Windows license.
Now Linux has its issues, the occasional icon disappears, sometimes shutdown doesn't entirely shut down the machine and I have to power the machine down (electrically from my outlet), sometimes updates don't go through, and of course I miss excel and a couple other things (although I was far from a power user and OnlyOffice fits my needs). But it's still better and with KDE there is almost no config to get a similar "feel" as W10. Amusingly I actually use MORE apps now that I trust installing new stuff more.
That said I would probably pay a premium to dual boot occasionally on a supported Windows OS without bloat, probably it would be my default boot even.
int * p;
int *p;
int* p;
Now remember that the type is a memory address. I'm sure it is semantically wrong for whatever reason somebody will explain but it helps to think about it. So you can do : int my_number = 6;
int* p = &my_number;
Both sides of the "=" are the same type (int* is an address, and &my_number is also an address, the one of my_number).Now p is a pointer (or an int* or an address), and *p is... an int ! So this is totally valid :
printf("%d\n", *p)
and for anything else than int you need to malloc that so you will see a lot of : my_struct* s = malloc(sizeof(my_struct);
which makes sense because malloc returns an address (the beginning address of the content of s ; yet again somebody will tell me I'm wrong to call it "the content of s" so sorry for that). my_struct* // is the type of s, it is an address
my_struct // is the type of *s (some custom type of size sizeof(my_struct))Disclaimer I'm an SRE/sysops and went through a bunch of those projects where sometimes entire department see (often shadow) IT from contractors as the only solution moving forward.
I also got some cloud credits from my employer, but a bit paranoïd about putting my data there (although most of it isn't sensitive).
I also saw a bunch of C-levels being total sociopaths but that's another story :)