As a on and off tobacco addict with an addiction-prone brain/personality: Unlike coffee, video games, etc, tobacco addiction is terrible and you can really feel your health declining over a decade and more. It's not so much about dying 10 years earlier that's worrisome, it's about not having much quality of life.
As to being addicted to nicotine itself and consume it in the form of vapour: much less worrisome. Still, it's not great: withdrawal feels awful and is psychologically debilitating.
As to being addicted to nicotine as a high schooler: this is quite bad because the brain is still in heavy development and drug habits picked up in this timeframe tend to stay with you forever. Quite a compromise.
1. normal, up to a point. A lot of work is mostly not enjoyable, that's just a fact.
2. depression or ADHD or something related. If you suspect that, pay a visit to a psychiatrist or a general physician.
3. you don't want to do YOUR kind of work anymore. Maybe you should experiment a little with something different? I switched recently - I was extremelly bored at web programming and switched to Android programming some years ago. Now I have a lot of more fun.
4. your nature (meaning something innate and mostly unfixable (or not?))
Personally, I usually operate in cycles: bouts of excitement and motivation where I'm very productive, then I get tired and start to struggle and half-ass some things.
I live in Brazil and generics for drugs which patents are expired are widely available, accounting for 30~40% of all drug market. If I'm not mistaken, we even broke patents in some cases (HIV drugs), which is cool.
Wouldn't it be preferable to write only a forward declaration of the struct in the header files, and define the structs themselves at the .c files? In other words, wouldn't it be better to define them as Abstract Data Types (ADT) ?
That way, users of the library would have no direct access to the fields of the struct (e.g. hashtable->num_buckets;), they'd have to use a function declared at the correspondent header file. (e.g. get_num_buckets(hashtable);).
Direct access to member fields could break the data structure because data structures always needs to follow certain rules in insertion and deletion.
The app Hot Apps Nearby collects a list of installed applications on the phones that have it installed. Then, _anonymously_, it saves that information with a location and shares these with people around.
Then you know every app's popularity in phones (users) nearby - of course, users that also have Hot Apps Nearby installed.
"The workplace is no place for politics like this."
That's ironic. Because the politics that he criticizes are without a doubt left wing policies that ARE applied in Google, from top-down. I'm not saying they are bad policies, but they are political in nature.
A slight cognitive function decline is not at all that severe of a consequence, even if it is true. I'm pretty sure "brain damage" is true in some level for almost all recreational drugs. Amongst them, I'd say cannabis is a very forgiving drug of (ab)use.