The Norwegian UNIX user group is celebrating its 40th with "sparkling evening entertainment with Norways most beautiful" by attending the Miss Norway finale. They are offering photo ops w/ Miss Norway contestants.
This is gross. I thought we were past this.
I'd posit that architecture is not so much something to be "picked" as it is iteratively crafted and refined together with different stakeholders by mixing various architectural styles and patterns for the various specific and detailed elements of a domain (hint, not entities).
I love the cargo-culting around software architectures themselves, as though there's some architectural method that inherently solves the problem modeling domains and their boundaries.
Hey everyone. I am urgently looking for a contract now, if anyone knows of any (very) senior developer/architect roles in the #dotnet world please let me know.
(DMs open, pls RT)
Software estimates are one of the oldest lies we tell ourselves.
We all know they don't work, but pretend they mean something and later feel enraged when shit hits the fan.
I focused a big part of my undergrad on software estimation.
After graduating, I wrote plenty about the topic.
Then, I started working for a company where I spent years researching how to make better estimates. We sold multiple millions of dollars of software using the tools I built.
I read everything there's to read. I could recite Steve McConnel's "Software Estimation" book from top to bottom.
Here is the most important lesson I learned:
People can't estimate software. It doesn't matter who they are or how much experience they have.
Estimating software reliably is science fiction.
And the best part:
They will ask you to estimate something. They will tell you they understand it's not exact. They will promise they won't hold you accountable.
And then they will. They always do.
There are two solutions for this. Let's start with my recommendations for those who don't have a choice:
1. Remove "quick," "simple," "straightforward," "easy," and every similar word from your dictionary. Never use them. Don't let others use them when referring to your work.
2. Never volunteer an estimate. Everything you say will be used against you.
3. When forced, estimate work you know you can complete today. Always estimate with a range: "It will take me 2 - 4 hours."
4. Estimate anything you won't do today in days and weeks. Say, "I should finish that feature sometime this week." Do not estimate future work in hours.
But we all know your manager will force you to give an estimate. Here is what you should do:
1. Estimate how long you think it will take you to complete the task.
2. Multiply the number by 3. This will be the lower range of your estimate.
3. Double the lower range of the estimate. This will be the upper range.
Example: If you think something will take you 1 day of work, say "between 3 and 6 days."
Here is the funny part:
It won't take you between 3 - 6 days. This is as much bullshit as any other method you can think of.
The true solution for this problem:
Work for a company that doesn't care about estimates.
For the developers to ask for help, they need a safe environment where asking for help is not seen as a weakness. If you're punished for asking (e.g., you don't get a bonus because you "don't know what you're doing"), you won't ask. 1/2
- 3 AM page 🚨
- Kafka broker is running out of disk (11.8TB out of 12TB used) 🚨
- You check everything: throughput, connections network. Nothing seems out of the ordinary 😥
- Retention settings are set to 1 day. It's one topic that hasn't been cleaned in weeks 🤷♂️
- You frantically Google, page, and ping team-mates 🙏
... until you figure out ...
the `log.message.timestamp.type` setting
This setting defines what the timestamp on a Kafka record is for storage purposes on the broker.
This timestamp is used, among other things, in the calculation of log retention.
That is, when you have `log.retention.hours=24`, Kafka will delete a log file only when the LARGEST (latest) timestamp of any record in that log file is older than 24 hours.
Back to the `timestamp.type`. There are two supported values:
🔸 LogAppendTime - the time at which the record was appended to the log (disk)
🔸CreateTime - the time that was provided by the Producer when constructing its message
The DEFAULT is CreateTime.
This means that if you have just one Producer client produce a message with a timestamp in the future -- e.g "01-01-2120" - your log file will never get deleted!
This is a common gotcha and can cost you a night's (or a few) sleep.
Ways to circumvent this:
💡- changing `log.message.timestamp.type` to AppendTime
💡- setting size-based retention limits too - `log.retention.bytes`
This will ensure you have a maximum upper bound per topic that you'll never breach 👌
The stuff uncovered in the Twitter whistleblower report is much crazier than anything in the "Twitter files" but it's much less politically/tribally salient so it got no attention. Going to do a thread on some of the craziest things, in no particular order.
Look, if everyone is worried about students cheating on essays for AI, instructors can just cheat right back.
I asked OpenAI to give me an essay question & make a rubric for grading. I had GPT-3 actually write the essay.
I then had the OpenAI grade the essay & give comments. ✅
Study this picture. This is what happens when you don't have teams that can do -all- the work necessary to get an idea into the customer's hands. IME, every time you split the work, you suffer. It's the whole system that matters, not the "performance" of individuals or teams.
Aliens is the best action movie ever made. And this thread digs into WHY it works as well as it does. It’s all about characters and themes, and how the spectacle and set pieces support that.
If your design your system to prevent every failure mode imaginable, then every failure mode you encounter in production will be unimaginable. So you’d better get good at making sense of failure modes you could not conceive of in advance.