Wai Liu
Wai Liu lives in Canberra, Australia and works for the Australian Government. Although he's most familiar with .NET, he loves to dabble with different tech and different stacks.
He's passionate about empowering developers to be the best they can be. That's why being on Adventures in .NET has been awesome for him - plus he loves getting to interview a steady stream of super smart people at the top of their field. Wai's also an organiser for the local JavaScript meetup as well.
Currently, his interest lies with everything in the Azure and Office 365 space and his current projects have him working with Power Platform and Dynamics 365.
He mainly spents his spare time with his wife and two young daughters. However, he's always keen to have a side project going whenever he have the time.
Media Entries
Integration Testing - The Why and How - .NET 204
Adventures in .NET
We talk to Martin Costello - a .NET developer with a QA background - about integration testing. We walk through the...
Creating Developer Courses with Taurius Litvinavicius - .NET 203
Adventures in .NET
In this episode of Adventures in .NET, the panel discusses creating Udemy developer courses and .NET Core APIs with...
Modern Identity: From Internal Directories to Cross-Domain Identity Over the Public Internet with Bobby Johnson - .NET 202
Adventures in .NET
Bobby Johnson introduces us to modern identity and the use of external providers to outsource your authentication...
.NET Microservices: From Code To Containers To Steeltoe with David Dieruf - .NET 200
Adventures in .NET
In this episode of Adventures in .NET, guest David Dieruf joins the panel to discuss .NET microservices. They clear...
Moving .NET Solutions to Kubernetes with Andrew Lock - .NET 199
Adventures in .NET
In this episode of Adventures in .NETm we get deep into .NET with Andrew Lock. Kubernetes, .NET Framework to .NET...
The S in KISS…..Embracing simplicity with Guilherme Ferreira - .NET 198
Adventures in .NET
Today we look at using simplicity both in your code at work an in your life and why the two are intertwined. How to...
How Do You Grow? - .NET 197
Adventures in .NET
Most developers we know are constantly learning new things and growing their skills. Jort Rodenburg has been a book...
NET Tools and Azure for .NET developers with Tim Heuer - .NET 196
Adventures in .NET
Tools like Intellicode and LiveShare make developers more productive. Tim Heuer discusses with the panel about what...
Containers with Michael Jolley - .NET 195
Adventures in .NET
Michael Jolley joins us to talk all things containers, live coding and being bald! Michael is a Developer Advocate...
A Tour Around the World of XAML with Dmitry Lyalin - .NET 190
Adventures in .NET
We spend time with Dmitry discussing all the great things going on in the XAML space. The teams working on XAML...
Digging into .NET in AWS - .NET 188
Adventures in .NET
All cloud service providers have a learning curve and AWS is no exception. Garo Yeriazarian has been working with AWS...
The History of .NET with Richard Campbell - .NET 187
Adventures in .NET
In this episode of Adventures in .NET, Richard Campbell, podcast manager, conference creator and author, joins the...
The Magic of DAPR with Cecil Phillip - .NET 185
Adventures in .NET
In this episode of Adventures in .NET we learn about DAPR and how it can make all of our lives easier. Maybe you like...
Creating Developer Courses with Taurius Litvinavicius - .NET 184
Adventures in .NET
In this episode of Adventures in .NET, the panel discusses creating Udemy developer courses and .NET Core APIs with...
To CI/CD or not to CI/CD - .NET 180
Adventures in .NET
In today's episode, we are joined by Muhammad Azeez to discuss CI/CD. It is a safe bet that most development teams...
You've been Blazored! - NET 178
Adventures in .NET
Chris Sainty is a man on a mission. A mission to tell everyone how awesome Blazor is! Chris started working with...
All About Language Features - .NET 177
Adventures in .NET
In today's episode Morgan Kenyon joins us to discuss why choosing the right programming language is important and...
Mastering SignalR - .NET 176
Adventures in .NET
Have you ever used SignalR in your development? .NET might have used it for the code you wrote, but you didn't...
High Performance Databases with RavenDB with Oren Eini - NET 175
Adventures in .NET
Guest, Oren Eini joins the panelists of Adventures in .NET to share on the common database performance issues that...
Quantum Computing basics with Q# - .NET 174
Adventures in .NET
In today's episode, George Kosmidis joins the panel to discuss all about Superposition, Quantum entanglement and...
Pursuing Developer Certifications - .NET 172
Adventures in .NET
In this week's podcast, we have a panel discussion about certifications. Developer certifications and the processes...
Wonders and Woe of Open Source Development - .NET 169
Adventures in .NET
We have discussed open source packages and projects in previous episodes, but today we dig a little deeper. Manuel...
The Magic of DAPR with Cecil Phillip - .NET 160
Adventures in .NET
In this episode of Adventures in .NET we learn about DAPR and how it can make all of our lives easier. Maybe you like...
Get Interactive with Jupyter Notebook - .NET 158
Adventures in .NET
Ron Dagdag, lead software engineer at Spacee, joins us to get interactive with Jupyter Notebook. It is an open-source...
Integration Testing - The Why and How - .NET 157
Adventures in .NET
We talk to Martin Costello - a .NET developer with a QA background - about integration testing. We walk through the...
Designing C# with Mads Torgersen - .NET 156
Adventures in .NET
In this episode, we get the pleasure of picking the brain of the lead designer of C#, Mads Torgersen. Mads has been...
Staying on Top of Productivity - .NET 141
Adventures in .NET
This is a republished episode of .NET 133. Our jobs are hectic and there are always multiple priorities we have to...
Tools To Get Rid Of Your Code Smells - .NET 137
Adventures in .NET
Diyaz Yakubov comes on the show this week to talk about a few tools he's using to make his life easier at work. We...
Participating in the .NET Community - .NET 136
Adventures in .NET
Jakub Chodounsky from the C# Digest newsletter joins us this week. We talk about why he started the mailing list and...
WPF Still Going Strong - .NET 134
Adventures in .NET
"I thought WPF was dead" is usually one of the first things that Kevin Bost hears when discussing today's topic. WPF...
Staying on top of productivity - .NET 133
Adventures in .NET
Our jobs are hectic and there are always multiple priorities we have to stay on top of. Mohammed Osman joins us on...
Blazor In Action - .NET 130 (Part 1)
Adventures in .NET
Chris Sainty returns to the podcast to discuss the release of his book, Blazor in Action, and more Blazor goodness....
Finding Your Focus - .NET 128
Adventures in .NET
This is a republished episode of .NET 017
Blazor Wasm Hosted or Standalone? - .NET 127
Adventures in .NET
Today's episode has more Blazor goodness. The panelists discuss the differences that one little check box can make...
Blazor Environment Quirks - .NET 124
Adventures in .NET
All frameworks have their quirks. As a framework matures some of the quirks go away but every framework seems to have...
Lay off the repository pattern and other controversial opinions - .NET 123
Adventures in .NET
Today we talk with Anthony Trad - he lays his case for why layering the repository pattern over Entity Framework is...
Learning By Doing - .NET 122
Adventures in .NET
Believe it or not, software development is not an easy job. Each business domain is different, you are constantly...
Refactoring legacy code to use async / await - .NET 120
Adventures in .NET
Dominic Ullmann comes on the show to tell us how async / await works and the benefits of using it rather than making...
Mastering SignalR - .NET 109
Adventures in .NET
Have you ever used SignalR in your development? .NET might have used it for the code you wrote and you didn't realize...
What Is Remote - Containers - .NET 107
Adventures in .NET
Have we piqued your curiosity? We were curious as well so Andy Watt agreed to join us on the podcast and fill us in...
Hacking the C# Language and Other Fun Things - .NET 106
Adventures in .NET
We go very low-level with Adam Furmanek and discuss techniques for overriding fundamental rules of the C# language....
Blangular (Blazor + Angular) - .NET 105
Adventures in .NET
Have you ever thought about mixing two SPA frameworks together? In today's episode we discuss doing just that, Blazor...
The Power in Microsoft Power Platform - .NET 104
Adventures in .NET
In this episode of Adventures in .NET the panelists take a look at the Microsoft Power Platform. Power Platform...
The BIG 100
Adventures in .NET
Adventures in .NET has come a long way in the last two years and has had a lot of great guests during that time. For...
Getting Certified in Azure - .NET 099
Adventures in .NET
Azure trainer Brian Gorman joins us on the show and help us untangle all of the many Azure certification pathways. We...
Integration Testing - The Why and How - .NET 096
Adventures in .NET
We talk to Martin Costello - a .NET developer with a QA background - about integration testing. We walk through the...
Let's Get Functional - .NET 095
Adventures in .NET
Today's episode is all about functional programming. While C# isn't necessarily designed for functional programming...
Azure Cognitive Services Etc - .NET 094
Adventures in .NET
Azure has a lot of services, some of which don't get much fanfare. Azure Cognitive Services might be a service that...
The future is in WebAssembly - .NET 093
Adventures in .NET
Alexandre Malavasi walks us through Blazor WebAssembly and explains the journey and evolution of the framework to...
Blockchain on Azure - .NET 092
Adventures in .NET
Today we take a look at how Microsoft is working with blockchain in Azure. Stefano Tempesta is a senior program...
Want To Pair Up? - .NET 089
Adventures in .NET
In this episode of Adventures in .NET we have a special guest join us to talk about pair programming. When you hear...
Advocate For Yourself ( Part 2 ) - .NET 088
Adventures in .NET
In today's episode we talk with G. Andrew Duthie about his career and how he went from developer to advocate. You can...
How Do You Grow? - .NET 086
Adventures in .NET
Most developers we know are constantly learning new things and growing their skills. Jort Rodenburg has been a book...
Get Interactive with Jupyter Notebook - .NET 085
Adventures in .NET
Ron Dagdag, lead software engineer at Spacee, joins us to get interactive with Jupyter Notebook. It is an open-source...
Is Your Code Secure?(Part 2) – .NET 084
Adventures in .NET
Today we dig into security with Christos Matskas, program manager for Microsoft Identity. How secure is your...
Is Your Code Secure? – .NET 083
Adventures in .NET
Today we dig into security with Christos Matskas, program manager for Microsoft Identity. How secure is your...
Open Telemetry and Domain-Driven Refactoring with .NET 6 - .NET 082
Adventures in .NET
Jimmy Bogard takes us through the interesting possibilties of logging with OpenTelemetry. Then we discuss refactoring...
Extending VS Code and Yourself (Part 2) – .NET 081
Adventures in .NET
The Bald Bearded Builder, Michael Jolley, returns to talk about VS Code extensions and learning while live streaming....
Extending VS Code and Yourself (Part 1) - .NET 080
Adventures in .NET
The Bald Bearded Builder, Michael Jolley, returns to talk about VS Code extensions and learning while live streaming....
Global reach of .NET - .NET 079
Adventures in .NET
How often do you stop to think about how easy it is for new developers to get started with .NET? Since .NET Core was...
Quantum Computing basics with Q# - .NET 078
Adventures in .NET
In today's episode, George Kosmidis joins the panel to discuss all about Superposition, Quantum entanglement and...
Career Paths and Job Roles - .NET 077
Adventures in .NET
The Adventures in .NET panel dives into the different roles within an IT or software organization and explain what...
All About Language Features - .NET 076
Adventures in .NET
In today's episode Morgan Kenyon joins us to discuss why choosing the right programming language is important and...
Developing your career - .NET 075
Adventures in .NET
Karim Jernite, co-founder of Advancio, joins us to discuss what today's job market is like for .NET developers. We...
The Power to Automate - .NET 074
Adventures in .NET
Microsoft Power Automate is a service that helps you create automated workflows and streamline repetitive tasks. Our...
Community is Key - .NET 073
Adventures in .NET
Andrea Angella has been involved in many communities over the course of his career and it has helped him become the...
Uno Platform isn't a Card Game - .NET 072
Adventures in .NET
Martin Zikmund discusses the Uno Platform - from getting started to developing applications that work across multiple...
Digging into .NET in AWS - .NET 071
Adventures in .NET
All cloud service providers have a learning curve and AWS is no exception. Garo Yeriazarian has been working with AWS...
You've been Blazored! - .NET 070
Adventures in .NET
Chris Sainty is a man on a mission. A mission to tell everyone how awesome Blazor is! Chris started working with...
What is your Identity? - .NET 069
Adventures in .NET
In today's episode Carl Layton joins us to discuss authentication in the Microsoft stack. The definition of Identity...
Wonders and Woe of Open Source Development - .NET 067
Adventures in .NET
We have discussed open source packages and projects in previous episodes but today we dig a little deeper. Manuel...
Interactive C# with VS Code Notebooks with Eric Potter - .NET 066
Adventures in .NET
VS Code Notebooks provides a way to write quick interactive C# along with documentation to learn and train with.
.NET 064: To CI/CD or not to CI/CD
Adventures in .NET
In today's episode we are joined by Muhammad Azeez to discuss CI/CD. It is a safe bet that most development teams...
.NET 063: Use cases for GraphQL in .NET
Adventures in .NET
Baskar Rao Dandlamudi joins us to discuss using GraphQL in .NET. There are a lot of good use cases for using GraphQL...
.NET 062: Innocent Application Performance Monitoring with Innocent Bindura from Raygun
Adventures in .NET
The panel discusses application performance monitoring, bug reporting, and real world experiences with Innocent...
.NET 060: Pursuing Developer Certifications
Adventures in .NET
In this weeks podcast we have a panel discussion about certifications. Developer certifications and the processes to...
.NET 059: Blazor Keeps Getting Better with Daniel Roth
Adventures in .NET
Blazor has come a long way since 2018. Blazor WebAssembly was released in 2020 and Blazor was integrated as a...
.NET 058: Up in the Cloud with Stu Eggerton
Adventures in .NET
In today's episode we pepper Stu with lots of questions about Azure. We discuss the difference between on-premise and...
.NET 057: Open source, MediatR and Automapper with Jimmy Bogard
Adventures in .NET
Jimmy Bogard joins us to talk about how he approaches open source development and consulting. MediatR and AutoMapper...
.NET 056: How does HotChocolate and StrawberryShake relate to .NET and GraphQL ?
Adventures in .NET
Have you heard about GraphQL? HotChocolate makes it easy to integrate into .NET. Michael Staib walks us through...
.NET 053: Abusing C#, Calendars, Epochs and the .NET Functions Framework with Jon Skeet (Part 2)
Adventures in .NET
Can you tell by the title that this is going to be another two part episode :) Jon has found some ingenious ways to...
.NET 052: Abusing C#, Calendars, Epochs and the .NET Functions Framework with Jon Skeet (Part 1)
Adventures in .NET
Can you tell by the title that this is going to be another two part episode :) Jon has found some ingenious ways to...
.NET 050: The S in KISS…..Embracing simplicity with Guilherme Ferreira
Adventures in .NET
Today we look at using simplicity both in your code at work an in your life and why the two are intertwined. How to...
.NET 049: A web for everyone with Aaron Gustafson
Adventures in .NET
This week Aaron Gustafson joins us to talk about progress enhancement and how it can make everyone's lives easier. It...
.NET 048: Settle into Couchbase with Matthew Groves
Adventures in .NET
Matthew Groves, a Senior Developer Advocate at Couchbase, let's us pick his brain about NoSQL. Curious about...
.NET 046: Moving .NET Solutions to Kubernetes with Andrew Lock
Adventures in .NET
In this episode of Adventures in .NETm we get deep into .NET with Andrew Lock. Kubernetes, .NET Framework to .NET...
.NET 044: Creating Developer Courses with Taurius Litvinavicius
Adventures in .NET
In this episode of Adventures in .NET, the panel discusses creating Udemy developer courses and .NET Core APIs with...
.NET 043: The Pros of Using Unity with Jason Weimann CONT'D
Adventures in .NET
In this continuation of last week’s episode, Jason Weimann delves deeper into Unity. We discuss how to get into...
.NET 042: The Pros of Using Unity with Jason Weimann
Adventures in .NET
In this episode of Adventures in .NET, Jason Weimann joins us to dig into Unity. We discuss how to get into Unity,...
.NET 041: .NET Microservices: From Code To Containers To Steeltoe with David Dieruf
Adventures in .NET
In this episode of Adventures in .NET, guest David Dieruf joins the panel to discuss .NET microservices.
.NET 040: The Magic of DAPR with Cecil Phillip
Adventures in .NET
In this episode of Adventures in .NET we learn about DAPR and how it can make all of our lives easier. Maybe you like...
.NET 039: Microsoft Orleans with Reuben Bond
Adventures in .NET
In this episode of Adventures in .NET, guest Ruben Bond (no relation to James) discusses using MS Orleans for...
.NET 038: EFCore 5 and Blazor with Jeremy Likness
Adventures in .NET
In this episode of Adventures in .NET, we dig deep into Microsoft’s progression from EF6 to EFCore 5 and how EFCore...
.NET 036: dotNET – Blazoring with C# with Jeff Fritz
Adventures in .NET
In this episode of Adventures in .NET, guest, Jeff Fritz and panelists have lots of fun talking about all things .NET...
.NET 034: What is Command Query Responsibility Segregation (CQRS) with Derek Comartin
Adventures in .NET
In this episode of Adventures in .NET, guest Derek Comartin talks to us about Command Query Responsibility...
.NET 033: Working Remotely in the COVID 19 Pandemic
Adventures in .NET
The panelists of Adventures in . NET talk about working remotely during Covid 19 pandemic. They address issues such...
.NET 032: Containers with Michael Jolley
Adventures in .NET
Michael Jolley joins us to talk all things containers, live coding and being bald! Michael is a Developer Advocate...
.NET 030: CodeRushed with Mark Miller Pt2
Adventures in .NET
In this episode of Adventures in .NET, Mark Miller takes us on an exciting adventure of the science of UI, live...
.NET 029: CodeRushed with Mark Miller Pt1
Adventures in .NET
In this episode of Adventures in .NET, Mark Miller takes us on an exciting adventure of the science of UI, live...
.NET 028: Modern Identity: From Internal Directories to Cross-Domain Identity Over the Public Internet with Bobby Johnson
Adventures in .NET
Bobby Johnson introduces us to modern identity and the use of external providers to outsource your authentication layer.
.NET 027: High performance databases with RavenDB with Oren Eini
Adventures in .NET
Guest, Oren Eini joins the panelists of Adventures in .NET to share on the common database performance issues that...
.NET 026: A Tour Around the World of XAML with Dmitry Lyalin
Adventures in .NET
We spend time with Dmitry discussing all the great things going on in the XAML space. The teams working on XAML...
.NET 025: C#, NodaTime, versioning, and diversity with Jon Skeet Pt2
Adventures in .NET
Jon Skeet who has nearly 1.2M reputation on Stack Overflow discusses everything from where it all started, to some of...
.NET 024: .NET Tools and Azure for .NET developers with Tim Heuer
Adventures in .NET
Tools like Intellicode and LiveShare make developers more productive. Tim Heuer discusses with the panel about what...
.NET 023: C#, NodaTime, versioning, and diversity with Jon Skeet Pt1
Adventures in .NET
Jon Skeet who has nearly 1.2M reputation on Stack Overflow discusses everything from where it all started, to some...
.NET 022: Using DotVVM for migrating WebForms applications to .NET Core with Tomas Herceg
Adventures in .NET
Currently working on a .NET WebForms application and want to know how to move it to .NET Core without rewriting...
.NET 021: Unity Game Development with C# with Jonathan Thompson
Adventures in .NET
Jonathan Thompson discusses with the group about developing desktop and mobile games using Unity. They cover the...
.NET 020: Demos are cool, but it is time to talk about the real world! with Gabriel Baptista
Adventures in .NET
Gabriel Baptista discusses with the panel about teaching development to students in Brazil. They also discuss...
.NET 019: The History of .NET with Richard Campbell
Adventures in .NET
In this episode of Adventures in .NET, Richard Campbell, podcast manager, conference creator and author, joins the...
.NET 018: Fun and Development with Unit Testing, GraphQL and Firebase Auth
Adventures in .NET
In this episode of Adventures in .NET the panel shares some of the things they have been doing in their work. Caleb...
.NET 017: Finding Your Focus
Adventures in .NET
In this episode of Adventures in .NET the panel discusses the tools and techniques they use to find their focus while...
.NET 016: Adventures in .NET Goes to Microsoft Ignite
Adventures in .NET
In this episode of Adventures in .NET the panel discusses Shawn Clabough’s experience at Microsoft Ignite. The...
.NET 012: F# with Phillip Carter
Adventures in .NET
In this episode of Adventures in .NET the panel interviews Phillip Carter. Phillip works on the .NET team. His...
.NET 010: What's new in C# 8.0 with Jason Bock
Adventures in .NET
In this week’s episode of Adventures in .NET the panel is joined by Wai Liu, the new panelist, and Jason Bock, the...