Click here to Skip to main content
15,947,389 members
This competition has ended

Best Article of March 2022

Contest Entries and Requirements

  1. The contest period covers the the first day of the month 12AM US Eastern Standard Time and ends the final day of the month at 11:59:59 PM US Eastern Standard Time. All entries must be submitted during this period in order to qualify.
  2. Entries must be an article, or blog entry.
  3. Articles entries must follow the CodeProject submission guidelines.
  4. No cheating, lying, plagiarizing articles, chicanery, or kicking.
  5. No author can be nominated twice.
  6. In the event an article has multiple authors and/or contributors, the number of prizes issued is solely at the discretion of the prize issuer.
  7. In the event of a tie, the number of prizes issued is solely at the discretion of the prize issuer.
  8. Multiple votes from the same IP will be automatically disqualified.
  9. The judges’ decision is final and no correspondence will be entered into.
  10. Only those who live in jurisdictions in which this contest is legal may enter.
  11. Any breach of the rules and the prize will be awarded to the runner up.
  12. By entering the contest you agree to the rules, conditions of entry, and agree that your member alias and any submitted material can be used for promotional purposes by CodeProject.
  13. Entries shall be deemed to be submitted by the authorized account holder of the email address submitted at the time of entry unless clearly indicated otherwise. "Authorized account holder" is defined as the natural person who is assigned to an email address by an internet access provider, on-line service provider, or other organization (e.g. business, educational institution, etc.) that is responsible for assigning email addresses for the domain associated with the submitted email address.

Eligibility

This competition is open to software development professionals & enthusiasts who are of the age of majority in their jurisdiction of residence; however, residents of Quebec and of the following countries are ineligible to participate due to legal constraints: Cuba, Iran, Iraq, Libya, North Korea, Sudan, and Syria. Employees (or a member of their immediate family) of CodeProject or any of their affiliates, subsidiaries, advertising or promotional agencies are also ineligible to participate. Void where prohibited by law.

How to Enter

Entry is by the submission process described above. Please read the submission requirements before submitting your entry and ensure the article is tagged with at least one of the tags corresponding to that competition's category.

Lost, late, misdirected, or illegible entries will be disqualified. Any entry containing content that CodeProject deems objectionable for any reason will be disqualified. All decisions of CodeProject with respect to any aspect of the competition, including, without limitation, the eligibility of entries, are final and binding on all entrants in all matters as they relate to this competition. CodeProject reserves its right to modify the Rules.

CodeProject assumes no responsibility for lost, late, delayed, destroyed or misdirected mail, voice messages, email or any computer errors or malfunctions. No correspondence will be entered into with entrants.

CodeProject does not assume any responsibility for incorrect or inaccurate capture of entry information, technical malfunctions, human or technical error, lost, delayed or garbled data or transmissions, omission, interruption, deletion, defect or failures of any telephone or computer line or network, computer equipment, software or any combination thereof. Entry materials/data that have been tampered with or altered are void. If for any reason, in the opinion of CodeProject in its sole discretion, the competition is not capable of running as originally planned, or if the administration, security, fairness, integrity or the proper conduct of the competition is corrupted or adversely affected, including by reason of infection by computer virus, bugs, tampering, unauthorized intervention, fraud, technical failures or any other causes beyond its control, CodeProject reserves its right to cancel, terminate, modify, amend, extend or suspend the competition including cancelling any method of entry, and select a winner from previously received eligible entries. CodeProject reserves its right in its sole discretion to disqualify any individual it finds to be tampering with the entry process or the operation of the competition or to be acting in violation of the Rules or otherwise in a disruptive manner. CodeProject reserves its right to seek remedies and damages to the fullest extent of the law for any attempts to deliberately damage the competition web site or to undermine the legitimate operation of this competition. CodeProject shall not be held responsible for any errors or negligence that may arise or occur in connection with the competition including any damage to an entrant's computer equipment, system, software or any combination thereof, as a result of their participation in this competition or from downloading any material from the competition website where applicable.

