|
|
I just tried it from home with a different browser, same behavior.
|
|
|
|
|
Unfortunately I gave you some misinformation: you can change the article type, but only when posting a regular article. You've posted an alternative to an existing article, meaning that your alternative must be the same type as the original article. An alternative to an article is an article, an alternative to a tip is a tip, etc.
Sorry for the confusion.
cheers,
Chris Maunder
The Code Project | Co-founder
Microsoft C++ MVP
|
|
|
|
|
Thanks for the clarification.
I was wondering what I had done wrong.
|
|
|
|
|
Starting today, the "Vote to remove this message" link in forum message won't simply add to the tally of votes to decide if a message should be removed: Abusive or innappropriate messages now lose their authors 20 points. Next week that increase to 20 points x member level, meaning a potential loss of 200 points per message flag.
cheers,
Chris Maunder
The Code Project | Co-founder
Microsoft C++ MVP
|
|
|
|
|
Previously our article URLs were of the form www.codeproject.com/kb/section/basename.aspx. This worked well and allowed you to easily remember your own articles. My grid control article, for instance, MFC Grid control 2.27, was an easy URL for me to remember.
The issue was that while this naming convention was simple, it was also predicated on each article within a section having a unique basename. With 35,000 articles, this was starting to become a little tricky.
On an unrelated, but nevertheless important note, we strive to ensure our authors' articles are positioned as high as possible within search engine rankings. Search engine ranking depends on an enormous number of variables, up to and including the phase of the moon, but while "http://www.codeproject.com/kb/miscctrl/gridctrl.aspx" is OK, "http://www.codeproject.com/Articles/8/MFC-Grid-control-2-27" is better. And "http://www.codeproject.com/Articles/317712/An-MFC-Chart-Control-with-Enhanced-User-Interface" is even better (from a search engine point of view) than "http://www.codeproject.com/kb/Chart/MFC-Chart.aspx".
And as a final but neat freebie, we have tossed the extension. No more .aspx. A trivial thing, but when Microsoft comes out with the Next Big Thing, or we move to PHP or JSP, then article links will be the same. This should be the last URL change we ever have to do for our articles.
cheers,
Chris Maunder
The Code Project | Co-founder
Microsoft C++ MVP
|
|
|
|
|
1. Completely revamping the article submission (for everthing) and the display system for tips.
2. Adding new options for articles.
3. A ton of work on Lake Quincy. Our little project is all grown up and has an appetite for developers to match.
4. Machinations and experiments with Quick Answers and the Forums. Some very interesting stuff. The most interesting bit is making it so you guys don't notice anything until there's the "oh - I see!" moment.
Some devs like to make big splashes. I prefer my code to just settle in comfortably into your lives and work without you realising anything.
The upshot of this is that I have zero social life and even less time to hang out in the Lounge. Bah humbug.
cheers,
Chris Maunder
The Code Project | Co-founder
Microsoft C++ MVP
|
|
|
|
|
Pasting into the Editor
One of the features that has generated a lot of debate and suggestions is the way we handle text, HTML and code in the forums. Copying and pasting code - especially web related code - into the message editor can cause problems due to the unintentional posting of HTML tags instead of HTML encoded content.
To help with this we had "When Pasting" options at the bottom of the message posting area that allow you to set defaults on what happens when you paste, but what you want to do changes depending on what you paste. The problem here is that you defaults don't always fit the situation at hand, so we need a way to allow you to change your mind easily.
From today we removed the paste options from below the message and instead show a popup dialog that intercepts the pasted content and tries to figure out what your options are with visual aids to help show what each option will do. The "When pasting" that apply to the paste text are shown in this dialog, and as you hover over each option the pasted text in the message text area is updated, as well as a small preview in the paste dialog to give you a quick peek into what it will look like. If you are pasting text that will look the same whether you're pasting as text or HTML (or mixed) then the options shown are reduced to the minimum set possible, and your default setting will be automatically checked and always shown.
On top of this, as you type, a preview of what your message will look like is now shown at the bottom of the page.
If, after pasting, you are happy with what's shown, or don't want to be bothered, keep typing. The dialog will fade away. This is not the popup dialog you are searching for...
The changes are designed not to simply show you what will happen, but also to give you an ida on how to encode your content to ensure it displays in the manner you intend. The changes are also meant to be as unobtrusive as possible, and text will be pasted initially as per your defaults. We're only adding a simple way to change your mind.
For those who never pick a default, and never touch the popup dialog, the default will always be "Best guess" meaning if it detects code in the pasted text it will wrap in PRE tags, otherwise it will paste and preserve HTML tags (no encoding on paste).
Encode button in the editor
We spared no expense in adding an "encode" button. Highlight some HTML, hit encode, and the text is HTML encoded.
Editor Live preview
As you type, your message is now displayed full formatted under the text area. We're using Ajax callbacks to do the formatting because reworking our content formatting system into Javascript is a luxury we don't have at the moment. Further, our colourisation code does far more than any of the current Javascript offerings in terms of handling nested languages (eg Javascript or C# inside a ASP.NET page). We'd rather have a half second delay in update and show it perfectly than have the frustration of it not being quite right.
Content caching
Hopefully you waon't even notice (unless it's in a good way) but more content is being pre-cached, speeding up some of our lesser-used pages.
Split Quick Answers / Discussions menus
As requested.
More admin options
We've armed ourselves with some bigger guns to deal with reported items. Don't worry, this won't hurt a bit.
cheers,
Chris Maunder
The Code Project | Co-founder
Microsoft C++ MVP
|
|
|
|
|
Thanks a lot Chris...
The man who makes no mistakes does not usually make anything. ~Edward Phelps
Man's wisest mistake: Marriage. ~ Suresh Suthar
|
|
|
|
|
Chris Maunder wrote: We've armed ourselves with some bigger guns to deal with reported items. Don't worry, this won't hurt a bit.
Name anything after JSOP?
Martin Fowler wrote: Any fool can write code that a computer can understand. Good programmers write code that humans can understand.
|
|
|
|
|
Chris Maunder wrote: More admin options
We've armed ourselves with some bigger guns to deal with reported items. Don't worry, this won't hurt a bit.
Does this mean that we no longer need to post spam accounts/trolls on the site sugs and bugs?
Signature construction in progress. Sorry for the inconvenience.
|
|
|
|
|
Publicising the names allows people to quickly hit the "report" button and nuke them.
What I think we need is a spammer forum, though.
cheers,
Chris Maunder
The Code Project | Co-founder
Microsoft C++ MVP
|
|
|
|
|
Chris Maunder wrote: What I think we need is a spammer forum
I see it now. And I like it. Thanks Chris.
Signature construction in progress. Sorry for the inconvenience.
|
|
|
|
|
Where do I begin?
The forum indicator lines were a small HTML5 experiment I was doing that turned out to be actually useful. The quick version is: when you hover over a message, find that message's parent (if it's on the page), create 2 canvases representing the two segments of the line, and draw. If the parent message isn't on the page, show an arrow tip indicating "over there somewhere". Why not a single canvas? Because IE doesn't support the pointer-events:none style. pointer-events:none allows you to have an element on top of another element (say, a single canvas overlaying the forum) and have that element ignore all pointer (eg mouse) events and instead have those events pass to the underlying controls.
The way around this was to create two canvases that didn't overlap anything mouseable, with a nice byproduct being a healthy speed increase (smaller canvas = faster resizing, repositioning and drawing)
The forum flags in the bugs and suggestions[^] forum (and soon, your article forums) allows me to provide a simple visual feedback on the bugs and suggestions posted. If you find a bug you can scan the page, find a similar (or same) post, and note that it's in progress to being fixed or that it's fixed and will be released next deploy.
The new forum message posting page now incorporates the same editor that's used in Quick Answers. For me this means a single codebase to maintain (yay!). For you it means the auto-code sniffer is now in the forums (yay!). Post some code, the sniffer will try to see if it's code, and if it is it will wrap your pasted code in PRE blocks and assign the language automatically.
We could certainly go the way other sites have gone and have a client-side javascript library such as highlighter do the work for us. My concern here is that for the forums, where you may have 50 messages each with blocks of code, the client side processing will get out of hand and bog you down. Especially if you're on a mobile device where colourisation is even more important than on a larger screen. Further, if you have no javascript enabled you don't see the colourisation, which would suck.
Site speed continues to be a focus and we've put in a ton of work to improve caching. Our main database was cruising along at 75% utilisation at peak times and that's bad in anyone's book. We're now down to about 50% simply by tackling the easy jobs, and with a further push to do some fundamental re-architecting, we should again halve that. For the first time in our history we're no longer looking to add database capacity, but are actually now consolidating databases and saving ourselves some SQL licencing fees.
Optimisations to improve site speed have been done on a number of fronts, from simple caching, to the best optimisation of all: not doing the work. An example is our Quick Answers[^] homepage. Previously we were tracking which questions you had viewed and which you hadn't. It turns out there's an excellent technology in place that can do this for us: your browser. You view a link, the link is purple. Why should we override that and add functionality already in place?
Another example is when viewing a question you see the Next / Prev links. Calculating which message is next and previous, based on your interests, the current message, your filters and the waxing or waning of the moon is expensive, yet only a fraction of members will actually click that "Next" link. Those who click it, need it and love it, so the answer isn't to remove it. Instead of calculating the "Next" question on the page that shows you the initial question, we initially have the next button go to a fixed page that will do a single expensive query for you, and then cache a large number of questions in either direction.
Previously when viewing the question you had the hit of calculating the next question. Now, no hit on viewing the initial question, but a small hit when you first click Next. After that the results are cached, and there will be no further delay until you exhaust the cached results.
Plenty new features are simmering away. I'll try to provide more frequent updates.
cheers,
Chris Maunder
The Code Project | Co-founder
Microsoft C++ MVP
|
|
|
|
|
The indicator lines in forums have been turned off for now after a user reported it was causing Chrome to lock up. I'll dig in and find the cause - or at least find a workaround - and get them back ASAP.
...and they are now back.
cheers,
Chris Maunder
The Code Project | Co-founder
Microsoft C++ MVP
modified on Thursday, July 28, 2011 3:31 PM
|
|
|
|
|
No, I haven't been reading my psychology books.
The real reason is that way, way back, I was using red to highlight "hot threads". It was all very hip and '90's. However, for the past hundred years or so we've been using red to denote popular and up-voted items, not "hot" threads (in the sense of "lots of action" instead of just popular). We also use green to denote good answer and red to denote bad answer so it was blatantly inconsistent.
cheers,
Chris Maunder
The Code Project | Co-founder
Microsoft C++ MVP
|
|
|
|
|
There have been a couple of complaints regarding article moderation.
1. I want rep points
2. Having a single member be able to give the green light to an article is dangerous.
The new reporting system solves these problems by
1. Giving rep points
2. Requiring 5 members to approve an article before it goes live.
Each time you are presented with an article that asks for moderation, hover over the 'tick' box, choose whether to approve or report it, and your vote is entered and the number of current votes on the article are then shown. When it hits 5 votes then the article is approved or closed, depending on the majority of the votes.
If an article is closed but then reoponed by the author or an editor then the reports are wiped from the article, but points accrued from the previous reports stay.
So please: approve and report. Let's keep things organised!
cheers,
Chris Maunder
The Code Project | Co-founder
Microsoft C++ MVP
|
|
|
|
|
Chris Maunder wrote: If an article is closed but then reoponed by the author or an editor then the reports are wiped from the article
Can you explain this part a little?
I see, if we report someone for formatting and content, we get points for that. Then, Author modifies and updates the article. Now, when we approve it, we do not get the points. Is it ok? As designed? Shouldn't one get points later too once the aricle was updated?
|
|
|
|
|
You always get your points, regardless of what the author does. In fact you can get double points if the author edits their article and you then re-report the updated version.
cheers,
Chris Maunder
The Code Project | Co-founder
Microsoft C++ MVP
|
|
|
|
|
|
Sandeep Mewara wrote: Check logs for this article
What specifically would you like me to check?
cheers,
Chris Maunder
The Code Project | Co-founder
Microsoft C++ MVP
|
|
|
|
|
Oh sorry, I missed that. I reported it initially for formatting and content. I got points. Ok.
Author updated it and I re-screened it now. But, I noticed that I did not got any points this time.
I was not sure earlier, but confirmed myself today that currently points are awarded once per article, whatever number of times you screen it.
|
|
|
|
|
Previously when reporting articles or questions you would click the little red flag and fill in the form on the following page. Sean, myself, or one of the editors would then review the report and take action. Almost uniformly the reports were "Total rubbish article - please remove", or "Spam".
This was tedious for us and opaque for you, so we've revamped the reporting system so that reporting articles and questions (and tips and blogs and answers) is done via Ajax (no page refresh) with the reports now collated automatically. When enough members have reported, the item will be closed and the reason for the item being closed will be displayed, along with those who reported the item.
This last part will cause, I think, the most debate but reporting is limited to Silver members and above and with everyone seeing what everyone else is reporting, anonymous report wars will be that much harder to instigate.
Reporters also get Organiser points for doing their civic duty.
So: if something is truly awful report it. If a question is posted and the author has made no attempt to help others answer his question, report it. It takes two seconds and will help promote the best content, the most well posed questions.
One final feature is that if you yourself find your article has been reported and closed then you have the ability to re-open it by simply editing and updating your article. You always get a second chance, but you will need to make major changes in order to reopen an article, and please be aware that if you open an article and it's reclosed then there's a good chance it will simply be deleted.
If your article or post (or answer) is closed and you think the closing was unfair, email us and we'll investigate and reopen if necessary.
cheers,
Chris Maunder
The Code Project | Co-founder
Microsoft C++ MVP
modified on Tuesday, March 15, 2011 6:02 PM
|
|
|
|
|
I still owe everyone a write up of our move to a new hosting centre, but I thought I'd just mention a little bit of trivia: until this morning we were still running 3 servers on Windows 2003 R2. I know - that's so 2005, but they worked. Well, mostly.
IIS6 was a phenomenal improvement on IIS 5 and we saw impressive stability and perf improvements. However, the pipeline model was annoying because ASP.NET was tacked on to the web server instead of being treated as a first class citizen, so doing things like handling non-.aspx files in ASP.NET was needlessly cumbersome.
To this end we were using an old, old component that Dundas Software was giving away, called Filter Plus. We modified the code a little to suit our needs, but it was a simple ISAPI filter that would take a simple config file and use the patterns in that file to tell it how to reroute requests. We were able to take all requests for all /kb/<section>/filename.aspx pages, for instance, and map them to a single page that would load and display articles (and incorporate some handy caching). Essentially it was a url rewriting component long before ASP.NET url rewriting was a twinkle in ScottGu's eye.
This worked exceptionally well, thanks to the coding of Troy Marchand, the original author, and allowed us to handle zips and images and all sorts of fun, but it involved extra settings, an ISAPI filter, and some if..then's in our code for servers that were't using this filter.
Win2008 / IIS7 made all this redundant and cleaned up our code nicely, and from today on I can remove the if...then's and move on to an IIS7+ model only.
We'll miss web18, 19 and 20, but web2 will handle all their duties, and more, and on a single machine.
So we're down to 4 servers: web2, 22, 23 and 24 and are serving pages faster than ever with better uptime. We have also moved from 3 database servers to 2, and can easily move to just a single database server but find it nicer to be able to have the failover option along with plenty of headroom. Servers - and I mean, big, serious iron - have become astoundingly cheap (relatively) - and the multi-core offerings provide amazing performance.
We've also moved our email systems to a hosted provider in a move that was a long time coming. No more worrying about my insanely large mailbox, no more patching and managing exchange, no more backups. The less we need to worry about servers and SysAdmin the more we can focus on doing what we do best.
cheers,
Chris Maunder
The Code Project | Co-founder
Microsoft C++ MVP
|
|
|
|
|
Is Web2 a survivor from the dawn of CP, or did you start recycling server numbers?
3x12=36
2x12=24
1x12=12
0x12=18
|
|
|
|
|