131 private links
by Ben Laurie
The modern world doesn’t look like this at all. All the files on a typical computer belong to a non-expert user (for simplicity I am ignoring shared devices — this doesn’t really undermine the argument as I hope you will see). Indeed, the whole computer typically belongs to a single user. Printers do not need accounting and similarly belong to the same user. The enemy is the software that is running on the machine. Users no longer have a good understanding of the software they run. Software is enormously complex and uses all sorts of resources, many distributed over multiple systems, to accomplish their tasks. And frequently their task is only superficially in service of the user.
In short, the old threat model was untrusted tenants, trusted software, unit of protection is files and devices. The new threat model is trusted tenants, untrusted software, unit of protection is individual data items.
It’s 9 a.m. on a typical morning in Chengdu and I’m awakened by the sound of my phone alarm. The phone is in my study, connected to my bedroom by sliding doors. I turn off the alarm, pick up my phone, and, like millions of people in China, the first thing I do is check my WeChat. At 9:07, I send my first message of the day.
Before 10 on a normal day in Chengdu, WeChat knows the following things about me: It knows roughly when I wake up, it knows who has messaged me and who I message, it knows what we talk about. It knows my bank details, it knows my address and it knows my coffee preference in the morning. It knows my biometric information; it knows the very contours of my face.
Many games depend on content variety to tailor their gameplay experience. Having repetitive challenges can lead to player boredom, so designers generally aim to create an experience that is constantly engaging. Games usually consist of many facets such as levels, mechanics, graphics, sounds, etc. One of the most unique is level design. It does not introduce a new dimension in the game, instead, it is concerned with the arrangement of the existing elements. With the high demand for content in games, level design becomes a major task in game design. Its role is of pivotal importance, to the extent of being assigned to a different team than the one responsible for game and mechanics design, for games with large scopes.
In this post we’ll explore how we can derive logistic regression from Bayes’ Theorem. Starting with Bayes’ Theorem we’ll work our way to computing the log odds of our problem and the arrive at the inverse logit function. After reading this post you’ll have a much stronger intuition for how logistic
In the midst of the deep learning hype, p-values might not be the hottest topic in data science. However, association mapping remains a fundamental tool to justify and underpin scientific conclusions. Inspired by an approach for time series classification based on predictive subsequences (i.e shapelets [1]), we developed S3M, a method that identifies short time series subsequences that are statistically associated with a class or phenotype while tackling the multiple hypothesis problem.
This article compares navigating a computer desktop without the desktop. That is, this article demonstrates how to use a terminal to move around and browse your computer as you would on a desktop, but from a terminal instead.
While the terminal may seem mysterious and intimidating at first, it's easy to learn once you realize that a terminal uses the same information as all of your usual applications. There are direct analogs for everything you do in a GUI to most of the everyday activities you do in a terminal. So instead of starting your journey with the shell by learning terminal commands, begin with everyday tasks that you're already familiar with.
- View file lists (
ls) - Open a folder (
cd) - Close a folder (
cd ~) - Navigate directories (
cd) - Absolute paths
I like Python, but wish it had static typing. The added safety would go a long way to improving quality and reducing development time. So today I tried to make use of type annotations and a static …
Abricotine is an open source, cross-platform Markdown editor built for the desktop with inline preview functionality.
Moving your filesystem to USB is a great way to improve reliability, speed and storage space on your Raspberry Pi. If you’re running something that is writing a lot of data constantly then having your filesystem on USB is safer because it’s less likely to get corrupted or stop working with a high amount of write cycles.
This tutorial is using a USB stick which doesn’t require any additional external power, if you want to use a larger USB hdd you will have to also get a powered USB hub because you’re Raspberry Pi doesn’t have enough juice to power it.
I’m using Raspbian for my operating system and I’ll assume you know how to install and configure that yourself.
Read the full article ...
We wish to take an array of 32 million 64bit floating point values, and compute the sum of their squares. This will let us explore some fundamental abilities of various languages. Their ability to iterate over arrays efficiently, whether they can vectorize basic loops, and whether higher order functions like map and reduce compile to efficient code. When applicable, I will show runtimes of both map and reduce, so we get insight into whether the language can stream higher order functions together, and also the runtime with a single reduce or fold operation.
I’ve been using Vim for eight years and am still discovering new things. This is usually seen as a Good Thing About Vim. In my head, though, it’s a failing of discoverability: I keep discovering new things because Vim makes it so hard to know what’s available.
While people often talk about the beauty of modal editing or text objects, I don’t think that gets at the essence of Vim.
We often have to write code using permissive programming languages like C and C++. They tend to generate hard-to-debug problems that can crash your applications. Thankfully, many compilers offer “sanitizers”. I discussed them in my post No more leaks with sanitize flags in gcc and clang. I strongly encourage the use of sanitizers as I think it is the modern way to write C and C++. When many people describe how impossibly difficult it is to build good software in C and C++, they often think about old-school bare metal C and C++ where the code do all sorts of mysterious things without any protection. Then they feel compelled to run their code in a debugger and to manually run through it. You should not write code this way! Get some tools! Sanitizers can catch undefined behaviour, memory leaks, buffer overflows, data races, and so forth.

An old artifact kept in a vault outside Paris is no longer the standard for the kilogram. Now, nature itself provides the definition.
Word processors are great, but they’re also pretty simple. They’re fine for writing letters or essays, but they’re not for complex documents – they’re just not designed for it. LaTeX, a document preparation system used by scientists and mathematicians, aims to get around the problem.
Rather than relying on software to format your document, LaTeX markup is used, giving you the opportunity to introduce elements like complicated mathematical equations. You could do this in a plain, old text editor like Vim or, if you’d prefer to see your LaTeX formatting appear as you write, a LaTeX editor.
Here are five of the best LaTeX editors you could use if you’re a Linux user.
Which built-ins should you know about?
I estimate most Python developers will only ever need about 30 built-in functions, but which 30 depends on what you’re actually doing with Python.
We’re going to take a look at all 69 of Python’s built-in functions, in a birds eye view sort of way.
A small tool that could store, version, retrieve, and format our application configurations in order to keep sync between coworkers and environments.

How Donald Knuth’s 1978 typesetting program became one of the oldest still-active open-source projects and revolutionized technical publishing along the way.