Current Entries

Articles that match the contest criteria are automatically entered. The top 50 entries are shown.

Please Sign up or sign in to vote.
15 Mar 2022David Deley
Internal working of the await keyword
Please Sign up or sign in to vote.
5 Mar 2022Mark Pelf
Tutorial article on Fluent Interface Pattern in C#
Please Sign up or sign in to vote.
14 Mar 2022Paulo Zemek
Mistakes that can be made while using MVVM and how to overcome them
Please Sign up or sign in to vote.
15 Aug 2023Xavier Junqué i de Fortuny
Reduces/evaluates a real/complex math expression
Please Sign up or sign in to vote.
16 Apr 2022tugrulGtx
A walkthrough for a grid implementation of "particle in cell" problem to improve performance of axis-aligned bounding-box (AABB) collision checking in various scenarios
Please Sign up or sign in to vote.
1 Mar 2022Marc Clifton
I want to host some simple applications under a real HTTPS domain. This article describes my foray into doing exactly this with a Digital Ocean Droplet.
Please Sign up or sign in to vote.
11 Sep 2022Mark Pelf
Tutorial article on Observer pattern in C#
Please Sign up or sign in to vote.
17 Mar 2022Ladware.Net
Blazor and Windows Form desktop application
Please Sign up or sign in to vote.
1 Jul 2023Ryan Scott White
A fast, possibly the fastest, square root function for Big Integers and Floats in C# and Java.
Please Sign up or sign in to vote.
28 Feb 2022Saurabh Singh _
A simple approach to handle Airspace problem
Please Sign up or sign in to vote.
9 Mar 2022Coding Notes
An introduction to ASP.NET Core MVC
Please Sign up or sign in to vote.
21 Mar 2022Peter Huber SG
WpfTestbench helps you to write sophisticated test windows for your WPF controls with few lines of code
Please Sign up or sign in to vote.
20 Mar 2022Paul Aurelian Gagniuc
This article shows how to mix two signals into a third, in variable proportions.
Please Sign up or sign in to vote.
21 Apr 2022honey the codewitch
Take advantage of the PlatformIO repository to easily add GFX to your projects
Please Sign up or sign in to vote.
25 Mar 2022honey the codewitch
On PC platforms, just getting it done is king. On IoT, the trick is doing it in the first place.
Please Sign up or sign in to vote.
21 Mar 2022Roger65
How to type text into a static control, change the font used and then save it into a bitmap
Please Sign up or sign in to vote.
7 Mar 2022essentialSQL
In this blog entry we do an overview of the order if execution in SQL.
Please Sign up or sign in to vote.
9 Mar 2022SiretT
Console app to share internet connection with other network interface
Please Sign up or sign in to vote.
7 Mar 2022essentialSQL
Learn about a database cursor with an example and when to use it in a SP
Please Sign up or sign in to vote.
7 Mar 2022essentialSQL
In this video and the following article, we’ll take you step-by-step through the process of changing a query’s filter criteria into a SQL variable, then ultimately into a stored procedure.
Please Sign up or sign in to vote.
2 Apr 2022Michael Sydney Balloni
If you were on the fence about adding mscript to your arsenal of system tools, have another look.
Please Sign up or sign in to vote.
25 Mar 2022honey the codewitch
A more in-depth guide to creating drivers and other custom draw targets for GFX
Please Sign up or sign in to vote.
30 Mar 2022Vigneshwaran Balasubramani
How to implement a GraphQL server with Node.js and Express
Please Sign up or sign in to vote.
7 Mar 2022essentialSQL
Top five performance tips for Stored Procedures
Please Sign up or sign in to vote.
7 Mar 2022essentialSQL
In this article we’re going to cover the seven data types you’ll most frequently encounter in your everyday use of SQL.
Please Sign up or sign in to vote.
15 Mar 2022Nikola Breznjak
This blog entry covers what we learned at the first Ionic framework meetup in Čakovec.
Please Sign up or sign in to vote.
15 Mar 2022Nikola Breznjak
An introduction to Test Driven Development in Ionic
Please Sign up or sign in to vote.
17 Mar 2022Coding Notes
An introduction to ASP.NET Core MVC
Please Sign up or sign in to vote.
23 Mar 2022HoshiKata
This is a JavaScript / Canvas driven data graphing library. It's designed for speed, big data and simplicity.
Please Sign up or sign in to vote.
2 Mar 2022Oliver Smith 2022
Save time comparing JSON docs and build collaboration features into your applications
Please Sign up or sign in to vote.
7 Mar 2022essentialSQL
How to use SQL GROUP BY Clause is to consolidate like values into a single row
Please Sign up or sign in to vote.
6 Mar 2022essentialSQL
In this article we look at SQL FULL JOIN examples and make a few notes of things to look for.
Please Sign up or sign in to vote.
7 Mar 2022essentialSQL
Learn about implicit data conversion and explicit type conversions with CAST AND CONVERT
Please Sign up or sign in to vote.
7 Mar 2022essentialSQL
Puzzle to explore a SQL BOM example
Please Sign up or sign in to vote.
7 Mar 2022essentialSQL
In this blog entry we do an overview of the SQL DATEDIFF function
Please Sign up or sign in to vote.
7 Mar 2022essentialSQL
In this article we’ve collected all the essential information about writing SQL queries into one ultimate guide to help you gain and practice this knowledge more effectively.
Please Sign up or sign in to vote.
7 Mar 2022essentialSQL
The purpose of this article is to introduce you to SQL window functions and some of the high-level concepts.
Please Sign up or sign in to vote.
7 Mar 2022essentialSQL
In this blog entry we discuss the difference between left join versus right join operators.
Please Sign up or sign in to vote.
10 Mar 2022Master DJon
New MigrationSqlGenerator to generate SQL from MigrationOperations having attribute "ExecuteAfter" or "ExecuteBefore"
Please Sign up or sign in to vote.
15 Mar 2022Nikola Breznjak
Adding Google OAuth support to Raneto as the latter allows only basic username/password authentication
Please Sign up or sign in to vote.
3 Mar 2022JorgeLuisOrejel
C# library that generates and displays various digital signals in Windows Forms
Please Sign up or sign in to vote.
11 Mar 2022Mark Pelf
Discussion on proper method to check for null-value and raise Event in C#
Please Sign up or sign in to vote.
22 Oct 2023David_Cui
To introduce a free library to save some tedious work for writing mapping code between entities and DTOs
Please Sign up or sign in to vote.
1 Mar 2022Uladzislau Baryshchyk
An overview of multithreading in C#
Please Sign up or sign in to vote.
16 Mar 2022honey the codewitch
Get your data on, even on platforms without a reliable STL implementation using these simple but critical classes.
Please Sign up or sign in to vote.
7 Mar 2022essentialSQL
Puzzle to teach joins vs subqueries in SQL
Please Sign up or sign in to vote.
7 Mar 2022essentialSQL
How to rewrite a subquery as a join
Please Sign up or sign in to vote.
12 Mar 2022Coding Notes
An introduction to ASP.NET Core MVC
Please Sign up or sign in to vote.
4 Mar 2022gggustafson
Autocomplete, or word completion, is a feature in which an application predicts the rest of a word a user is typing. This article describes a lightweight implementation.
Please Sign up or sign in to vote.
4 Mar 2022essentialSQL
Use STRING_SPLIT() to join two tables

