Learning Software Architecture


  1. Designing Data Intensive Applications - Martin Kleppman
  2. Clean Architecture - Robert C. Martin
  3. Software Architecture Patterns (OReilly)
  4. Beyond Software Architecture
  5. 97 Things Every Software Architect Should Know


Hands-On Work

Other Links

Uses This - 2018

Let it be known, I am a huge fan of Uses This.

Basically, the site asks questions to writers, developer, filmmakers, and other creative types on their hardware setup, software setup, and dream setup.

I'm not sure if I'll ever be cool enough to be on the site, but I love the concept so much I thought I would repeat it.

What hardware do you use?

Longtime windows user turned macbook user. Being in web development it became inevitable that I would make the switch.

I use a 2017 Macbook Pro 13" w/ 256 GB memory and 8 GB ram. It works wonderfully for all but the hardest of tasks, which I don't perform often in personal projects.

At work, I have a more powerful Dell Precision 5520 with 512 GB memory and 32 GB Ram. This thing is a workhouse and chews through everything I give it. I don't think I will ever be without a windows machine and if I were to leave my job I would probably have to buy one for myself.

I use a Logitech Trackball and I want the new one very badly.

For my keyboard, I have Logitech K380. This works wonderfully when all my devices are bluetooth. And it's portable!

And what software?

Here's a list!

  • Standard Notes For personal notes and blog posts
  • Onenote For work/project notes
  • Slack Not tied to it, but every team I've been on has it.
  • Visual Studio Code for both my machines, I love it so much that I use it for all text editing if I can. Markdown is my jam.

What would be your dream setup?

I nearly have it! I would probably have a maxed out macbook pro and an uber-powerful windows machine to run deep-learning things on. Most of my upgrades would be in the desk and monitor. I would want one of those fancy desks that have a motor to turn into a standing desk, and an ultrawide monitor.

... Maybe a bigger bookshelf.

Wake up

I woke up with a head cold this morning, the most pleasant thing.

I tweaked my knee at a trail race on Saturday, and can't run right now.

I found out a major opportunity for me fell through the cracks and is out of reach.

But you know what? Time keeps on ticking. And I can keep on moving. I can get out of bed and be
pleasant today, if nothing else. I was NOT pleasant the first few hours of this morning. My wife can attest to that.
Something I need to improve upon, I suppose.

Wake up and get your shit done. Mood follows action.

Birthday Boy

I just turned 25. And it's weird.

I have that totally millenial feeling that even though I am married, have an apartment, pay all my bills, have a full time job, and volunteer in my community I still feel like a kid. I feel like I am not quite as smart or have everything together as my co-workers and peers do.

I don't think this is an uncommon feeling to have, but it's worth pointing out none-the-less.

Looking to the future, I see a lot of opportunity for Allie and I. We have had a great start to our careers and life together, and there is no reason we can't capitalize on this and grow to the point where we can effortlessly give back while supporting a family. But this has got me thinking, what is THE goal that we should be striving for? Should it be growing a family? Becoming wealthy? Helping those less fortunate?

The Christian Answer

As Christians, the answer to this should be obvious, but is not. The current purpose-driven philosophy would say a christians purpose in life is to "Glorify God". My view, and the view of the Lutheran Church, is that your purpose is to receive God's gifts. This isn't to say we shouldn't outwardly glorify him.

You know what, I'm no good at explaining this. Here is an answer from Luther himself:

“We cannot perform a nobler service to God than to offer
thanks. While praise and gratitude to God are the believers
highest service both on earth and in heaven, ingratitude
is the most shameful vice and the greatest contempt of God.”
LW volume 14 page 51

So that's my purpose. to avoid ingratitude of God's gifts by consistently receiving them. From this, we rejoice and sing praises, as is our duty.

The next year

Here are some things I wanat to accomplish this year. It's convenient that my birthday falls so close to the start of the calendar year!

Major Goals

  • Consistently receive God's gifts to the best of my ability
  • Develop a set morning and evening routine that includes prayer and meditation
  • Finish a Half Ironman
  • Finish saving for a down payment on a house
  • Learn another web framework (Vue, probably), and finish a side project in it

Minor Goals

  • Run 13.1 miles in 1:40:00
  • Read some books
  • Build a useful API in Go

Azure End to End

Azure Tour

  • Four Pillars: Productive, Hybrid, Intelligent, Trusted
  • Biggest VM: 128 VCPUS, 3500gb memory
  • Now support nested virualization
  • Running a VM inside a VM inside Azure
  • Rich Management Experience

  • Update management: checks to see if OS is up to date, applies patches

    • Easy see if all the systems are patched and compliant
    • Change Tracking: Can see all changes happening within the VM or the instance itself
    • Inventory Management: Queries across applications/infrastructure
    • Disaster Recovery Support: Clone apps or VM's to run in any location
    • Can also fail over to the cloud
  • VM that you can run any operation against your environment

  • AZ Tool : Bash Command Line tool for azure management

  • Also have SDK libraries for languages

Monitoring inside Azure:

  • Custom Alerts, threshold triggers, metrics for resources

Azure Log Analytics:

  • Run Queries on all azure related activities
  • Contextual Event to see whats happening inside azure
  • Can chart using the queries, then pin that to the dashboard
  • See what browsers are hitting your websites real time
  • Pull out CPU data, IS request data from webserver, looking for correllation

Azure APP that you can download

  • see notifications and alerts
  • can open cli/vm tool and use command line


DevOps: VSTS, A complete DevOps Solution

  • VSTS Sprint and Kanband Management
  • Stuff we have already used/done before

Azure Machine Learning

  • Flexible AI model deployment

AI - Start with a sharp question.

  • ML different from regular programming, programming = step by step problem solving
  • ML is giving the computer examples of the right thing.
  • Azure ML Workbench -> (Derive Column by Example)
  • Know what data you have, build a model

Image Classification With Keras

Indy ML

  • No WiFi Password =[
  • Building Image Classifier with Keras
  • Look at the data set subreddit for any data set
  • bart, hommer, lisa, marge



train = 1800
validation = 100
epochs = 10
batch size =20
classes = 4
width, height = 80, 80
input shape = (width, height, 3 (input channels or colors, rgb))

Data Input

using ImageDataGenerator from keras
train_datagen = imageDataGenerator(
   rescale=1. /255, #scaling image values from 1 to 255
   shear_range = .2 #tweaking
  • batch size is the same as the step size
  • what is the reasoning for batch/step size?
  • stay clear of overfitting (high variance)

Train the model

  • add a couple of conv layers, and a couple of layers after that
  • softmax scales everything between 0 and 1, relu caps things at zero, then lets it go as large as it wants
  • compile
  • iterate through pictures in folders


  • confusion matrix
  • go back and tweak class weights (weight for miss classification) depending on how the matrix turns out
  • incorporate tensorboard lets us see the accuracy changes
  • pass tensorboard callbacks to fit generator
  • Open Tensorboard (tool) to see accuracy and loss graphs
  • accuracy still climbing, good amount of randomness, would flatten with a longer training period