January 19—a week before the Lunar New Year—Tommy Tang left Shenzhen
with his girlfriend to visit her family in Wuhan for the holiday. They
had heard of the novel coronavirus (now officially known as COVID-19),
but as far as they knew, it was localized to a small area. The local
government had assured people that it would only affect those who
visited a specific food market and contracted it directly from wild
But on the night of the 20th, Dr. Zhong Nanshan—the same doctor who first revealed the extent of SARS in 2003—went on national TV to correct the record. The virus could spread from person to person, he said. Panic ensued. Overnight, everyone in the city began wearing masks. Tang and his girlfriend realized it was no longer safe to stay. They cancelled their plans and left on a train the next day. Less than 48 hours later, the city went into lockdown.
less than a decade, computers have become extremely good at diagnosing
diseases, translating languages, and transcribing speech. They can
outplay humans at complicated strategy games, create photorealistic
images, and suggest useful replies to your emails.
Yet despite these impressive achievements, artificial intelligence has glaring weaknesses.
Machine-learning systems can be duped or confounded by situations they haven’t seen before. A self-driving car gets flummoxed by a scenario that a human driver could handle easily. An AI system laboriously trained to carry out one task (identifying cats, say) has to be taught all over again to do something else (identifying dogs). In the process, it’s liable to lose some of the expertise it had in the original task. Computer scientists call this problem “catastrophic forgetting.”
How to configure port forwarding on a Windows 10 PC
To port forward 127.0.0.1:9000 to 192.168.0.10:80 in Windows 10:
Launch an Administrator Command Prompt.
Run “netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=9000 connectaddress=192.168.0.10 connectport=80”.
Applies to All Windows 10 Versions
Windows 10 has built-in support for port forwarding but it’s not exposed in the Settings interface. Port forwarding allows you to access network resources as if they’re hosted on your local machine, which can be helpful when working on a LAN (local area network) or developing with web servers.
I first read about the notion of a mature developer in the blog post On Being a Senior Engineer by John Allspaw, way back in 2012. A lifetime in the tech industry, but this simple idea has stuck with me and hasn’t been bettered.
The thrust of this post is that being a mature engineer (or developer) should be valued much more highly than being a senior engineer.
You should really take the time to read that post—I’m not going to
try to repeat it here as it’s long and detailed and worth reading
What follows is just some random, less relevant information from my own life.
In my previous post I talked about why consent matters when it comes to privacy; and yet, privacy is only one of the areas where tech companies take advantage of users without their consent. Recently, tech companies have come to a troubling consensus: that they can change your computer, remotely (and often silently) without your knowledge or permission.
There are, as you’re about to see, lots of problems with PGP. Fortunately, if you’re not morbidly curious, there’s a simple meta-problem with it: it was designed in the 1990s, before serious modern cryptography. No competent crypto engineer would design a system that looked like PGP today, nor tolerate most of its defects in any other design. Serious cryptographers have largely given up on PGP and don’t spend much time publishing on it anymore (with a notable exception). Well-understood problems in PGP have gone unaddressed for over a decade because of this.
Note: This is part of the “Composing Software” series (now a book!)
on learning functional programming and compositional software
lot more of this to come! Buy the Book | Index | < Previous | Next >
functional and imperative programming paradigms we use today were first
explored mathematically in the 1930s with lambda calculus and the
Turing machine, which are alternative formulations of universal
computation (formalized systems which can perform general computation).
The Church Turing Thesis showed that lambda calculus and Turing machines
are functionally equivalent — that anything that can be computed using a
Turing machine can be computed using lambda calculus, and vice versa.
Perhaps the biggest complaint about tech companies today is that they do not respect our privacy. They gather and store data on us, and in some cases, such as Facebook, they charge companies for the ability to send targeted ads to us. They induce us to self-reveal on the internet, often in ways that are more public than we might at first expect. Furthermore, tech data practices are not entirely appropriate, as for instance Facebook recently stored user passwords in an insecure, plain text format.
Plenty of parents fret over their children’s undying love of video games. Do interactive games like Fortnite and World of Warcraft
inhibit kids’ ability to hold normal human conversations? Do aggressive
games foster an unnatural desire to wield guns and destroy things? Or
does gaming help kids develop a crucial suite of 21st-century skills?
A new study
from Norway investigates these questions by tracking the relationship
between time spent gaming and social competence in a group of 873 kids,
starting at age six and checking in every two years until age 12. The
results showed that more gaming did not generally predict worse social
outcomes in boys, but did have a negative impact on girls: 10-year-old
girls who played more games had less social competence at 12.