Current Participants

Those with articles that match the contest criteria are automatically entered.

Software Developer (Senior)
United States United States
1987 M.S., Electrical and Computer Engineering, University of California, Santa Barbara
1985 B.S., Mechanical and Environmental Engineering, University of California, Santa Barbara
Singapore Singapore
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.
Easy Computer Academy, LLC
United States United States
Hello my name is Kris. I’m here because I am passionate about helping non-techie people to overcome their fear of learning SQL.

I know what it is like to not know where to start or whether the time spent learning is worth the effort. That is why I am here to help you to:
- Get started in an easy to follow step-by-step manner.
- Use your time wisely so you focus on what is important to learn to get the most value from your time.
- Answer your questions. Really! Just post a comment and I’ll respond. I’m here to help.

It wasn’t long ago that I was helping a colleague with some reporting. She didn’t know where to start and soon got overwhelmed and lost as she didn’t know SQL.

I felt really bad, as she was under pressure to get some summary information to her boss, the built-in reports were falling short, and to make them better would require her to know SQL. At that time that seemed impossible! It in dawned on me, it doesn’t have to be that way.

Then I discovered a way for anyone with the desire to easily learn SQL. I worked with my co-worker, started to teach her what I learned and soon she was able to write reports and answer her boss’ questions without getting stressed or ploughing hours into manipulating data in Excel.

