Click here to Skip to main content
15,881,559 members

Chris Maunder - Professional Profile



Summary

Follow on Twitter LinkedIn      Blog RSS
421,332
Author
24,203
Authority
255,400
Debator
18,921
Editor
6,825
Enquirer
31,844
Organiser
14,179
Participant
Chris Maunder is the co-founder of CodeProject and ContentLab.com, 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 CodeProject.com in 1999. Chris's expertise in programming and his passion for fostering a collaborative environment have played a pivotal role in the success of CodeProject.com. 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 CodeProject.com, 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.
31 Dec 2004 CodeProject MVP 2005

   
Articles 130 (Legend)
Tech Blogs 0
Messages 39,373 (Master)
Q&A Questions 24
Q&A Answers 95
Tips/Tricks 12
Reference 2
Projects 0
Comments 267

Groups

Below is the list of groups in which the member is participating

United States United States
The ASP.NET Wiki was started by Scott Hanselman in February of 2008. The idea is that folks spend a lot of time trolling the blogs, googlinglive-searching for answers to common "How To" questions. There's piles of fantastic community-created and MSFT-created content out there, but if it's not found by a search engine and the right combination of keywords, it's often lost.

The ASP.NET Wiki articles moved to CodeProject in October 2013 and will live on, loved, protected and updated by the community.
This is a Collaborative Group
This member has Member status in this group

754 members
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 is a Collaborative Group
This member has Administrator, Manager, Author, Member status in this group

1 members
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.
This is a Collaborative Group
This member has Administrator, Manager, Author, Member status in this group

2 members
The CodeProject focus group is an informal and changeable group of long-suffering CodeProject members willing to give their time and patience to discussing product, branding and marketing ideas with those looking to actually understand what developers think.

To apply to join this group simply hit the "Apply to join this group" button.

To seek the wisdom, guidance, and hopefully a little enlightenment, email focus@codeproject.com and we'll work out a time to discuss your thoughts.
This is a Collaborative Group
This member has Administrator, Manager, Author, Member status in this group

39 members
United States United States
You may know us for our processors. But we do so much more. Intel invents at the boundaries of technology to make amazing experiences possible for business and society, and for every person on Earth.

Harnessing the capability of the cloud, the ubiquity of the Internet of Things, the latest advances in memory and programmable solutions, and the promise of always-on 5G connectivity, Intel is disrupting industries and solving global challenges. Leading on policy, diversity, inclusion, education and sustainability, we create value for our stockholders, customers and society.
This is a Organisation
This member has Administrator, Manager, Author, Member status in this group

42 members
The CodeProject Authors are a group of talented technical writers who create articles and whitepapers for some of the biggest companies in the industry. Under our ContentLab.io unit we reach out to those who need content written but lack the time, expertise or resources to complete the work.

Looking to earn a little extra and get connected to, and be featured on, the websites of the companies whose technologies you know and love? If you can write well and are efficient with time then send us an email at info@contentlab.io.
This is a Collaborative Group
This member has Administrator, Manager, Author, Member status in this group

90 members
Publisher CodeProject
Canada Canada
The CodeProject Advisors group is comprised of CodeProject members specifically chosen to advise the CodeProject on new products related to helping the community answer technical questions. This group participates in beta testing and feedback of products designed to help connect members with experts.
This is a Collaborative Group
This member has Administrator, Manager, Author, Member status in this group

28 members
Publisher The Code Project
United States United States
Sign up to get the news you didn't even know you needed to know in the most valuable 5 minutes of reading of your day.

The Code Project Daily Insider keeps you up to date with what is happening around the industry. From the continue saga of the Big Boys to Scott Guthrie's blog ramblings and Steve Jobs' latest, you will find it here.
This is a Collaborative Group
This member has Administrator, Manager, Author, Member status in this group

3 members
Web Developer
Canada Canada
In January 2005, David Cunningham and Chris Maunder created TheUltimateToolbox.com, a new group dedicated to the continued development, support and growth of Dundas Software’s award winning line of MFC, C++ and ActiveX control products.

Ultimate Grid for MFC, Ultimate Toolbox for MFC, and Ultimate TCP/IP have been stalwarts of C++/MFC development for a decade. Thousands of developers have used these products to speed their time to market, improve the quality of their finished products, and enhance the reliability and flexibility of their software.
This is a Organisation
This member has Administrator, Manager, Author, Member status in this group

