346 karma · joined September 19, 2019
hackernews@andrejradovic.com
Consultant in the finance industry (hedge funds). C++ / Python / C# / DevOps.
Used to do embedded development professionally, now only as a hobby. I also self-host stuff as a hobby and have a k8s cluster at home.
Amateur musician, music lover, audio effect enthusiast, cyclist (just for fun, no racing).
After a gastroscopy, they concluded that it was just stress and nothing else, but inflamation wouldn't heal on its own, so I got pantoprazole (PPI) and stopped ingesting potentially irritating food (caffeine, alcohol, spicy food). I also shortly changed jobs, which alleviated the stress. Mind you, I never had heartburn, just pain. My condition didn't improve for a while after that, until I stopped drinking carbonated water (the only carbonated beverage I consumed), that fixed it in less than a month. After that, I gradually weaned myself off of pantoprazol in 6 months.
There literally was no other probable cause except for stress (I was stressed, wholly self-induced), and after I switched industries and no longer felt that I'm wasting my time working for peanuts, the PPIs helped cure the symptoms.
Establishment politicians in Europe, on the other hand, pretend to be nuanced, tolerant, resolute... But it's all a charade for midwits. It's as disgusting and dishonest as as American politicians' partizanship.
Dark times when "authoritarian" Chinese sound reasonable in comparison.
Figuring out HTML was not too hard for me as a kid. Things enclosing other things is not a hard to grasp concept. I didn't use CSS and back then you had <center> and stuff; nowadays it's frowned upon as mixing up semantics and presentation, but back then it made sense to me.
But doing any sort of programming (like at least writing batch files that had ifs and loops) was way harder and it took me several years to figure out.
Like, we had a channel (https://en.wikipedia.org/wiki/RTV_Palma) publicly broadcasting porn after midnight (I don't remember watching that) and all the older (~15YO) kids around the neighborhood were collecting porn magazines from who knows where and hiding them around in "caches".
I remember all the older kids being really excited about it, and us younglings being curious but grossed out. There was some pressure to pretend you were interested, kids love pretending they're more grown up than they are. Funnily enough, I remember having the same feeling about football world cup, like not getting the whole fuss about it, but being expected to be interested.
Couple years later, I naturally found out what they were excited about... For football I never did, though.
I wish we could have real conversations about how to solve this issue, and not bury our heads in the sand. I'm not proposing any particular solution, just for our collective attention to the problem and liberty to discuss solutions.
People seem to think "oh, I'm paying my social contributions, that should be enough for my retirement", but the whole formula really doesn't factor in a sharp drop in workforce we're about to experience. We're papering over the monetary deficit with credit all over the world, but that's not feasible long-term, and the "who's actually gonna do it" aspect will become much more important. Writing a check doesn't change the senior's diaper, nor anything else.
As for practical solutions, first you have to make it possible for young people to obtain real estate again somehow (crucial), then to subsidize kindergartens / child care of all kinds heavily, and only then go more radical.
Another radical angle could be some sort of education reform where people are somehow incentivized to do all the post-BSc education in their 30s instead of 20s. How to achieve that without horrible side effects is up to debate. Subsidies for parents on every corner and every aspect of life (including education) would probably work, but how much is the optimum and how to implement it is a serious question.
The only "allowed" solution is importing people from poor countries into richer ones, but disguised as something humanitarian, taking in refugees of war or whatnot.
My secret? I only buy hardware that's known to work well with Linux, mostly thinkpads, and I really don't do anything on the machine beyond coding and web browsing + some light CAD, so I never get anything with GPUs.
The extra strip of pixels below really makes all the difference, 3:2 is so much better than 16:9 for actual work, be it programming or general office work.
Couldn't care less about the 60Hz refresh rate, really makes zero difference for development and web browsing.
But if you're leaving because of abuse, you're both letting the troll win and potentialy opening yourself to more abuse.
If you're sufficiently enraged by trolls, you may overreact, and start supporting policies that are more damaging than the trolling itself, like supporting surveillance or forcing KYC on everything.
Let me qualify this by saying that I support reporting people for abuse to the authorities if that's a thing where you live, but I don't support asking for more surveillance just to catch trolls.
I see this pattern every day, on every level: "I'm being victimized and something needs to be done about it". I hope that people will think about what "something" is and make sure it's not making things even worse.
If you have some bored idiot on the other side, you leaving might encourage them to abuse you even more. If you yield further, then you've allowed yourself to be shut out from the public Internet, depriving yourself of the satisfaction of contributing to projects.
My point is that you need to try to be rational in these (emotional) situations, and think about the consequences of your decisions. Sometimes the best solution will affect you more than the abuser, which feels really unfair, but the alternatives are simply worse.
I wish I could say that everyone should be exposed to some aimless and unfair adversity while growing up, it helped me grow some thicker skin.
But I've met people who really can't handle it, and exposing them to even a bit of it would be unethical, it wouldn't help them in any way. Some people are really sensitive, on the edge of mental stability, with crumbling self respect, or whatever other issues. Abuse like this does affect them significantly. Such people are the perfect victims for these immature trolls, and I really don't see a way to help them.
I remember hanging out on forums as a teen, and there was this script kiddie who would hound users on some local forums and IRC servers, both plainly insulting and/or threathning them, and trying to 'hack' them. He was annoying, but I was so used to these edgy insults and such that I never took them seriously (just a bit of roughhousing among teens)... Yet he was really successful in pissing people off and made a significant number of them leave. He was banned many times, but would just re-join with new account(s) (the joys of dynamic IPs every time you dial in). Took him years to quit.
If you're offended by things like this to be affected significantly (we're all affected a bit), don't be fooled, you're worse off than people who aren't. It's not your fault by any means. But finding a way to care less about things like this, if possible, will improve your wellbeing. You can ignore and / or react (which might make it worse), but there's not much you can do against assholes without ushering in censorship, surveillance, or making everythign worse otherwise. You can't fix other people, but you can at least try fixing yourself.
Frequently it's not packaged or some version was but the upstream build system changed an you have to do it yourself.
If you don't either benefit significantly from Nix's upsides (which most projects really don't), or you don't enjoy this and do it for fun, it's not a productive use for your time. If you can convince your employer to pay you to shave that yak, it's a net waste.
I'll stick with (neo)vim, though, I don't see the time investment to learn Emacs and build up a config as worth it + neovim with Lua and LSP works just fine and is rather easy to configure.
I just need to check if it'll work with my Thinkpad Thunderbolt 3 dock (or something similar, I can buy another dock) to output to 2x 4K (actually 3840x2560, so bigger than 4K) monitors. I can currently both power my Thinkpad, and connect all the peripherals, with 1 USB-C cable. It's not something I'm willing to forgo.
Intel processors of this generation are just not energy effiecient and run too hot.
Your predecessors had zero regard for C programming best practices, leaving you with a pile of supremely brittle code that just barely works, but you have to tiptoe around it in silk gloves whenever you want to modify it in any way, because of unreasonable standards on ownership, calling conventions, concurrency, whatever. They might have had a reason in the beginning, but now it took over creating a monster that no regular programmer can work on. They didn't think that the code will ever need to be multithreaded. This is no environment for a sane person. A young, inexperienced fool would suggest to rewrite it from scratch. You know better. The whole business logic of a working, profitable business is imprisoned in this pile of shit, and yet it's too far gone to continue forward with it. Nobody understands all the silly rules of engagement with the codebase. You decide to: 1) break everything into chunks, 2) write extensive unit tests, 3) use automated tools to fix the whole codebase yourself to some sane standard. Some of the automation can be just grep + xargs + sed, some is much more complex. Regex replacements are unreasonably efficient, but not omnipotent. The only sane way to fix 40k LOC at a time is to write tools that operate on the AST, find toxic patterns and smartly replace them. This takes dozens of iterations, but you can always roll back with git. You're not transforming the code incrementally, you're writing a transformer. Eventually, your fixers are good enough that they fix 95% of the issues, you fix the rest manually. Your company can now hire any old mediocre C dev off the street, and this dev can productively contribute to the rejuvinated codebase. The company no longer needs psychics, regular C devs will do. If they stray from the path, the newly set up CI with dozens of custom clang-tidy plugins swiftly puts them back in their place.
Your company is in a highly regulated space that has insane coding standards. There are (shitty) compliance tools that cost >$100k a year for your team. You're able to replicate 80% of the functionality of the tools, fix some issues and generate compliance reports from the code on this in ~8 months. Slap on some CI, and the bean counters don't even have to do anything but download the latest PDF report.
Another great measure is knowledge of (Linux) systems programming, this also tends to weed out people with inferior understanding of, you know, programming and deploying software on actual computers. The interfaces here are obviously in C.
There are many things that aren't congruent with C++ ability, such as general functional programming ability, or hiring for JS frontend or Erlang roles and such, but for most industry jobs, it's a useful determinator.
I don't know any good C++ programmers that aren't great and all-rounded overall developers. I can't say the same for any other language or technology.
You're equally likely to need this sort of knowledge when writing software for non-technical users (say in finance), and when you write dev tools, linters, checkers, fixers, etc.
If you're doing anything web-related or even vaguely server-client, you're at a huge disadvantage if you didn't have a good networks course. You'll likely be stuck in a loop of half-knowledge and cargo culting. I had a terrible network course, skipped on deep diving into networking for years (I worked in embedded; SPI, I2C, RS-232/422 and CAN were all I needed), and only relatively recently figured out how much I had missed.
I see the author mentioned operating systems as a second-tier course. I find it to be the differentiator (that, and C++ knowledge) when it comes to any serious project, especially understanding of processes, threads, IPC, and such.
Databases are very easy to learn on your own, and are generally easy to learn, even the theoretical aspect (relational algebra, b-trees,...).
Most of the time, and in most shitty universities (the majority of universities everywhere if we're honest with ourselves), for most courses, you're better off picking a couple of good books on whatever subject (classics are classics for a reason) and just learning. That + OCW from MIT, Stanford, Harvard for assignments for practice. The best courses in my university blatantly stole materials from MIT and Stanford.
It may be because EE is older and more entrenched, or because of ties with the industry. Engineering of any kind has centuries of prestige, historic industrial support, historic large buildings and grants, etc. I would bet on the comparative ease of hiring staff for EE, though. It does make some kind of sense for some academy-prone people to go the academia route in EE. Especially if you sprinkle in some industry side-jobs, because the industry side is not that cushy by itself. This likely makes it easier to staff EE faculties. For CS, academia only makes sense if you have direct industry support (like doing machine learning w/ direct support from a FAANG), and you can expect something like that in very few places in Europe (Zurich, London, maybe Amsterdam?). Otherwise, you really have to hate making money and being respected to get into CS academia. There's a distinct lack of staff for CS, and they let anyone be assistants (at least they did half a decade ago). I remember there being some competition for math positions, and a free for all in CS. Some smart CS people do get fooled into joining, and last around a year until they see it's a waste of time. No amount of academic benefits in later life can offset the accumulated difference in pay.
As an actual failed EE student (moved to CS after 1 year of EE an eternity ago), I definitely agree that it's way harder. I even think that it's not just my affinities, but it objectively requires more effort and is more dense with difficult stuff. What's ironic is that the (officialy!) best EE student of that generation is now a Rust dev for some crypto company (last time I saw him on LinkedIn).
I interviewed for Amazon for an embedded/mixed role because that was my forte at the time, and the compensation offered was nothing special, worse than even a mediocre finance sector offer, much better than automotive or general embedded (medical, industry / robots). Could never get an Apple interview (they passed on me twice), though, and I never even thought about the rest (that would require relocation to to places I don't care about).
But since I never actually worked for those companies or have any concrete data I could be completely mistaken. I only have friends working in FANGs in non-embedded roles and embedded friends only working for shit-paying companies, plus some of them are not willing to discuss salaries (suckers). Also, I get the feeling that AMD / Intel / Nvidia operate a bit different than the rest.
The only well paid embedded jobs involve producing weapons ('defence') or gambling ('gaming'), and I'd rather sell crack to kindergartners while also prostituting myself than do that. I did get a bunch of those offers and still do get them every now and again, even though I'm happily employed.
Moved to finance, never looked back. People should plain refuse to work in embedded, maybe then thing will get better.
Also, C++ is the differentiator. People hire for other languages (C# and Rust, in my experience) based on your deep C++ knowledge. And this does make sense, this is a great proxy for your development skills and potential.