RecyclerViews on Android

Given my background as a web developer, I have a strong bias towards the client does something and then the server does its thing and returns a full page to render.  Sure, there are plenty of exceptions especially now, but I was raised in development in the world of Java Server Pages with the server drawing out the whole page.  The biggest fundamental change as I have been developing the KitchenOS Android app is moving from that whole page write / refresh thinking into thinking along the lines that small things like a touch or a gesture can change just a small piece of content without re-writing the whole screen.  Were I actually building this piece out as a web page, I could have had these three simple screens done in a couple of days, maybe even a day.  Instead, I am trying to expand my horizons and teach myself something new while keeping my skills fresh.

Combining the new paradigm and rules within the Android platform, and you have the struggles I went through with building out a list view that would scroll within the confines of a screen.  Sure, it’s definitely “easy” stuff.  But learning how and why it works with some less than stellar documentation has made things take quite a bit longer.  It has been weeks of guessing and checking and then googling and reading the documentation more. 

But I finally did figure out how to use RecyclerViews within Android to create a scrolling list.  I even think I understand the how and why of the building blocks versus just copying and pasting code from the documentation (or Stack Overflow).

The rest of this post is my attempt to restate what I learned so I can be positive that I actually understand this to repeat the process in the future.

Problem Set: I am displaying the details of an overall recipe that I need to edit.  Part of that recipe’s details include two different lists: the ingredients and then the categories (or tags that someone has added to them).

Looking through the Android developer documentation, this is done leveraging RecyclerViews.  The RecyclerView class is a part of the Android Jet Pack Framework.  The RecyclerView provides the capabilities to load a long list of elements and scroll through them.  It will handle the majority of the memory management determining what part of the list needs to be in memory and what doesn’t.  Sure in something that I am building to only run for myself this might not matter, but I want to learn this right.

So how do I do this?  Just follow five simple steps.

Step 1: Create a new fragment

Step 2: Set up the RecyclerView within the Larger Fragment

Step 3: Set up the RecyclerViewAdapter

Step 4: Connect the RecyclerViewAdapter to the main fragment

Step 5: Load the Content into the Adapter

Five steps to get a scrollable list populated.  The third time I did it, it only took my 30 minutes.  Compare that to the first two which each took over a week.  I may have finally cracked the nut and understand what is happening and why.

Step 1: Create a New Fragment

This step was always pretty simple thanks to Android Studio.  Leveraging what Android Studio provides, I would go to the menu and go to Create a new Layout Resource File.  Android Studio ends up generating the actual resource file.  Then using the Layout Editor, I go in and create the layout for how I want each individual item within the list to look.  The only real tricky piece of this is to make sure that the restraints are set appropriately on the different pieces of the layout.

I always set up the fragment to have a Linear Layout at the root level.  I end up setting my height here to make sure the list item is limited to a certain size as I have tried using match_parent, but then it makes each individual list item the size of the container I want them to scroll within.

For the ingredient and category listings, I have set this to be 50dp.  Underneath the Linear Layout element, I create a Constraint Layout set to have layout_width and layout_height as match_constraint making sure it sits within the height limit I set on the Linear Layout.  Inside the Constraint Layout is where I end up building the overall look and feel.

Step 2: Set up the RecyclerView within the Larger Fragment

This step was always pretty simple just to hook up.  But what took me a while was to figure out how to get the layout I created in Step One to show up in the actual fragment it will be displayed in when the application is run.

The simple part was using the Layout Editor to add in a RecyclerView within the constraints of my layout.  That would immediately add in the default view that just said “Item 0, Item 1, etc.” with each on an individual line.  I didn’t like the way that looked, so I kept looking for ways to get my layout to actually show up, and I finally found it with Sample Data and the Android Studio “tools” namespace within the layout’s XML file.

Sample Data

