Other projects
Even though I have shown some of my projects on this site, it is only a small portion of the things I've done. Below I have listed all the major coding projects I have done for other websites, which I won't be showing on this website. If you have any questions, I'm willing to answer on the comments page.
Runepoli
Runepoli is a Finnish fansite for MMORPG (Massively Multi Online Role-Playing Game) called RuneScape. Runepoli was originally founded 15.6.2003 and has over 74,000 registered users (as of 24.4.2016). Runepoli is best known as a site for Finnish game guides for the game, but it also has many other useful features, like calculators and hiscores. It is officially recognised by makers of the game, Jagex, and is the biggest Finnish fansite for the game. All content on the site is based on voluntary work.
I first joined Runepoli's guide writing team in September 2012. My duties as a guide writer involve writing guides using the tools the guide writing team has been given and editing game images/maps for them.
After I had finished some of my first coding projects in autumn 2014, I decided to make some RuneScape related programs. The guide tools allowed the use of HTML and Javascript, but it required some tricks and I didn't have full control over the web pages. One of the site admins, who also coded most of the site many years back, noticed my coding enthusiasm and promoted me to admin rank in January 2015, which gave me full FTP and SQL database access.
Since then I have worked on various projects for the site - some small quality of life improvements (for both users and guide writers), others larger completely new features, such as calculators or databases. Runepoli's website development has mostly been under my responsibility, and I've led and coded the all major development projects since early 2015.
I have done so many Runepoli changes that I won't list them all here, but below are some of the bigger and more important projects. I have included links where applicable - the site itself is completely in Finnish.
I first joined Runepoli's guide writing team in September 2012. My duties as a guide writer involve writing guides using the tools the guide writing team has been given and editing game images/maps for them.
After I had finished some of my first coding projects in autumn 2014, I decided to make some RuneScape related programs. The guide tools allowed the use of HTML and Javascript, but it required some tricks and I didn't have full control over the web pages. One of the site admins, who also coded most of the site many years back, noticed my coding enthusiasm and promoted me to admin rank in January 2015, which gave me full FTP and SQL database access.
Since then I have worked on various projects for the site - some small quality of life improvements (for both users and guide writers), others larger completely new features, such as calculators or databases. Runepoli's website development has mostly been under my responsibility, and I've led and coded the all major development projects since early 2015.
I have done so many Runepoli changes that I won't list them all here, but below are some of the bigger and more important projects. I have included links where applicable - the site itself is completely in Finnish.
Coordinate locator
January 2015 (original: November 2014)
RuneScape has a large, grid-based world, and each tile in the grid has its own coordinate. In RuneScape there is a popular treasure hunt minigame, where one part of the hunt is digging at specific coordinates. Figuring the exact place can be tricky without extra help, because in game it is only possible to know your current location.
This coordinate locator will show the exact location of the coordinate on a world map. The user can choose between 4 zoom options and either type the coordinate themselves, or select it from a list of possible treasure hunt coordinates.
January 2015 (original: November 2014)
RuneScape has a large, grid-based world, and each tile in the grid has its own coordinate. In RuneScape there is a popular treasure hunt minigame, where one part of the hunt is digging at specific coordinates. Figuring the exact place can be tricky without extra help, because in game it is only possible to know your current location.
This coordinate locator will show the exact location of the coordinate on a world map. The user can choose between 4 zoom options and either type the coordinate themselves, or select it from a list of possible treasure hunt coordinates.
Quest calculator
December 2014 - January 2015
RuneScape has over 200 quests, all of which have varying skill and quest requirements. Sometimes it can be hard to keep track of what requirements differents quests have and which of them the player can complete.
This calculator will fetch all player's skill and quest completion information from the official RuneScape site and then show which quests they can do, which are in progress and which they don't have the requirements for. If the player doesn't have a requirements for a specific quest, it will show what the missing requirements are. The calculator can also figure if the player has skill requirements for the quests required for the quest (and requirements for those), by using recursion.
Additionally, the calculator also has many filtering options the user can use to find what they want more easily.
December 2014 - January 2015
RuneScape has over 200 quests, all of which have varying skill and quest requirements. Sometimes it can be hard to keep track of what requirements differents quests have and which of them the player can complete.
This calculator will fetch all player's skill and quest completion information from the official RuneScape site and then show which quests they can do, which are in progress and which they don't have the requirements for. If the player doesn't have a requirements for a specific quest, it will show what the missing requirements are. The calculator can also figure if the player has skill requirements for the quests required for the quest (and requirements for those), by using recursion.
Additionally, the calculator also has many filtering options the user can use to find what they want more easily.
Grand Exchange item database
January - April 2015
RuneScape has thousands of different items, and their prices change daily by the rules of supply and demand. Using PHP I created a program that fetches the price information from official RuneScape website (with the help of an API made by Jagex) and saves them to Runepoli's database. This is done every 24 hours. Because the process isn't quick and is prone to errors, it has various error checks and it saves database update information (along with possible errors) to an update log visible to site admins.
Thanks to this database, it is possible to use up-to-date item price information in Runepoli's guides and in future fetures.
I also made an interface which the users can use to see the database information. The table was made with jQuery datatables.
January - April 2015
RuneScape has thousands of different items, and their prices change daily by the rules of supply and demand. Using PHP I created a program that fetches the price information from official RuneScape website (with the help of an API made by Jagex) and saves them to Runepoli's database. This is done every 24 hours. Because the process isn't quick and is prone to errors, it has various error checks and it saves database update information (along with possible errors) to an update log visible to site admins.
Thanks to this database, it is possible to use up-to-date item price information in Runepoli's guides and in future fetures.
I also made an interface which the users can use to see the database information. The table was made with jQuery datatables.
Guide tags
January 2015
Runepoli's guide writers have their own control page for guides, which allows them to add and edit guides, among other things. Because most of the guide writers don't know HTML or CSS, they have their own syntax for making guides more than just plain text. Instead of HTML they use tags which are similar to BBCode tags, but are slightly more varied. They, as an example, have a tag for making tables more easily.
The tag system already existed when I started, but I have done some additions to it. Some are very simple (like adding hover text), but other are slightly more complicated.
[ge] and [count] are some of my more complicated tags. These tags allow the use of item price database in guides. [ge] tag simply takes name of the item (or its ID) and returns its current price. If the price information is needed for something, such as figuring out how much an x amount of items would cost, [count] tag can be used. It allows plus, minus, multiplication and division operators, which can be stacked together. It can also round the result to the wished accuracy. More information of their syntax can be found here.
January 2015
Runepoli's guide writers have their own control page for guides, which allows them to add and edit guides, among other things. Because most of the guide writers don't know HTML or CSS, they have their own syntax for making guides more than just plain text. Instead of HTML they use tags which are similar to BBCode tags, but are slightly more varied. They, as an example, have a tag for making tables more easily.
The tag system already existed when I started, but I have done some additions to it. Some are very simple (like adding hover text), but other are slightly more complicated.
[ge] and [count] are some of my more complicated tags. These tags allow the use of item price database in guides. [ge] tag simply takes name of the item (or its ID) and returns its current price. If the price information is needed for something, such as figuring out how much an x amount of items would cost, [count] tag can be used. It allows plus, minus, multiplication and division operators, which can be stacked together. It can also round the result to the wished accuracy. More information of their syntax can be found here.
Bestiary database
March 2015
This database contains all information about RuneScape's creatures, such as their weaknesses and lifepoints. Information comes from RuneScape's bestiary API, and similarly to item database, it is updated every day (if new additions have been added).
Beast information can be shown in guides more easily with [beast] tag, which fetches the information from the database and displays it in a table.
March 2015
This database contains all information about RuneScape's creatures, such as their weaknesses and lifepoints. Information comes from RuneScape's bestiary API, and similarly to item database, it is updated every day (if new additions have been added).
Beast information can be shown in guides more easily with [beast] tag, which fetches the information from the database and displays it in a table.
Search bar
May 2015
Runepoli has hundreds of different guides. Even though all categories are on their own pages, finding a specific guide among a potentially large list isn't very quick, and always requires several clicks.
With this new search bar (visible on every page, on right side of the navigation bar) the users can easily just write the guide they are searching for. They don't even need to write it completely - it shows all fitting search results automaticly as the user writes. The user can select the guide they are looking for with arrow keys and enter, or just click it.
This search can also be added to browser's search bar, if the user so wishes.
May 2015
Runepoli has hundreds of different guides. Even though all categories are on their own pages, finding a specific guide among a potentially large list isn't very quick, and always requires several clicks.
With this new search bar (visible on every page, on right side of the navigation bar) the users can easily just write the guide they are searching for. They don't even need to write it completely - it shows all fitting search results automaticly as the user writes. The user can select the guide they are looking for with arrow keys and enter, or just click it.
This search can also be added to browser's search bar, if the user so wishes.
Skill database and skill calculators
June 2015
RuneScape has almost 30 different skills and they have hundreds of different training methods, which have varying speeds and costs. Skill levelling is one of the core elements of RuneScape, and finding the ideal speed/cost balance is an important factor in it.
The goal of this project was to create a nearly perfect database of all different skilling methods. Because the process can't be automated like item prices and bestiary, I needed to make a completely new system so that guide writers could add them to the database manually. Because the amount of skilling methods is so huge, I tried to optimize the system by making it so that it is as easy (and fast) as possible to add all the necessary information. Some of the information the database has are category, experience points per action, approximation of how many actions can be done in an hour, all requirements, all required resources, all possible products (resources and products include amount and item ID, which can be used to fetch prices from item databasse) and possible extra information. Filling the database with all this information was a big group effort, and took a couple of months in total.
The main purpose of the database is that it can be used in new skill calculators. The new calculators can fetch player's skills and experience points from RuneScape site and then show what methods they have the requirements for. The user can set skill goals and then the calculator will show how long it would approximately take with each method and how much it would cost/bring profit (they can choose if they wish to sell the possible products or not).
The calculators also have many filtering options (by category, by subcategory, by requirements met...) and they can decide in which order the skilling methods are shown. Smithing calculator is a good example of many of these features.
June 2015
RuneScape has almost 30 different skills and they have hundreds of different training methods, which have varying speeds and costs. Skill levelling is one of the core elements of RuneScape, and finding the ideal speed/cost balance is an important factor in it.
The goal of this project was to create a nearly perfect database of all different skilling methods. Because the process can't be automated like item prices and bestiary, I needed to make a completely new system so that guide writers could add them to the database manually. Because the amount of skilling methods is so huge, I tried to optimize the system by making it so that it is as easy (and fast) as possible to add all the necessary information. Some of the information the database has are category, experience points per action, approximation of how many actions can be done in an hour, all requirements, all required resources, all possible products (resources and products include amount and item ID, which can be used to fetch prices from item databasse) and possible extra information. Filling the database with all this information was a big group effort, and took a couple of months in total.
The main purpose of the database is that it can be used in new skill calculators. The new calculators can fetch player's skills and experience points from RuneScape site and then show what methods they have the requirements for. The user can set skill goals and then the calculator will show how long it would approximately take with each method and how much it would cost/bring profit (they can choose if they wish to sell the possible products or not).
The calculators also have many filtering options (by category, by subcategory, by requirements met...) and they can decide in which order the skilling methods are shown. Smithing calculator is a good example of many of these features.
Minigame timers
July 2015
In RuneScape some minigames have regularly changing places/focuses. These timers (which I've added to the right side of the frontpage) show where the minigame's focus/location is currently at and how long it is until it changes. I made the code so that it can be easily applied to any time interval, so more minigames or similar regularly changing activities could be easily added in the future.
July 2015
In RuneScape some minigames have regularly changing places/focuses. These timers (which I've added to the right side of the frontpage) show where the minigame's focus/location is currently at and how long it is until it changes. I made the code so that it can be easily applied to any time interval, so more minigames or similar regularly changing activities could be easily added in the future.
[coord] tag
July 2015
Maps are often featured in guides, but making them takes slightly more effort than regular images. With this tag the guide writers can easily show any location on the map by just giving its coordinate. This is effectively a smaller version of the coordinate locator.
July 2015
Maps are often featured in guides, but making them takes slightly more effort than regular images. With this tag the guide writers can easily show any location on the map by just giving its coordinate. This is effectively a smaller version of the coordinate locator.
Skill tables
January 2016
With skill database more or less complete with lots of useful up-to-date information, it was time to use it for something besides calculators. In many of Runepoli's skill guides skilling methods are often shown by using tables. One problem with them, however, is that when an update comes, the guide writers will always need to find the right spot in "guide code" and edit it in.
So I decided to make a new tag for skill tables, which basicly allows it to fetch information from skill database. The guide writer can decide what columns they want in the table, in which order and which methods are included. It is very flexible and it's easy to add more column options in the future, if there is a need for it.
The positive side to this is that if a new skill method comes, it can be added with the easy-to-use database tools, when it appears both at the skill calculator and skill tables in the guides. This way it is easier to keep both up-to-date.
January 2016
With skill database more or less complete with lots of useful up-to-date information, it was time to use it for something besides calculators. In many of Runepoli's skill guides skilling methods are often shown by using tables. One problem with them, however, is that when an update comes, the guide writers will always need to find the right spot in "guide code" and edit it in.
So I decided to make a new tag for skill tables, which basicly allows it to fetch information from skill database. The guide writer can decide what columns they want in the table, in which order and which methods are included. It is very flexible and it's easy to add more column options in the future, if there is a need for it.
The positive side to this is that if a new skill method comes, it can be added with the easy-to-use database tools, when it appears both at the skill calculator and skill tables in the guides. This way it is easier to keep both up-to-date.
User guides
February - March 2016
Ever since Runepoli was founded, only a selected group of people (whom I've referred as "guide writers") has had the permission to add, edit and delete guides to Runepoli. The goal of this was to keep the guide quality high and prevent spam in the guides. Because of this everyone who wanted to make guides needed to apply for the position as a guide writer, and they were expected to make them more-or-less regularly. The only way regular users could have an impact on the guides was to give feedback and report errors.
With this project the goal was to allow the registered users to make guides without the complicated applying process. However, in order to prevent spam, they should have only limited access. This required a completely new system, where all changes made would go through guide writers and they either accept or deny them. So I made a new interface which guide writers can easily use to see the situation of every user guide, and even rollback the changes if they have damaged the older content written by others (such as by removing everything).
More details of how this system works can be found on a guide, which is only in Finnish.
February - March 2016
Ever since Runepoli was founded, only a selected group of people (whom I've referred as "guide writers") has had the permission to add, edit and delete guides to Runepoli. The goal of this was to keep the guide quality high and prevent spam in the guides. Because of this everyone who wanted to make guides needed to apply for the position as a guide writer, and they were expected to make them more-or-less regularly. The only way regular users could have an impact on the guides was to give feedback and report errors.
With this project the goal was to allow the registered users to make guides without the complicated applying process. However, in order to prevent spam, they should have only limited access. This required a completely new system, where all changes made would go through guide writers and they either accept or deny them. So I made a new interface which guide writers can easily use to see the situation of every user guide, and even rollback the changes if they have damaged the older content written by others (such as by removing everything).
More details of how this system works can be found on a guide, which is only in Finnish.
Hiscores
April 2016
RuneScape already has hiscores on its official website, but I decided to make one just for Runepoli users. That way it's easier to compare skills with other Finns.
Unlike official hiscores, this hiscore has all the different game modes in the same place.
The hiscore information is fetched every 24 hours from RuneScape's hiscore API.
April 2016
RuneScape already has hiscores on its official website, but I decided to make one just for Runepoli users. That way it's easier to compare skills with other Finns.
Unlike official hiscores, this hiscore has all the different game modes in the same place.
The hiscore information is fetched every 24 hours from RuneScape's hiscore API.
Xp tracker
May - June 2016
Gaining experience points (known to gamers as xp) is a core part in levelling up skills, and often it can be interesting to know how much progression has happened during various times.
What xp trackers basically do is that they gather xp and skill information every day and save them on the server, and then show the information to the user in some readable fashion.
My version of the tracker has five main features:
Tracker hiscores show who have gained most xp during the month. This adds some friendly competition.
Comparison feature allows the user to select any two dates, which have xp data, and then the program will show how much their skill levels, xp and hiscore ranks have changed.
Xp calendar is completely my own invention. It shows in a easily readable format how much xp and how many levels the player has gained each day. Settings can be used to show it in weeks, months or years instead of days.
Graphs show a more visual representation of experience gains.
Accomplishments shows all level ups and major experience achievements.
May - June 2016
Gaining experience points (known to gamers as xp) is a core part in levelling up skills, and often it can be interesting to know how much progression has happened during various times.
What xp trackers basically do is that they gather xp and skill information every day and save them on the server, and then show the information to the user in some readable fashion.
My version of the tracker has five main features:
Tracker hiscores show who have gained most xp during the month. This adds some friendly competition.
Comparison feature allows the user to select any two dates, which have xp data, and then the program will show how much their skill levels, xp and hiscore ranks have changed.
Xp calendar is completely my own invention. It shows in a easily readable format how much xp and how many levels the player has gained each day. Settings can be used to show it in weeks, months or years instead of days.
Graphs show a more visual representation of experience gains.
Accomplishments shows all level ups and major experience achievements.
Towers puzzle solver
March 2018
Towers is one of the many puzzle types in the game's treasure hunting minigame. The goal of the puzzle is to figure out correct values for a grid, where each value describes a tower's height. On edges of the grid are numbers that have been given. Each number tells how many towers are visible from that position (horizontally or vertically). Shorter towers aren't visible behind the taller ones.
In this simple solver the user inputs the given values and a correct result is returned and shown to the user. This is useful for players who aren't as good with puzzles or just want to do the puzzles quickly.
March 2018
Towers is one of the many puzzle types in the game's treasure hunting minigame. The goal of the puzzle is to figure out correct values for a grid, where each value describes a tower's height. On edges of the grid are numbers that have been given. Each number tells how many towers are visible from that position (horizontally or vertically). Shorter towers aren't visible behind the taller ones.
In this simple solver the user inputs the given values and a correct result is returned and shown to the user. This is useful for players who aren't as good with puzzles or just want to do the puzzles quickly.
Guides
September 2012 - Present
This isn't exactly programming related, but as a guide writer I have also done various RuneScape guides. As of 23.4.2016 I have written over 169,000 words worth of guide text (in Finnish, only including major projects) and edited thousands of images.
I specialise especially in lore guides, in which I tell about the history of the game world and its characters in very great detail. Most of my text count comes from those, but I have also done several more instructive guides, such as quest guides.
September 2012 - Present
This isn't exactly programming related, but as a guide writer I have also done various RuneScape guides. As of 23.4.2016 I have written over 169,000 words worth of guide text (in Finnish, only including major projects) and edited thousands of images.
I specialise especially in lore guides, in which I tell about the history of the game world and its characters in very great detail. Most of my text count comes from those, but I have also done several more instructive guides, such as quest guides.