Blog
2024
2022
2021
- Centralize Your Data IntegrityCentralize your data integrity to ensure consistency across your organization.
- Give a Safe Space to Express IdeasWhen 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 OverratedScrum is overrated. It's a good starting point for teams that have never worked together, but it's not the end all be all.
2020
- A Binary Search ImplementationThe 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 FrameworkContinuous 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. Most of these servers use proprietary languages to define build steps. But is codifying your build steps in a proprietary language a good thing?
- Tools and Resources I Commonly use to Develop SoftwareBelow is a collection of tools, libraries, and resources I commonly use.
- Grady Booch on ArchitectureA Series of Tweets from Grady Booch on software architecture.
- NVarchar Vs VarcharEach engineer defining a new string column decides: Do I use nvarchar or do I use varchar?
- Changing a React Input Value from Vanilla JavascriptChanging a React input value from vanilla Javascript is not as simple as you might think.
2019
- When to Use The FromService AttributeThe [FromServices] attribute allows method level dependency injection in Asp.Net Core controllers.
- C# 8 - Nullable Reference TypesMicrosoft 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.
- 9 Guidelines for Creating Expressive NamesNaming 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.
- With or Without Curly Braces?There’s a heated debate around single statements and whether they should have curly braces or not.
- Understanding Begins with Expressive NamesUnderstanding code is the first step to modifying it.
- Codifying the Secret SauceCodifying the secret sauce is instrumental in writing maintainable and successful applications.
- Garbage Collection Types in .Net CoreMemory 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…
- You Are Not Your CodeYour code reflects neither your beliefs, nor your upbringing, nor your character.
- The 5 Different Meanings of the Question Mark in C#In C# the question mark has 5 meanings as of C# 8.
- The Collection Comparer, Finding the Differences Between Two CollectionsHave 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.
- Implementing Request Caching in ASP.Net CoreAt 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.”
- Running Await in a ConstructorIf you must run code in a constructor. I’d look for a different way, but if you must, here’s one way.
2018
2017
2015
- 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.
- Examining the Case for Switch StatementsFor 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.
- 4 Practices to Lowering Your Defect RateWriting 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.
- Ignorance is Bliss When Using FrameworksIn 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.
- 8 Must Have Extensions for Brackets.ioEveryone 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.
- Setting up Continuous Integration on Ubuntu with NodejsI 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.
- The Mind State of a Software EngineerHave 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. Last week I noticed some of the data heavy pages were loading slowly. At the worst case one view could take up to 30 seconds to load. 10 times over my maximum load time…
- A General Ledger : Understanding the LedgerWhat is a general ledger and why is it important? To find out read on!
- Proofing a Concept and Growing the CodeIn 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.
- Securing AngularJS with ClaimsAt 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.
- 3 Reasons Why Code Reviews are ImportantA 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.
- 5 Steps for Coding for the Next DeveloperMost 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.
2014
- Questions to Ask During an InterviewWhen 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. More often than not companies will hire the best among the candidate pool. This does not mean they are the best for the position. Simply they are the best in the given candidate pool. Very few companies recognize this difference. It’s your job as the interviewee to vet the company.
- 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.
- Missing Management Delegation Icon in IISIt’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.
- Calling Stored Procedures with Code FirstOne 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. The idea is to create all your database mappings in code (i.e. C#) and the framework then creates and track the changes in the database schema.
- Git Cheat SheetBelow are git commands I find myself using over and over.
- Conditional Sql parameters with nHibernateThe 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. The problem with this, is the same evaluation logic is written twice. What is needed is a simple fluent api that will do everything for you and spit out the `ISQLQuery` when it’s done.
- A Simple Guide to Finding Your Next JobIt’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.
2013
- Crystal Reports 13 Maximum Report Processing Limit Reached WorkaroundIn 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 ExceptionsThere 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.
2012
- When are you a Senior Developer?What makes someone a master at programming?
- Setting up Single Sign On with Windows 2012 and ASP.Net MVC 4This document covers setting up an ASP.NET MVC 4.0 application using Visual Studio 2012, Windows 2012 and AD FS 2.0 to enable Web Single Sign On.
- Creating a Generic Type at RuntimeTo 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)`.
- Deploying with MsDeploy Outside of Visual StudioMsDeploy is a powerful tool for deploying web applications. Here are some command line examples for deploying with MsDeploy.
- All UTC times are not necessarily the sameA friend pointed out that all UTC Time is not the same. When he told me, I responded with “What!?! What are you talking about? It’s the same.” “No it’s not” he said. He explained, that yes using UTC will allot you an agreed upon time format but that does not guarantee that both server’s clocks are synchronized.
2011
- 2 minutes on Migrating DataMigrating data is a pain. Use a tool.
- Chronic ContractorThis developer is always looking for a gig. There is always something better. Chronic Contractors are expensive. Mileage per dollar varies.
- Insecurinator DeveloperThis developer refuses to find a better job.
- Mini-Me DeveloperThis developer follows the King of the Hill Developer like..
- King of the Hill DeveloperTypically 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.
- The Ego InterviewerThe Ego Interviewer is a person who uses the interview process to stroke their ego.
2010
- Going Faster Tip #6Use tools for other purposes than they are intended for.
- Going Faster Tip #5Automate, automate, automate.
- Going Faster Tip #4When coding, always prefer the keyboard over the mouse.
- Going Faster Tip #3Use F8 in the Windows shell to search for previous commands.
- Going Faster Tip #2Concentrate on the essence, not the ceremony.
- Going Faster Tip #1Use the same keyboard and mouse at work as you do at home.
- Code RefactorRefactoring a large code-behind file.
- Getting the Job DoneThere is a fine balance between doing it right and delivering.
- Business Layer ValueBusiness Layer Value
- Weighted Random DistributionWeighted Random Distribution