579 karma · joined February 28, 2019
Hardware problems are low dimensional ones…”optimize this variable (usually clock speed), make this block functionally correct.”
Software problems are high dimensional ones, especially the problem of designing an API the community will adopt. “What set of functions can I provide that will do X…and a subset of X…and a potential superset of X, on hardware generation H and H+1 and so on…all while taking security and OS privilege levels into account…” Oh and we must bow to aesthetics and programmer fashion as well as getting stuff into their hands as fast as possible…plus tools and documentation…plus outcompete everybody else in the world trying to steal the same devs as us.
Sw is what it is because it has so many degrees of freedom.
I remember writing apps for the iPhone and the biggest hurdle to getting it submitted was sizing the screens for the display variants.
There would have been no chance of developing an app for the Nokia ecosystem with all the different screen sizes your app would have to support.
Even downloading an app or ringtone required going through all these scammy websites and you had to enter your exact Exact model number and pay somehow…then they would text you a link or something.
Apple really cleaned up the ecosystem with the App Store. It made apps safe to download.
Nokia phones had 1 week battery life. They were extending it to one month.
The iPhone had a < 1 day battery life. Ultimately consumers decided that given the app experience available on the iPhone they could live with that.
This was a bet Nokia would have never made—-they were not in the user interface business. The fact that Apple—who was not in the phone business—-entered their market was bonkers. But once you make your own silicon anything is possible. Plus they had already done the iPod.
Any other company would have had an annual review of progress or a review any time mid-level leadership changed hands. Assuming a 50/50 chance of survival each time, the odds of the project lasting 10 years would be 1 in 1024.
Japanese woodworkers would spend the first half of the day sharpening their tools. The secret of Japanese woodworking is the steel they used…and their insistence on air dried straight grained softwoods. It helps make their precision joinery possible. It was also a technique designed for longevity so you could remove a piece from a hundreds year old temple, exactly replicate it and put a new one in. No metal fasteners meant no hidden weak spots due to rust which would fail in an earthquake.
He deal with security threats at the source, by tracking down the hacker and kicking them in the head.
Fantasy below, Star Wars above—in a galaxy far far away.
It’s just published on YouTube. Seriously the quality of diy videos and everything is sometimes PBS or BBC quality or better.
A carnot heat engine with a hot side of 2000C(Th=2273K) and a cold side of 200C(Tc=473K), has an efficiency of 1-Tc/Th or 79%.
So you can do useful work (hopefully inside the house, where it too will eventually end up as waste heat) AND recover energy from the exhaust gas of the carnot engine--which is 200C!
Imagine burning natural gas in your furnace, vs using your natural gas to run a electricity generator and mining bitcoin with it inside your bedroom. A Bitcoin rig makes a great space heater.
ANY inefficient technology could get an efficiency boost just by using a heat pump.
But for this to happen HPs would have to be much much cheaper.
Neglecting clothes for a few minutes, your body both radiates heat and absorbs it. When you are in thermal equilibrium you feel warm. If your walls and roof had low grade radiant heaters on them and emitted enough infrared to balance your own outgoing radiation, you’d be warm, even if the air temperature was cold and you had no clothes on.
So if you covered your ceiling with cheap thin iron sheet metal and built small induction coils behind them and heated the ceiling instantly, you could instantly feel warm in a cool room. Exit the room and you turn everything off…letting it lose its tiny amount of heat.
So proper system design could let you have low latency zone heating. Since you usually don’t use all the rooms in your house at the same time, there ought to be more than 50% efficiency in that sort of a system.
2. Our current approach of heating the whole house through forced air is much less satisfying than having a concentrated heat source (like a fireplace) that you can just walk towards and get as much heat as you want out of. Maybe psychological factors might play in…if you “could” be warm with just a little bit of effort maybe you won’t mind being colder than normal. Maybe heat gradients are better for you than uniformly high heat.
The temperature of a natural gas flame is 2770C. Using it to heat a house to 30C is ridiculous. Instead you should run a gas turbine off of it to produce electricity. The exhaust should run a steam turbine which makes more electricity. Then a heat pump can capture more energy from the exhaust (and from your bath water etc) to pump more heat into your house. The electricity can be used to charge an electric car or run a gpu inside your house (and produce even more heat).
Heat pumps should be utilitarian and 10x cheaper, and used in multiple places. They should not be something you “invest” in with a 10 year payback time.
A double pointer was just two carets. And so on.
There was a struct symmetry about the whole thing. C broke that, especially with strict pointers.
That’s like the weight of what, 2 fat people?
A ton is 1000 lb, right?
Maybe printf will be eternal. But no window library is universal and eternal.
Perhaps we need eternal User interfaces and APIs to go along with them.
Well I have a different approach. Sometimes I write and hack it to solve a particular problem. The code might be elegant or not, but if you understand the problem you can probably grok the code.
Next I generalize it a bit. Specific variables configurable parameters. Something that happened implicitly or with a single line of code gets handled by its own function. Now it’s general but makes much less sense at first because it’s no longer tied to one problem, but a whole set of problems. It’s a lot less teachable and certainly not self-evident any more.
The problem with math education is that we think the solution approach would be inherently superior to the first, and would make a better textbook—because it’s more generic. But that is not how real people learn—they would all “do” math the first way. By taking away the ability of the student to do the generalization themselves we are depriving them of the real pleasure of programming (or math).
Maybe back when paper was scarce this approach made sense but not any more.
Ideally I would love to present a million specific solutions and let them generalize themselves. That is exactly how we would train a ANN. Not be regurgitating the canned solution but by giving it all sorts of data and letting it generalize for itself. So why don’t we do this for human students? When it comes to education I think people have a blind spot towards how learning is actually done.
Education != learning.
SIMT means multiple processors all executing the exact same instruction. One instruction decoder, but like 64 execution pipelines.