week 12, 2020

Secure by Design

I really like Secure by Design. The key idea is that there is a big overlap between secure code and good software design. Code that is strict, clear and focused will be easier to reason about, and will have fewer bugs. This in turn makes it less vulnerable to attacks. This is easy to say, but Secure by Design is full of techniques for how to actually do this. Here are the ideas from the book that I liked the most.

Source: Secure by Design, a book review by Henrik Warne.

Thoughts on Vim Bindings

It started with a colleague of mine mentioning that he’d started using Vim bindings in his non-Vim editor, and he quite preferred it. I thought I’d give it a try, and haven’t looked back. I find it empowering being able to do quite complex things with a few keystrokes.

Source: Thoughts on Vim Bindings, an article by Jon Grythe Stødle.

Secure Rust Guidelines

Nevertheless, due to its versatility, the language possibly offers some constructions that, if not used properly, can introduce security problems, either by or by making code misinterpreted by the programmer or a reviewer. In addition, as for every tool in the compilation or software verification field, the tools used to develop, compile and execute programs can expose certain features or configurations that, if misused, may lead to vulnerabilities.

Thus, the object of this document is to compile hints and recommendations to stay in a safe zone for secure applications development while taking advantage of the range of possibilities Rust language can offer.

Source: Secure Rust Guidelines.

How to teach your kids at home

Parents are all teachers now. A Quartz team made up of education reporters, former teachers, and parents have compiled useful resources to help parents navigate this transition. They are neither comprehensive nor meant to replace the learning your kids’ schools are trying to put in place. They are things to use to augment school assignments and help fill the other hours in ways that that you, and hopefully your kids, can feel good about.

Source: How to teach your kids at home.

Order arrived: Wi-Fi range extender and a book on Python

Today, in the early afternoon an order I placed on arrived. Yesterday, I had set up a Raspberry Pi 3 with a keyboard, monitor, and mouse but because of the weak Wi-Fi signal in my office it couldn't connect to the Internet. A range extender would solve this, so I ordered a TP Link AC1200 Wi-Fi Range Extender RE305. The device was a piece of cake to set up, and so far I would recommend it.

Because Adam is very interested in programming I also ordered a book: "Programmeren voor Kinderen"; the Dutch translation of Computer Coding Python Projects for Kids, by Carol Vorderman. I hope this excellent looking book, it has a hard cover which is great, helps my children with both their Dutch and Python skills.

The 2020 MacBook Air

With the new 2020 MacBook Air, Apple has pulled a Michael Corleone and settled all family business. I’ve spent the last day testing Apple’s $1,300 mid-range MacBook Air, with the quad-core Intel Core i5 CPU, 512 GB storage, and 8 GB of RAM.

Source: The 2020 MacBook Air, an article by John Gruber.

The Troublesome Active Record Pattern

"Object relational mappers" (ORMs) exist to bridge the gap between the programmers' friend (the object), and the database's primitive (the relation). The reasons for these differing models are as much cultural as functional: programmers like objects because they encapsulate the state of a single thing in a running program. Databases like relations because they better suit whole-dataset constraints and efficient access patterns for the entire dataset.

Source: The Troublesome Active Record Pattern, an article by Cal Paterson.

Perc50, Perc95 explained for Programmers

I got a customer ticket the other day that said they weren’t worried about response time because “New Relic is showing our average response time to be sub 200ms”. Sounds good, right? Well, when it comes to performance - you can’t use the average if you don’t know the distribution. It’s usually best to use the median, which is also perc50, though you’ll also want to look at your long tail of responses. If you’re not following, then this post is for you.

Source: Lies, Damned Lies, and Averages: Perc50, Perc95 explained for Programmers, an article by Richard Schneeman.

Why does all() return True if the iterable is empty?

This is literally a 2,500 year old debate in philosophy. The ancients thought “all unicorns are blue” should be false because there are no unicorns, but modern logic says it is true because there are no unicorns that aren’t blue. Python is just siding with modern predicate logic, but your intuition is also quite common and was the orthodox position until the last few hundred years.

Source: Why does all() return True if the iterable is empty?, an article by Carl M. Johnson.

Working from Home: An Honest Look at the Remote Work Lifestyle

For the first year and a half of my WFH journey, I was alone the whole day. At the beginning, I felt awkward. If you feel like that too, it’s completely normal. I stopped noticing that I’m alone only when I was immersed in work. As you enter “the zone” you can forget about the whole world. Working from home can be a very productive time. There are few interruptions. You can just go with the flow.

Source: Working from Home: An Honest Look at the Remote Work Lifestyle, an article by Michal Matczuk.

My Brachypelma smithi molted

In the early afternoon when checking on my Brachypelma smithi I found the tarantula upside down; it was about to molt. Just after 7PM I checked again and found the tarantula resting next to its shed exoskeleton.

Brachypelma smithi next to its exuviae
Brachypelma smithi next to its exuviae (shed exoskeleton).