Skip to main content

2014 Reading List

Below are the books I've read (so far) in 2014. Mainly business books, some technical (some for desk reference), and a couple on Zen, and a couple of novels.

The Software Craftsman: Professionalism, Pragmatism, Pride, Sandro Mancuso (pre-ordered)

Tao Te Ching, Lao Tzu (in progress)

The Way of Zen, Alan Watts (in progress)

Enchiridion, Epictetus (in progress)

Agile Principles, Patterns, and Practices in C#, Robert C. Martin, Micah Martin

Thinking, Fast and Slow, Daniel Kahneman (in progress)

History of Western Philosophy, Bertrand Russell (in progress)

Thoughts of a Philosophical Fighter Pilot, James B. Stockdale

In Love and War, Jim and Sybil Stockdale

The Joy of Clojure, Second Edition, Michael Fogus, Chris Houser (in progress)

Rework, Jason Fried, David Heinemeier Hanson

High Output Management, Andrew Grove

How Google Works, Eric Schmidt, Jonathan Rosenberg

The Hard Thing About Hard Things, Ben Horowitz

Zero to One, Peter Thiel, Blake Masters

Code Complete 2, Steve McConnell

The Passionate Programmer, Chad Fowler

Cracking the Coding Interview, Gayle Laakmann McDowell

Behind Closed Doors, Johanna Rothman, Esther Derby

Testing Applications on The Web, Second Edition, Hung Q. Nguyen, Bob Johnson, Michael Hackett

Sources of Power, Gary Klien

How Successful People Think, John C. Maxwell

The Elements of Style, William Strunk Jr., E.B. White

Say it Right The First Time, Loretta Malandro, Ph.D.

Search Inside Yourself, Chade-Meng Tan, Daniel Goleman, Jon Kabat-Zin

Zen Mind, Beginner's Mind, Shunryu Suzuki

You Can Be Happy No Matter What, Richard Carlson, PhD

Zen and the Art of Motorcycle Maintenance, Robert M. Pirsig

Succeeding with Agile, Software Development Using Scrum, Mike Cohn

Management 3.0, Jurgen Appelo

Crossing the Chasm, Geoffry A. Moore

Good to Great, Jim Collins

The Lean Startup, Eric Ries

Clean Code, Robert C. Martin

Refactoring, Improving the Design of Existing Code, Matin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts

Refactoring to Patterns, Joshua Kerievsky

Domain Driven Design, Eric Evans

Patterns of Enterprise Application Architecture, Martin Fowler

Pragmatic Thinking and Learning, Andy Hunt

Personal (Jack Reacher), Lee Child

Sycamore Row, John Grisham

Comments

Popular posts from this blog

Generating Java Mixed Mode Flame Graphs

Overview I've seen Brendan Gregg's talk on generating mixed-mode flame graphs and I wanted to reproduce those flamegraphs for myself. Setting up the tools is a little bit of work, so I wanted to capture those steps. Check out the Java in Flames post on the Netflix blog for more information.

I've created github repo (github.com/jerometerry/perf)  that contains the scripts used to get this going, including a Vagrantfile, and JMeter Test Plan.

Here's a flame graph I generated while applying load (via JMeter) to the basic arithmetic Tomcat sample application. All the green stacks are Java code, red stacks are kernel code, and yellow stacks are C++ code. The big green pile on the right is all the Tomcat Java code that's being run.


Tools Here's the technologies I used (I'm writing this on a Mac).
VirtualBox 5.1.12Vagrant 1.9.1bento/ubuntu-16.04 (kernel 4.4.0-38)Tomcat 7.0.68JMeter 3.1OpenJDK 8 1.8.111linux-tools-4.4.0-38linux-tools-commonBrendan Gregg's Fla…

Multi Threaded NUnit Tests

Recently I needed to reproduce an Entity Framework deadlock issue. The test needed to run in NUnit, and involved firing off two separate threads. The trouble is that in NUnit, exceptions in threads terminate the parent thread without failing the test.

For example, here's a test that starts two threads: the first thread simply logs to the console, while the other thread turfs an exception. What I expected was that this test should fail. However, the test actually passes.

readonly ThreadStart[] delegates = { () => { Console.WriteLine("Nothing to see here"); }, () => { throw new InvalidOperationException("Blow up"); } }; [Test] public void SimpleMultiThreading() { var threads = delegates.Select(d => new Thread(d)).ToList(); foreach (var t in threads) { t.Start(); } foreach (var t in threads) { t.Join(); } }
Peter Provost posted an article that describes how to make this test fail. It works…

Basic Web Performance Testing With JMeter and Gatling

Introduction In this post I'll give a quick way to get some basic web performance metrics using both JMeter and Gatling.

JMeter is a well known, open source, Java based tool for performance testing. It has a lot of features, and can be a little confusing at first. Scripts (aka Test Plans), are XML documents, edited using the JMeter GUI.  There are lots of options, supports a wide variety of protocols, and produces some OK looking graphs and reports.

Gatling is a lesser known tool, but I really like it. It's a Scala based tool, with scripts written in a nice DSL. While the scripts require some basic Scala, they are fairly easy to understand and modify. The output is a nice looking, interactive, HTML page.
Metrics Below are the basic metrics gathered by both JMeter and Gatling. If you are just starting performance testing, these might be a good starting point.

Response Time – Difference between time when request was sent and time when response has been fully received

Latency –…