Can you feel the speed? Hopeful you’ve noticed something at soLinkable over these past few days: It’s running much faster.
How far we’ve come
When I first started almost 2 years ago, soLinkable was merely a side project. It was a chance for me to play around with PHP, javascript, and web design. Since then it’s grown to over 17000 users, serving more than 10000 unique visitors and 55000 pageviews each month. And as we’ve grown in size, so have our needs – It’s no surprise then that soLinkable would be going through some growing pains and big changes.
One of the biggest projects, which has been in the works for the past month, has been the move from shared hosting to a private server.
Now, you may be surprised to learn that soLinkable has been on a shared host this whole time. I’ve got to give credit where it’s due: HostPapa has provided us with exceptional service at a very cheap price. Even with some daily spikes of 800+ users, our servers held strong and never flinched. They were well worth the price, no question. My only complaint out of otherwise great service: They charged me $26 to transfer a “free” domain to me after I told them I wouldn’t be renewing my service… But that’s it.
Our new servers
Our search for a VPS brought us to Linode. Throughout my search they seemed like the obvious choice: Constant praise from their users, numerous benchmarks declaring them the fastest VPS available, full root access, well written libraries, and, of course, the excellent price ($20/month for 360MBs RAM/16GBs space/200GBs transfer). No matter what metric was being rated, Linode came out on top. Now, after a month and a half, I can honestly say all these claims have been verified.
Setting up the servers was a breeze. Through their excellent libraries and the helpful people on their irc channel, I had the entire server set up and functioning in a single night. Using linux can be daunting if you only have little previous experience (like me), but with help like this, learning is easy.
And lets not forget the speed. The transfer rate is impressive and the website load time has noticeably decreased. But where I’ve noticed the greatest improvement has been in the submission process – I can’t believe how fast it moves through each step.
Looking forward
Full access and modular servers also allow for easier development and scalability in the future.
With Linode, we have the ability to add on memory when we need it without moving the physical server (just a quick restart). Is the mySQL server starting to struggle? With a few mouse clicks I can allocate more memory to it in seconds, and alleviate the bottleneck.
Full root access means we have complete control over our environment. We can tweak the PHP and apache variables or install a 3rd party program and easily integrate it into the website – Basically, we can tailor the server to perform the way we envision, free of any restraints.
I’m sure we’ll go through more growing pains in the future, but with this upgrade behind us we are stronger than we’ve ever been before.
When we first put together a comment reply page, we knew we were far from finished. We had plans to ultimately build a complete private messaging system for soLinkable. And throughout the past week we’ve been working diligently to get our new and improved messaging system up-and-running… Who am I kidding – We threw a bunch of code together at the last minute and hoped for the best.
The new messaging system offers a few improvements to soLinkable:
- Private messaging. You can now send a private message to any user through soLinkable. This will make it even easier to communicate with the admins (or anyone else for that matter).
- Display all messages and replies. The first page in your message center displays a collection of all messages and replies you’ve received, ordered by descending date. This includes replies to your comments, top level comments on stories you’ve submitted, and private messages (both sent and received).
- A new eye-catching envelope link. Do you know when you have a new message or reply? Probably not. A blue envelope on a blue theme just isn’t very noticeable. So we’ve redone the image to make it stand out a little better, which will (hopefully) allow for more conversation.
- Much faster page loads with fewer queries. We’ve done some serious optimization to the comment and messaging systems. You won’t notice a huge improvement right away, but as soLinkable continues to grow these improvements will go a long way (If you want to get a little technical, we drastically reduced our database calls, cutting the execution time by 33%).
So… How Do I Use It?
Look at the top right corner of soLinkable. Are you signed in? Do you see that envelope? Good. That’s the link to your message center. For the most part, the envelope will appear blue. However, when you have unread items in your message center, the envelope will alert you by turning a sort of orange-red:
Clicking on the envelope will bring you to the main page of the new soLinkable message center, which lists the 25 previous conversations you’ve had on soLinkable. A conversation includes any private messages, replies to your comments, or first-level comments made to a story you’ve submitted. The basic setup of the page is as follows:
- Menu Items: Easily navigate through the different screens within the soLinkable message center.
- Type Of Message: Displays information regarding the type of message. Can be either a private message, post reply, or comment reply.
- Title Bar: The who, what, and when. This information bar will indicate the username, subject (if applicable), and date of the message or comment.
- Message Body: The actual content.
Next, let’s move to the “Compose” page. This is where you’ll go to write a private message. The layout and input textboxes are pretty self-explanatory. To, Subject, Message… All basic stuff.
The error checking at this point in time is pretty basic, it just checks to ensure you’ve entered a subject, message body, and valid username – No fancy jQuery validation engines yet. However, there is some simple AJAX going on in the background to help ensure the person you’re trying to contact exists. When you move the focus away from the “To:” field, it will contact the soLinkable servers and return whether the user exits or not. Simple but handy.
The Indox/Sent folder contains a list of all messages, beginning with the newest first:
And finally, clicking the subject will open it up in the view message template:
More improvements to come
It’s still in a beta phase, so expect some minor changes in the next few days as we try to work out the kinks. And if you’ve never played the role of a beta tester but always wanted to, here’s your chance. Play around with it and let us know what you think: Are there any bugs? Is it intuitive and easy-to-use? What would you do differently?
So get on it – Check out the soLinkable message center!
Do you remember the “Spam” sketch from Monty Python?
You know the one I mean – Where Eric Idle and Graham Chapman are trying to order breakfast, but the waitress (Terry Jones) keeps pushing spam on them. It seems like every dish contains something they want, but covered with spam. Well, sometimes that’s how I feel about soLinkable.
I know there’s great content on here, but the spam overshadows everything. The Queued section typically looks like this:
*spam*, *spam*, *spam*, *spam*, *spam*, GREAT ARTICLE, *spam*, *spam*, *spam*, and *spam*.
For every few great submissions, I’ll delete almost 100 spammy ones. For every few great users, there are 100 spammy ones. It’s a constant battle, and if I don’t do something to gain the upper hand I’m going to need extra moderators. So, in an attempt to fight back, here are a few of the recent measures we’ve implemented at soLinkable:
1) Unverified users have restrictions on what they can do with soLinkable.
What is a verified user? A verified user is a user who has been with soLinkable for a few days, submitted some good links, voted a few times, and made a couple of legible, thoughtful comments. By this point, their Karma will have risen above a set threshold (25 points), making them verified users. Simple enough.
Until a user becomes verified, they’ll be bound by the following restrictions:
- Each link submission must pass a reCAPTCHA test – Pretty self-explanatory, this is to stop bots from submitting.
- One submission per 24 hours – Even if a link gets deleted, the user must wait 24 hours before a new submission can be made.
- NoFollow attribute to links on any submissions in the Queued section. If it gets promoted, the NoFollow tag will come off this link. Once the user becomes verified, all NoFollow tags will be completely removed for all links – promoted or queued (including links submitted before the user became verified).
- Each submission is checked against Askimet – Very similar to how Askimet is used for blog comments: If Askimet tells us it’s spammy, then we put it aside for a moderator to check. The moderator can then decide if the submission should be placed into the queue or simply deleted.
tl;dr: A verified user is anyone with more than 25 Karma, and has FULL use of the site with NO restrictions. Verified = No restrictions. Unverified = Restrictions.
2) Ghost Bans
This is similar to the ghost ban used by Reddit. It’s a little underhanded, but any legitimate user will never run into it. It’s used to keep a banned user thinking they’re still submitting content. So while they can view their content, nobody else will ever see it.
I think this is one of the most effective measures, and best of all it’s completely automatic. Too many submissions get deleted without offering anything valuable to the community? BAM! Ghost ban.
A few of you may be worried, thinking you could be banned and not even know it. As long as you’re an active, participating member, there’s nothing to worry about. Make a few comments, vote on a few stories, and you’ll never run into any problems.
3) Deleted stories are only viewable by the submitter
If a story gets down voted by a majority of users, it will eventually be deleted. Once this happens, it will no longer display for anyone except the original submitter – They will continue to still see it normally.
The idea is to hide that it has been deleted, so the spammer won’t realize and re-submit. It’s incredibly frustrating to delete the same “Cheap SEO Development India” link over and over, day after day. And even if they do realize, the link info is stored for 30 days so the system will tag the submission as a duplicate story.
Conclusion
Whew. That seems like a lot of restrictions and dirty tricks. Believe me, it was a tough decision to make. I don’t like limiting what people can do or heavy moderating, but unfortunately I don’t have any other choice. The fight will go on, and I’ll continue to delete as much spam as required to make soLinkable a better place.
And as I always point out, there’s a real person behind soLinkable – So if you feel as though you have been unfairly targeted, send us a quick email. I’ll continue to monitor how effective these measures are and make changes as necessary. I’m very open to any ideas or suggestions.
Finally, If there are any regular users who may be interested in a moderator role, send me an email through our contact form. I can’t offer monetary compensation (at least not yet), but I can offer a link on the “About Us” page (under your bio). And with constant use of soLinkable, you’ll also (hopefully) increase your readership and can easily make it into the “Top Karma” sidebar list, giving you a link on the main page.
Thanks again for your support – It’s all of you who make this fun and worth the effort.
Have any of you tried to use the soLinkable search before? If not, consider yourself lucky. It sucked. I mean, REALLY sucked.
Thankfully, that’s starting to change. We’ve slowly been implementing upgrades to our search algorithm with the goal of eventually developing a search function that actually allows you to find what you’re looking for (crazy, I know).
The first thing you’ll notice are the new options available. You can now drill down to make your search a little more specific: category, where, when, and sorting method are all available filters. But don’t let these major design changes fool you – There were also plenty of improvements behind the scenes. We made significant upgrades, giving us better search results, in less time, with fewer calls.
Let me take you through a simple search as an example. Say we were looking for a specific Google Maps post which is ~10 months old.
First off, I’m not sure what category it would be under. Maybe Internet, but maybe technology – I don’t know. So, I’ll just leave it as “All Categories”.
Next, I know “Google Maps” will be mentioned in either the title or content, so I’ll choose “Title and Description”. Simple enough. To get the most relevant search result first, I’ll sort “By Relevance”. And finally, it’s about 10 months old, or, “<365 Days”, which represents “less than 365 days”. This leaves me with the following search query:
Hitting enter I will see the following results…
I see it! 10 Top Overlooked Features of Google Maps – Exactly what I was looking for!
We’re not done yet, there are still many more upgrades to come. However we decided to offer the first batch of changes sooner due to the general crappiness of the search functionality.
But don’t just take my word for it, Try it out yourself and see the difference!
…I sort of suspected that our contact form hadn’t been working as we hadn’t gotten any mail in almost three weeks. Turns out I was right! But more importantly, it’s fixed.
The biggest issue here was that there was no mention that the message wasn’t being sent, it just appeared to work normally. There was a reason for this. Not a good reason, but a reason. When I was doing my testing I commented out the actual “mail(…)” code for obvious reasons. Then, when I uploaded my tested code, I forgot to comment it out… and test it live… And so here we are. But no worries, all is now well.
So, to make a long story short, if anyone has attempted to contact us in the past few weeks, please resubmit and we will happily reply







