79 karma · joined March 5, 2018
- Let's create a new Kafka in rust. Yeah!
- Let's create a Kafka client that's ready to use. Blah.
The only information I could extract was that the company made bad architectural decisions, believes in ORM (looking at the queries, there are many doubts that the data layouts in DB are adequate) and cannot clearly explain situations. But this is only interesting to their candidates or investors.
It may sound rude, so I apologise.
Data has its own life cycles in every area it passes through. And it's part of requirements gathering to find those cycles: the dependent systems, the teams, and the questions you need to answer. Mindlessly adding fields won't save you in every situation.
Bonus point: when you start collecting questions while designing your service, you'll discover how mature your colleagues' thinking is.
I don't see how you deduct the conclusion of reinventing wheels is the only solution of overcomplex and far from ideal frameworks. But you can categorise this deduction also.
But spring boot deps is infamous meme.
> Then you don't have to spend time messing around with things like OAuth and authentication
Yeah. The funny thing is reality is quite complicated and spring supports a lot of (almost) documented cases. But 99% javaspring developers do not care. I met quite a lot of experienced devs and only 2 of them know how to optimize application start or which errors Kafka wrapper would not retry and so on. Half of the non-default situations are solved via reinventing the wheel because of a lack of understanding of nuances. I can't say people are dumb, many of those devs are smart. I tend to say that ultra-framework kills people's expertise and in the long term hardly saves resources.
There is a huge difference between no value and default value. I had plenty cases where I needed to distinguish them because absent value is a violation of a contract. Defaults are not a solution.
And more. Defaults bring their own problem. Chosen values are neutral only for some operations. The most simplest case - int default value is 0, but it kinda "works" only for sums. With nulls you'll get an error in production. With defaults discovery of the error is postponed even more. It's literally the same as making up values ignoring clients will (and this decision even not ours but designers of the lang).
Defaults are implicit. It's simplifies mistakes due to human factor.
Of course, $ is ideal because it's already everywhere and familiar.
I guess a typographer of a font designer would be helpful to find a good solution.
But I wholeheartedly support the idea of JEP. Scala got several good UX benefits based on the string interpolation (sql and logging).
- Cine zoom lenses must provide a fixed point of focus when you are zooming. This leads to a more complex mechanism.
- Different cine fixed lenses in one project usually must have identical image quality. That is why they are produced in series (for example 'XEEN PRO Cinema Lenses') with the same technologies.
- Anamorphic lenses... They should exist. They complicate lens production because a stable quality (for series) of an aspherical lens can be achieved only from a central part of a large glass.
- Focusing is the process that often requires a separate person (focus puller) and additional machinery (follow focus system). All cine lenses have exactly the same standard focus wheel. There is no such standard for a photo lens focus wheel.
Nikon F has very few cine lenses and has no series of lenses. Nikon Z has nothing. Thanks to the closed very secret, unique, perfect, bla-bla specification of Z mount and zero collaborations with other manufactures.
* Forced lens profiles. (And more. There are reports of double application of profiles)
* Color and light correction also changes untouched parameters (it's ok but there is no workaround). If you need to do a more accurate job then use C1 or Photoshop.
It can be possible only if there are no more "physical" threads than cores. And anyway a switching between async routines on the same "physical" thread requires a switching of routines contexts (go to the memory and update cashes).