How do we give people
recent news, or talk about
recent trends or popular posts>?
The obvious answer is to take data for the last "n" days or months and analyse that. But whilst that's the obvious answer, it's also obviously a fairly crude measure as it gives undue influence as it changes to what happened at the distant (early) end of the period being analysed. For example, we hear about the "annual rate of inflation" and sometimes it's said to go down ... not because of something recent, but because a big rise in the price of [petrol/electricity/vegetables] has fallen off the equation from a year ago.
A far better solution is to run some sort of weighted measure where very recent events are given a significantly higher weight than old ones - and here's an example of how I've done this in a recent requirement to report on the currently most liked messages on our
First Great Western Passenger Forum.
Coding in PHP:
$scoreboard = array();
$countdown = 50;
$showrows = $countdown / 2;
$r = mysql_query("select * from lykes order by timing desc limit $countdown");
while (list($id,$post,$user,$when) = mysql_fetch_row($r)) {
$scoreboard[$post] += ($countdown *= 0.92);
# $scoreboard[$post] += $countdown--; /* Alternative to previous line */
}
I have chosen to use three constants which work for this particular site at present:
• Consider most recent 50 likes
• Scale down the significance between each like to 92% of the previous one
• Display a maximum of half the number of articles which are in the window we've looked at
and while I could easily suggest more tuning (such as trimming article likes by date, differing factors and so forth) I've chosen to publish here with constants to make the algorithm easier to follow.
Click on image for most recent report!)
See the full code
[here] (it turns out that the presentation code is far longer than the decaying average algorithm and try it out
[here]. Find out about our PHP courses
[here].
(written 2015-01-19)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
Q110 - Object Orientation and General technical topics - Programming Algorithms [202] Searching for numbers - (2005-02-04)
[227] Bellringing and Programming and Objects and Perl - (2005-02-25)
[642] How similar are two words - (2006-03-11)
[1157] Speed Networking - a great evening and how we arranged it - (2007-04-21)
[1187] Updating a page strictly every minute (PHP, Perl) - (2007-05-14)
[1391] Ordnance Survey Grid Reference to Latitude / Longitude - (2007-10-14)
[1840] Validating Credit Card Numbers - (2008-10-14)
[1949] Nuclear Physics comes to our web site - (2008-12-17)
[2189] Matching disparate referencing systems (MediaWiki, PHP, also Tcl) - (2009-05-19)
[2259] Grouping rows for a summary report - MySQL and PHP - (2009-06-27)
[2509] A life lesson from the accuracy of numbers in Excel and Lua - (2009-11-21)
[2586] And and Or illustrated by locks - (2010-01-17)
[2617] Comparing floating point numbers - a word of caution and a solution - (2010-02-01)
[2894] Sorting people by their names - (2010-07-29)
[2951] Lots of way of converting 3 letter month abbreviations to numbers - (2010-09-10)
[2993] Arrays v Lists - what is the difference, why use one or the other - (2010-10-10)
[3042] Least Common Ancestor - what is it, and a Least Common Ancestor algorithm implemented in Perl - (2010-11-11)
[3072] Finding elements common to many lists / arrays - (2010-11-26)
[3093] How many toilet rolls - hotel inventory and useage - (2010-12-18)
[3102] AND and OR operators - what is the difference between logical and bitwise varieties? - (2010-12-24)
[3451] Why would you want to use a Perl hash? - (2011-09-20)
[3620] Finding the total, average, minimum and maximum in a program - (2012-02-22)
[3662] Finding all the unique lines in a file, using Python or Perl - (2012-03-20)
[4325] Learning to program - what are algorithms and design patterns? - (2014-11-22)
[4402] Finding sum, minimum, maximum and average in Python (and Ruby) - (2015-01-19)
[4410] A good example of recursion - a real use in Python - (2015-02-01)
[4652] Testing new algorithms in PHP - (2016-02-20)
[4656] Identifying the first and last records in a sequence - (2016-02-26)
[4707] Some gems from an introduction to Python - (2016-10-29)
G902 - Well House Consultants - Web site techniques, utility and visibility [23] Skills and responsibilities - (2004-08-22)
[32] Web design platoon - (2004-08-29)
[98] No more 'Error 404' pages. Something better. - (2004-10-24)
[109] URLs - a service and not a hurdle - (2004-11-04)
[117] A case of case - (2004-11-14)
[142] Colour for access - (2004-12-06)
[165] Implementing an effective site search engine - (2005-01-01)
[173] Data Mining - (2005-01-09)
[179] The hunt for unique words - (2005-01-16)
[182] Your personal Google ranking - (2005-01-19)
[197] Allow for peak traffic on your web site - (2005-02-01)
[222] Who are all these visitors? - (2005-02-20)
[259] Responding to spam - (2005-03-27)
[261] Putting a form online - (2005-03-29)
[268] Information request forms, cleaning up spam - (2005-04-05)
[274] Our most popular resources - (2005-04-10)
[276] An apology to Mr Boneparte - (2005-04-11)
[278] Cover all the options - (2005-04-13)
[284] The Iconish language - (2005-04-19)
[288] Colour blindness for web developers - (2005-04-22)
[311] Growth pains - (2005-05-14)
[314] What language is this written in? - (2005-05-17)
[320] Ordnance Survey - using a 'Get a map' - (2005-05-22)
[322] More maps - (2005-05-23)
[347] Frightening and from-friend viruses and spams - (2005-06-14)
[348] Graveyard pages - (2005-06-15)
[369] CMS - the minefield of Choices - (2005-07-05)
[376] What brings people to my web site? - (2005-07-13)
[414] Form Madness - (2005-08-14)
[492] New Navigation Aid - Launch of My Wellho - (2005-11-11)
[510] Dynamic Web presence - next generation web site - (2005-11-29)
[528] Getting favicon to work - avoiding common pitfalls - (2005-12-14)
[533] Bigger Box Campaign - (2005-12-18)
[649] Denial of Service ''attack'' - (2006-03-17)
[658] Keeping the visitors happy and browsing - (2006-03-26)
[681] Mirroring a dynamic site - (2006-04-12)
[718] Protecting images from theft - (2006-05-12)
[732] Where is a web site visitor browsing from - (2006-05-24)
[757] Horse and Python training - (2006-06-12)
[767] Finding the language preference of a web site visitor - (2006-06-18)
[800] Effective web campaign? - (2006-07-12)
[893] Visibility - (2006-10-14)
[916] Driving customers away - (2006-11-07)
[976] Santa at the station - (2006-12-09)
[994] Training on Cascading Style Sheets - (2006-12-17)
[1015] Search engine placement - long term strategy and success - (2006-12-30)
[1029] Our search engine placement is dropping. - (2007-01-11)
[1055] Above the fold - (2007-01-28)
[1104] Drawing dynamic graphs in PHP - (2007-03-09)
[1177] Sorting out for a site map - (2007-05-05)
[1184] Finding resources - some pointers - (2007-05-13)
[1186] Two new pages / sites - (2007-05-14)
[1198] From Web to Web 2 - (2007-05-21)
[1207] Simple but effective use of mod_rewrite (Apache httpd) - (2007-05-27)
[1212] What brought YOU to our web site? - (2007-06-01)
[1237] What proportion of our web traffic is robots? - (2007-06-19)
[1297] Stuffing content into a web page - easy maintainance - (2007-08-09)
[1437] Above the fold with First Great Western - (2007-11-19)
[1494] A time to update pictures - (2008-01-03)
[1505] Script to present commonly used images - PHP - (2008-01-13)
[1506] Ongoing Image Copyright Issues, PHP and MySQL solutions - (2008-01-14)
[1513] Perl, PHP or Python? No - Perl AND PHP AND Python! - (2008-01-20)
[1534] Where in the world / country is my visitor from? - (2008-02-07)
[1541] Colour, Composition or Content - (2008-02-16)
[1554] Online hotel reservations - Melksham, Wiltshire (near Bath) - (2008-02-24)
[1610] PHP course dot co, dot uk - (2008-04-13)
[1630] To provide external links, or not? - (2008-05-04)
[1634] Kiss and Book - (2008-05-07)
[1653] How do Google Ads work? - (2008-05-25)
[1711] Rapid growth leads to server move - (2008-07-17)
[1747] Who is watching you? - (2008-08-10)
[1756] Ever had One of THOSE mornings? - (2008-08-16)
[1793] Which country does a search engine think you are located in? - (2008-09-11)
[1797] I have been working hard but I do not expect you noticed - (2008-09-14)
[1833] Web Bloopers - good form design - avoiding pitfalls - (2008-10-11)
[1856] A few of my favourite things - (2008-10-26)
[1888] Find the link - (2008-11-16)
[1955] How to avoid duplicating web page maintainance - (2008-12-20)
[1961] Making our things easier to find - (2008-12-26)
[1970] Plagarism - who is copying my pages? - (2009-01-02)
[1982] Cooking bodies and URLs - (2009-01-08)
[2056] Web Site Loading - experiences and some solutions shared - (2009-02-26)
[2065] Static mirroring through HTTrack, wget and others - (2009-03-03)
[2225] How important is a front page ranking on a search engine? - (2009-06-09)
[2332] Formation, des langages Open Source - (2009-08-09)
[2333] Formaci[83][c2]ón, de los lenguajes de c[83][c2]ódigo abierto - (2009-08-09)
[2334] Formazione, Open Source computer lingue - (2009-08-09)
[2335] Ausbildung, die Open-Source-Sprachen - (2009-08-09)
[2336] Forma[83][c2]ç[83][c2]ão, Open Source computador l[83][c2]ínguas - (2009-08-09)
[2337] Opleiding, Open Source computertalen - (2009-08-09)
[2338] Uddannelse, Open Source computer sprog - (2009-08-09)
[2339] Oppl[83][c2]æring, Open Source datamaskinen spr[83][c2]åk - (2009-08-09)
[2340] ldning, Open Source dator spr[83][c2]åk - (2009-08-09)
[2341] Koulutus, Open Source tietokone kielill[83][c2]ä - (2009-08-09)
[2389] Writing with our customers words - (2009-09-01)
[2410] Removal of technical resources from this site - (2009-09-19)
[2519] Status Page / breaks of service in early December - (2009-11-30)
[2532] Analysing Google arrivals by country of origin - (2009-12-10)
[2552] Web site traffic - real users, or just noise? - (2009-12-26)
[2569] How to run a successful online poll / petition / survey / consultation - (2010-01-10)
[2668] Is it worth it? - (2010-03-09)
[2981] How to set up short and meaningfull alternative URLs - (2010-10-02)
[3022] Retaining web site visitors - reducing the one page wonders - (2010-10-31)
[3087] Making the most of critical emails - reading behind the scene - (2010-12-16)
[3149] Looking back at www.wellho.net - (2011-01-28)
[3197] Finding and diverting image requests from rogue domains - (2011-03-08)
[3367] Google +1 - what is it? - (2011-07-22)
[3426] Automed web site testing scripted in Ruby using watir-webdriver - (2011-09-09)
[3491] Who is knocking at your web site door? Are you well set up to deal with allcomers? - (2011-10-21)
[3532] Sharing the user experience - designing a form with the customer in mind - (2011-11-29)
[3554] Learning more about our web site - and learning how to learn about yours - (2011-12-17)
[3563] How big is a web page these days? Does the size of your pages matter? - (2011-12-26)
[3589] Promoting a single one of your domains on the search engines - (2012-01-22)
[3623] Some TestWise examples - helping use Ruby code to check your web site operation - (2012-02-24)
[3734] QR codes with marketing logos embedded - (2012-05-16)
[3744] Short Web Addresses for Melksham - (2012-05-30)
[3745] Legal change - You need to obtain user consent if you use cookies on your website - (2012-06-01)
[3776] Some traps it's so easy to fall into in designing your web site - (2012-06-23)
[3896] An email marathon - (2012-10-15)
[3974] TV show appearance - how does it effect your web site? - (2013-01-13)
[4001] Helping search engines with appropriate 400 error codes - (2013-02-11)
[4076] Web site - fully back! - (2013-04-29)
[4115] More or less back - what happened to our server the other day - (2013-06-14)
[4136] How do I post automatically from a PHP script to my Twitter account? - (2013-07-10)
[4239] Facebook marketing - early experiences - (2014-01-19)
[4376] Well House Consultants, Well House Manor, First Great Western Coffee shop, TransWilts / 2014 web site reports - (2015-01-01)
[4474] Effect on external factors on traffic to our web sites - an update - (2015-04-26)
[4492] Almost so wrong, but perhaps it's right for some? - (2015-05-11)
H308 - PHP - Searches, and search engines [1020] Parallel processing in PHP - (2007-01-03)
[1735] Finding words and work boundaries (MySQL, Perl, PHP) - (2008-08-03)
[2137] Reaching the right people with your web site - (2009-04-23)
[2166] Crossrefering documents with uniqueness and inconsistency issues - PHP proof of concept demo - (2009-05-10)
[2631] How to show a large result set page by page in PHP - (2010-02-11)
[3159] Returning multiple values from a function call in various languages - a comparison - (2011-02-06)
[3163] Twitter - the special use of @ # and http: in tweets - (2011-02-09)
Some other Articles
Backup procedures - via backup serverWhich (virtual) host was visited? Tuning Apache log files, and Python analysisThe unbalanced relationship between customer and providerSelecting RECENT and POPULAR news and trends for your web site usersCommenting out an echo killed my bash backup scriptThe Campus in Melksham - name, logo, and livery choiceAccessing variables across subroutine boundaries - Perl, Python, Java and TclTransWilts / Press and Publicity report for AGM / 30th January 2015Java Utility class - flexible replacement for array. Also cacheing in objects and multiple catch clauses example.