Michael F. Lambdatagrok

Ordered these around 2013/07. As expected you can get better/cheaper stuff today.

The Lian Li PCQ-25b was the main thing I wanted, it is a mini itx case with no stupid CD ROM bay that will hold like 8(?) drives. It was hard to find a mini itx motherboard at the time with lots of SATA ports on it. But easier now i'm sure.

I stuck a crappy old power supply in it that I had left over, so that's not included. If you spend extra and get a "gold" or "platinum" instead of "bronze" its efficiency is greater (which lowers the amount of power it will use, especially when the components draw less.)

The CPU i used back then was 32nm sandy bridge; they have 22nm ivy bridge now, which are more power-efficient i think.

If you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network ... an opportunity to receive the Corresponding Source of your version ...

Q. GPLv3 ensures my software remains free by requiring anyone who conveys a copy to also provide source code, regardless of whether they are distributing verbatim or modified copies.

AGPLv3 has a similar effect for software that is intended to be hosted as a service. However, its clause requiring source code to be provided to network users (section 13) states that the requirement only applies if the party hosting my software has modified it. If they host my software unmodified, they escape the obligation to provide source code to their users. Why?

A. Because placing conditions on the modification of software is the only available mechanism in copyright law it can use to achieve that goal.

Python

__debug__ vs. -O

Python has a built-in variable __debug__ which is set to True when python is called without -O (optimize). The -O flag disables all assertion code.

This seems at first glance like a very easy and clean construct to rely on when coding in development versus production: in development, don't use -O, defensively litter your code with type- and sanity-checking asserts. Perform development-only debugging by testing __debug__ beforehand.

When in production, run all code is run with -O which disables asserts (speeding execution) and sets __debug__ to False.