Click here to Skip to main content
15,749,352 members

CodeProject - Professional Profile


The CodeProject team have been writing software, building communities, and hosting for over 20 years. We are passionate about helping developers share knowledge, learn new skills, and connect. We believe everyone can code, and every contribution, no matter how small, helps.

The CodeProject team is currently focussing on CodeProject.AI Server, a stand-alone, self-hosted server that provides AI inferencing services on any platform for any language. Learn AI by jumping in the deep end with us:


Below is the list of members of this group

Software Developer (Senior) CodeProject
Canada Canada
As Senior Architect, Matthew is responsible for the Architecture, Design, and Coding of the CodeProject software as well as Manager of the Infrastructure that runs the web site.

Matthew works on improving the performance and experience of the Code Project site for users, clients, and administrators.

Matthew has more years of software development, QA and architecture experience under his belt than he likes to admit. He graduated from the University of Waterloo with a B.Sc. in Electrical Engineering. He started out developing micro-processor based hardware and software including compilers and operating systems.
His current focus is on .NET web development including jQuery, Webforms, MVC, AJAX, and patterns and practices for creating better websites.
He is the author of the Munq IOC, the fastest ASP.NET focused IOC Container.
His non-programming passions include golf, pool, curling, reading and building stuff for the house.
Technical Writer CodeProject
Canada Canada
Sean Ewington is the Content Manager for CodeProject.

His background in programming is primarily C++ and HTML, but has experience in other, "unsavoury" languages.

He loves movies, and likes to say inconceivable often, even if it does not mean what he thinks it means.
Founder CodeProject
Canada Canada
I started photo-etching circuit boards when I was 8, and at 11 was haunting the halls and computer science labs at the local university so much that I was invited by Professor Wayne Ayott to audit his software and hardware design courses.

Over my career I have used C# , C++, Win32, MFC, Assembler, Basic, and Clipper, on applications for the military, commercial ventures, medical research and the labour movement. Through my medical informatics work I came to know what real-time and mission-critical really mean… just try being part of the critical path when a woman goes into labor.

I have been honoured to receive many business, industry and leadership awards including being named an Exceptional Young Entrepreneur (Profit Magazine) and to the list of Who's Who in Canadian Business. The companies I started have been recognized as the Fastest Growing companies in Canada (Profit Magazine), as the Fastest Growing North American Technology Companies (Deloitte & Touché) and named as a Top 100 Innovator and Leader by SDTimes 6 years in a row. I serve on the boards of the Ontario Center for Innovation, and Umbra a leading international home goods company.

Here's my professional profile on LinkedIn:

In 2007 Microsoft acquired the technology assets, IP and development team of my company Dundas Software and rolled it into SQL Server. After the Microsoft deal we recapitalized Dundas and grew it again into Dundas Data Visualization a leading Embedded BI company which was acquired by insightsoftware in 2022.

I live in Toronto and enjoy photography, scuba, food, and motorcycle riding.
Founder CodeProject
Canada Canada
Chris Maunder is the co-founder of and has been a prominent figure in the software development community for nearly 30 years. Hailing from Australia, Chris has a background in Mathematics, Astrophysics, Environmental Engineering and Defence Research. His programming endeavours span everything from FORTRAN on Super Computers, C++/MFC on Windows, through to to high-load .NET web applications and Python AI applications on everything from macOS to a Raspberry Pi. Chris is a full-stack developer who is as comfortable with SQL as he is with CSS.

In the late 1990s, he and his business partner David Cunningham recognized the need for a platform that would facilitate knowledge-sharing among developers, leading to the establishment of in 1999. Chris's expertise in programming and his passion for fostering a collaborative environment have played a pivotal role in the success of Over the years, the website has grown into a vibrant community where programmers worldwide can connect, exchange ideas, and find solutions to coding challenges. Chris is a prolific contributor to the developer community through his articles and tutorials, and his latest passion project, CodeProject.AI.

In addition to his work with, Chris co-founded ContentLab and DeveloperMedia, two projects focussed on helping companies make their Software Projects a success. Chris's roles included Product Development, Content Creation, Client Satisfaction and Systems Automation.


Weekly Data. Recent events may not appear immediately. For information on Reputation please see the FAQ.


Members need to achieve at least one of the given member levels in the given reputation categories in order to perform a given action. For example, to store personal files in your account area you will need to achieve Platinum level in either the Author or Authority category. The "If Owner" column means that owners of an item automatically have the privilege. The member types column lists member types who gain the privilege regardless of their reputation level.

Privileges for a group account are based on the priviliges of the administrators of that account.