Creating sample data was pretty simple within Android Studio.  All I needed to do was go through the menu bar and choose New > Sample Data.  From there, the sampledata folder was created at the root level of my project.  Adding new sample data, required me to create the JSON file representing the sample contents I wanted.  Simple once you know the format.  The format is a basic JSON object with a comment and a data object that represents the actual content.  The following snippet is a full sample set of data with ingredients.  This is saved within my sampledata folder  as ingredient_list.json.

  "comment" : "My sample list of ingredients for the layout.",
  "data" : [
    { "fullText" : "1/2 cup milk"},
    { "fullText" : "1 teaspoon cinnamon"},
    { "fullText" : "1 pound ground beef"},
    { "fullText" : "2 tablespoons brown sugar"}

The sample data is then applied to the project by adding the following element into the layout resource XML file.


“List Item Layout” View

I don’t know if this is the official name, but it is my name for this idea.  Basically, making sure that the fragment I created in Step 1 is visible to me when I end up viewing the overall “major” fragment. I did a bunch of different Google searches that took me to the Android Documentation for the tools XML namespace in the layout resource XML file. This namespace allows me to show the look & feel of another fragment into my fragment.  In this instance, I can see my design for the list view within the ingredients and categories section when I am looking at the overall recipe layout.  It’s really simple to do, too. 

Add the following line into the appropriate layout XML file within the RecyclerView tag:


This snippet tells my RecyclerView to pull the layout I have called list_item_category into the view.  Now I see the sample data I set up and the list’s layout itself when I view the recipe_detail_fragment within using the Android Studio Layout Editor.  Sure, this has not impact from a pure functionality standpoint, but it matters from an aesthetic standpoint when developing, which is what I was going for.

Step 3: Set Up the RecyclerView Adapter

According to the Android documentation, the RecyclerView Adapter “creates views for items, and replaces the content of some of the views with new data items when the original item is no longer visible.”

OK, so what does that mean?

Within the RecyclerView context, Adapters store the actual contents of the list I am scrolling through and then provide the system with the element when they need to display it.  Simple, right?  In theory, yes, but when I read through everything you need to do it got muddled in my head.  But it really is pretty simple, you need to override three different functions:

  • onCreateViewHolder

  • onBindViewHolder

  • getItemCount

The getItemCount is pretty self-explanatory, that’s the count of items in the list / array you are wanting to display to users on the screen.  So return the length of the list.

The other two are a bit more complicated.

The onCreateViewHolder function creates the abstract view object that will be populated by each list item.  But what is View Holder?  Simple, it is the overall view that I created in Step 2 for the list item.  To handle this, Android Studio will create an inner class.  I called it IngredientViewHolder because I am working on the ingredient list.  This class takes the View that I created and allows me to create and fill the contents of its a sub-views.  In my ingredient list item view, it is currently just a single TextView displaying the ingredient name.  Within the IngredientViewHolder I created an instance variable ingredientNameTextView which houses my TextView.  The class is then returned to the caller, so now I have a ViewHolder returned to the application.

The onBindViewHolder function takes the current place the system is at drawing the screen and says, “ok, how do I actually put content in here?”.  Enter the View Holder.  In my case the View Holder was the IngredientViewHolder inner class.  The View Holder itself is passed into the function, and then I set its sub view content (my simple TextView) to the value of the current position in my ingredient list.

val item = ingredients[position]
holder.ingredientNameTextView.text = item.fullText

with(holder.lineItemView) {
    tag = item

Step 4: Connect the Adpater to the Main Fragment

Connecting a RecyclerView Adapter into the main fragment takes two steps:

  1. Setting up an empty adapter when the View is created

  2. Filling the adapter with the list of items when the content is obtained from the ViewModel

Both are straight forward.  But it took me a while to understand the difference between the two.  Within the onCreateView function of my RecipeDetailFragment (the fragment I use to display the full contents of a recipe), I needed to add the creation of the RecyclerView.

ingredientRecyclerView = myView.findViewById<RecyclerView>( {
            layoutManager = LinearLayoutManager(context)
            adapter = IngredientListRecyclerViewAdapter(emptyList())

This is pretty simple code. I end up using the larger view (myView which needs a better name I know) to get the sub-view, my RecyclerView.  From there, I leverage Kotlin to apply my layout manager (Linear in my case) and my adapter which is what I created in Step 3.  Notice here I end up filling this with an emptyList() because I don’t yet have the content I need to display.  I don’t load the content into the RecylerView until the system is ready to do so.

Step 5: Load the Content into the Adapter

The final step is to actually place the content I pulled from my backend service into the Adapter and display it on the screen.  For all other pieces of data, I have been leveraging the Live Data and View Model architecture provided as part of the Android Jetpack framework. 

In my architecture, I created a ViewModel associated with my Recipe Detail fragment containing the actual recipe I want to display.  The model for the Recipe includes all of the different attributes I identified such as title, ingredient list, category list, details, etc.  But how do I load that content into the Adapter?

With the LiveData architecture, this is very straightforward.  In the onActivityCreated function, I have the following code that loads the content into the two RecyclerView Adpaters I created.

recipeListViewModel.recipeList.observe(this, Observer { list ->
            var selectedRecipe = list?.filter{ recipe -> recipe.uuid == uuid }?.single()

            // Other code creating the fragment
            ingredientRecyclerView.adapter = IngredientListRecyclerViewAdapter(selectedRecipe!!.ingredients)

After that, the content is written to the screen from my list. 

Now on to manipulating it and performing actions against it like editing and enhancement and probably trying to figure out how to create an overlay within an Android app to perform some content editing.

Book Review: Dark Sacred Night

The Harry Bosch books have always held a special place in my heart. It was Concrete Blonde which was the book that I think got me back into reading on long plane flights when I was travelling almost every day for work a little over ten years ago. From there, I think I spent time reading every Bosch book and the rest of the Michael Connelly novels as quickly as they came out, often times putting down another book to pick up the most recent. And that is exactly what I did with Dark Sacred Night.

Sure, I am not able to knock a book out on a weekend like I used to be, and I have far fewer train rides to sit down and read, but this was a book I wanted to read and spent some late nights reading it on vacations and at home. This book was the second in the Renee Ballard series and was a crossover with Harry Bosch really continuing the saga / storyline from the previous Bosch book over Daisy and Elizabeth Clayton.

In the previous book Elizabeth Clayton was a secondary story, someone Bosch felt for and tried to and did save from an opiod addiction. At the start of this book, Bosch was working her daughter's murder case as his pet project while he was also working on a cold case involving a gang hit with the San Fernando PD. The stage is set for him to interact with Ballard when he comes into her precinct late at night and she sees him and wonders what he is working on. After Ballard has checked up on who exactly this Bosch is, they start to work the Daisy Clayton case together, sort of a hobby project for Ballard, but a mission for Bosch.

It is in this mission and how it weaves together with the gang hit job that I think the story ends up lacking. To me, the gang hit story ended up feeling like a way to give Bosch some conflict, both with his job and in his personal life. I don't think that storyline was really fleshed out and it seemed to follow along with some traditional tropes: (1) Cop finds source, (2) Source is murdered, (3) Cop finds the leak, (4) Leaker attempts to kill himself, and (5) Gang puts the cop and his family in danger.

Yes, he gets out of that danger. And no, I never really felt that he wouldn't. I never really contemplated him not getting out of it. I guess this could have been the book in which Bosch died and handed the reigns of finding justice for all ("everyone matters or no one matters") to Ballard, but I don't expect that to happen with the TV show in place and more seasons coming even though I know there are plenty of stories still available from the previous novels even without introducing Mickey Hallar.

The Daisy Clayton case is where this book shines, but it is also held back by the fact that Connelly didn't do a good job making you care for Elizabeth or Daisy Clayton. Sure, I have never lost a child so there is no way I would know what Elizabeth Clayton is thinking, but her character didn't resonate with me, especially in this book. Her coming to live with Bosch, sleeping with him, and then leaving abruptly didn't register with me as something I cared about and wanted to see through, so it made the whole storyline more of a whodunit, and that part was especially weak in this book.

Ballard and Bosch went through a standard investigation, but we didn't really get to know the ups and downs of it. We didn't know why they would move a card to the side for follow up, or why they wouldn't. We weren't really with them when they were making moves, and didn't get into their heads. The closest we get into their heads is in the climax of the story. But by then I just wasn't emotionally hooked. Sure both Ballard & Bosch ended up doing a few illegal things to catch the final guy, but then the father-like figure that Ballard has been looking for in Bosch came out and he protected her.

I must say the final hook in the epilogue just seems like the easy way to keep the Harry Bosch character in books and novels, and at the same time sort of diminishes the Renee Ballard character down to a Harry Bosch side kick. I liked her introduction as a full-fledged character in the Harry Bosch Universe, and I hope that doesn't change and she has as much of a "solo career" as Mickey Haller because she's an interesting character and one that can be built up over a whole book series without the crutch of Harry Bosch by her side.

Quick Review: 3 out of 5 stars

Sunday Night Means It's Prep Time

Now that we are back to having a full-time nanny after not having one for two months, I am back into my groove of making food for the boys every Sunday night so they have things to eat, and tonight was no different. So after finding out how the Bears game ended while I was trying to put a two-and-a-half year old to bed, I started the process of cooking for the week. Almost three hours later, and I am done. And I definitely feel that I accomplished something. Nothing for the kids is overly complex, but each time I do this, my skills in the kitchen improve, especially my knife skills. So what will the boys have this week?

Baby Purees

  • Tropical Fruit Medley

  • Carrots & Parsnips with Nutmeg

  • Sweet Potatoes and Chicken

Meals and Snacks for the Toddler

  • Cinnamon Sweet Potatoes

  • Pork Sausage Patties

  • Sausage & Pepper (Red & Green Bell) Frittata

  • Mac & Cheese

Sure, these are the old standbys, but I think it works as the kids love the food and it is easy to mix and match things to end up making things different for lunch and dinner (if needed).

The interesting thing to me as I was cooking these, I started to think of how this action ends up helping me when it comes to KitchenOS. As I get all of this in place and planned, it shows me what ingredients I need to purchase and it is sort of a smaller version of a meal plan. I can use these to drive some of the functionality that I want to build and have, and hopefully end up saving some money and having less uncooked produce sitting around the house that I need to throw out.

KitchenOS: A Look Back and a Look Forward

It's been over a year since I really came up with the idea for KitchenOS, and not much has been actually developed. But I think as the year has continued on, I have ended up actually building out in my head what I want to do and learned quite a bit along the way specifically around Amazon Web Services (AWS), Kotlin, and Android programming. Since it's the start of the year, I figured now would be the perfect time to look at what I have accomplished and what I want to accomplish on this project in the future.

A Look Back

I admit it, I spend way too much time thinking about cooking and what I am going to make for dinner, and that drove the whole KitchenOS idea. KitchenOS, for lack of a better name right now, is an "operating system" that I would be able to use to power my cooking experience both inside and outside of the kitchen.

My overall cooking experience happens in four different places: (1) my kitchen, (2) browsing recipes on my Surface Pros, (3) at the grocery store, and (4) reading cookbooks on the couch. And while the actual process of cooking is the most important, it also misses the rest of what I do which includes meal planning, determine what every one in the family likes to eat (and that isn't easy with a toddler hanging around), and tryign to come up with new recipes that will excite me to cook and have the family eat. This is where KitchenOS came in, it gave me a project and I have a direction of what I want to do.

So what did I do last year? I thought a lot. I read a lot of different stuff on both Android and just general programming paradigms to keep my skills up to date. And then I actually spent some time building out some of the features of KitchenOS up to what I would consider prototype level.

Recipe Parser

Knowing that parsing recipes from different websites was going to be a main function of what I needed, I decided to start working on this piece first. It also had the major benefit to it that I was going to write it in Java, and I already am very familiar with Java given that it is the programming language that I use the most professionally, when I do still code. The learning points here for me were more around how to leverage "new ways" (ok, I know most of them aren't new to every one, but when I was coding every day Java 8 wasn't even around) to code in Java and then to build out an application leveraging solely AWS technologies, focusing as much as possible to make sure I am not making a monthly payment for a server which brought me to AWS Lambda and DynamoDB. Given that I can use the free tier right now, who knows if I will ever end up paying for this unless other people start to use the application.

Going back to the days of me programming new features for IlliniBoard all the time and I wanted to scrape Illinois box scores web scraping and parsing has been one of those things I always wanted to do. I just never really spent the time to actually do it, mostly because I don't think I actually understood the necessary way to do it and that I could make web calls and then just parse text. Don't ask me why I was a moron then, I just was. So now that I finally understand conceptually what it is doing, I started the process of building out my scraper.

The architecture for it is pretty simple: an AWS Lambda function that I call passing in a URL. From there, the Lambda function leverages the JSoup HTML parser to parse the data through a collection of services. Right now I only parse from one site, Food Network so this will have to change because my code is written pretty tied to the Food Network as this snippet (which is really the whole Lambda function outside of error handling) shows:

Recipe recipe = new Recipe.Builder()

I have followed the Builder pattern pretty heavily in things I do on the side because while it adds a lot of boiler plate code, I think it is easier to read and use. And now if I want to add in some sort of compiler level restrictions I can do so within the Builder when I am making an object. Yes, I know I can do it with annotations through Lombok but I don't really like the idea of annotations generating a lot of the code I would be using. It feels like I am losing some of the control there, but I really haven't dug into it too much.

I stopped working with the Recipe Parser once I got to the point where I needed to manually enhance the recipe itself to clean thing up. That is when I started to dig into the next topic, building out something that I would use in a more traditional fashion to clean up the different things that I parsed.

So ending 2018, my recipe parser will perform the following tasks:

  • Take a URL from and parse it
  • Add that data into the DynamoDB with some basic fields: categories, directions, ingredients, sourceUrl, title, uuid, and whether or not the recipe has been enhanced

This is what I like to call a "working prototype". I can also invoke the lambda function by leveraging the command line through Gradle which is how I was performing all of my "unit testing".

Recipe Editor

This was my first foray into any sort of Android development, and I can say it has kicked my ass. I am a web developer (from the late aughts) by trade, and with that comes some inherent thoughts in terms of how things are done, i.e. the user clicks a button to make a call to a server, the server performs the function and then redraws the page for the user. I know there is much more you can do on the front-end with technologies like React now, but I never got into them as the commerce world is very risk averse and trails the bleeding edge by quite a bit. To get into the world of native app development, I needed to have a problem to solve, and I finally did (albeit one that I could easily have written a web page for), enhancing the recipes that I have parsed from the web.

So I did something that I don't really normally do, I went right to the official Android developer documentation and read. It was really interesting and I probably spent a good month just reading and making "My First Android App" both for Android Things and just a traditional one that I ran through the emulator. It was an eye opening experience. The most interesting thing was getting into the Android Architcture Components and the different concepts there like LiveData, ViewModels, and Navigation Components.

Putting all of this together was definitely not easy, especially while at the same time I am attempting to teach myself Kotlin. Yep, I am a masochist.

So at times I struggled with Kotlin. At times I struggled with the documentation from Google. At times I struggled with the boiler plate code added by Android Studio not aligning to the documentation provided by Google. ALl of this caused for some trying times as I was continuing to push through. But over the Christmas week and last week I think I finally hit a break through in understanding the most basic elements of what I was doing. I finally have a working Android app that does the following:

  • Loads up a Main Activity with an Image
  • Click on the Image to call my RESTful service to get recipes
  • Display a list of Recipes on the screen
  • Click on a recipe to select it and go to a detail screen

Sure, there's a ton more. It is not even prototype level, but it is to a point where I now have samples in my own code that will let me move forward. I fought with this for probably two months, but I got it to a point last week where I said to myself "I finally get this, it makes sense." And I consider that a win heading forward.

A Look Ahead

So what's next? A lot.

Is there a plan? Not really, just a lot of ideas on what I want to build. That being:

  • A recipe browser that has all of the recipes I like from the Internet, things I have made, and the cookbooks I own
  • A meal planner that will allow me to plan and vary my family's meals throughout the week
  • Something that will help me plan out grocery shopping a bit better, be it a list of some sort of something else (this is really vague in my mind right now)

So I am goign to move forward. This week I hope to end up with a working prototype of the Android app that I have. Of course, all of this will be without an actual Chrome or Android Tablet to run it. Then I will probably want to move back to more of the web scraping and parsing, and then also do picture parsing from my cookbooks thanks to the services provided by the different cloud hosts.

I also plan to try to do more of this as I think it helps me actually think and plan things out in my head. I don't want this to be all KitchenOS, but when it comes to things that I think about which aren't my family or work (you know the stuff I won't blog much about), this is about it.

KitchenOS Development Blog: Choosing Dynamo DB

Not having to wake up in the middle of the night to feed a bottle to a baby has given me more time to continue to work on my side projects.  I also realized that now paying full price for a nanny here in New York is getting expensive, so I should be focusing on ways to cut expenses.  One of those ways for me is to actually plan out my breakfasts and lunches and bring them to work instead of spending about $30 a day on food.  Combine these things, and it makes me want to get KitchenOS working even more.

Last night I started to look at what I had and had not done.  Simple answer: I haven't done much.  I have a quick recipe parser done for the Food Network sites.  But of course when I went to use it, they changed their site and I had to update it.  

After that, I needed to persist it somewhere to access it from everywhere else.  Since I don't know the full structure of every recipe I will see, I decided to make sure that I can change the structure if needed and decided to use a document based database, specifically Amazon's DynamoDB versus leveraging a SQL-based database.  The only hiccup I sort of had was understanding the new API for DynamoDB, but it was relatively straightforward even though building the value map seems a little bit verbose.

As an example, here is creating a simple String attribute

itemValues.put("title", AttributeValue.builder().s(title).build());

I know there are some benefits to this, but this seems excessive.  I would have liked to be able to just put a String in here.  But then when I went to needing to add in the ingredient list, it made more sense when I could combine the different builders and get the AttributeValue object which would have been much more difficult without this structure in place.

itemValues.put("ingredients", AttributeValue.builder().l(
                        .map(ingredient -> AttributeValue.builder().s(ingredient.fullText()).build())
Now, all I had to do to push this content to the database was building a simple request and executing it.

The one thing I am still looking at with this is if I have the code structured in the way I want to have it.  Right now, I have a save() method on the Recipe class which allows me to simply call to save this current recipe instead of invoking a whole other data access layer.  But what if I need that in the future?  Though last night I decided that if I needed that in the future I can change.  That is the joy of not having to plan everything out.

Open Question from Last Night

  • How will I structure my shared code across my different modules?  Right now, that is future John's problem.  I can pull things out of the recipe scraper when I need them in a different application.

Book Review: Buttermilk Graffiti

When I first saw Buttermilk Graffiti on Amazon, I was thinking that it would be another cookbook from Ed Lee. Not like that is a bad thing, as it would have been a purchase as I loved his previous cookbook Smoke & Pickles. But I was pleasantly surprised to see it was more of a book version of Anthony Bourdain's show with Lee going to different parts of the United States and seeing how their regional cuisine came into be with recipes at the end of the chapters. This discovery made this book the next one I would purchase, and allowed me to do so on the Kindle which meant I would definitely read it more.

As Lee travels across the country to learn more about the different regional cuisines in America, the reader is brought into his head in much the same way the viewer of Ugly Delicious is brought into David Chang's head. I found the parallels to each story interesting in that they were both less focused on the fine dining aspects of cuisine and more on what people were eating day in and day out. Lee didn't go to a famous soul food restaurant, he went to two places that were sort of just women cooking from their houses that became restaurants. He didn't hit up Milwaukee's best restaurants, he went to the places that time has passed and were still serving the same thing from the early 1900s, but very few people were coming to outside of an older clientele.

The theme running through the entire book is that food itself is a journey, and that every one goes on a different food journey. Lee was trying to learn everyone's food journeys to help him understand his own, and force the reader to understand their own. All of this talk on people's food journeys and history really made me think: what has been my food journey?

What I discovered is that I don't have a family cuisine. Sure, there are things that my mom cooked that I really liked and I asked her for the recipes (Swedish meatballs, stronganoff, etc.), but we didn't have a culture of food in our house. There wasn't something in place that I knew every Sunday our family would sit down and have a large meal that was a tradition. There wasn't one group of food that we had more than any other. Why was this? I don't really know. Food just wasn't and still really isn't in our family's DNA. Sure we all love going out for nice meals, but sitting down and just cooking something together was never a thing we did. In fact, I would say the biggest food memories I have are of my dad burning things well cooking them on the grill.

I grew up believing that it was only my dad who had such lousy taste in food, but a lot of my parents' generation ate poorly regardless of nationality or wealth. Much has been written about the ills of the commercial food industry and the rise of fast food that dominated the 1960s and '70s in America. My dad was a part of that generation, and for him, eating at McDonald's was what you did if you wanted to assimilate into American culture.

Of course, neither of my parents had to assimilate into American culture. They were born here, but this passage resonated with me as a way to sort of describe our family's food background. Treats as a kid were going to your TGI Friday's, Chili's, McDonald's, etc. These were Friday night family meals and I have fond memories of them and still crave these places from time to time. I mean who can pass up the Chili's queso dip?

With this background, it really wasn't until a little over ten years ago that food even became a big thing for me. It was on a bachelor party to Las Vegas where I sat down and ate at Mesa Grill for the first time that I discovered how good food could be. It took me on a journey that led me first into hitting up as much fine dining as I could and then to cooking more and more. Now, cooking is something that I do both because I like to do it, and also now I hope that my family can have a food tradition.

But what is the basis of that food tradition?

I think that's what this book brought out in me. There doesn't need to be centuries of history for something, though it helps. There just has to be a tradition of what we do as a family that will end up having a huge impact on Jack and George as they grow older and continue to grow on what we are starting now.

the best cooking is not about perfection, but rather the flawed process of how we aim for a desired flavor.

Sure Lee here was talking about the different ways people ended up making cornbread, but this should end up being the way I think both about cooking and setting up traditions at home. It's not about being perfect, it's about aiming for a flavor or just something as simple as a nightly dinner with Steph, Jack, and George that turns into something more.

Quick Review: 5 out of 5 stars.

Book Review: Standard Deviation

Picking out what book to read next for me is always one of those things that depends on the mood I am in when I finish reading the last book. This of course normally happens when I am tired as I read either on the subway or before I fall asleep every night. In this instance, I was looking for a more traditional fiction novel. Something that was a character study on modern living, and had added Standard Deviation to my Amazon Wish List, aka the queue of books I think I may want to read at one point.

The "book jacket" had this as on some Best of 2017 lists like The Skimm, NPR, The Washington Post, and Minnesota Public Radio. It's summary also seemed interesting:

> When Graham Cavanaugh divorced his first wife it was to marry his girlfriend, Audra, a woman as irrepressible as she is spontaneous and fun. But, Graham learns, life with Audra can also be exhausting, constantly interrupted by chatty phone calls, picky-eater houseguests, and invitations to weddings of people he’s never met. Audra firmly believes that through the sheer force of her personality she can overcome the most socially challenging interactions, shepherding her son through awkward playdates and origami club, and even deciding to establish a friendship with Graham’s first wife, Elspeth. Graham isn't sure he understands why Audra longs to be friends with the woman he divorced. After all, former spouses are hard to categorize—are they enemies, old flames, or just people you know really, really well? And as Graham and Audra share dinners, holidays, and late glasses of wine with his first wife he starts to wonder: How can anyone love two such different women? Did I make the right choice? Is there a right choice? A hilarious and rueful debut novel of love, marriage, infidelity, and origami, Standard Deviation never deviates from the superb.

So going in, this seemed like it was going to be an interesting book, and not very plot-driven. That is exactly what the book was, interesting and not really plot-driven. The plot of the book is more or less the story of Graham Cavanaugh and it jumps through what is happening in his life with his wife, his son, his ex-wife, his work, and their friends.

His wife, Audra, is an interesting character who doesn't seem like she could be a real person, at least any real person I have never met. She brings in house guests on a whim, is gregarious, and will find the interesting part of any one. Whereas Graham is more like people I know, reserved, and wonders at times just what his wife is doing.

The part of the book that I wasn't expecting was the relationship between Graham and Audra with their son, Matthew. Matthew is on the Aspergers' Spectrum, and has a huge love of origami. This leads them to finding an origami club and overly detailed discussions of the different folds that could be done. You can tell that Graham wishes his son was more "normal", but then there are times that just how much he loves his son is shown in his actions like cooking him specific foods, taking him to origami conventions, and later taking him fishing. As a parent, these parts of the book were the most heart-wrenching to me as they hit home.

The rest of the book hit home the questions of why do you love someone and what does it mean to love them. The book highlighted the differences between Audra and Graham and showed the jealousy between them, but also the mutual respect. While of course a lot of the story was driven by Graham's relationship with his ex-wife (whom he cheated on with Audra), I felt that part of the story was less about Graham and what he was going through, but more about Elspeth and how she seemed to be a woman that was in love with her job and just preferred to be alone.

Quick Review: 3 out of 5 stars

Book Review: The Soul of Basketball

If you jumped into a time machine to the Summer of 2010 and then the ensuing basketball season, there would be about three things you'd notice about me:

  1. I was always at The Gingerman (yes I know it's the GMan now, but it will always be The Gingerman to me)

  2. Basketball, specifically LeBron's free agency and the Chicago Bulls, were a constant topic of conversation both when I was sober and when I was not.

  3. I was working too much on a project in the Northern Suburbs of Chicago, so my outlet was basketball and alcohol. Two solid outlets based on points 1 and 2.

With those three things, it was a no-brainer that I was going to pick up and read The Soul of Basketball: The Epic Showdown Between LeBron, Kobe, Doc, and Dirk That Saved the NBA by Ian Thomsen. The book was about what I expected, which was that I wouldn't learn much new since I was one of those people that consistently refreshed Twitter for every morsel of information from July 1 2010 until that fateful day that LeBron James announced he would be taking his talents to South Beach.

But this book was able to tell me some new things. I didn't know much of Dirk Nowitzki outside of what he did on the basketball court, so a lot of the new information I learned was about him. The history of his training regiment, his internal anguish and how much he took his team's losses on him even though outwardly he always kept that same demeanor, and how he always felt like an outside. The one thing that shocked me the most is that during the Summer of 2010, not one team besides the Mavericks went and contacted Nowitzki. They were all chasing LeBron, Chris Bosh, and Dwyane Wade. But not one reached out to him. I don't think it was because they didn't think he was worth it, but because they assumed he was re-signing in Dallas no matter what. I can't count number of times I said while discussing NBA Free Agency while drunk with friends that the Bulls should just reach out and point Dirk to Huettenbar as a rectuiting pitch and see what happened. We knew he was staying there, but the fact no one called is just crazy. I mean why not try?

Thomsen obviously had great access throughout for this book and it showed in his reporting with all four of the major characters in the title. But I think he missed an opportunity to tell the full story of the 2010-2011 NBA Season by completely ignoring the Chicago Bulls. The Bulls were less than a supporting character in this novel, they were a two sentence piece during free agency and just a one sentence entry between Miami beating the Celtics and then getting to the NBA Finals against Dallas. I mean Derrick Rose was named the MVP that season pretty much because he wasn't LeBron, and that aspect of the season needed some attention on it. Also treated sort of like a by product of the season and not a real story was the Oklahoma City Thunder. They were a bit player in the Dallas run to the NBA Finals, but it would have been good to build them up more with their young core of Durant, Harden, and Westbrook that would be vanquished by Miami's Big Three. I felt both of these were storylines Thomsen could have and should have explored if he wanted to really talk about the soul of basketball and the "saving of the NBA".

Quick Review: 3 out of 5 stars.

Book Review: This Could Hurt

The older I get, the more I enjoy a good novel on workplaces and what goes on in them. I really enjoyed Then We Came to the End by Joshua Ferris when I read it a while ago. And the book jacket for my next book claimed this was a similar book:

> A razor-sharp and deeply felt novel that illuminates the pivotal role of work in our lives—a riveting fusion of The Nest, Up in the Air, and Then We Came to the End that captures the emotional complexities of five HR colleagues trying to balance ambition, hope, and fear as their small company is buffeted by economic forces that threaten to upend them.

Just that paragraph alone had the book in my Wish List on Amazon (aka the place I put books I want to eventually read). So when I was looking for my next book and not wanting it to be another mystery or thriller, I went for This Could Hurt by Jilian Medoff, and it didn't disappoint.

This Could Hurt used a Human Resources department at a small research firm to tell the story of about five different archetypes you see in the business industry: the aging executive, the wanna be executive with an Ivy League pedigree, the stuck in a job he hates father, the woman in love with a co-worker, and the depressed gay man. Sure, all of these archetypes are pretty standard, but Medoff was able to bring something new into each of them. Medoff was able to bring both weaknesses and strengths into the characters to highlight that they were more similar than they let on, and they were all going through something that impacted their life at work.

Initally the story jumped between each of the characters as you saw how they all reacted to the economic downturn of 2008 and 2009 and its impact on them and their careers. Each were saved during multiple rounds of layoffs at their organization and were asked to take on more work, with some succeeding and some floundering at it for various reasons. Each character was shown to be oblivious to the struggles of the others and some more conniving than others about getting ahead.

But as the story moved on and the team dealt with adversity, it showed that different people were making moves behind the scenes to move ahead and stab people in the back than you would have expected. Those that made the blatant moves in line with their personality ended up not faring well, and all at the same time having a change in their heads as to what they believe is important in life, family. Those scenes in which a hard-driving Ivy League graduate learn that his goal at becoming the best having the best title is not enough in life really hit home for me, not because I chase titles (though I do think they are important), but because I know I would give up any title in the world just to spend more time with my family if they needed me.

Quick Review: 4 out of 5 stars

Book Review: The Jefferson Key

The weaving of historical fact with some fiction and conspiracy theories are always good choices for me to read in novels. I know they aren't true, but they could be and that makes them even more interesting. So when I ended up seeing on Amazon a link that I should read The Bishop's Pawn, I saw that it was a part of a series, the Cotton Malone Series. Of course, I didn't even realize that I had read another one of the books at the time, The Lincoln Myth. Since I remembered liking that one, I looked through the series order and decided to start at Book Seven, The Jefferson Key. I mean who wouldn't want to read a story that links together every assassination of a United States President to a group of pirates called The Commonwealth.

Four United States presidents have been assassinated—in 1865, 1881, 1901, and 1963—each murder seemingly unrelated and separated by time.

But what if those presidents were all killed for the same reason: a clause in the United States Constitution—contained within Article 1, Section 8—that would shock Americans?

While I normally try to pick up a series at the beginning, I decided not to at this time. I was wondering what I would end up missing, and it didn't seem like I missed too much. Though there was a character Jonathan Wyatt who seemed to have a history with Malone. I went back and looked after, and that history was actually filled out in a short story that was attached to the end of the book in my purchase on a Kindle. So I hadn't missed anything.

The Jefferson Key started with action almost right away. The book jumped right in on the attempted assassination of the President, Danny Daniels. Cotton Malone was asked to a hotel room by who he thought was his former boss of the Magellan Billet, a fictional agency within the Justice Department, sending him a letter that she needed help. But it turns out he was lured there by Jonathan Wyatt, who held a vendetta against Malone, to both stop the assassination attempt and hopefully get killed in the process.

The rest of the novel intertwines the perspectives of four different major characters: (1) Cotton Malone, (2) Jonathan Wyatt, (3) Cassiopea Vitt, Malone's "girlfriend", and (4) Alexander Hale, the head of the Commonwealth. While there are some other charcters involved including the other three leaders of The Commonwealth and a head of another major intelligence agency in the government, these four characters are involved directly in the plot moving the book forward.

Without going a bit more into the plot, I will say the book itself is paced extremely well. I am a fan of quick chapters (less than five minutes on the Kindle timings) in novels like this, and this book provided me with those. It just makes it easier to pick up and read on the train and to end up getting a quick chapter or two completed before I end up falling asleep. I realize I haven't spoken much of the writing or plot, but these books aren't about the writing, and discussing the plot can be too much at times.

Quick Review: 3.5 out of 5 stars

Book Review: The Quantum Spy

When I saw that David Ignatius had a new book out, being a fan of the spy genre and his previous novels, especially The Director, I knew that I was going to eventually pick this one up. But when I saw that the title was The Quantum Spy and the book jacket (ok the Amazon description) read:

A hyper-fast quantum computer is the digital equivalent of a nuclear bomb; whoever possesses one will be able to shred any encryption and break any code in existence. The winner of the race to build the world’s first quantum machine will attain global dominance for generations to come. The question is, who will cross the finish line first: the U.S. or China?

I made sure that I picked it up and read it when I was next in the mood for a spy novel.

Like all of Ignatius' previous novels that I have read, he completely delved into the details of spy craft proving to the reader that all of this was definitely plausible. But my disappointment was in the fact that the topic of quantum computing was nothing more than a MacGuffin for the rest of the spy craft to move forward. Quantum computing itself was a periphery topic and not even one that was the driving factor in this story of a traitor within the CIA and how they were being handled by the Chinese.

The story starts out well enough with some good old fashioned spy craft as Harris Chang works a Chinese PhD inside the MSS (China's version of the CIA) and gets out the information he needs including that the Chinese MSS has a mole, known as Rukuo within the CIA that has been feeding them secrets on the United States' efforts in quantum computing. We soon learn that this PhD commits suicide in his hotel room instead of working as a CIA informant. This is what sets up the action of the novel as the CIA fights a two-pronged battle: one to find the model inside the CIA and the other to discredit the work of the MSS.

The novel does a great job of playing out the views of each major character in the story from the CIA Agent Harris Chang to the mole within the CIA and back to John Vandel who is running this all for the CIA and Ling Ma, the head of the Chinese MSS. The way each mind thinks throughout the novel is great and by jumping between the individual characters Ignatius was able to move the story forward while not having to show one person having more knowledge than they really should have. The way Ignatius had every one questioning every one else's motivation was done really well, but I do think they laid it on a bit too heavy on the Chinese ancestry of Harris Chang and how that could impact what he thought (but this is also coming from someone who doesn't really look back at their own ancestry in any way whatsoever and never has understood that topic).

Quick Review: 4 out of 5 stars.

Book Review: The Forgotten Girls (Stevens & Windermere #6)

It took me a while to get to the latest release in Owen Laukkanen's Stevens & Windermere series, The Forgotten Girls. The last one in the series, book, was very good but as I said in my review last year, it was very dark. And based off the name of _The Forgotten Girls_ I was thinking this book was going to be another dark book. I was right, it was.

The prologue opens up with a young woman, actually a girl, who is train jumping attempting to get to Washington state in order to see one of her friends before they pass away from cancer. She takes the risky northern pass which is way too cold for any one to be outside on a train in the winter. She then goes into the middle of a heated train car and runs into a man that she struggles with, but is eventually killed.

Now there is a quick jump to a man picking up a woman at a bar and bringing her back to his apartment. As he is getting ready, she unlocks his phone and starts to look at both his Facebook profile and pictures on his phone. As she is flipping through the pictures, she ends up seeing a picture of a dead girl and flips out calling the police. It turns out that the man had his phone stolen a while ago, and the pictures are being uploaded to the cloud by the stolen phone, not the man. But this is when Stevens and Windermere end up getting involved and starts the main action of the book.

Without describing much of the action, Stevens and Windermere end up heading out west near the northern pass and discover there is a serial killer on the loose killing people who won't be missed by others: runaways, prostitutes, etc. The book moves between the view of Stevens & Windermere, the serial killer himself, the friend of the young woman murdered in the prologue who is looking for the man who murdered her best fried, and Mathers (Windermere's boyfriend, and fellow FBI agent). The book has a solid pacing throughout and has my favorite thing for commute reading: bite-sized chapters. But it was dark, and at times I thought too dark.

Quick Review: 3 out of 5 stars.

Book Review: Brotopia

After reading the Vanity Fair Brotopia exerpt, I was definitely curious what was else in this book that I didn't know about. So when I was looking for another book to read, I picked it up. I was hoping it would be able to shed some light on things I didn't know about as someone both in the tech industry, but not Silicon Valley and as an avid reader of technology news. Unfortunately, a quick summary of this book would be that if you have followed Silicon Valley in any real fashion since the turn of the century, there is nothing really new here, but it is a great summary to remind everyone just what the struggles for women and minorities in Silicon Valley are and how pervasive they are.

Brotopia itself was well-written, and needed at a time like this. The new things that were brought to my attention were not anything recent (though obviously I didn't know of the details of each piece of harrassment) but more the history of how we got to where we are today in the industry. Last year I watched Hidden Figures one Saturday night, and I didn't know of that story until the movie. There are many historical stories like that which Change alludes to in Brotopia. But to me the two anecdotes that still hit me after reading the novel were:

  1. The first image popularized and used widely as image compression algorithms were created was that from a Playboy centerfold. Yes, the image itself was cropped, but that didn't stop every one from knowing where it came from and for many young men to have it on their walls. I can definitely see how this would be off-putting to women in the industry and how they would not feel welcome from the early days and thus ended up leaving.

  2. The study Chang references that IBM paid for to determine the ideal personality of the computer programmer which found that the ideal programmer should be a loner who can solely focus just on programming. And from there, the stereotype of the loner computer nerd who lives in his mom's basement began.

  3. The Stanford school paper's article (or column) that said Marissa Mayer was a campus celebrity because she was the hot girl that was taking computer programming classes.

To me these were the anecdotes that I kept coming back to as I read the rest of the book. They were what stuck with me, not the stories of harassment, or the sex parties, or the lack of women in Silicon Valley, or the fact that people often times just went to and at their friends when they were trying to fill out their companies. But the explanations at just how hard it has been for them to get into the industry and once they are in stay within the industry.

As someone who has had responsibilities to hire technical resources at various points in my career, I can say that hiring people different than me is one thing that I have always tried to focus on. I was very proud that the development team at my previous company was diverse, but of course I would have liked it more diverse than it was. I also didn't realize just how the brain teaser aspect of some interviews caused issues for different people, and while I quit asking those quite a while ago, I didn't know they were something that has also impacted the ability for some people to get their foot into the technology industry.

The time I spent reading this book was for me a time to reflect on myself and where I sit in the larger technology industry and what I can do to change things, even so small. I think the biggest thing is that I can help to provide mentorship to all and focus on women and minorities, continue to push the idea that not all great technology companies need to be based in Silicon Valley, and even work to push hires for candidates that may not meet all of the criteria, but we know can do the work.

Quick Review: 3 out of 5 stars

Book Review: Grocery

I picked up Michael Ruhlman's Grocery quite a while ago, but after the first night I was just not into reading it, so I put it on my Kindle "bookshelf" and read a bunch of other books first. But the time was right for me to come back to the book this time. I have been thinking more about what I am buying from the grocery store and where I am shopping, and I thought a history of the grocery store would be interesting.

I must admit I was a little shocked as to the topic of the book, I was thinking it would be more of a grocery store history, but admittedly I probably should have read the book jacket a bit closer as it stated exactly what it was going to be:

Using the human story of the family-run Midwestern chain Heinen’s as an anchor to this journalistic narrative, he dives into the mysterious world of supermarkets and the ways in which we produce, consume, and distribute food.

This sentence from the book jack was exactly what the book was. I just wasn't expecting it, but I still devoured it like it was a home cooked meal.

Grocery did what I think a good book should do, it made me think. As a consumer, am I doing the right thing for my health and the health of my family and the broader world? Can I drive change with my own purchasing habits? What can I do to improve what my family eats? I saw all of it and throughout it thought to myself abotu what I can do as a family purchaser in a grocery market in New York.

Questions I am now asking myself:

  • Is it better to go to Whole Foods or Fairway?

  • What should I get organic versus standard?

  • Should I focus on getting better meat (beef, pork, veal, and chicken) for my meals, or stay with the standards?

Now, I think the answer to all of these questions are obvious, but there is a cost / benefit analysis that I do in my head. Part of adjusting to that is realizing that what I put in my body (and as the primary cook in the house, my family's) matters. It matters where the food comes from, and that my purchasing power can drive changes to the food system. Changes that need to happen.

But while *Grocery* was highlighted as a story about the grocery store and the food system, it was also a story of a father and son and thei relationship. Obviously, I have started to look through all stories like this through a different lens. I don't think that I could put together a story like this that Ruhlman did about his memories of his dad and one of his favorite things, the grocery store. I don't know what my dad's favorite things are, nor do I know what really makes him tick. My hope is that one day, Jack will be able to look back at all of the things we have done together and know what made me tick, and have fond memories of all of our trips to the grocery store, reading books, and even just goofing off. I don't have those, and books like this that play up a father / son relationship have started to trigger those emotions within me as a new father.

Quick Review: 4 out of 5 stars.

Book Review: Need to Know

The premise of Need to Know from Karen Cleveland was one that jumped out at me almost immediately. I was browsing the Books of the Month from Amazon, and this one was there. It hit a few things that immediately make me intrigued in a book: spy craft and family life. But the hook with this one was the woman was the CIA agent, and her husband has been a Russian covert agent since before they met.

Taking this premise, Cleveland weaved a great story that was tough to put down. She started with an Epigraph that hooked me. It brought up the idea of the family and asking what a wife was going to do about the man she loved and the father of her children. Her internal quandry was simple: country or family? "But was it a real family?" was the thought that consistently went through her head. She would do anything for her children and to keep them safe, but did that include turning her husband into the CIA (her employer) as a member of a sleeper cell of Russian spies that have been in the United States for decades.

The questions brought up throughout this book from the first sentence to the very last sentence are common in spy novels, but I had never really seen the hook brought in to connect it to a marriage, too. Cleveland did this and how she did it with flashbacks that connect directly to the current timeline was perfect. The protagonsit, Vivian, went through her whole life with her husband and now things that seemed innocuous were seen through the lens of him being a Russian sleeper agent.

Was the "chance" meeting of him bumping into her on the street as she moved into her apartment before her first day at the CIA a coincidence as she thought, or was she targeted by the Russian government as a young agent in the CIA?

Was the proposal at the airport meant to distract her from seeing his family which didn't really exist since they were also Russian spies, or was it romantic to have flight plans changed from Seattle to Hawaii for a surprise proposal?

Was her husband's pushing of her to get onto the Russian account something he had to do to get more information from her, or was it a husband that wanted his wife to excel in her career?

Was her husband's continued pushing to state that she should not take time off to stay with the kids a a husband worried about the money they needed to pay for everything, or was it a Russian spy that didn't want her to leave the CIA and the Russian account?

All of these decisions when looked back now changed how Vivian looked at Matt, but one thing she could never deny was her husband's love of their children. And how he would do everything in his power to make sure they were always safe. But given all of this she continually questioned if that was the case. Was he a Russian spy first, or was he a father?

While to me, the personal story here carried the novel, the integrated spy craft was also very well done. It allowed the personal drama to correctly carry the story while not overwhelming it.

Quick Review: 5 out of 5 stars

Book Review: Wonder Valley

Wonder Valley was on many Best of 2017 lists, and had some high praise on it's book jacket from Michael Connelly saying it was "destined to be a classic L.A. novel." Since I pretty much have read every book Connelly has written, I decided that I would pick this up without knowing much about it. I thought going in the story would end up being a mystery / thriller novel since it was recommended by Connelly, but it wasn't. It was more of a character study.

The book jumped between 2006 and 2010 and did so on chapter cuts. When I read novels, I try to jump ahead in my mind to see how they are going to tie things together, but I could never tie together what was happening in 2006 and 2010 until Pochada did it for me. I liked that since it kept me wondering what was coming next. Pochada did a great job weaving between four major plot lines and making sure they were all connected.

Plot Line 1: Tony, the suburban husband who isn't quite sure where his life is going. (2010)

Plot Line 2: Blake and Sam, two lifelong criminals that are on the run in the California desert.

Plot Line 3: The Twentynine Palms commune, a group of "interns" who are following the teachings of a preacher, Patrick. Patrick's wife and twin sons also live there, but they are not part of the commune.

Plot Line 4: Ren, a young man out of juvenile detention, trying to get to Los Angeles to find his mom and bring her back home to New York.

The plot weaves in and out of these four stories, and brings them all together in a cohesive manner. But what the story was really about was character and personal growth and how each character changed or didn't given the circumstances surrounding what occurred.

Unfortunately for me, I thought the way the book ended was a little bit of a weakspot.

Spoiler Warning!!

The book ended with a focus on the character it started with, Tony. But Tony wasn't the focus of the book. The book focused on the interns, Ren, and Blake & Sam. These were the characters I was actually interested in. And yes, the ending did give Ren his trip to the ocean and highlighted his ability to find peace in the ocean and his art. But it used that as a way to make peace in Tony's mind. It felt like this conclusion was weak, and that Tony shouldn't be able to get peace this easy when he wasn't involved in the actual plot of the story. He was just someone latching on to what he saw was the freedom of mind from a naked man running down the 101.

Quick Review: 3 out of 5 stars.

Book Review: Night School

In looking for what book I am going to read next, I go through a process that includes browsing Amazon's books of the month and then my Wish List. If nothing catches my eyes, I go back to series and authors that I love. This list of authors and series that I love includes Lee Child's Jack Reacher series. After catching up on the series, I hadn't gone back for the two latest novels, so it was a perfect time to pick up Night School.

Night School was an interesting move in the series as it brought us back to the past with a prequel to the entire series instead of picking up where Child left off at the end of Make Me with a question as to whether or not Jack Reacher's injuries would persist into the future. While I will have to wait a little bit longer to see how Child handles that scenario, I think this novel couldn't have been written in 1997 when it takes place. It required some knowledge of what has happened since then to correctly write a thriller that could have taken place in that time period.

Night School starts with Reacher being assigned to a 'night school', or that is what his colleagues are told. Reacher is actually assigned to a clandestine organization that reports directly to the National Security Advisor and is with a team that includes the miltary (Reacher), CIA, and FBI. Their task is to figure out what is going on with a sleeper cell in Hamburg, Germany. They have a mole within the cell, but he isn't sure what is happening just that they housed a messenger that had a meeting in Hamburg with someone there.

The investigation takes Reacher to Hamburg, back to the United States, and then back to Hamburg again. As part of the investigation into Islamic terrorism (though they don't call it that), Reacher runs into / needs the help of a Detective on the Hamburg police force and a neo-nazi group that has its tentacles throughout the city and its power structure. Child does a great job intricately weaving between the various points of view in the story (the detective, Reacher, the neo-nazi group, and 'The American') to make it all connect into a cohesive story.

As with all of these books, the question is not whether or not Reacher will solve the case, but how. The how in this case is pretty interesting and the story brought me to the point where I didn't want to put it down. I ended up only putting it down when the train ride was over, or I couldn't keep my eyes open while laying in bed.

Quick Review: 4 out of 5 stars

Book Review: Super Con

I stumbled onto the Billy Cunningham series by accident just browsing on and trying to find a book that caught my eye. The first book in the series said it was about a group of people that were trying to pull off elaborate cons on the Las Vegas casinos. Sounded like fun, so I picked it up. It was fun, and so was the second book. These weren't what I would call actual high level literature, but they were quick reads and entertaining. The third book was going to tie in a "Super Con" against Las Vegas, and then the fixing of the Super Bowl being driven by a Chinese gangster. I couldn't pass this one up.

In reading this story, I felt like it was four different storylines that were running simultaneously being brought together by the main character, Billy Cunnignham. The first storyline was the running of the so-called "super con" which involved working with another group of Vegas cheats called the grifters. These grifters knew everything of the "super con" and were working with Billy's crew as they trusted him based on actions from the previous books. The second storyline was the desire of a Chinese gangster, Broken Tooth, to fix the Super Bowl and the leverage he put on Billy to get it done which included kidnapping his driver and turning one member of his crew against him. The third storyline was Billy's relationship with a group of players from a team in the Super Bowl and how he could get them to push some prop bets in the direction Billy needed. The fourth storyline was the ongoing storyline of Billy's one true love, Maggie, and her desire to get out of the con game.

As these stories weaved together through Billy, the book quickly picked up pace pitting Billy against Broken Tooth and his old nemesis on the gaming board. This was a fast-paced book that weaved the story back and forth and over and over and an entertaining read.

Quick Review: 3 out of 5 stars.

Book Review: All Our Wrong Todays

I always look at the best of lists for the different things I like to do: podcasts, reading, watching TV, movies, etc. So at the beginning of December as the Best Books of 2017 lists came out, I watched and added a ton to my Amazon Wish List (aka my books to check out queue). One of those books was All Our Wrong Todays.

I came in not knowing anything about this book besides the book jacket, and that was enough to hook me. I mean who wouldn't want to read this book, especially if you loved Back to the Future as a kid?

It's 2016, and in Tom Barren's world, technology has solved all of humanity's problems—there's no war, no poverty, no under-ripe avocadoes. Unfortunately, Tom isn't happy. He's lost the girl of his dreams. And what do you do when you're heartbroken and have a time machine? Something stupid.

Of course, I cut off some of the jacket text. But you get the point. This is a book that seems like it is going to be fun and deal with the butterfly effect of time travel. Those things are always fun, whether it's going back in time during World War II like the All Clear series, or going back to stop the Kennedy Assassination like in 1963, or just fun time travel like in Back to the Future. This was going to be a good book, or at least it had the potential to be.

So how was it? Damn good. It wasn't quite what I was expecting as it turned more into a character study of the main character and how his life ended up being different in the different times and how that impacted him. Or were the different versions of his life that much different at all? We follow the main author, Tom Barren, but we quickly meet his alter-ego in our present timeline, John Barren, and see just how different they are. This book spends the time to say why all while wondering how Tom is going to bring back what he initially thought was his utopia timeline.

While the science of time travel is discussed, I thought time travel was just the manner in which we were led through a journey for us to think about Tom himself, and what that means for our own personal character.

Quick Review: 5 out of 5 stars.

Book Review: The Cows

I don't remember where I was reading the stories, but there was a listing of celebrities and their favorite items of the year including books. I instantly went to Jason Segel's page, *because who doesn't like him?*, and he had this book as the one he had read in 2017. So of course, I read the description on Amazon and then picked up the book. Here is that description:

Three women. A whole world of judgement.

Tara, Cam and Stella are very different women. Yet in a society that sets the agenda, there’s something about being a woman that ties invisible bonds between us.

When one extraordinary event rockets Tara to online infamy, their three worlds collide in ways they could never imagine – and they discover that one woman’s catastrophe might just be another’s inspiration.

Through friendship and conflict, difference and likeness, they’ll learn to find their own voices.

Because sometimes it’s OK not to follow the herd.

So what is there to say about this book? You will definitely laugh when you read it. There will be times you will cry and / or feel sorry for the three main characters based on what they are going through. There will be times you will be angry with them, too. There will be times that the author makes you think of the situation all three characters are in. This book hits all the Jim Valvano points in his famous ESPY speech:

When people say to me how do you get through life or each day, it’s the same thing. To me, there are three things we all should do every day. We should do this every day of our lives. Number one is laugh. You should laugh every day. Number two is think. You should spend some time in thought. Number three is, you should have your emotions moved to tears, could be happiness or joy. But think about it. If you laugh, you think, and you cry, that’s a full day. That’s a heck of a day. You do that seven days a week, you’re going to have something special.

So on the days I was able to read this book, I had a full day. That's the sign of a good book.

And honestly, any book that consistently used the term Walthamstow Wank Woman is a book that you need to read. That and it is the best book I have read in 2017.

Quick Review: 5 out of 5 stars.