Posts

Non-fiction Book Recommendations

Life Bumpers, by Nic Peterson As a Man Thinketh, by James Allen The Daily Stoic, by Ryan Holiday Untangled: Guiding Teenage Girls into Adulthood, by Lisa Damour The Fine Art of Small Talk, by Debra Fine Personal Kanban, by Jim Benson and Tonianne DeMaria Why We Buy, by Paco Underhill The Life Changing Magic of Tidying Up, by Marie Kondo The Reason I Jump, by Naoki Higashida The Power of Habit, by Charles Duhigg Zen and the Art of Motorcycle Maintenance, by Robert Pirsig Tuesdays with Morrie, by Mitch Albom Work The Checklist Manifesto, by Atul Gawande Meetings Suck, by Cameron Herold The Five Dysfunctions of a Team, by Patrick Lencioni The Phoenix Project, by Kim, Behr, and Spafford Technical Old Coder Guy, by Eric Whitney Pragmatic Programmer, by David Thomas and Andrew Hunt NoSQL for Mere Mortals, by Dan Sullivan Pro SQL Server Database Design and Implementation, by Louis Davidson and Jessica Moss The Kimball Group Reader (data warehousing), by Ralph Kimball and others Design Pattern...

Don't Do This With Your Database ER Diagram

Image
 This: It's easy to understand why anyone would want to diagram the entire database so that developers and admins can see everything in one visual map. That works well for databases with a small number of tables, but as the tables increase the visual clarity quickly falls off, unless you make a giant diagram that requires zooming in and out to see any useful details. There's a famous parable about the blind men and an elephant.  A group of blind men heard that a strange animal, called an elephant, had been brought to the town, but none of them were aware of its shape and form. Out of curiosity, they said: "We must inspect and know it by touch, of which we are capable". So, they sought it out, and when they found it they groped about it. The first person, whose hand landed on the trunk, said, "This being is like a thick snake". For another one whose hand reached its ear, it seemed like a kind of fan. As for another person, whose hand was upon its leg, said, ...

Benchmarking C# using BenchmarkDotNet

The other day I came across the BenchmarkDotNet package  and had to try it out , and I think it works really well. Gone are the days of using a stopwatch for ad hoc benchmarking! There's some initial setup cost with creating a new project, but with more deep diving I wouldn't be surprised if a benchmark project could be incorporated directly into a project and/or test suite.

The importance of design for TDD

Image
Stop me if this sounds familiar. You've read multiple articles about the importance of TDD (test driven development) and unit tests. You understand the basics of unit tests and frameworks for mocking up data and examples. Maybe you've created unit tests that helped you in refactoring, or finding issues in the service methods, so you understand the value of good unit tests. But you can't help feeling like you're missing something in how you're doing TDD. Your unit tests are so simple they feel useless, like a test that mocks some data for a repo and then verifies that it got the mocked data. Or maybe you don't even know what unit tests to create, so you start in on your implementation and add unit tests after the fact to cover your code. What's missing? It's possible you aren't doing enough design work to fully understand the problem you're trying solve, and without understanding the problem you can't effectively test the problem. Once you und...

How To Do Something

Image
Found this in my notes recently, it's a flowchart of how to be productive at work that I created years ago. Looking at it now, I think it still holds up well. Created a PlantUML diagram as a visualization. 

Making walking on treadmills less boring

It's an avoidable fact of Minnesota weather that walking for exercise is best done on an indoor treadmill. It's certainly possible to walk outside between December and April, but ice on the ground discourages walking fast, snow covered walkways and sidewalks limit where you can walk, and the cold temperatures discourage being outside for long periods. Unfortunately, walking on a treadmill can quickly become boring with its lack of variety. Here are some strategies and ideas for making treadmill exercise more interesting.  Playing with the incline and speed Nature is not perfectly flat, and we are not robots that walk at a perfectly consistent pace. The easiest thing to do, for anyone using a treadmill, is to slightly vary the speed and incline. Let's say you're at a typical 3 mph/4.8 kmph pace, with a 0% incline. Every few minutes, randomly bump the incline up or down a % point. Go crazy and jump from 0% to the max for a little while, drop it down to 2%, back up to 5%, ...

9 Steps Of Software Development

Came across this recently and thought it was an excellent overview of the ideal software development process. As written it's more of a waterfall process, but the flow could also be used for agile processes in smaller iterations. Gather requirements Systems analysis Software design Module design Unit tests Coding Integration testing Systems testing Acceptance testing