RiptideLab's Most Liked Posts of 2015

Kirblinx

Developer
Staff member
I wondered what the posts were throughout the year that the community liked the most. So I decided to make a web scraper to find out this data. I wanted to write up a top 10 or 20, but there ended up being 21 posts with 11 likes or more, so a top 21 it is then.

Also be aware that I scraped this data on the 7th of January 2016. The likes may have changed due to new members only just reading them (probably due to this post). A decent amount of these posts are very context-dependant, so if you don't get something, post it in this thread and we can help decipher it for you.

I was going to do a little write up and screenshots on each of the top 10 posts, but this took long enough to set up as is. Plus it isn't that hard to click on a link if you are interested.

Without further ado let's dump this large list:

Honourable Mentions (10 Likes):
40. Anotak - Schools of Thought - Choose your Weapon
39. Kevthewalker - Hearthfire Hobgoblin = Alfred E. Neuman
38. MCMcEmcee - I am Literally Liliana
37. Onderzeeboot - Neural Network Design Bloopers
36. Jason Waddell - He Fell For the Trap
35. Jason Waddell - Offtopic Man
34. Grillo_Parlante - Perfect Imbalance
33. vennythekid - Came for the Shit-posts
32. Jason Waddell - Blue-White Tempo
31. Laz - Creating the Google Docs Card Image Add-On
30. Dom Harvey - Balduvian's Computer Assisted Drafting
29. Kirblinx - Balduvian Trading Post has been Hacked
28. Diakonov - Can't Stop Making Graphs
27. Safra - WotC on the State of Modern
26. Dom Harvey - Is it Better Than Ponder?
25. Jason Waddell - Disregarding Colour Pie Order
24. Onderzeeboot - Been Swell For You Then?
23. Shamizy - Spoiling Snapcaster Goblin
22. James Stevenson - The Quest: Part 2: The End of the Quest

11 Likes:
21. Jason Waddell - CML's SCG Open Profile
20. Rasmus Källqvist - Hairy Ball Theorem
19. inscho - (His first post) 3-0 Pinata
18. MCMcEmcee - Sol Ring; Hidden Gem
17. Eric Chan - Staying On Topic

12 Likes:
16. James Stevenson - White One Half Drops
15. MoshiMaro - Drafting With 4 Players (First Post)
14. James Stevenson - Metagame Swear Jar
13. CML - Vampires are Storm
12. Laz - One Simple Trick to Make 5-Colour Control Work in Every List
11. Eric Chan - Tark's Flowstork
10. Jason Waddell - Name Synergy

13 Likes:
9. Grillo_Parlante - Observation of +1/+1 Counter Support
8. Aston - Introducing a 'Tempo' Tag
7. RavebornMuse - Steppe Lynx is Fun
6. Onderzeeboot - A Riptide Baby is Born

14 Likes:
5. Dom Harvey - Unselling True-Name Nemesis

15 Likes:
4. FlowerSunRain - Balduvian Trading Post's Power Max Cube
3. CML - Cube Design and Randy Buehler

16 Likes:
2. Safra - The Cool Thing About Doomsday

21 Likes:
1. Aston - Aston's Bulduvian Trading Post

There you have it. I hope you enjoyed this look back at our highs in 2015. It looked like a great year for Riptide. The diversity of the top liked posters is all over the place, which is great to see.

If anyone has any queries they want answered by my scraping ( like the top posts before 2015), I will be happy to oblige. I'll do this again next year and I hope to see if anyone can top Aston this year!
 

Onderzeeboot

Ecstatic Orb
Yeah, this is great! The "winner" still makes me grin :D

I was wondering where that sudden like for my daughter's birth announcement came from. Your links are working! :)
 

Kirblinx

Developer
Staff member
I was wondering where that sudden like for my daughter's birth announcement came from. Your links are working! :)

Yeah, I should have forewarned about the possible incoming of alerts on 6 month old posts. :p

My post was only ~30 minutes live before all my like counts were screwed around (it is hard not to like some of these posts though once you read them).

I want to give some props to the following posts:
  • 2. Safra - For being the best non-shit-post (although I feel it veers a little close to that line in some parts)
  • 6. Onderzeeboot - Having the highest like count outside of the cube forum
  • 15. MoshiMaro - Most liked first post of all time (will this ever be beaten?)
  • 16. James Stevenson - Earliest post in 2015 to make the list (13 Jan).
  • 7. RavebornMuse - Latest post in 2015 to make the list (30 Dec, just scraped in there); Also was the second best non-shit-post
  • Jason Waddell having the most entries on the list (6)
 
