Video Games With Good Stories

Alright, so in general video games have really really bad writing in them. And a lot of them can get away with that, because they’re still fun. But there are quite a few video games that actually manage to have good stories. Here’s a list of some that I’ve played.

  • Arcanum: Of Steamworks & Magicka Obscura
  • Bastion
  • Bioshock
  • Chrono Trigger
  • Golden Sun 1 & 2
  • Her Story
  • Persona 5
  • Planescape: Torment
  • Portal
  • Puzzle Agent
  • The Stanley Parable
  • Thomas Was Alone
  • To The Moon
  • Transistor
  • Vampire the Masquerade: Bloodlines
  • The Witcher series (especially the 2nd and 3rd games)
  • The Wolf Among Us
  • The World Ends With You
Tags: video games lists 

Programming Articles and Talks

Here’s a collection of talks or articles that I really enjoy.

The Error Model

Joe Duffy describes the error model in an experimental programming language that he worked on. Starts off by describing different ways that programming languages give programmers to express and deal with errors. He discusses the pros and cons of each strategy, and then goes on to describe how they designed around those problems to create something truly unique.

[Read More]
Tags: lists programming 

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]