These shenanigans are not required, they are very much designed on purpose.
Indeed, corporations can follow the "Do Not Track" header. There is nothing in the EU law that requires a banner, only informed consent.
So if I have DNT=1 set in my browser, pop a quick non modal notification saying "we wants to track you but but we won't because you said not to. Click here if you want to change that". Solved.
I'm informed. I made my choice.
But that's not what it's about.
Because the vast majority of people would not consent. Who are you kidding? This tracking is not benefiting us. It's like when politician says it's "for the children" or "to fight terrorists". Everybody knows there are full of it.
So the banner is just the most annoying way that is legally allowed to try to get people to force-accept tracking. In fact, some banner are crafted to make rejection the hardest path for this very reason.
Those corps chose to make the web terrible a little bit more every day: tracking, auto play, scroll hijacking, dark patters, cookie banners...
We should thank the UE a 1000 times to reveal who are the bad players.
"Eierlegende Wollmilchsau" doesn't really have the positive connotation of an "unachievable ideal", but instead that it is a dumb idea in the first place trying to cram too many features into a product.
All this is good advice, but I haven't seen any prospective on personal budgets:
- Remember that money exists to be spent on useful things, it's not a video game score
- Understand your monthly spending and monthly take-home. If you're in a role that grants equity, I bet you've got a healthy surplus. If not, I bet you could make some lifestyle changes to achieve that.
- Take a moment to really accept that you are fine. You are not in danger, and shouldn't carry a fight or flight anxiety.
- Then think about your future. Can't sugarcoat it, you might have had more vacations or whatever if your options didn't decline, but I bet that you can chart a course to a decent retirement. Use an online calculator. Again, your future is fine. Not great, but fine.
- Think about what your future looked like when you graduated high school (or equivalent, wherever you did it). Did it definitely include being rich? If not, then you have lost nothing relative to that. And it's possible that on this company, the next one, or the one after that, you'll end up there anyway.
- Finally, spend a little money on something you like, and cut a little money on something you hadn't gotten around to canceling (streaming service, routine meals out, etc) You have so much control over your life.
1a. Fewer words are more powerful than many. Attempt to reduce your word count as much as possible.
1b. Expand your vocabulary.
1c. Make your statements active, not passive (reduce or eliminate 'be' verbs).
1d. Plan your thoughts well and orderly.
1e. As much as possible write in a narrative style.
1f. Speak from facts. Clearly state when your opinions are your opinions. Leave nothing to chance. Nobody will assume your expertise and generally nobody cares.
1g. In all things execute with precise.
2. Speak like slow, clear, deliberation like your mastery of writing.
2a. Speaking is plumbing. The words that escape your mouth are sewage. You don't them back and you don't want to. Keep a solid rhythm so the plumbing does not back up.
2b. Speak from empathy.
2c. 90% of communication is non-verbal comprising tone, facial expression, and body language. Embrace this.
2d. Make all communications flow from logic, but remember all communications are emotional all the time.
For kids over 1 year, some sanity saving notes (I have more than 4 kids, was about to go crazy when I got my second and then learned the things below):
- everyone wakes halfway up multiple times each night to see if everything is OK. Make sure they don't fall asleep with anything that can't stay with them during the night: music, tv, light, food, drink or another person (you or others).
- to teach kids to sleep, make them feel safe about it. What I did was walking in at a fixed schedule, starting at exact 3 minutes between the first night (I used a digital kitchen timer back then, a smartphone later) and increasing by two minutes every night. Surprisingly fast, my kids learn that I didn't disappear, and he'll be around even if they don't cry. Once they realized this they started playing with the toy the were allowed to keep in the bed. But, keep in mind: don't stop coming back if they are silent. A major part of the idea is that they realize that they don't have to do anything to make sure we don't forget them. Oh: and keep a very close ear with them in the beginning so they don't wake up and think they are alone.
I never really could get myself to accept the idea that "they need to cry themselves to sleep" and every thing I tried before this didn't work on my oldest.
This worked on my oldest kid, she started sleeping through the night within a week and also became calmer and I got my sleep back. With the rest of them it took 2-3 days only since I started earlier (shortly after they was a year old).
Maybe other methods work too, but this was easy for us and we didn't have to let the kids cry to sleep or anything else I have seen recommended online that I didn't like.
I’ve been seeing this convergence-divergence cycle as a founder as well. We are forced to be like an octopus doing full-court press in 8 different disciplines to build a bootstrapped startup. Your inner engineer always cursing at your inner creative, and occasionally getting disillusioned when your customers don’t respond well to some feature or tweak.
How to keep morale and quality and technical debt at bay? If you have the answers please share, here are some of my steps to combat the above:
1. Your brain plays some steps better than others at certain parts of the sleep cycle. Knowing when to do what so you do it well is half the battle. Example: no brainstorming or solving complex problems when sleep deprived, but yes to grinding through mundane easy but boring tasks when sleep deprived (your brain is too tired to care so it doesn’t hinder with distractions / ADHD ).
2. Step back from some tough tasks and go to a different environment then let your brain sleep on it or wander before looking at them fresh. Prioritize as if someone else is doing the work and validate everything with quick prototypes/calls to users instead of putting in large effort on assumptions.
3. Having kids has helped, ironically. If your break involves spending time with them and teaching them, breaking down the problems for them and talking through with them helps see things clearly as well.
Very cool! I actually went onto the same journey 5 years ago - build a solver and sudoku generator (using the same paper) and finally a web interface. In the last week I finally got the motivation wrapping it up. I planned to release it this week, but as your post is so similar, it motivated me to make it already public as I think you'll like my web interface (if you get bored of using pen & paper), it's decently polished.
You might find it interesting to read through my generation code [0], it's a slightly different approach, but also yields unique Sudokus of a certain difficulty.
Haskell is the "Periodic Table of Computation". You really can't advance to "organic chem" levels of complexity without first mapping out the elements and their key properties, and then further super-specializing in the structures of Carbon. Haskell's C/H/N/O is functor/applicative/monad/arrow and these are the elements of data/interpreters/evaluators/compilers. Software engineering is still in the alchemy stage – thousands of king-funded charlatans attempting to transmute lead into gold
It wasn't super difficult, and was quite fun. I'm not a cryptography person and have zero knowledge of ciphers or anything like this, but a friend and I saw it and thought it'd be fun to give it a shot. We shared ideas but pretty much solved each puzzle ourselves in different ways (which was interesting to see in itself).
The hidden 5th puzzle was both the hardest to get going on (due to no hints compared to the others), while also being among the easiest once you figured out what it actually was.
One of the goals of any code base of significant size should be to reduce the cognitive load (not lines of code per function).
Assume the developer working here just had a 45 mins sync, has a meaningless repeat meeting about vapourware in 10 mins and a 2 hours town hall meeting after lunch... and still have to deliver that mess of a requirement you made him promise to deliver before any of these interruptions were even on his calendar!
- Always aim for declarative programming (abstract out the how it does it),
- limit the depth of the function calls (rabbit hole developers...),
- separate business logic from framework internals and
- choose composition over inheritance.
- Also avoid traits and mixins (run from the dark magic)
- don't over document the language or framework, only the eyebrow raising lines, the performance sensitive stuff and the context surrounding the file if it isn't obvious.
- name stuff to be easily grepable
Easy rules to go by, (there are probably more), they can make or break your ability to work, so that you can get interrupted 12 times an hour and still commit work.
I don't find these in books, just decades of sweating and pulling my hair "why does it have to be so hard!?" I have met plenty of senior devs who naturally do the same thing now.
The code size fallacy is a prime example of the wrong way to look at it. Plenty of extremely large code base in C++ are far more manageable than small JavaScript apps.
Mixing boilerplate framework junk with your intellectual property algorithms "what makes your software yours" is a sure way to hinder productivity in the long term.
You write code 3-4 times. You read it 365 times a year.
One last thing I recommend if you deal with a lot of interruptions and maybe multiple products, various code bases... keep a
// @next reintegrate with X
The @next comment 'marker' is a great way to mark exactly which line of which file you were at before you left this project, for a meeting, for lunch, for the day, etc. And it allows you jump back into context by searching for @next and go. Also since it's visual and located, your brain has a much better time remembering the context, since we're good with places and visual landmarks.
It's far more efficient than roughly remembering what I was doing, looking at the last commit, scrolling endlessly through open files. Don't commit @next though :)
https://termsandconditions.game/
(SSL warning)
These shenanigans are not required, they are very much designed on purpose.
Indeed, corporations can follow the "Do Not Track" header. There is nothing in the EU law that requires a banner, only informed consent.
So if I have DNT=1 set in my browser, pop a quick non modal notification saying "we wants to track you but but we won't because you said not to. Click here if you want to change that". Solved.
I'm informed. I made my choice.
But that's not what it's about.
Because the vast majority of people would not consent. Who are you kidding? This tracking is not benefiting us. It's like when politician says it's "for the children" or "to fight terrorists". Everybody knows there are full of it.
So the banner is just the most annoying way that is legally allowed to try to get people to force-accept tracking. In fact, some banner are crafted to make rejection the hardest path for this very reason.
Those corps chose to make the web terrible a little bit more every day: tracking, auto play, scroll hijacking, dark patters, cookie banners...
We should thank the UE a 1000 times to reveal who are the bad players.