There are often other incentives at work, structural issues, etc., and sometimes the answer is that their decisions weren't actually as bad as you assumed.
213 karma · joined September 17, 2017
There are often other incentives at work, structural issues, etc., and sometimes the answer is that their decisions weren't actually as bad as you assumed.
A minimal Debian installation for single-purpose server isn't a new idea, or I often reach for Alpine and trim it down to a dozen or so packages. These are both quality ecosystems with track records and reputations. I can get a minimal attack surface and still count on timely updates, security patches, good integration (when it turns out that I needed a dual-purpose server box and not a single-purpose box), etc. These systems scale up and down.
What I'm reluctant to trust in a deploy-and-forget system is a fly-by-night package from someone who picked a packaging system because it looked easy and didn't make them think about an actual lifecycle. A few months or years down the road I expect most of those will be unmaintained. One of the most valuable parts of an ecosystem like Debian is that they make everybody think about all those issues and actually do the work.
Every time I see a new package system that promises to free creators of the burden of integration and compatibility with the rest of my installed software, it's a hard "no" from me--and there have been a lot of these over the years. The promise is always how easy and carefree it is for packagers, but the things that make Debian harder are the things that make it valuable. Careful integration with the rest of the system with matching dependency versions. Modular, carefully partitioned packages for complex systems that would otherwise be all-or-nothing. Ongoing maintenance and updates. Responsiveness to security updates. Following common rules for configuration, directory placement, init/systemd integration, etc.
cpak looks like yet another system designed to ignore the rest of my system as much as it can and live in its own little world. In other words, designing around the needs and goals of software packagers over the needs of users and long-term system maintenance. Solving the easy problems instead of the hard ones.
So I have a fairly fresh newcomer's perspective and here's what I suggest to get started: keep it simple and start local. As others have noted, skip the complex mapping app and go straight to the website for feature edits, or download a simple mobile app like Every Door and focus on businesses and landmarks near you. Go on a walk around your neighborhood and look for old/incorrect/missing businesses. There may be errors near you about places you actually care about, and it is really gratifying to fix those.
There were restaurants near me that were missing, shops that had changed hands, etc., that were easy fixes but years overdue. I captured some basics (names, posted hours, the phone number posted on the door, etc.) with Every Door, and then later logged into the main OSM website and fine-tuned the entries. I got into a pattern of fixing one or two entries every evening when I went out for a walk and pretty soon my walking route was all up-to-date. Then I started paying attention to things like stop signs and cross walks and found a whole new kind of little, incremental edits that nobody else was doing.
It's been fun, I've made useful contributions, and my laptop is still Java free.
> I propose to consider the question, "Can machines think?" This should begin > with definitions of the meaning of the terms "machine" and "think." The > definitions might be framed so as to reflect so far as possible the normal use > of the words, but this attitude is dangerous, If the meaning of the words > "machine" and "think" are to be found by examining how they are commonly used > it is difficult to escape the conclusion that the meaning and the answer to the > question, "Can machines think?" is to be sought in a statistical survey such as > a Gallup poll. But this is absurd. Instead of attempting such a definition I > shall replace the question by another, which is closely related to it and is > expressed in relatively unambiguous words.
Many people who want to argue about AGI and its relation to the Turing test would do well to read Turing's own arguments.
I tried teaching Raft one year instead of Paxos but ended up switching back. While it was much easier to understand how to implement Raft, I think my students gained deeper insight when focusing on single-decision Paxos. There is a lightbulb moment when they first understand that consensus is a property of the system that happens first (and they can point at the moment it happens) and then the nodes discover that it has been achieved later. Exploring various failure modes and coming to understand how Paxos is robust against them seems to work better in this setting as well.
I think this paper by Heidi Howard and Richard Mortier is a great way to move on to Multipaxos:
https://arxiv.org/abs/2004.05074
They present Multipaxos in a similar style to how Raft is laid out and show that Multipaxos as it is commonly implemented and Raft are almost the same protocol.
Raft was a great contribution to the engineering community to make implementing consensus more approachable, but in the end I don't think the protocol itself is actually more understandable. It was presented better for implementers, but the implementation focus obscures some of the deep insights that plain Paxos exposes.
Of course, everyone will have a different opinion on such aesthetic matters. I taught an undergrad comp theory course for a decade or so and I wrote my own similar package[1] for generating diagrams using Metapost that built on the standard boxes package. Students were able to learn the system pretty quickly and the results were usually good, though it was pretty easy to pick out which students did/did not care about how things look.
What influence has Forth had?
Climate change is 99% solved. The last 1% is the hardest.
We are 99% of the way to ending all wars. The last 1% will be the hardest.
Scientists are 99% of the way to curing cancer. The last 1% will be the hardest.
etc.
* The system assumes a fixed amount of RAM and a fixed memory layout, so there is no discovery process and no adaptive code to go with it
* The process table is just a small array--no dynamic allocation necessary, and the system can just do a linear search to find an unused entry
* The userspace is simplified. There is a single stack (no threads) of fixed size, mapped memory starts at address 0, and memory is layed out so that only a single number is required to track the size of the entire address space: the size is the top of mapped memory.
Simple data structures are used everywhere, and the emphasis is always on clarity, not efficiency or flexibility.
Basically, they created a disk that could accept writes everywhere except a certain sector, something you could not replicate with even a perfect copy.