Mark Michaelis (Blog)is the founder of IntelliTect and serves as the Chief Technical Architect and Trainer. Since 1996, he has been a Microsoft MVP for C#, Visual Studio Team System, and the Windows SDK and in 2007, he was recognized as a Microsoft Regional Director. He also serves on several Microsoft software design review teams, including C#, the Connected Systems Division, and VSTS. Mark speaks at developer conferences and has written numerous articles and books - Essential C# 6.0 is his most recent. Mark holds a Bachelor of Arts in Philosophy from the University of Illinois and a Masters in Computer Science from the Illinois Institute of Technology. When not bonding with his computer, Mark is busy with his family or training for another Ironman (having completed his first in 2008). Mark lives in Spokane, Washington, with his wife Elisabeth and three children, Benjamin, Hanna and Abigail.

DevOps Presentation: Reality or Fiction

,
April 24, 2018 / 2 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