ActionAuthorAuthorityDebatorEditorEnquirerOrganiserParticipantIf OwnerMember Types
Have no restrictions on voting frequencysilversilversilversilver
Bypass spam checks when posting contentsilversilversilversilversilversilvergoldSubEditor, Mentor, Protector, Editor
Store personal files in your account areaplatinumplatinumSubEditor, Editor
Have live hyperlinks in your profilebronzebronzebronzebronzebronzebronzesilverSubEditor, Protector, Editor
Have the ability to include a biography in your profilebronzebronzebronzebronzebronzebronzesilverSubEditor, Protector, Editor
Edit a Question in Q&AsilversilversilversilverYesSubEditor, Protector, Editor
Edit an Answer in Q&AsilversilversilversilverYesSubEditor, Protector, Editor
Delete a Question in Q&AYesSubEditor, Protector, Editor
Delete an Answer in Q&AYesSubEditor, Protector, Editor
Report an ArticlesilversilversilversilverSubEditor, Mentor, Protector, Editor
Approve/Disapprove a pending ArticlegoldgoldgoldgoldSubEditor, Mentor, Protector, Editor
Edit other members' articlesSubEditor, Protector, Editor
Create an article without requiring moderationplatinumSubEditor, Mentor, Protector, Editor
Approve/Disapprove a pending QuestionProtector
Approve/Disapprove a pending AnswerProtector
Report a forum messagesilversilverbronzeProtector, Editor
Approve/Disapprove a pending Forum MessageProtector
Have the ability to send direct emails to members in the forumsProtector
Create a new tagsilversilversilversilver
Modify a tagsilversilversilversilver

Actions with a green tick can be performed by this member.

GeneralDisabling Half Precision Processing for Older GPUs in CodeProject AI Server Pin
Matthew Dennis4-Nov-22 7:08
sysadminMatthew Dennis4-Nov-22 7:08 
GeneralCodeProject.AI Server in Docker on a Raspberry Pi 400 64bit Arm Pin
Chris Maunder31-Oct-22 14:29
cofounderChris Maunder31-Oct-22 14:29 
GeneralTrying to Speed up CodeProject.AI Server with SignalR Pin
Matthew Dennis28-Oct-22 4:45
sysadminMatthew Dennis28-Oct-22 4:45 
GeneralRe: Trying to Speed up CodeProject.AI Server with SignalR Pin
Peter Shaw1-Nov-22 2:13
professionalPeter Shaw1-Nov-22 2:13 
GeneralDocker and Arm64 Pin
Chris Maunder22-Oct-22 10:06
cofounderChris Maunder22-Oct-22 10:06 
GeneralCodeProject.AI Server integration in Blue Iris is even better! Pin
Sean Ewington19-Oct-22 11:45
staffSean Ewington19-Oct-22 11:45 
GeneralApple Silicon and AI Pin
Chris Maunder21-Sep-22 8:01
cofounderChris Maunder21-Sep-22 8:01 
GeneralPython virtual environments Pin
Chris Maunder4-Jul-22 6:49
cofounderChris Maunder4-Jul-22 6:49 
I feel like we're discussing how to install a fridge when all you want is a nice, cold beer but we're nothing without solid infrastructure.

In CodeProject.AI we support adding backend analysis modules in any language and tech stack, as long as that module can be installed (and uninstalled) neatly.

Python is obviously the biggest player in the AI space so supporting Python is critical. It's also tricky, and we rely on Python Virtual Environments to keep things clean. Clean-ish.

A Python Virtual Environment can lead one to think of a sandbox, or virtual machine where the environment is completely encased in a leak-proof container that protects it from interference from the outside, and protects the outside from harmful processes on the inside.

This isn't a Python Virtual Environment.

To create a a Python Virtual Environment for a given version of Python you must first have that version of Python installed in your environment. You run the command to create the a virtual environment (python -m venv) and what you get is a folder that contains a copy of, or symlink to, your original Python interpreter, as well as a folder to any Python packages you need to install into that a virtual environment.

This is your Python Virtual Environment.

The secret sauce is the "Activate" script which simply sets environment variables so that when you type "Python" at the command line, the Python interpreter inside your a Virtual Environment will be launched, not the system-wide version. Deactivate the Virtual Environment and the environment variables are reset, and your OS-default version of Python is now the default.

The details of this are not important.

The important part is that when you "activate" the virtual environment and then install packages via pip install, those packages will live inside the Virtual Environment's folder, and not inside the OS's global python package folder. This allows you to have different versions of the same package installed in different virtual environments.
Python installed in your OS with package A, package B

 and also Python installed in Virtual Environment 1 with package A 2.0, package B
 and also Python installed in Virtual Environment 2 with package A, package B 2.0

Installing Python in CodeProject.AI

When we install Python in a CodeProject.AI setup we either XCOPY in the Python executables (for Windows), or use apt-get or brew (Linux / macOS) to ensure we have a base Python installation, and then we create the Virtual Environment using the standard python -m venv and install the python packages.

