designing and implementing a REST API in an intentionally simplistic task management web application, and will cover some best practices to ensure maintainability of the code.
each individual request should have no context of the requests that came before it.
each request that modifies the database should act on one and only one row of one and only one table
The resource endpoints should return representations of the resource as data, usually XML or JSON.
POST for create, PUT for update, PATCH for upsert (update and insert).
an existing API should never be modified, except for critical bugfixes
Rather than changing existing endpoints, expose a new version
using unique database ids in the route chain allows users to access short routes, and simplifies resource lookup
while exposing internal database ids to the consumer and requiring the consumer to maintain a reference to ids on their end
The downfall is longer nested routes
require reauthentication on a per-request level
Devise.secure_compare helps avoid timing attacks
Defensive programming is a software design principle that dictates that a piece of software should be designed to continue functioning in unforeseen circumstances.
"This document describes a JSON-based language used to describe state machines declaratively. The state machines thus defined may be executed by software. In this document, the software is referred to as "the interpreter"."
"Celery is an asynchronous task queue/job queue based on distributed message passing. It is focused on real-time operation, but supports scheduling as well.
The execution units, called tasks, are executed concurrently on a single or more worker servers using multiprocessing, Eventlet, or gevent. Tasks can execute asynchronously (in the background) or synchronously (wait until ready)."
"AnyBar is a small indicator for your menubar that does one simple thing: it displays a colored dot. What the dot means and when to change it is up to you."
"
Proxmox Virtual Environment is an open source server virtualization management solution based on QEMU/KVM and LXC. You can manage virtual machines, containers, highly available clusters, storage and networks with an integrated, easy-to-use web interface or via CLI. Proxmox VE code is licensed under the GNU Affero General Public License, version 3. The project is developed and maintained by Proxmox Server Solutions GmbH."
"The Deep Learning textbook is a resource intended to help students and practitioners enter the field of machine learning in general and deep learning in particular. The online version of the book is now complete and will remain available online for free.
The deep learning textbook can now be pre-ordered on Amazon. Pre-orders should ship on December 16, 2016.
For up to date announcements, join our mailing list."
A background or asynchronous job (or task) is one that is processed outside of the usual request/response workflow that is part of any modern web framework
Asynchronous tasks on the other hand, are those that may be started from a normal web request, but require a longer time to complete than the normal request.
"For the longest time I did not know what everything meant in htop.
I thought that load average 1.0 on my two core machine means that the CPU usage is at 50%. That's not quite right. And also, why does it say 1.0?
I decided to look everything up and document it here.
They also say that the best way to learn something is to try to teach it.
"