Books I Love

I can expand more or add to this list later, but here’s a quick list of books I love:

  • Albert Camus - The Fall
  • Aldous Huxley - Brave New World
  • Aldous Huxley - Island
  • Daniel Keyes - Flowers for Algernon
  • David Foster Wallace - Infinite Jest
  • Douglas Adams - The Hitchhiker’s Guide to the Galaxy
  • Ernest Hemingway - A Farewell to Arms
  • F. Scott Fitzgerald - The Great Gatsby
  • Franz Kafka - Metamorphosis
  • George Orwell - 1984
  • George Orwell - Animal Farm
  • George Orwell - Homage to Catalonia
  • H.P. Lovecraft - The Colour Out of Space
  • Hermann Hesse - Steppenwolf
  • J.D. Sallinger - The Catcher in the Rye
  • J.K. Rowling - Harry Potter series
  • J.R.R. Tolkien - The Hobbit
  • John Green - Looking For Alaska
  • John Steinbeck - In Dubious Battle
  • John Steinbeck - Of Mice and Men
  • Kurt Vonnegut - Cat’s Cradle
  • Kurt Vonnegut - Mother Night
  • Lewis Carrol - Alice’s Adventures in Wonderland and Through the Looking Glass
  • Mark Z. Danielewski - House of Leaves
  • Neil Gaiman - The Ocean at the End of the Lane
  • Orson Scott Card - Ender’s Game
  • Orson Scott Card - The Worthing Saga
  • Oscar Wilde - The Portrait of Dorian Gray
  • Philip K. Dick - Ubik
Tags: books lists 

When to Use Programming Languages

Java

  • Willing to take a small speed decrease in order to have a much better time programming than C/C++
  • Need to interface with <Obscure Technology>. Because Java probably has a library for it

Kotlin

  • Want/need to use Java libraries but want to feel modern

Groovy

  • I want to write a version of Java that gets rid of everything good about Java while keeping all of the bad

C

  • Need the maximum amount of speed possible

C++

  • Need the maximum amount of speed possible while also having the maximum number of language features that don’t fit together

Javascript

  • Need to write something quick for the browser

Typescript

  • Need to write something large for the browser

Python

  • Short scripts, one-offs
  • Want to have a good time programming while not caring about speed or ease of refactoring

Go

  • Want the power of concurrency, but don’t want to actually learn concurrency

Clojure

  • Want/need to use Java libraries but are a hipster
  • Rich Hickey is my spirit animal
  • Seriously though, Clojure is really good for processing data. It has a lot of functions in the standard library for manipulating lists and maps. It’s my tool of choice when working with large JSON files.

Rust

  • I’m a sub and I want my compiler to be the dom

Haskell

  • Want to prove that all those years of mathematics were useful
  • Want to feel superior to the plebs that can’t understand your beautiful monads

OCaml

  • Want to use a high-level language but am intimidated by Haskell
  • Want a functional language with the opportunity to use imperative programming without having to wrap all values in a ThisIsImpureDontLetItContaminateThePurity monad

PHP

  • No
  • Just no

Tips

Best Practices

Everything is Code

Advantages:

  • Copy paste! Easily take concepts from one project and use them in another
  • Source control. See who changed what why.
  • Rebuilding. If you have everything in source control, it becomes way easier to rebuild in case of a disaster.
  • Editing. You know what computers are really good at? Manipulating text. Take advantage of that by expressing everything as text.

And by everything, I mean EVERYTHING that you possibly can. Jenkins jobs, server configuration, Spinnaker pipelines. All of these things can be expressed in text form.

[Read More]