Do you feel like bolding the ones that are real posts? I can check out each of these eventually but ... so lazy. So very lazy.
 

Eric Chan

Hyalopterous Lemure
Staff member
I agree, this is absolutely incredible!

At the risk of taking away some of the mystique behind this, I still have to ask: how did you do it??
 

Kirblinx

Developer
Staff member
I agree, this is absolutely incredible!

At the risk of taking away some of the mystique behind this, I still have to ask: how did you do it??
I'm fine with ruining the magic mystique (at FNM they call me the crusher of dreams).

First a little backstory:
So a while ago I had a domain and hosting I had purchased (fruitlesspie.com, now defunct) just some university assignments. After I had finished the assignments I wanted to see what else I could do with it, and I was really keen on looking at card prices to see fluctuations so I decided to scrape the data from a site (I chose ABUgames.com) everyday and see any comparisons. So I taught myself how to scrape a website in PHP and got the price from every card everyday. After about two months I had hit my database limit with my host so I had to stop it and then I just cancelled my hosting.

How I got this like data:
So I had my old PHP file that had all the basic functions for scraping webpages:
curl($url): This converted the web address into a giant string/character array, which is generally a combination of html and CSS in there. This output was what I keep referring to as 'scraped page'.
scrape_between($data,$start,$end): This was a simple function that let you find the bits you wanted within the data (that was output with curl()).

Once I had those all I had to do was find a way to automate it to go through the entire forum and find a way to count the number of likes. Here is a sort of diary on what I managed to accomplish each day I fiddled with it (In my nights after work). Also, this was all done on a php file on a hosted domain. So all I had to do to run the code was type the URL to the PHP file and it would run for me.

Day 1:
  • Remember how php works, see what was usable from my old code
  • Be able to locate a singular post in the scraped page
  • Most of the locating of the data was actually rather easy, as in the xenforo forums everything is split into 'Spans'. For example, the likes are situated in: <span class="Like Text"> and end in /span. so you just scrape_between(page, "<span class="Like Text">", /span) then trim the data a little and you have what you want.
  • Grab the date and user of the post and store them (I didn't end needing the user in the end)
  • Grab the like count. This was done by finding the string ' other' (A new user with this in the username will probably screw me over) then adding 3 to the value I found, so I never recorded any posts with like count of 3 or less.
Day 2:
  • Echo the user, date and like count on all posts on one page
  • Find a way to go to the next page. I solved this by trying to find the 'next button' and scraping the url for the next page. Once there isn't a next button, you know you have reached the end. The next button is unique enough that no one would have posted it in the threads (it is "Next &gt", although in doing this I may have just screwed myself over for next year :p)
  • Echo the user, date and like count on all posts in an entire thread
Day 3:
  • Now to shift into the forum area (General Discussion, Cube Lists,etc) and find a way to scrape the url for each thread.
  • Find that url and pass it through what I had done the previous 2 days to get each post from that thread.
  • Do that for the entire page, then use the next page code to go through the entire forum and scrape all the data from each post in each thread in that forum.
  • Realise I actually need post URL's as well for easy posting later so find a way to scrape that and echo it back (this is why I didn't need username in the end)
  • So by this point I was being able to grab all the data from an entire forum, I just needed a way to sort it
Day 4:
  • Figure out how to put all this information in a database. PHP has a decent mySQL integration, so while it took a lot of trail and error to save what I wanted it to in the right format it looked elegant enough
  • Store the following information into the database for each post (if it has 4 or more likes): Post URL, Date, Number of Likes.
  • I hadn't gotten to the point where I could pass through the main forum page URL and it scrap the while site. I had to manually put in the URL for each forum (General Discussion, Cube Talk, Cube Lists, Forum Games) and run the code for each of these. It took a solid 45 minutes to scrape the Cube Talk thread alone.
Then the next day I sorted the database by number of likes, picked out all the ones from 2015 put them in a notepad document, checked each URL to get the user and a description on what the post was about then ~40 minutes of typing and hyperlinking the post (article?) was done.

