It's pretty amazing how well Firewatch captures the feel of that point in time. Your character's backstory was pretty well designed to give you an emotional connection to the game. Back when people first started discussing games creating interactive movies, what we ended up with were mostly electronic versions of Choose-Your-Own-Adventure books. Firewatch is a nice evolution of interactive fiction into something an order of magnitude better.
Author here - the project did originally just have fault and latency modes, and the last one came out of discussions with a colleague about other failures that might be interesting.
I'm looking for more failure modes to add, so if you can think of any more send them my way!
Unclean network disconnects. We had to dynamically change iptables to simulate that particular failure case. It's hard to repro but something that does happen in prod and something that can cause mem leaks
Pausing within a synchronized block to exaggerate slowdown sounds really interesting - and would provide a great opportunity to learn about how locking works "under the hood" :)
Haha, no worries! I've been checked out of Java for a while and I was a little bit worried that this was semantically meaningful, which would be a pretty confusing addition to the language :)
I've used it as the backing for a time-series database and to store deltas for a state-machine - in both situations I wanted something that understood "POJOs" and didn't require a lot of setup.
Even in the case of multiple non-unique entries, if the stored objects are not meant to be mutable, the API exposes .reverse() to find the most recent.
1. Under the hood it partitions the log into sections to avoid Java's MappedByteBuffer size-limit. I've not tried to deliberately push the file-size limit yet, but it's something to add to the benchmarks when I publish them (soon!)
2. It doesn't support primitive arrays as of 1.4, but this is something that I have considered in future versions. Pull requests are definitely welcome.