Source: How to Build Good Software | Civil Service College Singapore, by Li Hongyi
How useful a piece of software can be is usually limited by its complexity rather than the amount of resources invested in building it. … Building good software involves alternating cycles of expanding and reducing complexity.
There is no such thing as platonically good engineering: it depends on your needs and the practical problems you encounter.
Software projects rarely fail because they are too small; they fail because they get too big.
A good engineer has a better grasp of existing software they can reuse, thus minimising the parts of the system they have to build from scratch. They have a better grasp of engineering tools, automating away most of the routine aspects of their own job. Automation also means freeing up humans to work on solving unexpected errors, which the best engineers are disproportionately better at. Good engineers themselves design systems that are more robust and easier to understand by others. This has a multiplier effect, letting their colleagues build upon their work much more quickly and reliably. Overall, good engineers are so much more effective not because they produce a lot more code, but because the decisions they make save you from work you did not know could be avoided.
Source: The Dark Forest Theory of the Internet | Medium, by Yancey Strickler
Imagine a dark forest at night. It’s deathly quiet. Nothing moves. Nothing stirs. This could lead one to assume that the forest is devoid of life. But of course, it’s not. The dark forest is full of life. It’s quiet because night is when the predators come out. To survive, the animals stay silent.
This is also what the internet is becoming: a dark forest. In response to the ads, the tracking, the trolling, the hype, and other predatory behaviors, we’re retreating to our dark forests of the internet, and away from the mainstream.
These are all spaces where depressurized conversation is possible because of their non-indexed, non-optimized, and non-gamified environments. The cultures of those spaces have more in common with the physical world than the internet.
Milestones for me and my family were left unshared beyond our internet dark forests, even though many more friends and members of our families would’ve been happy to hear about them. Not sharing was my choice, of course, and I didn’t question it. My alienation from the mainstream was their loss, not mine. But did this choice also deprive me of some greater reward?
It’s possible, I suppose, that a shift away from the mainstream internet and into the dark forests could permanently limit the mainstream’s influence. It could delegitimize it. In some ways that’s the story of the internet’s effect on broadcast television. But we forget how powerful television still is. And those of us building dark forests risk underestimating how powerful the mainstream channels will continue to be, and how minor our havens are compared to their immensity.
The influence of Facebook, Twitter, and others is enormous and not going away. There’s a reason why Russian military focused on these platforms when they wanted to manipulate public opinion: they have a real impact. The meaning and tone of these platforms changes with who uses them. What kind of bowling alley it is depends on who goes there.
Should a significant percentage of the population abandon these spaces, that will leave nearly as many eyeballs for those who are left to influence, and limit the influence of those who departed on the larger world they still live in.
Source: What comes after “open source”, by Steve Klabnik
note that I seamlessly switched above from talking about what Free Software and Open Source are, to immediately talking about licenses. This is because these two things are effectively synonymous.
So why is it a problem that the concepts of free software and open source are intrinsically tied to licenses? It’s that the aims and goals of both of these movements are about distribution and therefore consumption, but what people care about most today is about the production of software.
Most developers don’t understand open source to be a particular license that certain software artifacts are in compliance with, but an attitude, an ideology. And that ideology isn’t just about the consumption of the software, but also its production.
I’m still, ultimately, left with more questions than answers. But I do think I’ve properly identified the problem: many developers conceive of software freedom as something larger than purely a license that kinds in on redistribution. This is the new frontier for those who are thinking about furthering the goals of the free software and open source movements. Our old tools are inadequate, and I’m not sure that the needed replacements work, or even exist.
Source: Viral Outrage Is Collapsing Our Worlds | The Atlantic, by Conor Friedersdorf
The ability to slip into a domain and adopt whatever values and norms are appropriate while retaining identities in other domains is something most Americans value, both to live in peace amid difference and for personal reasons.
I wonder whether ongoing debates about matters as varied as Facebook user-data practices, “the right to be forgotten,” NSA data collection, and any number of public-shaming controversies are usefully considered under the umbrella framework of How is new technology affecting our ability to keep our various worlds from colliding when we don’t want them to, and what, if anything, should we do about that?
What would the implications be of adopting the norm that it is often wrong, or only rarely appropriate, to rob an individual of the ability to slip into a given domain and adopt whatever values and norms are appropriate while retaining their identities in other domains?
What would be the worst consequences? How might we shift the cultural equilibrium to value domain-slipping more highly while recognizing its practical and moral limits? What tradeoffs are involved?
Source: The digital revolution isn’t over but has turned into something else | Edge, by George Dyson
Once it was simple: programmers wrote the instructions that were supplied to the machines. Since the machines were controlled by these instructions, those who wrote the instructions controlled the machines.
We imagine that individuals, or individual algorithms, are still behind the curtain somewhere, in control. We are fooling ourselves.
Nature uses digital coding for the storage, replication, recombination, and error correction of sequences of nucleotides, but relies on analog coding and analog computing for intelligence and control.
Digital computers deal with integers, binary sequences, deterministic logic, algorithms, and time that is idealized into discrete increments. Analog computers deal with real numbers, non-deterministic logic, and continuous functions, including time as it exists as a continuum in the real world. … Digital computing, intolerant of error or ambiguity, depends upon precise definitions and error correction at every step. Analog computing not only tolerates errors and ambiguities, but thrives on them. Digital computers, in a technical sense, are analog computers, so hardened against noise that they have lost their immunity to it. Analog computers embrace noise; a real-world neural network needing a certain level of noise to work.
Nature’s answer to those who sought to control nature through programmable machines is to allow us to build machines whose nature is beyond programmable control.