Parakilas said Facebook had terms of service and settings that “people didn’t read or understand” and the company did not use its enforcement mechanisms, including audits of external developers, to ensure data was not being misused.
Parakilas, whose job it was to investigate data breaches by developers similar to the one later suspected of Global Science Research, which harvested tens of millions of Facebook profiles and provided the data to Cambridge Analytica, said the slew of recent disclosures had left him disappointed with his superiors for not heeding his warnings.
The Communications of the ACM have an article about the Racket programming language. Racket is a Scheme-derivative which is part of the Lisp family of languages.
What makes Racket special is that it helps you create domain specific languages, you can create a specific language that makes it easy to address the problems in your domain. For example, you could create a small custom language in Racket that looks like Prolog to solve logic problems. One cool thing that they’ve developed are contracts for contract-based programming, where not only can you check the types of parameters, you can ensure that they fulfill a specific contract (for example, the function parameter age has to be above 0 and below infinity or the method argument name has to be a non-empty string).
It’s well developed and can be used in production, in case you’re wondering. I’ve personally deployed a Common Lisp application to Windows and Mac OS X for a client, and Racket can most definitely enable you to follow in my footsteps and deploy a Lisp-based program into production.
There’s even a cool book on how to use Racket for server-side/backend programming: Server: Racket – Practical Web Development with the Racket HTTP Server.
Sung Won Cho is the developer of dnote, an open source command line tool for taking notes (similar to org-mode or remember for the Emacs users out there). He decided for a month to write down everything he learned while programming.
It was interesting to see how reading Hacker News and other programming news sites was seen as being related to the learning process:
the amount of attention we devote to ‘learning’ is not directly proportional to the amount we actually learn. In one month, I averaged about 2 lessons per day, assuming I code for 6 full days per week. Such rate is surprisingly low, given the amount of attention I pay to news and opinions about programming.
The amount of time spent on reddit, Hacker News, Lobste.rs and other news or opinion sites is great to discover new ideas but it isn’t very good for learning.
Being productive does not make us learn more. We easily confuse productivity with learning because there are some correlations between them. Some days I would felt extra productive at my work because I was getting many things done. However when I looked back at the learning heatmap later, I realized that I had not necessarily learned more.
To make productivity a learning experience, some amount of documenting would be necessary. For example, the Thread-Count document being put together by teesloane on Github is a wonderful example of documentation that leads to learning. It contains notes about threaded programming. The programming itself constitutes a bit of learning while the doc encapsulates a larger learning.
The article reminds me of the quantified self movement.
Democratic senator Elizabeth Warren is proposing a new law that would see companies fined for data breaches that are on the scale of the Equifax data breach:
Sen. Elizabeth Warren of Massachusetts and Sen. Mark Warner of Virginia introduced a bill Wednesday that aims to make data breaches hurt companies’ bottom lines. The bill addresses problems the lawmakers say let credit reporting agencies collect consumer data without doing enough to protect it from hackers.
In the case of the Equifax breach, that would have meant a fine of at least $14.3 billion. However, the fines would be capped at 50 percent of a company’s gross revenue from the prior year.