Click here to Skip to main content
15,565,474 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
Current passion project: CodeProject.AI Server. Please join in!

Chris is the Co-founder of the popular code-sharing site, the digital advertising agency and the content marketing agency ContentLab.IO.

He's been programming way too long and has been, in various guides, an astrophysicist, mechanic, mathematician, physicist, breeder of carnivorous plants, hydrologist, geomorphologist, defence intelligence researcher and then, when all that got a bit rough on the nerves, a serial entrepreneur.

Chris has programmed everything from FORTRAN on a CRAY to Python on a Pi, but generally leans on TypeScript, C#, and SQL for the front, middle and back bits of his applications. His current focus is on ensuring developers know enough about Artificial Intelligence to be dangerous.


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.

GeneralCodeProject.AI Server 2.05 is now available! Pin
Sean Ewington16-Jan-23 9:13
editorSean Ewington16-Jan-23 9:13 
GeneralRaspberry Pi support Pin
Chris Maunder14-Dec-22 13:35
cofounderChris Maunder14-Dec-22 13:35 
GeneralCodeProject.AI Server API is now on .NET 7 Pin
Matthew Dennis6-Dec-22 5:19
sysadminMatthew Dennis6-Dec-22 5:19 
GeneralBlue Iris Not Detecting Motion at Night Pin
Sean Ewington28-Nov-22 6:02
editorSean Ewington28-Nov-22 6:02 
GeneralCodeProject.AI Server hits 50,000 downloads! Pin
Sean Ewington10-Nov-22 12:39
editorSean Ewington10-Nov-22 12:39 
GeneralDisabling Half Precision Processing for Older GPUs in CodeProject AI Server Pin
Matthew Dennis4-Nov-22 8:08
sysadminMatthew Dennis4-Nov-22 8:08 
GeneralCodeProject.AI Server in Docker on a Raspberry Pi 400 64bit Arm Pin
Chris Maunder31-Oct-22 15:29
cofounderChris Maunder31-Oct-22 15:29 
GeneralTrying to Speed up CodeProject.AI Server with SignalR Pin
Matthew Dennis28-Oct-22 5:45
sysadminMatthew Dennis28-Oct-22 5:45 
Recently for CodeProject.AI Server we were looking to increase the number of frames per second we can handle (throughput) as well as figure out how to be able to analyze frames from a video stream on the backend.

Here's the flow of how CodeProject.AI Server works. Someone writes an application that calls CodeProject.AI Server with a request for data that gets put into a queue for the backend module. The backend module requests data from the queue, gets it, figures out what it supposed to do with it, processes it, and then it sends the response back, which gets sent back to the original caller.

See Adding new modules to CodeProject.AI - CodeProject.AI Server v1.6.5 for more details on the system architecture.

So, what we're doing is looking at the part between the frontend and the backend module, trying to reduce the communication time there.

To help do this we looked at SignalR, Microsoft's library which can establish a permanent or semi-permanent connection. The nice thing about SignalR is that it's got all the infrastructure built in for handling reconnects, doing remote procedure calls, and streaming data.

We hunted around for an existing Python package to handle SignalR for Python using asynchronous calls. Unfortunately, there wasn't much. There was one Python package, signalr-async, that looked promising, but it required Python 3.8 or higher. Currently CodeProject.AI Server is running Python 3.8 for Linux, and Python 3.7 for Windows for some modules.

Ultimately, we ended up pulling the code from that Python package and getting it to work on Python 3.7 and 3.8.

We had some trouble getting it to work properly, so we wrote a little .NET client (because it's easier to debug and understand), which helped us realize we were using the Python package incorrectly.

In our Python code, we're running multiple tasks. And it turns out that each of those tasks needed a separate SignalR connection, as opposed to sharing that connection across all the tasks.

Once we made that change things were working, but it was slower than the existing http request/response method we currently use.

So, we went back to the aiohttp Python package documentation. It turns out we’re already doing the best we can in terms of communication speed between the frontend and the backend module. This is because the session object maintains a pool of connections for reuse, eliminating most of the overhead of making a request.

But that's how it goes. Not all experiments are successful, but the result is important. It tells us where our limits are and helps us move on to doing things better and faster.

We're still going to be looking at getting streaming working in the most efficient manner so we can process video streams at a higher rate. It appears aiohttp can handle streams in addition to standard request/response communication, but more on that later.
"Time flies like an arrow. Fruit flies like a banana."

GeneralRe: Trying to Speed up CodeProject.AI Server with SignalR Pin
Peter Shaw1-Nov-22 3:13
professionalPeter Shaw1-Nov-22 3:13 
GeneralDocker and Arm64 Pin
Chris Maunder22-Oct-22 11:06
cofounderChris Maunder22-Oct-22 11:06 
GeneralCodeProject.AI Server integration in Blue Iris is even better! Pin
Sean Ewington19-Oct-22 12:45
editorSean Ewington19-Oct-22 12:45 
GeneralApple Silicon and AI Pin
Chris Maunder21-Sep-22 9:01
cofounderChris Maunder21-Sep-22 9:01 
GeneralPython virtual environments Pin
Chris Maunder4-Jul-22 7:49
cofounderChris Maunder4-Jul-22 7:49 
NewsCodeProject's AI server now has custom models Pin
Chris Maunder18-Jun-22 9:39
cofounderChris Maunder18-Jun-22 9:39 
NewsSenseAI Integrations Pin
Chris Maunder15-Jun-22 11:20
cofounderChris Maunder15-Jun-22 11:20 
GeneralsenseAI on macOS and Windows Pin
Chris Maunder8-Jun-22 17:35
cofounderChris Maunder8-Jun-22 17:35 
GeneralWhen's a good time to release? Pin
Chris Maunder6-Jun-22 12:12
cofounderChris Maunder6-Jun-22 12:12 
GeneralInstallers and VS 2022 Pin
Chris Maunder25-Feb-22 11:41
cofounderChris Maunder25-Feb-22 11:41 
GeneralInstallers, again, and providing your users with choice. Pin
Chris Maunder14-Feb-22 8:49
cofounderChris Maunder14-Feb-22 8:49 
GeneralInstallers Pin
Chris Maunder8-Feb-22 8:00
cofounderChris Maunder8-Feb-22 8:00 
GeneralCodeProject SenseAI Pin
Chris Maunder25-Jan-22 8:10
cofounderChris Maunder25-Jan-22 8:10 
NewsThe CodeProject MVPs of 2022 Pin
Chris Maunder7-Jan-22 17:21
cofounderChris Maunder7-Jan-22 17:21 
NewsAnnouncing: The CodeProject Python3 Reference Pin
Chris Maunder10-Nov-21 12:06
cofounderChris Maunder10-Nov-21 12:06 
GeneralWhy is AI so hard? Pin
Matthew Dennis21-Oct-21 9:34
sysadminMatthew Dennis21-Oct-21 9:34 
GeneralPython, Python everywhere Pin
Chris Maunder20-Oct-21 13:13
cofounderChris Maunder20-Oct-21 13:13 

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.