476 members
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 is a Collaborative Group
This member has Administrator, Manager, Author, Member status in this group

1 members

Reputation

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

Privileges

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.

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.


 
GeneralRe: New Year, New Feature Pin
Thomas Daniels20-Jan-13 5:10
mentorThomas Daniels20-Jan-13 5:10 
GeneralThe Ultimate Coder Challenge - Judging Week Pin
Chris Maunder2-Oct-12 10:30
cofounderChris Maunder2-Oct-12 10:30 
GeneralThe Ultimate Coder Challenge - Week 6 Pin
Chris Maunder26-Sep-12 7:15
cofounderChris Maunder26-Sep-12 7:15 
GeneralThe Ultimate Coder Challenge - Week 5 Pin
Chris Maunder18-Sep-12 21:33
cofounderChris Maunder18-Sep-12 21:33 
GeneralThe Ultimate Coder Challenge - Week 4 Pin
Chris Maunder4-Sep-12 17:25
cofounderChris Maunder4-Sep-12 17:25 
GeneralThe Ultimate Code Challenge - Week 3. Pin
Chris Maunder28-Aug-12 14:42
cofounderChris Maunder28-Aug-12 14:42 
GeneralThe Ultimate Code Challenge. Week 2 Pin
Chris Maunder21-Aug-12 16:17
cofounderChris Maunder21-Aug-12 16:17 
GeneralWhy Comments in Code are Critical Pin
Chris Maunder21-Aug-12 2:48
cofounderChris Maunder21-Aug-12 2:48 
Posted in response to How to Write Code Comments Well[^]

There have been many arguments on whether code should be commented. Here's my experience.

Comments fall into two buckets: Object and method decorations - those that explain what a file, object or class does - and in-code explanatory comments that appear inside methods or blocks of code to add explanations, notes, or to explain the non-intuitive.

Anyone who says that there is no place for comments inside methods is, to me, misguided at best. Code is not a literary work of fiction open to various interpretations. It's a precise series of instructions, and sparing, sensible, well-placed notes on what's going on inside a method can prevent disasters.

There are many, many, many developers and proscribers of dogma that insist that decorative comments are also unnecessary. The standard argument is that names should be clear, descriptive, unambiguous, and as long as necessary.

If we all spoke the same language, had the same cultural background, same experiences, same literary ability, and all wrote code at exactly the same time, using the same, precise naming conventions, then yes, good naming will solve most ills and decorative comments are not that essential.

However, we don't work in this environment and it's extremely short sited, and costly in the long run, to think we do.

A term used in one context may mean something different in another. A trivial example is "Create" which could mean create a new object in memory, or store an existing object in a row in a database.

A term used in one culture may mean something different or, in fact, the opposite in another. To "table" something in North America means "to postpone for consideration". In the UK, Australia and the rest of the English speaking world "to table" means to begin consideration of the topic.

While it's straightforward to use names that are more descriptive it's important to understand that ambiguity is often difficult for a single developer to spot. They know what they mean, but it's only after other developers look at their code that it becomes apparent that other developers may not. Do not fall into the trap of assuming everyone understands what you mean.

One solution is to mandate that names be fully descriptive: CacheObject, UploadToCloudStorage, DiscussIssue. This helps a little, but very soon you hit the point where providing an unambiguous descriptive name stretches the limits of acceptable name lengths. Steve McConnell writes that method names should be between 9 and 15 characters. Good luck.

Still, this doesn't help. No matter how well you name something, how consistent you try to be, how dire your threats are to other devs, you'll always have situations where you just don't know, with absolute certainty, what a method does. With no comments the developer needs to go and read the method to understand what's happening. This is a monumental waste of time, and worse: it's frought with peril when code is read but the intent not understood.

Another issue is parameters. While the same arguments for tight and descriptive method names should be applied to parameters, it's almost impossible to encode in a parameter name things such as restrictions on acceptable input values or notes on special value handling. Comments on parameters allow you to understand the results of suppling null, 0 or empty values, and to understand the limits of what you can supply.

My approach is you should be very, very careful with object and method names, and strive to be descriptive and unambiguous and have as your goal a 95% clarity on naming. That is, 95% of the time a developer reads a method name, that name is clear and unambiguous. However, the list of ambiguous names - that 5% - will vary per developer. That list of ambiguous names may even vary over time for yourself. A simple, clear, well-written, and up-to-date comment will solve this ambiguity.

