The reason we do Ajax calls for formatting is because we want to ensure the colourisation is done properly. We could simply skip the formatting, or use something like syntaxhighlighter to do some rough colourising. It's been discussed many times.
If you're worried about postback size then uncheck the "Show a live message preview as you type (not available < IE9)" checkbox in your Settings[^] (under the Forums tab)
With regret we've abandoned using CommonMark to render our messages.
CommonMark is meant to fix the issues inherent in other Markdown implementations while being true to the core ideas of Markdown. Basically: it should just work, there should be no surprises, and it should work with existing HTML. Markdown / CommonMark handles the main gruntwork of text formatting and when you need some fine tuning just throw in some HTML and you're good to go.
Unfortunately CommonMark handles PRE (i.e. Preformatted) blocks in a manner that simply doesn't work for us. A PRE block should (at least in my book) allow you to enter text and have the formating maintained as-is. On CodeProject we cheat a little[^] and allow things like B, EM and U tags for those who want to highlight sections of code, but beyond that what is entered is what appears.
In CommonMark a PRE block that contains text that is indented 4 spaces will trigger the creation of a <pre><code> pair that wraps the indented block as if it were a code sample. Code samples are often are indented, so whenever you paste code into a PRE block then you'll more than likely get nested PRE blocks.
This just doesn't work for us. We love what CommonMark is doing to provide consistency, but that's just seems an odd decision. For now we're disabling Markdown in Quick Answers and reverting back to MarkdownSharp.
This makes me sad.
We announced the introduction of Markdown[^] into the forums and Quick Answers a while ago, but we were never truly happy with the implementation of the Markdown processor in use. Ambiguities, lack of standards, and poor performance of the Markdown transformer were niggling annoyances.
The syntax is slightly different[^] to that of Markdown, but the changes are small enough that it should, hopefully, not cause any problems. As always if you do come across issues let me know and we'll season to taste.
We now support Gravatars for your profile picture to help reduce the pain in maintaining your latest profile selfie (or professional studio shot - whichever). Just setup (or update) your Gravatar pic and then on your settings page select "Use my Gravatar", hit update, and you're done.
We'll add it to Quick Answers soon, too, but for now here's a refreshed on Markdown:
We use GitHub flavoured Markdown with a couple of minor changes. Here's the gist:
Heading (or use #Heading)
And a Sub-heading (or use ##Sub-Heading
#### Use #, ##, ###, ####, ##### for H1 - H5 headings
Paragraphs are separated by a blank line.
A single newline will not cause a line break.
Leave 2 spaces at the end of a line to force a
Text attributes *italic*, **bold**, ``code``, --strikethrough-- are supported, as is <font color=red>HTML</font>.
// To insert code, use ``` before the code and then end with a closing ```.
int length = new string("A string").Length;
Hyperlinks are easy: [link to CodeProject](http://www.codeproject.com).
- pears and stuff
Heading (or use #Heading)
And a Sub-heading (or use ##Sub-Heading
Use #, ##, ###, ####, ##### for H1 - H5 headings
Paragraphs are separated by a blank line. A single newline will not cause a line break.
Leave 2 spaces at the end of a line to force a line break
Text attributes italic, bold, code, strikethrough are supported, as is HTML.
I've loved Ace[^] forever. It's one of those pieces of code which, when I first saw it in action, I couldn't even begin to think how they managed to do it in a manner that didn't bring the entire browser to its knees. But it works and it works very, very well.
I'm happy to announce that after a cold, lazy evening, a few Google searches, some beer[^] and a bit of swearing I've added Ace as the Source editor to our online WYSIWYG editor for articles.
Editing articles is meant to be a WYSIWYG affair but it's never the case with HTML. Us control freaks always want to dig into the markup and make it just right. With Ace we now have that markup syntax colourised which helps enormously when your article's getting a little long. On top of that we get line numbers, tag matching, and real-time validation.
Of course, if it's just not working for you there's an "ace" button next to the "Source" button that allows you to deactivate Ace if it's causing problems.
Our article voting system has evolved progressively. From one person, one vote to a weighted system, to requiring comments when down-voting, to a system that statistically removed junk votes, and then lately to a system that recognised that voting patterns are not only bell curves, but sometimes, legitimately, bimodal.
We have, to a large degree, been successful at suppressing malicious down-voting. Too successful, it seems, and the article voting system is now massively weighted towards up-votes rather than down-votes. To up-vote you merely click the 4 or 5 rating. To down-vote you need to add a comment, and if your down-vote doesn't agree with the majority then your vote may not be counted until a sufficient number of other members have likewise voted the article down.
So while up-voting is great in that it rewards authors and gives readers a way to say thanks, up-votes are bad when the up-votes are not votes based on the technical merit of an article but instead based on being the author's friend, family or colleague. Make it 50 friends, family members or colleagues and the vote for a given article is hopelessly invalid.
Basically: you can have too much of a good thing. It's easy to up-vote, hard to down-vote, and so the average article rating goes up and the ability to sort the wheat from the chaff goes down.
Starting today we're removing a barrier on down-voting. You are no longer forced to provide a comment when down-voting. We have our historical-based expectations on what will happen but will be monitoring the results closely just in case.
The change is effective as of now. As always we're open to suggestions and ideas to make it even better.
We have an occasional issue whereby an author will get their friends, family, colleagues, and random people off the street to vote for their article. Our voting system[^] is geared towards handling a case where lots of people say "this is great" and a few downvoters say "boo, it's crap" by filtering out the outliers on the assumption that the group vote rules.
However, when you have 50 low rep voters saying "it's a 5" and 5 high rep voters saying "this is terrible (or dangerous)" then we need to adjust. The change we've made is that if a certain number of high rep members vote a certain way then no votes of that given score will be filtered out. The naysayers will be allowed to nay-say and balance will be restored.
We are now checking every forum message for spam, and every message that even hints at being spam will be moved to a moderation queue. We won't nuke the message: we leave that dirty work to the top-rep members and protectors. Once the message is approved then it gets posted as a regular message. Those messages that are moderated by a member as being spam will never see the light of day.
We hope this helps with the current challenges, and we'll be extending this to Quick Answers and the Article system as soon as this beta test is complete.
We've had Google, Facebook and LinkedIn login for a while but we're happy to announce that you can now login to CodeProject using your Windows Live ID. Just click the Windows icon at the bottom of the signin dropdown (top right of each page) or the Windows logo on the sign up / sign in page.
We are continuing to enhance releasing api.codeproject.com, our API service for those looking to harness the data and services of CodeProject. Please dive in, check the docs and the samples, and get back to us with any issues or suggestions.
As part of this we're deprecating APIs that haven't been used for years. The specific APIs removed in today's update will be:
Our explorations and experiments with CodeProject are never ending and it’s with a certain sadness that we’re retiring Workspaces and CodeProject.TV.
The creation of new workspaces will no longer be possible from tomorrow, and Workspaces itself will close August 30. Your current Workspaces will be fully functioning until the close of Workspaces.
Workspaces was a framework designed to allow multiple applications to co-exist under the same roof. We started with a Git server (::GitMachine) and a Task management system (::Tasks), then added ::Docs for documentation. The beauty of the system was that since it was designed around APIs it was trivial to have it integrate with CodeProject.com, and trivial to have other applications integrate with Workspaces in turn. Each workspace would allow any number of any of the currently supported applications to be “hosted” within, so you can mix and match and build your workspace system to your liking.
CodeProject.TV was our foray into bite-sized, cost-of-a-coffee video tutorials. Members could create their tutorial, upload it and set their own price. We’d handle the transcoding, hosting, serving, backups, credit card processing and publisher payments, and free videos were just as welcome as pay-per-videos. A simple solution to a number of requests from our users.
We love both, but as we do each year we looked deep in our hearts at what we felt was best for our members and readers and decided that we’d better serve everyone by focusing our resources, and our attention, on CodeProject.com. This means a focus on our members, our articles, and our community. We’ll move our finger down to our next "what if…" item on our endless list of ideas and see where that takes us.
For those who purchased videos or workspaces we’ll be offering a full refund. Even if you tried workspaces for a month and then cancelled your subscription, even if you purchased and watched and downloaded a video we’ll refund your payment.
For those who have files in ::GitMachine or tasks in ::Tasks, we’ll be keeping these two applications running until Aug 30 but effective today no new workspaces can be created. All items in ::Tasks can be easily exported to Excel spreadsheets, and obviously all Git repositories can be cloned to other Git repos.
cheers Chris Maunder
Last Visit: 31-Dec-99 19:00 Last Update: 22-Mar-17 16:44