SyzygyRhythm
Joined 3 years ago
Joined 3 years ago
Perhaps my view is too California-brained, but homeowners here like high prices because it gives more flexibility to downsell, they can get large home equity loans, and Prop 13 ensures they won't be paying full property tax (at least if they've been living there for a while). Even for those planning on living there until they die, their children would still like to inherit a valuable place.
At any rate, I didn't intend to limit the reasons to just price. The solution is to build more housing, but building housing is unpopular, and it isn't hard to see why. So we end up with bad policy like rent control instead.
About half of US adults own their home. It goes up to ~2/3 if you include adult children, grandparents, etc. that live in the house but don't own it.
I wasn't trying to dance around this fact; my point is that a large fraction of the voting public has their interests aligned with keeping home prices high (presuming that these non-owning residents share interests with the people that do own the home).
I'm semi-convinced that the reason why we see so many bad ideas in housing is because the good ideas negatively affect too much of the voting public. Or, they perceive the ideas as negatively affecting them.
A game that tries to appeal to 100% of people will, at best, be a lowest-common-denominator mess, and very likely manage to turn off everyone because it includes something that they actively don't want in their game.
A game that targets a specific niche while not caring about others does not have that problem. Because the target audience is smaller, it can't support enormous budgets, but enormous budgets don't usually mean the difference between a good and bad game. And a game targeting a niche takes less money to develop, anyway.
The article has the answer. The problem with that is that it is no longer differentiable.
The limit to infinite powers is to use the exponential function, which has weighted powers up to infinity. But you still need a kind of smoothing factor so that you don't end up just picking the closest one and losing differentiability, which they call beta and is picked based on how many memories you've stored.
Everything in SDR has an analog equivalent, from local oscillators to PLLs to filtering. In fact most of it simply is a direct implementation of decades-old analog concepts.
But the underlying math is what I found most incredible, where the "true" representation of a signal is complex, and that every real (both in the ordinary and mathematical sense) signal is actually the sum of a positive and negative frequency, such that the complex component cancels out. Phase becomes much more comprehensible as simply the angular component of the signal, and frequency is the derivative of phase. All of this had the indirect effect of improving my understanding of complex numbers as well.
Mostly it's just fun. I like peeking at all the ambient transmissions in the area.
A while back I was more deeply involved in the SDR space and even reverse-engineered some pager signals. At least a few years ago, pagers were still widely used in hospitals (totally in plaintext, by the way).
Personally, I think what the companies really have to worry about isn't these sorts of clones, but that it won't be long before everyone can just spin up some software that does the 5% of the job that they actually care about. Software gets clunky and bloated because every new feature appeals to somebody; it's just not always the same somebody. So there's a ratchet effect where you can never remove a feature because someone will always complain.
I'm pretty familiar with reverse engineering and for most of my career I doubt I went more than a month without patching some memory into 0x90. The explanations are perfectly reasonable and are close to what I expected. It's just that it would have taken me a week to find where to patch without the source!
Bug 2 — window grows on every fullscreen→windowed transition
mstsc.exe implements container-handled fullscreen (mstscax.dll calls it through a vtable thunk at RVA 0x1a3e0). In LeaveFullScreen (RVA 0x161a0):
SetWindowPlacement(hwnd, &savedPlacement) // restores the pre-fullscreen WINDOW rect
GetWindowRect(hwnd, &rc) // rc = that window rect (frame included)
SetWindowLong(GWL_STYLE, style | WS_CAPTION|WS_THICKFRAME|WS_MAXIMIZEBOX)
AdjustWindowRectEx(&rc, style, FALSE, exStyle) // <-- adds the frame a SECOND time
SetWindowPos(hwnd, ..., rc.width, rc.height, SWP_NOMOVE|SWP_FRAMECHANGED)
EnterFullScreen (0x15a8c) saves a raw GetWindowPlacement, and the clamp just above compares rcNormalPosition against [this+0xb0/0xb4], which 0x104b0 computes as window sizes — so the saved rect is unambiguously a window rect. Running AdjustWindowRectEx on it inflates by one non-client frame per cycle: +2×SM_CXSIZEFRAME wide (~16px) and +SM_CYCAPTION+2×frame tall (~39px). That's your "slightly wider, mostly taller."
Patch: mstsc.exe RVA 0x16385 (file offset 0x15785), e8 16 2d 00 00 → 5× 0x90. The restored size is now exactly the saved one. The call's return value was already discarded, so NOPping it has no other effect.
The Exponential Time Hypothesis in effect says that 3SAT can only be solved by brute force--trying every possible combination until you find the right one. If your 3SAT expression has 100 variables, then this will take about 2^100 tries (exponential time).
What they found was an algorithm faster than brute force. 3SAT is still potentially one of these hard problems, but finding anything faster than brute force is a major advance.