A Few of my Favorite Nonfiction Books

Designing With the Mind in Mind

This book is surprisingly easy to read considering the depth of its contents. It takes a human-capabilities first approach to considering interaction design based on scientific principles. It’s a very interesting read to learn more about our brains and how it relates to the things we build.

101 Things I learned in Architecture School

This book is fun. It’s an eminently browsable coffee table or armchair kind of book. Architecture (the building kind) is one of the places Software Engineers steal many of their metaphors from. The book is a 35,000 ...


Operations as an Engineering Discipline

In progressive software engineering firms it has become common to blur the line between the creation of the software product and the operation of that product.

Google is credited with popularizing this practice by codifying the term "Site Reliability Engineering" and hiring a team of software engineers to operate a data center and the associated applications in it.

Prior to this it was common to have a strong separation between product development and business operations. Operations would staff and manage IT and Customer Support. Engineering, design, and product-specific folks would staff and manage product development.

Mark Burgess writes, in "Site ...


Luna Part 4 : First Views

Once models are created, you can make migrations and database tables from them.

An empty database isn't very interesting, so the next step is to populate it. We used Celery Tasks for that.

Django 2.0 changed how URLs are defined. I ignored that and used the old style re_path because I wasn't really interested in learning the ins and outs of the new `path` function yet.

Here's my first four views

urlpatterns = [
    path('api/v1 ...


Luna Part 3 : Populate the Database

Empty databases are boring. In part 2 we made an empty database.

Now we fill the database.

We are going to use a couple of celery functions outlined in tasks.py

Here are the benefits of building this as celery tasks:

  • The jobs can be easily distributed among several processes, even on one machine
  • The jobs can be triggered from changes on the operating system (future watchdog daemon)
  • The jobs can be triggered from CLI or web tasks

Here's the basic function layout:

  • Find all the files in a given path and index them.
    • Process each individual file in its ...


Issac Kelly