Check table configurations in EF Core 3.1

To check the table configurations for EF Core 3.1, I did the following and it helped identify issues.

It iterates all tables in the context and selects one row. If there is an exception, it will catch it and display some related information. It might be helpful to also capture the stack trace.

    public string LoopAllTables(bool stopAfterFirstFail)
        var exceptions = new StringBuilder();
        var propertyInfos = _dbContext.GetType().GetProperties().OrderBy(o => o.Name).ToArray();
        foreach (var propertyInfo in propertyInfos)
            var property = propertyInfo.GetValue(_dbContext);
            if (property is IQueryable<object> tableQ)
                catch (Exception ex)
                    exceptions.AppendLine(ex.Message + Environment.NewLine + "  from " + 
                    if (stopAfterFirstFail)

Open plan offices are a BAD idea

I am about to start a job that has an open office plan and I am really dreading this part of the job.

Why do you say? 3 reasons:

  1. I have been spoiled by having a private office in my last job. It was one of the best experiences working that I have ever had. I was devastated when I was laid off for many reasons, and losing a private office was one of them.
  2. I have an issue when other people crunch around me. I am in a semi-open office right now and when my co-workers crunch, I have to put on some headphones, and usually, I don’t have anything playing, I just use them to cancel the crunching sound.
  3. I have recently seen articles that prove that this is a bad idea.

Here are a couple of recent articles to prove my last point. If you have something that will calm my nerves about the open office, comment below.

What to do when you have been ghosted by a recruiter

I have recently been ghosted by a recruiter from a local company and it is very frustrating. I am sure that I did not get the job, but it would be nice to have a simple answer and some feedback on why they didn’t select me.

I feel like the following article blames the candidate, but it does give a few tips on how to pursue the job further. It still does not guarantee that a recruiter or interviewer will follow up with you, but at least you tried everything you could.

Look at it this way, you probably dodged a bullet by not working with a bad manager or bad company.

Proper case a string using RegEx in Javascript, except for words in parenthesis

Today I had to find a way to proper case a string, except anything that is in parenthesis.  That sounds like a mouthful, so to clarify, I wanted to turn “JAVASCRIPT ROCKS (JS)” into “Javascript Rocks (JS)”, so I created a regular expression to do this task in an Adobe LiveCycle form.

this.rawValue = this.rawValue.replace(/(?!\w*\))(\w\S*)/g, 
    return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}

I learned that this uses a negative lookahead that looks for things in parenthesis, and if it is in parenthesis, it does not match the next part, which is looking for words followed by white space.

Have fun using negative lookaheads in RegEx.  This doesn’t have to only be done in Javascript, but can be done in most any language.

Must have applications for development

I recently had to re-install ALL of the applications that I use at work when they gave me a new Windows 7 based computer, so I thought I would list out the apps that I HAVE to have to operate.

These are listed in no particular order:

  • Microsoft SQL Server 2014 Express
  • Visual Studio 2012 – Didn’t really want to, but I had to for SSIS packages at work.
  • Visual Studio 2013
  • Microsoft SQL Data Tools
  • Visual Studio Power Tools – Lots of helpful tools.
  • Jetbrains Resharper Ultimate– A GREAT suite of tools for developers.  I am so thankful that my work provides this for us.
  • Scooter Software’s Beyond Compare (V3)
  • Linqpad Pro
  • WinSCP for terminal sessions into a UNIX box
    Oracle Client
  • LastPass – For password management!
    TreeSize Pro – For space management, not as necessary on this machine because I have more space, but … it might be a good idea for me to keep it clean.  🙂
  • Snagit – The best screen capture out there.  If you want a free app, I used Greenshot before I got Snagit and it was pretty great also.
  • Notepad++ – a great free editor, but I am now playing with Brackets from Adobe.
  • Dual Monitor Taskbar – This great free app lets me have a task bar on my 2nd monitor.  It has a few bugs in it, but for the most part it is very helpful to have the running apps in a task bar on that 2nd monitor.
  • Microsoft Attunity Drivers for Oracle 2.0 – for those pesky Oracle SSIS projects.
  • SAP Crystal Reports 2013 – I worked with Crystal Reports a LONG time ago and I used to like it very much, but there are so many better options for reports now.  I inherited a old project at work that uses this, so I had to have it, until we can re-write this application.
  • Logi Analytics – This is a charting and dash boarding tool that is pretty cool.  We are doing some pretty complicated things with it at my job.
  • Chrome – My go to browser.  It hosts some great plugins for me such as Feedly, Lastpass, and Advance Rest Client (for developing REST apps, but I see a LOT of people using Postman, so I will try that out next time.)  I also restored my shortcuts that I had backed up before I got my new machine.
    Internet Explorer Shortcuts and Favorites – Restored Short cuts that I had backed up.
  • UC4 – For  scheduling batch and nightly jobs here at work.
  • Ditto – a great free clipboard manager.  Somewhat better than ClipX that I have tried.

If you have seen something new, give them a try.

Hire Remotely

As I wrote in my post Working From Home, I loved working remotely and I wish more companies would hire remote workers.  I felt I was much more productive, I felt I was healthier and I just read an article from one of my favorite programmers called “Hire Remotely“.

If you have a company, please read these articles and hire a remote worker.  You can use technology like Skype or Google Hangouts, or HipChat to overcome communication barriers that might exist with remote workers.

Adding a solution to TFS without adding the NuGet packages.

I was adding a project that I just completed to TFS source control and noticed that it wanted to add the packages to source control also, but I didn’t want that because you are not supposed to add the NuGet packages.  They can be re-downloaded and installed during the build process for anyone that does not have them.

I found this nuget link extremely useful on how to configure the solution to 1) Enable the nuget download and 2) keep the packages from being added to source control.

The basic steps are:

            1. Enable the NuGet package restore.  This will add some NuGet stuff to the solution.
            2. Add your project to TFS, then of course commit the change.

Bible Chronological Reading Plan Differences

I am using the Bible App to try and read the Bible in a year, so I chose the Chronological reading plan from them.  It has been very helpful, but I didn’t feel like I was getting enough out of it, so an elder from my church has a web site with Chronological Study Guides, but sadly, his chronological order does not match the Bible app chronological order because the Bible App order is based on the Blue Letter Bible‘s chronological order and my elder’s guide is based on the NLT (New Living Translation) chronological Bible.

So the question is:  Which order is correct?

I guess it doesn’t really matter, but if you want to use Aaron’s awesome resources, then you probably should choose the NLT bible.

C# Parallel Tasks gives MAJOR Speed Increase

I just used parallel tasks to decrease the time a process took from over an hour to about 2 minutes.  I was wary of creating so many database contexts, but it paid off in a major way!

See the snippet of code below to see how I used the Parallel.ForEach.  .Net created almost 100 threads during the execution.

Parallel.ForEach(qry, issue =>
	using (var _db = new WCO())
		dobType dob;
		List<dobType> birthdays = new List<dobType>();

		foreach (
			var subIssue in
				issue.DOBValue.Trim().Split(new string[] { " TO ", " to ", "-", " - " },
			string valueToTest = subIssue;

			// Try Month Year regex
			if (tryDateFirstPart(valueToTest, out dob))
				logger.Info(string.Format("Parsed {0} to Month: {1}, Day {2} Year: {3}", issue,
					dob.month,, dob.year));
				saveParseDOB(dob, issue, _db);
				logger.Error(string.Format("Could not parse {0}", issue.DOBValue));


If you need someone with my ability to decrease processing times on a full time basis, please contact me through LinkedIn 

Have a great day!