It hasn’t always been easy. Sometimes the information seems abstract or too conceptual. In this case I’ve found out that a visual explanation is best. I really like to use diagrams or videos to explain hard-to-grasp ideas.

Having video, pictures, and text really help to reinforce the point and enable learning.

And now I want to help you get the same results.

The first step is simple, click here http://www.essentialsql.com/get-started-with-sql-server/
Software Developer (Senior)
United States United States
In 1964, I was in the US Coast Guard when I wrote my first program. It was written in RPG (note no suffixing numbers). Programs and data were entered using punched cards. Turnaround was about 3 hours. So much for the "good old days!"

In 1970, when assigned to Washington DC, I started my MS in Mechanical Engineering. I specialized in Transportation. Untold hours in statistical theory and practice were required, forcing me to use the university computer and learn the FORTRAN language, still using punched cards!

In 1973, I was employed by the Norfolk VA Police Department as a crime analyst for the High Intensity Target program. There, I was still using punched cards!

In 1973, I joined Computer Sciences Corporation (CSC). There, for the first time, I was introduced to a terminal with the ability to edit, compile, link, and test my programs on-line. CSC also gave me the opportunity to discuss technical issues with some of the brightest minds I've encountered during my career.

In 1975, I moved to San Diego to head up an IR&D project, BIODAB. I returned to school (UCSD) and took up Software Engineering at the graduate level. After BIODAB, I headed up a team that fixed a stalled project. I then headed up one of the two most satisfying projects of my career, the Automated Flight Operations Center at Ft. Irwin, CA.

I left Anteon Corporation (the successor to CSC on a major contract) and moved to Pensacola, FL. For a small company I built their firewall, given free to the company's customers. An opportunity to build an air traffic controller trainer arose. This was the other most satisfying project of my career.

Today, I consider myself capable.
United States United States
Just a shiny lil monster. Casts spells in C++. Mostly harmless.
Technical Lead
United States United States
Phil is a Principal Software developer focusing on weird yet practical algorithms that run the gamut of embedded and desktop (PID loops, Kalman filters, FFTs, client-server SOAP bindings, ASIC design, communication protocols, game engines, robotics).

In his personal life he is a part time mad scientist, full time dad, and studies small circle jujitsu, plays guitar and piano.
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.
Software Developer (Senior) Ladware.Net
Italy Italy
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.
Architect Interacx
United States United States
Blog: https://marcclifton.wordpress.com/
Home Page: http://www.marcclifton.com
Research: http://www.higherorderprogramming.com/
GitHub: https://github.com/cliftonm

All my life I have been passionate about architecture / software design, as this is the cornerstone to a maintainable and extensible application. As such, I have enjoyed exploring some crazy ideas and discovering that they are not so crazy after all. I also love writing about my ideas and seeing the community response. As a consultant, I've enjoyed working in a wide range of industries such as aerospace, boatyard management, remote sensing, emergency services / data management, and casino operations. I've done a variety of pro-bono work non-profit organizations related to nature conservancy, drug recovery and women's health.
Software Developer
Serbia Serbia
Mark Pelf is the pen name of just another Software Engineer from Belgrade, Serbia.
My Blog https://markpelf.com/
Software Developer (Senior)
Canada Canada
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.
Software Developer
United States United States
Michael Balloni is a manager of software development at a cybersecurity software and services provider.

