1,365 karma · joined January 9, 2009
Sam's changes to CPython's container objects (dicts, lists), to make them thread safe might also be hard to port directly to Pypy. Pypy implements those objects differently.
The ideal gas law applies, at least nearly enough. So PV = nRT. By saying the density is equal between the top and bottom, you are also saying the pressure is equal. The air around the wing is having it's momentum changed, not it's pressure. At least, at sub mach speeds.
It is true that most of the popular simplified explanations are incorrect. Flat plate airfoils generate lift if they have positive angles of attack. Airplanes can fly upside down. At fractional mach numbers, pressure above and below the wings is essentially equal.
If you are not flying near the speed of light, Newton's laws apply. So, if you want simple explanation, the wing deflects air downwards and that pushes the airplane up. If you put your hand outside the car window at an angle, you will feel a force. Should be simple enough for 2nd graders.
We are in the process of slowly moving to a distributed system (distributed DB) that is going to make fallover easier. However, that kind of setup is orders of magnitudes more complex than the current (manual fallover) setup. I really wonder if the planned design is going to be more reliable in practice. Complexity is almost always a bad idea, in my experience. Distributed systems are just fundamentally very complicated.
That's not to say we can't do better and it's not worth making an effort. However, thinking Linux can match Apple in terms of trackpads is wishful thinking, IMHO.
Ease of use for Lightning is not to the point where I think it is good enough for the average user. However, in the early days getting on the Internet was also not easy (remember dialup, PPP and SLIP? I do). I think Lightning is interesting because anyone has the ability to set themselves up as a merchant and receive payments. Right now it is complicated and a bit clunky but it is actually possible.
If the price of Bitcoin now doubles presumably no miners will be turning off their machines. If it doesn't double, some fraction of all mining setups just became unprofitable.
Another difference is that planters typically have wider row spacings. For corn, that's not a problem because the plants want more space. However, for cereal crops like wheat, ideally the spacing should be smaller. Typically spacing for wheat might be 8 to 10 inches but even narrower might give optimal yield. To get narrow spacing, you need more seed rows and those get expensive given the complexity of the planter system (high cost per seed row).
In area she is farming, corn and soybeans are the major crops. There are a bunch of other field crops they might grow. Wheat is one but there are many others.
Example planter manufacturer (lots of other companies make them):
They have integrated some things over the past few years (ISOBUS is the standard communication protocol for integrating). There is a lot more integration that could be done but it requires a lot of cooperation between companies. Also, the tractor is a multi-purpose tool and in this case is being used for a very specific job. So, many of the screens apply only for the job she is doing.
https://www.youtube.com/watch?v=uM5ZBNzvKz4
The video doesn't show too much of it but Mike's equipment a bunch of technology on it as well. Some of the stuff:
- auto section control: turns off/on seed & fertilizer automatically to minimize overlaps and prevent skips. On large machines (e.g. 80 ft) the cost of overlap is quite significant. The seed and fertilizer is carried by a pneumatic system and optimally tuning the system is a bit tricky (he shows a bit of that)
- auto rate control/variable rate control: with variable rate, the field is split into many zones and the applied rate of seed and fertilizer is optimized. That's a whole topic into itself, I won't explain here.
- population/blockage monitoring: this system monitors seed and fertilizer flow in the pneumatic delivery system and will alert the operator is something is wrong (blocked run, rate to high or low). That's the "Agtron" system he is talking about.
- I don't know if his para-link drill has it but there is a variable packing system available. That will monitor packer (the wheel behind the seed opener) and adjust packing pressure depending on field conditions. Wet areas of the field will need less down pressure compared to dry areas
- As is typical these days, GPS mapping, guidance. He has two different screens showing the map. The Deere screen doesn't show the individual on/off sections of the drill and so it shows more overlap. The Topcon screen (comes with drill) shows the sections.
- The system for controlling the metering on the drill is fairly advanced. For planters, it is typically more advanced yet (corn seed is really expensive and so very precisely metering it and placing it is key). On the Bourgault drill he is using, there is a variable speed hydraulic motor on the metering system with a feedback control loop to control the rate. Early in the video he is calibrating those meters so the system knows the mass-flow feedrate of the meter (e.g. RPM of meter -> lbs/min of material). That feedrate will be converted to a per-unit-area application rate. The variable rate prescription map will provide input to the rate controller.
Just some info in case people are interested. Running a profitable farm is a challenge and most farmers are aggressive in adopting any new technology that will help them get an edge.
If you compare the specs with contemporary aircraft (like the English Electric Lighting) the Arrow is impressive but not vastly superior. The "brain drain" after the cancellation of the program seems the biggest tragedy to me.
The large farms are driving new equipment sales. They are the ones buying the brand new John Deere $700k combine harvesters will all the bells and whistles. The problem is, those bells and whistles add a lot of extra complexity to the machine, making it harder and more expensive to fix. Deere doesn't make it easier since they don't provide details needed for 3rd party repair people (e.g. schematics, software tools for managing embedded controllers, etc). The people buying new equipment don't care about that. Their equipment is covered by warranty and Deere fixes it for them (or replaces it). They sell the machine after it is a year or two. So, they never deal with the crap repair-ability of new equipment. The 2nd stage used market cares a little but not so much either. They can still get Deere to fix it for them, maybe not under warranty.
By the time the equipment gets to the 3rd tier used market, it is already heavily deprecated. The loss in value due to poor repair-ability is not getting fed back up the chain in any significant way which would make the primary buyers change their decision making. They want the bells and whistles and they will pay a little extra in deprecation to get them. The problem for society is that you have a $700k machine that is basically a paperweight after a decade or two. You might was well drive it in the junk pile because no one is going to be able to make it run. At least, not without tearing out heaps of electronics that are no longer working. New machines are utterly dependent on onboard electronic control systems (e.g. ECMs). They won't run without them.
New machines are disposable and that is what the buyers are deciding to choose. You can't put all the blame on companies like Deere. The contrast to old farm equipment is dramatic though. We have an old Ferguson tractor, might be from the 1950s. Everything on that tractor can be fixed. If we wanted, we could make it run like it just came out of the factory. For jobs on the farm that don't need a big tractor, it does them just fine. Probably in 100 years you will still be able to keep it running if you want.
However, as someone who as done a mixture of low level (e.g. system tools), high level (e.g. web apps) and network protocol programming, the Python 3 bytes/str model works well. If you really want to treat a 8-bit byte string as a string, you can always decode as "latin1". In my modern Python 3 code, I don't find a good reason to ever do that anymore.
There is another problem with trying to backport selected Python 3 features. How do you decide what gets backported? New features will introduce incompatibility. Even if the feature is forward compatible, you end up with code that will run on Tauthon 2.X but not on Tauthon 2.X-1. If it just a better Python 2, that's fine. When it is some 3rd kind of thing with a relatively tiny user base, who is going to use it?
Second, having filenames that are not valid Unicode text (even if Python 3 has a way of handling them and round-tripping them) is going to cause you a lot of pain. No one who has thought through all the issues thinks its a good idea. The modern computing world uses Unicode text all over the place. Filenames are manipulated by humans and we deal with them as text.
The idea that 8-bit byte strings are the ideal way to deal with text is a dead end. I expect we are going to see more of these kinds of articles now that Python 2's EOL is coming. In retrospect, you could argue that Python 3 should store Unicode text in memory has UTF-8. However, at the times decisions were made, UTF-8 was not dominate as it is now.