Mark Michaelis

Principal, CEO, Chief Technical Architect

A premier authority in Microsoft development technologies with recognized coding expertise and proven training methods, IntelliTect’s CEO delivers customized strategic technology consulting to CIOs, technology executives and industry leaders. Recognized by Microsoft as a Regional Director in 2007 and distinguished Microsoft MVP for C# and Visual Studio Team System since 1996, this CEO has honed his engineering skills by serving on several Microsoft software design review teams, including C#, Azure, the Connected Systems Division and Visual Studio Team System ALM. A regular speaker at developer conferences around the world and has written numerous articles and books - Essential C# 7.0 is his most recent. Click here for a blog with links to past articles and media appearances. IntelliTect’s founder continues to attract elite team members with proven expertise in utilizing best practice application lifecycle management and software engineering practices to deliver quality solutions on time, in scope and within budget. When not bonding with his computer, this leader is searching for his next adventure with his wife Elisabeth and three children, Benjamin, Hanna and Abigail.

DevOps Presentation: Reality or Fiction

,
April 24, 2018 / 3 Comments

Today I did an online presentation to Sierra Systems on the Topic of DevOps.  We had some great discussions regarding:

How do you move to DevOps from when you are starting with an immature team?
What are the biggest obstacles to successful DevOps
What tooling do you recommend (My demos used Team Foundation Server/Visual Studio Team System)
How does […]
Read more

AUTHOR: CATEGORY: DevOps, Downloads, Presentations

Machine Learning Can Save Lives In Spokane

,
April 17, 2018 / No Comment

Examine medical data and cure problems using computer algorithms without violating HIPPA.
Machine learning is an area of quantitative science that allows computers to run algorithms to create predictions or disentangle causality. We are no longer limited by the ideas that the human brain can formulate because machine learning can uncover unconsidered possibilities. Medical breakthroughs are happening by data mining […]
Read more

AUTHOR: CATEGORY: Blog

PowerShell Write-Error Without Writing Stack Trace

,
April 16, 2018 / No Comment

Recently, I was trying to display the errors and warning from a DotNet Build. While the warnings all displayed correctly, the errors always included the stack trace:

I was able to control the error output slightly by varying the global $ErrorView variable, but the only two options were NormalView or CategoryView, neither of which gave me the clean, message-only, look […]
Read more

AUTHOR: CATEGORY: .Net, PowerShell, Uncategorized

Interfacing with Multithreading Patterns prior to TPL and C# 5.0

,
April 9, 2018 / 2 Comments

Legacy Blog – Pre C# 5.0
Multithreading patterns are used to address the multithreading complexities of monitoring an asynchronous operation, thread pooling, avoiding deadlocks, and implementing atomicity and synchronization across operations and data access.
This is a thorough blog that combs through all you’d need to know about multithreading if you were working in a legacy version of C#. Although […]
Read more

AUTHOR: CATEGORY: .Net, C#, Uncategorized

Ensure Continuation Using Async/Await with the Windows UI

,
April 6, 2018 / 2 Comments

The async/await pattern ensures that continuation works without switching back to the UI thread to update a control.
 
One place where synchronization is especially important is in the context of UI and Web programming. With the Windows UI, for example, a message pump processes messages such as mouse click and move events. Furthermore, the UI is single-threaded, so that […]
Read more

AUTHOR: CATEGORY: Blog

Using Tuples for overriding Equality() and GetHashCode()

,
March 28, 2018 / No Comment

The implementation of Equals() and GetHashCode() used to be complex, but with C# 7.0 Tuples, the actual code is boilerplate.

For Equals(): It’s necessary to compare all the contained identifying data structures while avoiding infinite recursion or null reference exceptions.
For GetHashCode(): It’s necessary to combine the unique hash code of each of the non-null contained identifying data structures […]
Read more

AUTHOR: CATEGORY: Blog, C#

ILDasm with .Net Core

,
March 20, 2018 / No Comment

Need to Convert CIL Code into Text? Try ILDasm!
 
The C# compiler converts C# code to common intermediate language (CIL) code and not to machine code. The processor can directly understand machine code, but CIL code needs to be converted before the processor can execute it.
Consider using the Intermediate Language Disassembler (ILDasm) when you need to convert CIL […]
Read more

AUTHOR: CATEGORY: Blog

Timers Prior to Async/Await Pattern of C# 5.0

,
October 9, 2017 / No Comment

There are multiple ways to use Task.Delay() when a timer is required.
For scenarios prior to .NET 4.5, several timer classes are available, including System.Windows.Forms.Timer, System.Timers.Timer, and System.Threading.Timer.
The development team designed System.Windows.Forms.Timer specifically for use within a rich client user interface. Programmers can drag it onto a form as a nonvisual control and regulate the behavior from within the […]
Read more

AUTHOR: CATEGORY: .Net, Blog, C#, Toubleshooting

C# 7.0: Tuples Explained

,
July 27, 2017 / No Comment

Back in November, in the Connect() special issue of MSDN Magazine, I provided an overview of C# 7.0 in which I introduced tuples. Click here for the overview. In this blog I delve into tuples again, covering the full breadth of the syntax options.
To begin, let’s consider the question:
Why tuples?
On occasion, you’ll likely find it useful to […]
Read more

AUTHOR: CATEGORY: Blog

Error: “Predefined type ‘System.ValueTuple’ is not defined or imported”

,
April 10, 2017 / No Comment

As soon as you start programming tuples in C# 7.0, you are likely to encounter the compiler error, “Predefined type ‘System.ValueTuple’ is not defined or imported.”
 
This issue is easily corrected. When encountered, the error will look like this on the code editor:

The issue is that the C# 7.0 compiler is trying to generate the underlying […]
Read more

AUTHOR: CATEGORY: .Net, Blog, C#, NuGet, Visual Studio