Check out https://www.michaelballoni.com for all the programming fun he's done over the years.

He has been developing software since 1994, back when Mosaic was the web browser of choice. IE 4.0 changed the world, and Michael rode that wave for five years at a .com that was a cloud storage system before the term "cloud" meant anything. He moved on to a medical imaging gig for seven years, working up and down the architecture of a million-lines-code C++ system.

Michael has been at his current cybersecurity gig since then, making his way into management. He still loves to code, so he sneaks in as much as he can at work and at home.
Software Developer
Vietnam Vietnam
I am a teacher, a software developer. I love reading, travelling and I am also blogging on ngocminhtran.com (in VietNamese).
Software Developer (Senior)
Croatia Croatia
I’m an engineer at heart and a jack of all trades kind of guy.

For those who care about titles, I hold a masters degree in computing from FER (and a black belt in karate, but that’s another story…).

During the last years, worked in a betting software industry where I made use of my knowledge in areas ranging from full-stack (web & desktop) development to game development through Linux and database administration and use of various languages (C#, PHP, JavaScript to name just a few).

Currently, I’m a senior software engineer at TelTech, where we make innovative communications apps, and I <3 it.

Lately, I’m very passionate about Ionic framework and am currently in the top 3 answerers on StackOverflow in Ionic framework. I wrote a book about Ionic framework which you can get for free on Leanpub: Ionic framework – step by step from idea through prototyping to the app stores.

Other technical writing:

+ wrote a book Getting MEAN with MEMEs
was a technical reviewer for a book Deploying Node published by Packt
was a technical reviewer for a book Getting started with Ionic published by Packt
After writing 300 posts, this is why I think you should start blogging too

Come and see what I write about on my blog.
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.
Software Developer (Senior) Microsoft
United States United States
I started to program computers when I was 11 years old, as a hobbyist, programming in AMOS Basic and Blitz Basic for Amiga.
At 12 I had my first try with assembler, but it was too difficult at the time. Then, in the same year, I learned C and, after learning C, I was finally able to learn assembler (for Motorola 680x0).
Not sure, but probably between 12 and 13, I started to learn C++. I always programmed "in an object oriented way", but using function pointers instead of virtual methods.

At 15 I started to learn Pascal at school and to use Delphi. At 16 I started my first internship (using Delphi). At 18 I started to work professionally using C++ and since then I've developed my programming skills as a professional developer in C++ and C#, generally creating libraries that help other developers do their work easier, faster and with less errors.

Want more info or simply want to contact me?
Take a look at: http://paulozemek.azurewebsites.net/
Or e-mail me at: paulozemek@outlook.com

Codeproject MVP 2012, 2015 & 2016
Microsoft MVP 2013-2014 (in October 2014 I started working at Microsoft, so I can't be a Microsoft MVP anymore).
Software Developer (Senior)
Singapore Singapore
Retired SW Developer from Switzerland living in Singapore

Interested in WPF projects.
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.
Help desk / Support
United States United States
Ryan White is an IT Coordinator, currently living in Pleasanton, California.

He earned his B.S. in Computer Science at California State University East Bay in 2012. Ryan has been writing lines of code since the age of 7 and continues to enjoy programming in his free time.

You can contact Ryan at s u n s e t q u e s t -A-T- h o t m a i l DOT com if you have any questions he can help out with.
Software Developer (Senior)
India India
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.
Engineer
Cuba Cuba
Telecommunications and Electronics Engineer
Turkey Turkey
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.
Software Developer (Senior)
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.
United States United States
Vigneshwaran Balasubramani is an experienced software engineer and an author at ContentLab. He is skilled in Angular, React, React Native, JavaScript, NodeJS, Docker, and following programming best practices.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Contest Entries and Requirements

  1. The contest period covers the the first day of the month 12AM US Eastern Standard Time and ends the final day of the month at 11:59:59 PM US Eastern Standard Time. All entries must be submitted during this period in order to qualify.
  2. Entries must be an article, or blog entry.
  3. Articles entries must follow the CodeProject submission guidelines.
  4. No cheating, lying, plagiarizing articles, chicanery, or kicking.
  5. No author can be nominated twice.
  6. In the event an article has multiple authors and/or contributors, the number of prizes issued is solely at the discretion of the prize issuer.
  7. In the event of a tie, the number of prizes issued is solely at the discretion of the prize issuer.
  8. Multiple votes from the same IP will be automatically disqualified.
  9. The judges’ decision is final and no correspondence will be entered into.
  10. Only those who live in jurisdictions in which this contest is legal may enter.
  11. Any breach of the rules and the prize will be awarded to the runner up.
  12. By entering the contest you agree to the rules, conditions of entry, and agree that your member alias and any submitted material can be used for promotional purposes by CodeProject.
  13. Entries shall be deemed to be submitted by the authorized account holder of the email address submitted at the time of entry unless clearly indicated otherwise. "Authorized account holder" is defined as the natural person who is assigned to an email address by an internet access provider, on-line service provider, or other organization (e.g. business, educational institution, etc.) that is responsible for assigning email addresses for the domain associated with the submitted email address.

Eligibility

This competition is open to software development professionals & enthusiasts who are of the age of majority in their jurisdiction of residence; however, residents of Quebec and of the following countries are ineligible to participate due to legal constraints: Cuba, Iran, Iraq, Libya, North Korea, Sudan, and Syria. Employees (or a member of their immediate family) of CodeProject or any of their affiliates, subsidiaries, advertising or promotional agencies are also ineligible to participate. Void where prohibited by law.

How to Enter

Entry is by the submission process described above. Please read the submission requirements before submitting your entry and ensure the article is tagged with at least one of the tags corresponding to that competition's category.

Lost, late, misdirected, or illegible entries will be disqualified. Any entry containing content that CodeProject deems objectionable for any reason will be disqualified. All decisions of CodeProject with respect to any aspect of the competition, including, without limitation, the eligibility of entries, are final and binding on all entrants in all matters as they relate to this competition. CodeProject reserves its right to modify the Rules.

CodeProject assumes no responsibility for lost, late, delayed, destroyed or misdirected mail, voice messages, email or any computer errors or malfunctions. No correspondence will be entered into with entrants.

CodeProject does not assume any responsibility for incorrect or inaccurate capture of entry information, technical malfunctions, human or technical error, lost, delayed or garbled data or transmissions, omission, interruption, deletion, defect or failures of any telephone or computer line or network, computer equipment, software or any combination thereof. Entry materials/data that have been tampered with or altered are void. If for any reason, in the opinion of CodeProject in its sole discretion, the competition is not capable of running as originally planned, or if the administration, security, fairness, integrity or the proper conduct of the competition is corrupted or adversely affected, including by reason of infection by computer virus, bugs, tampering, unauthorized intervention, fraud, technical failures or any other causes beyond its control, CodeProject reserves its right to cancel, terminate, modify, amend, extend or suspend the competition including cancelling any method of entry, and select a winner from previously received eligible entries. CodeProject reserves its right in its sole discretion to disqualify any individual it finds to be tampering with the entry process or the operation of the competition or to be acting in violation of the Rules or otherwise in a disruptive manner. CodeProject reserves its right to seek remedies and damages to the fullest extent of the law for any attempts to deliberately damage the competition web site or to undermine the legitimate operation of this competition. CodeProject shall not be held responsible for any errors or negligence that may arise or occur in connection with the competition including any damage to an entrant's computer equipment, system, software or any combination thereof, as a result of their participation in this competition or from downloading any material from the competition website where applicable.

You must sign in to participate in this contest.
This contest has ended.
1 Mar - 31 Mar 2022