Archives
4 Lessons from a 30 Year Career in 5 minutes
Chuck spills the tea on 30 years of career lessons, revealing surprising truths about toxic coworkers, the myth of loyalty, and why your family should always come first.
Modifying a File Locally Without Updating the Remote Git Repository
Have you ever needed to modify a file locally without committing the changes to the remote repository?
Pre-Pandemic and Post-Pandemic Job Hunting
Insight into pre-pandemic and post-pandemic job hunting.
Centralize Your Data Integrity
Centralize your data integrity to ensure consistency across your organization.
Give a Safe Space to Express Ideas
When leading a team, it’s important to create an environment where everyone feels safe to express their ideas regardless of their experience level.
Scrum is Overrated
Scrum is overrated. It's a good starting point for teams that have never worked together, but it's not the end all be all.
A Binary Search Implementation
The binary search algorithm quickly searches a large array of numbers, it’s often referred to as divide and conquer.
The Benefits of Using a Build Framework
Continuous Integration (CI) and/or Continuous Delivery (CD) is the norm on software projects these days. There are many build servers such as Azure DevOps, TeamCity, Jenkins, and Cruise Control.Net.
Tools and Resources I Commonly use to Develop Software
Below is a collection of tools, libraries, and resources I commonly use.
Grady Booch on Architecture
A Series of Tweets from Grady Booch on software architecture.
NVarchar Vs Varchar
Each engineer defining a new string column decides: Do I use nvarchar or do I use varchar?
Changing a React Input Value from Vanilla Javascript
Changing a React input value from vanilla Javascript is not as simple as you might think.
C# 8 - Nullable Reference Types
Microsoft is adding a new feature to C# 8 called Nullable Reference Types. Which at first, is confusing because all reference types are nullable… so how this different? Going forward, if the feature is enabled, references types are non-nullable, unless you explicitly notate them as nullable.
When to Use The FromService Attribute
The [FromServices] attribute allows method level dependency injection in Asp.Net Core controllers.
With or Without Curly Braces?
There’s a heated debate around single statements and whether they should have curly braces or not.
9 Guidelines for Creating Expressive Names
Naming is subjective and situational, it’s an art, and with most art, we discover patterns. I’ve learned a lot through the reading of other’s code. In this article, I’ve compiled 9 guidelines I wished others had followed when I read their code.
Garbage Collection Types in .Net Core
Memory management in modern languages is often an afterthought. For all intents and purposes, we write software without nary a thought about memory. This serves us well but there are always exceptions…
Codifying the Secret Sauce
Codifying the secret sauce is instrumental in writing maintainable and successful applications.
Understanding Begins with Expressive Names
Understanding code is the first step to modifying it.
The 5 Different Meanings of the Question Mark in C#
In C# the question mark has 5 meanings as of C# 8.
You Are Not Your Code
Your code reflects neither your beliefs, nor your upbringing, nor your character.
Implementing Request Caching in ASP.Net Core
At some point in an application’s development, usually, fairly early on, you realize the application is slow. After some research, the culprit is, unnecessarily retrieving the same data, and a light goes off, and you think: “I need some caching.”
The Collection Comparer, Finding the Differences Between Two Collections
Have you had to compare two collections and execute some logic based on whether the item is in the source collection, in the comparing collection or in both? Yeah, me too, I needed to merge data from the UI and the database. I couldn’t find a good solution, so, I wrote a collection comparer.
Running Await in a Constructor
If you must run code in a constructor. I’d look for a different way, but if you must, here’s one way.
Stop and Remove ALL Docker Containers and Images
This is shamelessly stolen from The Humble Developer.
Workaround for 'Template parse errors;' in Angular
This was one of the more frustrating issues with Angular 2/4/+. It’s not an issue with Angular 2/4/+ per se, but with how webpack bundles the supporting HTML files.
Examining the Case for Switch Statements
For nearly 50 years, the switch statement (also known as the case statement) has been an integral part of programming. In recent years, however, some are claiming that the switch statement has outlived its usefulness. Others go even further by labeling the switch statement as a code-smell.
In a Single Page Application, Should I process on the Client or the Server?
One of the selling points of the Single Page Application (SPA) was offloading work traditionally performed on the server onto the client. I feel the SPA has delivered on this promise.
4 Practices to Lowering Your Defect Rate
Writing software is a battle between complexity and simplicity. Striking balance between the two is difficult. The trade-off is between long unmaintainable methods and too much abstraction. Tilting too far in either direction impairs code readability and increases the likelihood of defects.
Setting up Continuous Integration on Ubuntu with Nodejs
I went through blood, sweat and tears to bring this to you. I suffered the scorching heat of Death Valley and summited the peaks of Mount McKinley. I’ve sacrificed much.
8 Must Have Extensions for Brackets.io
Everyone has a favorite editor. I’ve tried them all. And I’ve found that Brackets.io best suits me. Unfortunately, there are gaps in the functionality of Brackets.io. With a robust ecosystem of extensions, I’ve found 8 extensions that complete Brackets.io.
Ignorance is Bliss When Using Frameworks
In software engineering, there is a prevailing idea that an engineer should only use a framework when he or she understands the internal workings. This is a fallacy.
The Mind State of a Software Engineer
Have patience. Coding is discovery. Coding is failing. Be ok with this.
Index Fragmentation in SQL Azure, Who Knew!
I’ve been on my project for over a year and it has significantly grown as an application and in data during the year. It’s been nonstop new features. I’ve rarely gone back and refactored code...
Proofing a Concept and Growing the Code
In a recent conversation, a friend mentioned he creates proof of concepts and then discards them after testing their viability. I’ve done the same in the past. This time it didn’t feel right. I cringed when he said he threw away to the code. Maybe my days as a business owner has turned me into a froogle goat, but it felt like he was throwing away value.
A General Ledger : Understanding the Ledger
What is a general ledger and why is it important? To find out read on!
Securing AngularJS with Claims
At some point an application needs authorization. This means different levels of access behave differently on a web site (or anything for that matter). It can be anything from seeing data to whole area’s that are not accessible by a group of users.
5 Steps for Coding for the Next Developer
Most of us probably don't think about the developer who will maintain our code. Until recently, I did not consider him either. I never intentionally wrote obtuse code, but I also never left any breadcrumbs.
3 Reasons Why Code Reviews are Important
A great code review will challenge your assumptions and give you constructive feedback. For me, code reviews are an essential part in growing as a software engineer.
Implementing Transparent Encryption with NHibernate Listeners (Interceptors)
Have you ever had to encrypt data in the database? In this post, I’ll explore how using nHibernate Listeners to encrypt and decrypt data coming from and going into your database. The cryptography will be transparent to your application.
Questions to Ask During an Interview
When I walk out of an interview, I want to know the position’s responsibilities, I want to know the environment and I want to know what I am expected to accomplish during my first week. Most of all I want to know if the company is a fit for me.
Git Cheat Sheet
Below are git commands I find myself using over and over.
Calling Stored Procedures with Code First
One of the weaknesses of Entity Framework 6 Code First is the lack of support for natively calling database constructs (views, stored procedures… etc). For those who have not heard of or used Code-First in Entity Framework (EF), Code-First is simply a Fluent mapping API.
Missing Management Delegation Icon in IIS
It’s critical this is done first. Web deploy may not install correctly if it’s installed with the Management Service icon missing. Check IIS for the Management Delegation icon, it’ll be under the Management section.
Conditional Sql parameters with nHibernate
The problem is a the nHibernate’s `CreateSqlQuery` needs a complete sql string to be created, but you can’t create a string until you’ve evaluated the parameters. The only work around is to evaluate the conditional parameters to create the sql string to create the nHibernate session and then revaluate the parameters again to add them to the `nHibernate` query object.
A Simple Guide to Finding Your Next Job
It’s time to look for the next job, eh? I feel for you. Finding a job sucks. It’s one of those things that everyone must do at some point. I equate it to looking for love. Every aspect of “you” is on display. When someone passes on you, it’s hard not to take it personally. Chin up my friend; we’ll get through this.
Crystal Reports 13 Maximum Report Processing Limit Reached Workaround
In the Visual Studio 2012 version of Crystal Reports 13 there is a threshold that throttles concurrent reports, this also includes subreports, to 75 reports across a machine. This means if there are 5 web applications on a given server all opened reports across all 5 web applications counts toward the 75 report limit.
Considerations When Throwing Exceptions
There is an underlining philosophy in this system that nulls are bad. In most cases where a null can be generated an exception is thrown. At first I did not see a problem with this. I saw it as an architecture decision, an aesthetic, but as I interface with the code, it’s apparent to me it’s an architectural mistake.
Mastering the Craft: Essential Skills of a Senior Software Engineer
This post outlines the key technical and soft skills that distinguish a truly skilled senior software engineer.
Deploying with MsDeploy Outside of Visual Studio
MsDeploy is a powerful tool for deploying web applications. Here are some command line examples for deploying with MsDeploy.
Creating a Generic Type at Runtime
To use a runtime type with an IOC container like StructureMap to find a generic implementation, create the generic type using `MakeGenericType` and then retrieve the instance from the container using `_container.GetInstance(type)`.
Understanding Time Discrepancies in Distributed Systems
While UTC provides a common time standard, assuming perfect synchronization between servers using UTC can lead to data inconsistencies and unexpected errors.
2 minutes on Migrating Data
Migrating data is a pain. Use a tool.
King of the Hill Developer
Typically this developer has been in few organizations. They tend to be the smart frog in the small pond. When another smarter developer joins them, they try to subjugate them. Tactics include withholding information, passive put downs and excessive explaining.
Mini-Me Developer
This developer follows the King of the Hill Developer like..
Insecurinator Developer
This developer refuses to find a better job.
Chronic Contractor
This developer is always looking for a gig. There is always something better. Chronic Contractors are expensive. Mileage per dollar varies.
The Ego Interviewer
The Ego Interviewer is a person who uses the interview process to stroke their ego.
Boost Your Productivity: 6 Tips to Coding Faster
Boost your coding efficiency by using familiar tools, focusing on the task at hand, and leveraging keyboard shortcuts and automation.
Code: Weighted Random Distribution
This blog post presents a method for generating random numbers, with the pitfall of the predictable nature of time-based random number generators.
CRUD Applications and the Business Layer: A Practical Perspective
While a business layer might seem beneficial, in CRUD applications, its value is often outweighed by the added complexity and maintenance burden it introduces.
Clever vs. Getting Things Done
There is a fine balance between doing it right and delivering.
Code Refactor
Refactoring a large C# file to be leaner and easier to maintain.