But we do it like this:
"[PythonFolder]python.exe" -m venv "[PythonFolder]venv"
"[PythonFolder]venv\scripts\pip.exe" --no-cache-dir install -r requirements.txt --target "[PythonFolder]venv\Lib\site-packages"

Where [PythonFolder] is \src\AnalysisLayer\bin\Windows\Python37\ for Windows and Python 3.7

This calls the python interpreter and the pip utility from within the Virtual Environment directly, and ensures the output of these commands will also be within the Virtual Environment. No need to activate the Virtual Environment during this.

Even more importantly: You do not need to have Python or any Python tools setup on your machine for this to work. The whole point of our installer (and our dev installation scripts) is to allow you to be up and running with no prep. We do all that for you.

Using Python in CodeProject.AI

We create a virtual environment for each version of Python that we install. We still do not need to activate those environments. This is partly because we're calling the Python process from our server directly, and not from a command terminal. Calling a script to set environment variables prior to launching Python is a little cumbersome.

We could set the PATH variables directly, but we don't need to: we call the specific Python and Pip executables from the virtual environment using their full paths. On top of this, in our module wrapper we add the path to the virtual environment's packages directory to sys.path in the code itself.

This means that
  1. The correct version of Python will be called
  2. The packages installed in the virtual environment will be used in preference to the packages installed globally
So there is no need to activate the Virtual Environment.

What we gain from this approach

We control the environment, we gain the flexibility of virtual environments, and we can add as many versions of python and as many combinations of installation packages as we need

What we lose from this approach

The biggest is size. Each Virtual Environment contains copies of packages probably installed elsewhere. PyTorhc, for instance, can be well over 1.3GB in size for the GPU enabled version. While size can be important, the size of Python modules will quickly pale in comparison to AI models, and even more so when one considers the data being input to these models. Video footage, for instance, gets really big, really fast.

The other downside is that modules installed in CodeProject.AI must use our module wrapper Python module to ensure the PATH is set correctly for the import statements to work, or they need to do that themselves. It's a small tradeoff given that using our SDK means 90% of the plumbing is done for you.
Chris Maunder

NewsCodeProject's AI server now has custom models Pin
Chris Maunder18-Jun-22 8:39
cofounderChris Maunder18-Jun-22 8:39 
NewsSenseAI Integrations Pin
Chris Maunder15-Jun-22 10:20
cofounderChris Maunder15-Jun-22 10:20 
GeneralsenseAI on macOS and Windows Pin
Chris Maunder8-Jun-22 16:35
cofounderChris Maunder8-Jun-22 16:35 
GeneralWhen's a good time to release? Pin
Chris Maunder6-Jun-22 11:12
cofounderChris Maunder6-Jun-22 11:12 
GeneralInstallers and VS 2022 Pin
Chris Maunder25-Feb-22 10:41
cofounderChris Maunder25-Feb-22 10:41 
GeneralInstallers, again, and providing your users with choice. Pin
Chris Maunder14-Feb-22 7:49
cofounderChris Maunder14-Feb-22 7:49 
GeneralInstallers Pin
Chris Maunder8-Feb-22 7:00
cofounderChris Maunder8-Feb-22 7:00 
GeneralCodeProject SenseAI Pin
Chris Maunder25-Jan-22 7:10
cofounderChris Maunder25-Jan-22 7:10 
NewsThe CodeProject MVPs of 2022 Pin
Chris Maunder7-Jan-22 16:21
cofounderChris Maunder7-Jan-22 16:21 
NewsAnnouncing: The CodeProject Python3 Reference Pin
Chris Maunder10-Nov-21 11:06
cofounderChris Maunder10-Nov-21 11:06 
GeneralWhy is AI so hard? Pin
Matthew Dennis21-Oct-21 8:34
sysadminMatthew Dennis21-Oct-21 8:34 
GeneralPython, Python everywhere Pin
Chris Maunder20-Oct-21 12:13
cofounderChris Maunder20-Oct-21 12:13 
GeneralWindows 8 Developer Preview: A First Perspective Pin
Terrence Dorsey14-Sep-11 7:17
sitebuilderTerrence Dorsey14-Sep-11 7:17 
GeneralBUILD 2011 day 1 notes Pin
Terrence Dorsey13-Sep-11 13:49
sitebuilderTerrence Dorsey13-Sep-11 13:49 
GeneralThe Code Project is now eTrust certified Pin
Terrence Dorsey16-Jun-11 4:24
sitebuilderTerrence Dorsey16-Jun-11 4:24 
NewsKeeping you up to date Pin
Terrence Dorsey9-Jun-11 3:31
sitebuilderTerrence Dorsey9-Jun-11 3:31 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.