I tried to play SubNautica for a bit (after playing some Minecraft) but they put their waiting loop in "the wrong place" ... in Minecraft you have to wait to "retrieve the items" (ie: mine 100 stone blocks), while in Subnautica you had to wait to "combine the items", ie: staring at a boring progress bar while trying to craft some rubber suit fins or whatever. It seemed like it was going to turn into a "stare at the progress bar to build things" game and that really turned me off from sticking with it.
Sort of. Not saying that I think anyone should do this but just explaining for the sake of general knowledge.
I'm simplifying things quite a bit, but almost all military contracts are 8-year (typically split into a 4-year active and 4-year reserve period). If you leave on your own volition during this period, you typically have to repay the cost to the government to train you. And any contract that you're on where you received a signing bonus you have to pay back.
The actual mechanism for doing this is a different between officers and enlisted and they're some paperwork but functionally you can leave if you're really motivated to and for the most part people won't stop you (outside of a few conversations where people advise you against it).
The type of discharge you receive depends on the circumstances but generally there's a way to still get an honorable discharge (hardship, education, family, conscientious objector).
There's also the more practical quitting special forces vs leaving the military entirely. Tier 1 units only want people who want to be there and if you don't you can get transferred to some other job in the military in like a day if you really wanted to.
They get transferred to a different unit - one that is not part of "special forces". A big part of the selection process is to find the soldiers who just won't quit.
One rather famous example is of a BUD/S (usually called SEAL) selectee who drowned himself. When pulled out of the pool and resuscitated, he apologized and thought he failed out of the selection process. The instructor replied something like "heck no, you passed. We can always teach you how to swim. No one can teach you to never give up".
Making cars is just a low margin business with a huge manufacturing footprint. They'd have been competing directly with Chinese EV makers. Dodged a bullet IMO
As a very senior SWE with a decent amount of eng decision making responsibility these days I still find I get so much mileage out of KISS and YAGNI that I never really think about any other laws.
So much SWE is overengineering. Just like this website to be honest. You don't get away with all that bullshit in other eng professions where your BoM and labour costs are material.
I always thought it would be great if every line of software (or, chose some other unit of complexity) added to the unit cost of creating each copy. Like every bolt or gasket adds a few cents the the BOM of a piece of hardware. That fictional world would have simple, fast, and higher quality software programs.
"today, performance is mostly about architectural choices, and it has to be given consideration right from the start"
This doesn't make sense. Why is performance (via architectural choices) more important today than then?
You can build a snappy app today by using boring technology and following some sensible best practices. You have to work pretty hard to need PREMATURE OPTIMIZATION on a project -- note the premature there
The big thing that changed is that almost all software performance today is bandwidth-bound at the limit. Not computation-bound. This transition was first noticed in supercomputing around 25 years ago.
Optimization of bandwidth-bound code is almost purely architectural in nature. Most of our software best practices date from a time when everything was computation-bound such that architecture could be ignored with few bad effects.
Because you can naively iterate through a million items faster than an additional network round trip would take.
So a lot of code quality debates don’t matter for the typical enterprise app. While a dev spends their afternoon shaving off 100 nanoseconds in the hot path, a second developer on a deadline added a poorly thought out round trip that adds 800milliseconds.
This architectural problems are also more difficult to unwind later since they tend to have cascading effects.
I agree. But I have to say, when defining the architecture, there are things known that will be terrible bottlenecks later. They should be avoided. Just as the previous comment, about defining proper indices in a database. Optimization means making something that is already “good” and correct better.
There is no excuse to make a half ass, bug ridden shitty software, under the excuse “optimization is for later” that is technical debt generation: 2 very different things.
"dont prematurely optimize" is talking about optimization SEPERATE from architecture (and how pre-mature optimization as Knuth describes gets in the way of correct architecture). nowadays, almost any optimization purely distinct from architecture is handled either by cpu arch/logic improvements, compiler/interpreter improvements, or buried in the overwhelming tide of cpu speedups, so TODAY these terms get conflated as architecture IS typically how we optimize.
> You can build a snappy app today by using boring technology and following some sensible best practices.
If you are building something with similar practical constraints for the Nth time this is definitely true.
You are inheriting “architecture” from your own memory and/or tools/dependencies that are already well fit to the problem area. The architectural performance/model problem already got a lot of thought.
Lots of problems are like that.
But if you are solving a problem where existing tools do a poor job, you better be thinking about performance with any new architecture.
In the 1970s computer systems spanned fewer orders of magnitude. Operations generally took somewhere between maybe 1 and 10^8 CPU cycles. Today, the range is closer to 10^-1 to 10^13.
Sorry but you are just wrong. There are very few coding changes that you can make to fix performance issues that users will notice. Almost all the optimization changes they might notice are architectural changes. This is because CPU bound code is very rare and if you have that case you are probably doing something wrong architecturally. Code being memory bound is 99.999% of the time what is happening. And optimizations to memory bound code are almost always architectural too. Any coding changes, even to a huge platform's codebase can probably be found and fixed in a couple of hours. Anything non-architectural that takes longer than that, is about as likely to create noticeable improvement as you winning the big jackpot in a lottery.
160 flights isn’t really that many, I suspect they are all on commercially marginal routes to begin with.
In my region, quite a few airlines have cut routes citing the fuel crisis. Including Qantas, Virgin Australia, and Air New Zealand. But again, we aren’t seeing widespread cancellations yet.
And they're letting go of employees citing AI. And increasing management perks citing something-or-other, perhaps cosmic rays. The sun rises, the sun sets, the Sun crashes, it is the way of things.
Euro airlines hedge quite a bit actually - Ryanair is one of the most hedged airlines around. US airlines do it a lot less these days; Delta has their own refinery instead.
reply