{"id":247,"date":"2020-11-13T18:29:10","date_gmt":"2020-11-13T16:29:10","guid":{"rendered":"https:\/\/www.realbiathlon.com\/blog\/?p=247"},"modified":"2020-11-16T17:09:19","modified_gmt":"2020-11-16T15:09:19","slug":"real-biathlon-is-back","status":"publish","type":"post","link":"https:\/\/www.realbiathlon.com\/blog\/index.php\/2020\/11\/13\/real-biathlon-is-back\/","title":{"rendered":"real biathlon is back"},"content":{"rendered":"\n<p>After a <a href=\"http:\/\/realbiathlon.blogspot.com\/2016\/11\/real-biathlon-in-hibernation.html\" target=\"_blank\" rel=\"noreferrer noopener\">long absence<\/a>, it&#8217;s time to revive this website. I had always hoped to get back into posting biathlon statistics \u2013 if I found a way to automate the process more.  Setting that up, however, seemed like a daunting task that would require a whole lot of time and work. So when I found myself stuck at home during the pandemic in the spring, I thought why not give this a try, especially since I had become much more experienced with programming and now had a background in computer science.<\/p>\n\n\n\n<p>After countless hours and lots of work, the new and improved real&nbsp;biathlon website is finally ready for the upcoming season. Some of the more interesting features I came up with:<\/p>\n\n\n\n<ul class=\"wp-block-list\" id=\"block-5fae41fa-c27c-4812-9b93-a3ca26b66758\"><li><a href=\"https:\/\/www.realbiathlon.com\/athletes.html?ibuId=BTNOR11605199301\" target=\"_blank\" rel=\"noreferrer noopener\">Athlete data<\/a> for all available stats categories, including <a rel=\"noreferrer noopener\" href=\"https:\/\/www.realbiathlon.com\/athletes.html?ibuId=BTSWE20211199501&amp;category=statsPerRace&amp;perRace=rank&amp;perSeason=Rankings&amp;discipline=NonTeam&amp;level=allRaces&amp;min=120&amp;resultrange=Podium&amp;rangemin=0&amp;rangemax=0&amp;movingavg=10&amp;onlyResults=false&amp;compareAthlete=BTNOR22309199601\" target=\"_blank\">comparisons between athletes<\/a><\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.realbiathlon.com\/teams.html?ibuId=BTNOR-X&amp;category=statsPerRace&amp;perRace=skiRank&amp;perSeason=Rankings&amp;level=allRaces&amp;resultrange=Podium&amp;movingavg=10&amp;onlyResults=false&amp;compareAthlete=BTnull\" target=\"_blank\">Team results and statistics&nbsp;<\/a>for all nations, including mixed or combined teams and <a href=\"https:\/\/www.realbiathlon.com\/teams.html?ibuId=BTNOR-W&amp;category=statsPerRace&amp;discipline=RL&amp;perRace=rank&amp;perSeason=Rankings&amp;level=allRaces&amp;resultrange=Podium&amp;movingavg=7&amp;onlyResults=false&amp;compareAthlete=BTGER-W\" target=\"_blank\" rel=\"noreferrer noopener\">team comparisons<\/a><\/li><li>Aggregate data for every season, every World Cup trimester, every championship and every single World Cup (e.g.&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/www.realbiathlon.com\/seasons.html?year=2020&amp;gender=M&amp;type=athletes&amp;period=Championship&amp;discipline=NonTeam&amp;category=skiing&amp;min=1&amp;chart=false&amp;stat=wins&amp;rank=false&amp;movingavg=none&amp;limit=100\" target=\"_blank\">men&#8217;s skiing stats for Antholz 2020 WCH<\/a> or <a href=\"https:\/\/www.realbiathlon.com\/seasons.html?year=2020&amp;gender=W&amp;type=athletes&amp;period=Season&amp;discipline=NonTeam&amp;category=shootingTimes&amp;min=1&amp;chart=false&amp;stat=podiums&amp;rank=false&amp;movingavg=none&amp;limit=100\" target=\"_blank\" rel=\"noreferrer noopener\">women&#8217;s shooting times of the 2019\u201320 season<\/a>)<\/li><li>Skiing, shooting, range and loop&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/www.realbiathlon.com\/races.html?raceId=BT1920SWRLCP08SMPU&amp;year=2020&amp;discipline=Total&amp;category=details&amp;relative=total&amp;overview=false&amp;min=120&amp;chart=false&amp;stat=&amp;rank=false&amp;movingavg=none\" target=\"_blank\">times<\/a>,&nbsp;as well as&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/www.realbiathlon.com\/races.html?raceId=BT1920SWRLCP08SMPU&amp;year=2020&amp;discipline=Total&amp;category=loops&amp;loopstype=coursetime&amp;relative=total&amp;overview=false&amp;min=31&amp;chart=false&amp;stat=&amp;rank=false&amp;movingavg=none\" target=\"_blank\">charts<\/a>,&nbsp;for every race since 2001\u201302 (absolute or relative to specific athlete)<\/li><li>Charts showing the&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/www.realbiathlon.com\/races.html?raceId=BT1920SWRLCH__SWIN&amp;year=2020&amp;discipline=Total&amp;category=progression&amp;progressiontype=behind&amp;relative=BTGER21103199401&amp;overview=false&amp;min=20&amp;chart=false&amp;stat=&amp;rank=false&amp;movingavg=none\" target=\"_blank\">progress during a race\/split times<\/a>&nbsp;(absolute or relative to specific athlete)<\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.realbiathlon.com\/races.html?raceId=BT1617SWRLCP09SWSP&amp;year=2017&amp;discipline=Total&amp;category=shooting&amp;relative=total&amp;overview=false&amp;min=120&amp;chart=false&amp;stat=&amp;rank=false&amp;movingavg=none\" target=\"_blank\">Shooting intervals and patterns<\/a>&nbsp;of all races since 2016\u201317<\/li><li>World Cup score&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/www.realbiathlon.com\/scores.html?year=2020&amp;gender=M&amp;type=athletes&amp;value=score&amp;discipline=NonTeam&amp;category=table&amp;relative=total\" target=\"_blank\">tables<\/a>&nbsp;and&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/www.realbiathlon.com\/scores.html?year=2020&amp;gender=M&amp;type=athletes&amp;value=score&amp;discipline=NonTeam&amp;category=chart&amp;relative=total\" target=\"_blank\">charts<\/a>&nbsp;for every World Cup globe ever<\/li><li>All-time records for&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/www.realbiathlon.com\/records.html\" target=\"_blank\">athletes<\/a>&nbsp;and teams, at World Cup,&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/www.realbiathlon.com\/records.html?gender=W&amp;type=athletes&amp;discipline=NonTeam&amp;event=wch&amp;category=table&amp;stat=&amp;min=1&amp;limit=50&amp;percent=Total\" target=\"_blank\">World Championship<\/a>&nbsp;or Olympic level (for every discipline), plus <a href=\"https:\/\/www.realbiathlon.com\/records.html?gender=A&amp;type=athletes&amp;discipline=NonTeam&amp;event=titles&amp;category=table&amp;stat=&amp;min=1&amp;limit=100&amp;percent=Total\">World Cup titles<\/a><\/li><\/ul>\n\n\n\n<p>The first hurdle was building an entirely new biathlon database, compiling all Biathlon World Cup data I could get my hands on. It turned into a much bigger project than I had anticipated, primarily because of the many inconsistencies in official data from the International Biathlon Union (IBU), which made it a real nightmare to get consistent results.<\/p>\n\n\n\n<p>Eventually, I managed to merge all relevant IBU results with data from secondary sources (specifically the SQLite database of the&nbsp;<a rel=\"noreferrer noopener\" href=\"http:\/\/www.runshoot.ru\/en\/\" target=\"_blank\"><em>Run&amp;Shoot<\/em> App<\/a>, developed by Vladimir Filatov, as well as results on different editions of Wikipedia). While some data errors undoubtedly remain (that&#8217;s almost unavoidable with a data set of this size: 2199 top-level races featuring 3342 different athletes), I have collected quite reliable data for:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Every World Championship and Olympic race (since 1958)<\/li><li>Results for every World Cup race since the very first season in 1977\u201378 (albeit only partial results for some of the early seasons, but every podium finisher ever)<\/li><li>Shooting results since the 1980s<\/li><li>Skiing and shooting times since 2001\u201302<\/li><li>Split times\/shooting intervals since 2016\u201317<\/li><\/ul>\n\n\n\n<p>Making the collected data available online was another big challenge. I&#8217;m not a web developer, so this website won&#8217;t win any design awards, but I did my best to make it as easy to use as possible; the main focus however was functionality. Special thanks to the members of our <a href=\"https:\/\/www.tapatalk.com\/groups\/realbiathlon\/\" target=\"_blank\" rel=\"noreferrer noopener\">forum<\/a> who helped with testing. <\/p>\n\n\n\n<p>Keeping my fingers crossed that the 2020\u201321 Biathlon World Cup season will go ahead as planned, I&#8217;ll try my best to update all data as quickly as possible after each race. I hope that you will find this new website useful and full of interesting information, and you will enjoy exploring its features and statistics during the upcoming biathlon winter.<\/p>\n\n\n\n\n","protected":false},"excerpt":{"rendered":"<p>After a long absence, it&#8217;s time to revive this website. I had always hoped to get back into posting biathlon statistics \u2013 if I found a way to automate the process more. Setting that up, however, seemed like a daunting task that would require a whole lot of time and work. So when I found [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"class_list":["post-247","post","type-post","status-publish","format-standard","hentry","category-website-updates"],"_links":{"self":[{"href":"https:\/\/www.realbiathlon.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/247","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.realbiathlon.com\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.realbiathlon.com\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.realbiathlon.com\/blog\/index.php\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.realbiathlon.com\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=247"}],"version-history":[{"count":172,"href":"https:\/\/www.realbiathlon.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/247\/revisions"}],"predecessor-version":[{"id":493,"href":"https:\/\/www.realbiathlon.com\/blog\/index.php\/wp-json\/wp\/v2\/posts\/247\/revisions\/493"}],"wp:attachment":[{"href":"https:\/\/www.realbiathlon.com\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=247"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.realbiathlon.com\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=247"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.realbiathlon.com\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=247"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}