The "up-to-date" specifier raises the issue of drift. The purpose of a given method may drift slightly from its original intent. The comment attached to that method may then be slightly (or seriously) out of sync with the intent. So too may the method name. To use the argument that comments are useless, and at worst, dangerous because they may not represent what the method does can, and should be applied to method naming as well. When a developer updates a method is it easier for them to make a note of any provisos in the method comment, or is it easier for them to rename the method, and hence the object's API? The method name and the comment should both be kept up to date. Developers get tired and cut corners though.


The way I approach software development is to assume the worst. I assume the inputs to my methods will be bogus. I assume methods will return null. I assume the database will explode in a searing ball of plasma when I run a query. I also assume that my wetware will also have issues and that, at one time or another there will be confusion.

The means that all methods and parameters are commented. This ads approximately a minute of development time to each method. It also adds a small amount of time each time a method is changed to scan the comment and ensure it's consistent. It also means we have a ton of comments that, 95% of the time, add no value. However, since the set of methods that raise ambiguity or clarification issues is non-fixed, it's not practical to simply comment 5% of the code.

While it's tempting to say "just comment the methods that need it", this leads to a slippery slope that we've seen in practice again and again. The test of "what needs it" is carried out by the coder, who almost by definition finds their code clear and unambiguous. One by one "obvious" methods are created without comments and soon we have devs interupting their work and that of the author to discuss what's happening.

The application of under a minute of effort saves 5 minutes of conversation and the inherent costs involved in task switching productive developers.

Comments aren't things that hang around code like bad groupies. They are code, and when the code is updated, so too must the comment.
cheers,
Chris Maunder

The Code Project | Co-founder
Microsoft C++ MVP

GeneralThe Ultimate Code Challenge. Week 1 Pin
Chris Maunder14-Aug-12 14:36
cofounderChris Maunder14-Aug-12 14:36 
GeneralRe: The Ultimate Code Challenge. Week 1 Pin
Lee Bamber15-Aug-12 12:26
Lee Bamber15-Aug-12 12:26 
GeneralRe: The Ultimate Code Challenge. Week 1 Pin
Chris Maunder16-Aug-12 2:05
cofounderChris Maunder16-Aug-12 2:05 
GeneralRe: The Ultimate Code Challenge. Week 1 Pin
hisureshg15-Aug-12 14:39
hisureshg15-Aug-12 14:39 
GeneralNew Article Submission System PinPopular
Chris Maunder2-Mar-12 5:40
cofounderChris Maunder2-Mar-12 5:40 
GeneralRe: New Article Submission System Pin
KjellKod.cc3-Mar-12 13:50
KjellKod.cc3-Mar-12 13:50 
GeneralRe: New Article Submission System Pin
Chris Maunder3-Mar-12 15:24
cofounderChris Maunder3-Mar-12 15:24 
GeneralRe: New Article Submission System Pin
KjellKod.cc3-Mar-12 18:54
KjellKod.cc3-Mar-12 18:54 
GeneralRe: New Article Submission System Pin
Chris Maunder4-Mar-12 16:07
cofounderChris Maunder4-Mar-12 16:07 
GeneralRe: New Article Submission System Pin
KjellKod.cc4-Mar-12 19:11
KjellKod.cc4-Mar-12 19:11 
GeneralRe: New Article Submission System Pin
KjellKod.cc5-Mar-12 10:21
KjellKod.cc5-Mar-12 10:21 
GeneralRe: New Article Submission System Pin
Chris Maunder5-Mar-12 14:33
cofounderChris Maunder5-Mar-12 14:33 
GeneralRe: New Article Submission System Pin
Shahin Khorshidnia11-Apr-12 5:33
professionalShahin Khorshidnia11-Apr-12 5:33 
GeneralRe: New Article Submission System Pin
Meysam Mahfouzi4-Mar-12 23:42
Meysam Mahfouzi4-Mar-12 23:42 
GeneralRe: New Article Submission System Pin
Chris Maunder5-Mar-12 4:27
cofounderChris Maunder5-Mar-12 4:27 
GeneralRe: New Article Submission System Pin
Sacha Barber5-Mar-12 1:05
Sacha Barber5-Mar-12 1:05 
QuestionRe: New Article Submission System Pin
Jani Giannoudis6-Mar-12 21:29
Jani Giannoudis6-Mar-12 21:29 

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.