I don't know if that was a little too in-depth (or not in-depth enough). Heck, this might not actually tell you anything, but it seemed layman's terms enough for others to follow as well if they were intrigued as to my process..I would have posted my code, but it looks terrible and with the amount of software developers on this forum I don't want them to have a small heart-attack.

I had a great time coding again, I haven't done it in so long. It is just a bonus that the output was something that the forum here could enjoy.


EDIT: I changed some of the CSS I use to scrape between so I don't screw myself over next time.
 

Kirblinx

Developer
Staff member
Since I had all my files open to make the post above I thought I would look through and post some of the highest posts before 2015 (as there really isn't enough to warrant their own thread)

Pre-2015 most liked posts (10 Likes)

1. Tom - I Built a Box!
2. Suicufnoc - Vinelasher Quirion Predator Pridemate

Here is the currently most liked post from this year (keep in mind I haven't scraped since the 7th of Jan, this may have also changed)

Current 2016 most liked post (13 Likes)

1. Laz - Brainstorm and Making Decisions Matter
 
Since the Vinelasher Quirion Predator Pridemate is White, it probably should not trigger on White spells. Just to pointlessly pick a nit. Creepy image!
 

Eric Chan

Hyalopterous Lemure
Staff member
Goddamn, you forum people never case to amaze me. I'm blown away both by the ingenuity of your solution as well as the hard work you put in, well and truly. These are glorious times we live in.
 

Jason Waddell

Administrator
Staff member
It should be noted that nothing before 2015 stands a chance, because you guys became obsessed with liking posts this year.

iYbCtM8.png


Also, on another note, people are obsessed with posting these days. For the first time we had a week where every single day saw more than 100 new posts created.
 

Kirblinx

Developer
Staff member
It should be noted that nothing before 2015 stands a chance, because you guys became obsessed with liking posts this year.

Insert epic graph here

Also, on another note, people are obsessed with posting these days. For the first time we had a week where every single day saw more than 100 new posts created.
Where did this data come from? Is it on the administrator side? I would like to see more stuff like this. Just as a personal thing as I don't think the average person would enjoy looking at a couple of different numbers everyday.
 

Jason Waddell

Administrator
Staff member
Where did this data come from? Is it on the administrator side? I would like to see more stuff like this. Just as a personal thing as I don't think the average person would enjoy looking at a couple of different numbers everyday.

Zenforo has an admin control panel where you can display all sorts of stats (posts, number of active users, user registrations, messages sent, etc.)
 

Jason Waddell

Administrator
Staff member
Where did this data come from? Is it on the administrator side? I would like to see more stuff like this. Just as a personal thing as I don't think the average person would enjoy looking at a couple of different numbers everyday.

Number of unique registered members active on the forums each day:
F7ipa8S.png
 

Jason Waddell

Administrator
Staff member
Number of posts per day ebbs and flows. The general trend is that our posts are made my a more diverse set of users, as opposed to the early days when something like 55% of posts were from me and Chris Taylor.

If you look at the Top 12 posters (http://riptidelab.com/forum/members/), the breakdown on join date is:

Original Members: (April 2013)
Jason Waddell
Chris Taylor
CML
FlowerSunRain
James Stevenson
Eric Chan
Dom Harvey

Early Members:
Lucre (June 2013)
anotak (August 2013)
ahadabans (November 2013)

2nd Generation Members:
Grillo_Parlante (April 2014)
Onderzeeboot (May 2014)

In total, these 12 members produce about 65% of the posts on RiptideLab.

Among those, the only users who are followed are anotak (1 follower) and Grillo (3 followers).
 

Chris Taylor

Contributor
Number of posts per day ebbs and flows. The general trend is that our posts are made my a more diverse set of users, as opposed to the early days when something like 55% of posts were from me and Chris Taylor.

If you look at the Top 12 posters (http://riptidelab.com/forum/members/), the breakdown on join date is:

Original Members: (April 2013)
Jason Waddell
Chris Taylor
CML
FlowerSunRain
James Stevenson
Eric Chan
Dom Harvey

Early Members:
Lucre (June 2013)
anotak (August 2013)
ahadabans (November 2013)

2nd Generation Members:
Grillo_Parlante (April 2014)
Onderzeeboot (May 2014)

In total, these 12 members produce about 65% of the posts on RiptideLab.

Among those, the only users who are followed are anotak (1 follower) and Grillo (3 followers).

#OccupyCubeDesign
I had no idea I was that high up there :p (Or is that 55% scientific at all)
 
Top