{"id":32,"date":"2025-11-13T08:19:18","date_gmt":"2025-11-13T08:19:18","guid":{"rendered":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/?page_id=32"},"modified":"2026-02-04T06:13:40","modified_gmt":"2026-02-04T06:13:40","slug":"skills","status":"publish","type":"page","link":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/skills\/","title":{"rendered":"Skills and Projects"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"32\" class=\"elementor elementor-32\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d25a341 e-flex e-con-boxed e-con e-parent\" data-id=\"d25a341\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d170226 e-con-full e-flex e-con e-parent\" data-id=\"d170226\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ace4db0 elementor-widget elementor-widget-heading\" data-id=\"ace4db0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Projects<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0439e44 elementor-widget elementor-widget-heading\" data-id=\"0439e44\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">Here are some Javascript and React projects I've made<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-23b2817 e-n-tabs-mobile elementor-widget elementor-widget-n-tabs\" data-id=\"23b2817\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;horizontal_scroll&quot;:&quot;disable&quot;}\" data-widget_type=\"nested-tabs.default\">\n\t\t\t\t\t\t\t<div class=\"e-n-tabs\" data-widget-number=\"37431319\" aria-label=\"Tabs. Open items with Enter or Space, close with Escape and navigate using the Arrow keys.\">\n\t\t\t<div class=\"e-n-tabs-heading\" role=\"tablist\">\n\t\t\t\t\t<button id=\"e-n-tab-title-374313191\" data-tab-title-id=\"e-n-tab-title-374313191\" class=\"e-n-tab-title\" aria-selected=\"true\" data-tab-index=\"1\" role=\"tab\" tabindex=\"0\" aria-controls=\"e-n-tab-content-374313191\" style=\"--n-tabs-title-order: 1;\">\n\t\t\t\t\t\t<span class=\"e-n-tab-title-text\">\n\t\t\t\tTic-Tac-Toe\t\t\t<\/span>\n\t\t<\/button>\n\t\t\t\t<button id=\"e-n-tab-title-374313192\" data-tab-title-id=\"e-n-tab-title-374313192\" class=\"e-n-tab-title\" aria-selected=\"false\" data-tab-index=\"2\" role=\"tab\" tabindex=\"-1\" aria-controls=\"e-n-tab-content-374313192\" style=\"--n-tabs-title-order: 2;\">\n\t\t\t\t\t\t<span class=\"e-n-tab-title-text\">\n\t\t\t\tPok\u00e9mon api\t\t\t<\/span>\n\t\t<\/button>\n\t\t\t\t<button id=\"e-n-tab-title-374313193\" data-tab-title-id=\"e-n-tab-title-374313193\" class=\"e-n-tab-title\" aria-selected=\"false\" data-tab-index=\"3\" role=\"tab\" tabindex=\"-1\" aria-controls=\"e-n-tab-content-374313193\" style=\"--n-tabs-title-order: 3;\">\n\t\t\t\t\t\t<span class=\"e-n-tab-title-text\">\n\t\t\t\tTime\t\t\t<\/span>\n\t\t<\/button>\n\t\t\t\t\t<\/div>\n\t\t\t<div class=\"e-n-tabs-content\">\n\t\t\t\t<div id=\"e-n-tab-content-374313191\" role=\"tabpanel\" aria-labelledby=\"e-n-tab-title-374313191\" data-tab-index=\"1\" style=\"--n-tabs-title-order: 1;\" class=\"e-active elementor-element elementor-element-725af30 e-con-full e-grid e-con e-child\" data-id=\"725af30\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-287beb2 elementor-widget elementor-widget-text-editor\" data-id=\"287beb2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>This is a simple 2-player tic-tac-toe that you will be able to play with someone or against yourself. (x to start)<\/p><p>Also found at: <a href=\"https:\/\/tic-tac-toe-by-boireas.netlify.app\/\">https:\/\/tic-tac-toe-by-boireas.netlify.app\/<\/a><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-8205e54 e-con-full e-grid e-con e-child\" data-id=\"8205e54\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e9e32a4 elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"e9e32a4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<iframe src=\"https:\/\/tic-tac-toe-by-boireas.netlify.app\/\" width=\"100%\" height=\"262px\" style=\"border:1px solid #ccc; background-color: white;\"><\/iframe>\r\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3ceb70c elementor-widget elementor-widget-video\" data-id=\"3ceb70c\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;video_type&quot;:&quot;hosted&quot;,&quot;controls&quot;:&quot;yes&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t\t\t\t<div class=\"e-hosted-video elementor-wrapper elementor-open-inline\">\n\t\t\t\t\t<video class=\"elementor-video\" src=\"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/wp-content\/uploads\/2025\/11\/2025-11-20-10-16-43.mp4\" controls=\"\" preload=\"metadata\" controlsList=\"nodownload\"><\/video>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div id=\"e-n-tab-content-374313192\" role=\"tabpanel\" aria-labelledby=\"e-n-tab-title-374313192\" data-tab-index=\"2\" style=\"--n-tabs-title-order: 2;\" class=\" elementor-element elementor-element-6ef571d e-con-full e-flex e-con e-child\" data-id=\"6ef571d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-60a1b64 elementor-widget elementor-widget-text-editor\" data-id=\"60a1b64\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>This search engine allows you to find any Pok\u00e9mon by name or ID<\/p><p>Also found at: <a href=\"https:\/\/pokemonsearchengine.netlify.app\/\">https:\/\/pokemonsearchengine.netlify.app\/<\/a><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-387f0a5 elementor-widget elementor-widget-html\" data-id=\"387f0a5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<iframe src=\"https:\/\/pokemonsearchengine.netlify.app\/\" width=\"100%\" height=\"600px\" style=\"border:1px solid #ccc;\"><\/iframe>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div id=\"e-n-tab-content-374313193\" role=\"tabpanel\" aria-labelledby=\"e-n-tab-title-374313193\" data-tab-index=\"3\" style=\"--n-tabs-title-order: 3;\" class=\" elementor-element elementor-element-aee820d e-flex e-con-boxed e-con e-child\" data-id=\"aee820d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-acf4799 elementor-widget elementor-widget-text-editor\" data-id=\"acf4799\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>This is just a simple clock utilizing Javascript.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-06bc6a6 elementor-widget elementor-widget-html\" data-id=\"06bc6a6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n    <meta charset=\"UTF-8\">\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    <title>Digitaalinen kello<\/title>\r\n    <style>\r\n        #kello  {\r\n            font-size: 48px;\r\n            font-weight: bold;\r\n            margin-top: 20px;\r\n        }\r\n    <\/style>\r\n<\/head>\r\n<body>\r\n    <h2>Current time<\/h2>\r\n    <div id=\"kello\"><\/div>\r\n\r\n    <script>\r\n        function naytaAika() {\r\n            let nyt = new Date();\r\n            let tunnit = nyt.getHours();\r\n            let minuutit = nyt.getMinutes();\r\n            let sekunnit = nyt.getSeconds();\r\n\r\n            minuutit = minuutit < 10 ? '0' + minuutit : minuutit;\r\n            sekunnit = sekunnit < 10 ? '0' + sekunnit : sekunnit;\r\n\r\n            let aika = tunnit + ':' + minuutit + ':' + sekunnit;\r\n            document.getElementById('kello').textContent = aika;\r\n        }\r\n\r\n        setInterval(naytaAika, 1000);\r\n        naytaAika();\r\n    <\/script>\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fcabb30 elementor-widget elementor-widget-heading\" data-id=\"fcabb30\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">Here are some python games and codes<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f4ddba7 e-n-tabs-mobile elementor-widget elementor-widget-n-tabs\" data-id=\"f4ddba7\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;horizontal_scroll&quot;:&quot;disable&quot;}\" data-widget_type=\"nested-tabs.default\">\n\t\t\t\t\t\t\t<div class=\"e-n-tabs\" data-widget-number=\"256760743\" aria-label=\"Tabs. Open items with Enter or Space, close with Escape and navigate using the Arrow keys.\">\n\t\t\t<div class=\"e-n-tabs-heading\" role=\"tablist\">\n\t\t\t\t\t<button id=\"e-n-tab-title-2567607431\" data-tab-title-id=\"e-n-tab-title-2567607431\" class=\"e-n-tab-title\" aria-selected=\"true\" data-tab-index=\"1\" role=\"tab\" tabindex=\"0\" aria-controls=\"e-n-tab-content-2567607431\" style=\"--n-tabs-title-order: 1;\">\n\t\t\t\t\t\t<span class=\"e-n-tab-title-text\">\n\t\t\t\tDodging game\t\t\t<\/span>\n\t\t<\/button>\n\t\t\t\t<button id=\"e-n-tab-title-2567607432\" data-tab-title-id=\"e-n-tab-title-2567607432\" class=\"e-n-tab-title\" aria-selected=\"false\" data-tab-index=\"2\" role=\"tab\" tabindex=\"-1\" aria-controls=\"e-n-tab-content-2567607432\" style=\"--n-tabs-title-order: 2;\">\n\t\t\t\t\t\t<span class=\"e-n-tab-title-text\">\n\t\t\t\tSpace Shooter\t\t\t<\/span>\n\t\t<\/button>\n\t\t\t\t<button id=\"e-n-tab-title-2567607433\" data-tab-title-id=\"e-n-tab-title-2567607433\" class=\"e-n-tab-title\" aria-selected=\"false\" data-tab-index=\"3\" role=\"tab\" tabindex=\"-1\" aria-controls=\"e-n-tab-content-2567607433\" style=\"--n-tabs-title-order: 3;\">\n\t\t\t\t\t\t<span class=\"e-n-tab-title-text\">\n\t\t\t\tDodging 2.0\t\t\t<\/span>\n\t\t<\/button>\n\t\t\t\t\t<\/div>\n\t\t\t<div class=\"e-n-tabs-content\">\n\t\t\t\t<div id=\"e-n-tab-content-2567607431\" role=\"tabpanel\" aria-labelledby=\"e-n-tab-title-2567607431\" data-tab-index=\"1\" style=\"--n-tabs-title-order: 1;\" class=\"e-active elementor-element elementor-element-84b0b1b e-con-full e-flex e-con e-child\" data-id=\"84b0b1b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-235c604 elementor-widget elementor-widget-text-editor\" data-id=\"235c604\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>This is a simple block dodging game created with python pygame.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-fc61a4e e-grid e-con-boxed e-con e-child\" data-id=\"fc61a4e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-532bb79 elementor-widget elementor-widget-video\" data-id=\"532bb79\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;video_type&quot;:&quot;hosted&quot;,&quot;controls&quot;:&quot;yes&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t\t\t\t<div class=\"e-hosted-video elementor-wrapper elementor-open-inline\">\n\t\t\t\t\t<video class=\"elementor-video\" src=\"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/wp-content\/uploads\/2025\/11\/Videoprojekti-1.mp4\" controls=\"\" preload=\"metadata\" controlsList=\"nodownload\"><\/video>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-20dc829 elementor-widget elementor-widget-image\" data-id=\"20dc829\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"675\" height=\"906\" src=\"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/wp-content\/uploads\/2025\/11\/Nayttokuva-2025-11-20-083807.png\" class=\"attachment-large size-large wp-image-256\" alt=\"\" srcset=\"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/wp-content\/uploads\/2025\/11\/Nayttokuva-2025-11-20-083807.png 675w, https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/wp-content\/uploads\/2025\/11\/Nayttokuva-2025-11-20-083807-224x300.png 224w\" sizes=\"(max-width: 675px) 100vw, 675px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f4569f8 elementor-widget elementor-widget-image\" data-id=\"f4569f8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"696\" height=\"853\" src=\"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/wp-content\/uploads\/2025\/11\/Nayttokuva-2025-11-20-084208.png\" class=\"attachment-large size-large wp-image-258\" alt=\"\" srcset=\"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/wp-content\/uploads\/2025\/11\/Nayttokuva-2025-11-20-084208.png 696w, https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/wp-content\/uploads\/2025\/11\/Nayttokuva-2025-11-20-084208-245x300.png 245w\" sizes=\"(max-width: 696px) 100vw, 696px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div id=\"e-n-tab-content-2567607432\" role=\"tabpanel\" aria-labelledby=\"e-n-tab-title-2567607432\" data-tab-index=\"2\" style=\"--n-tabs-title-order: 2;\" class=\" elementor-element elementor-element-7554a60 e-con-full e-flex e-con e-child\" data-id=\"7554a60\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d99c452 elementor-widget elementor-widget-text-editor\" data-id=\"d99c452\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>This project is an asteroid shooter focused on accuracy and resource management. You have a limited number of bullets to destroy incoming asteroids while enemy ships continuously attack to protect them. Enemies cannot be defeated, so the challenge comes from dodging their fire while clearing the asteroids. When all 30 asteroids are destroyed, your ammunition is fully restored and a new enemy appears with increased speed, making each cycle more difficult. You lose if you&#8217;re hit three times or if you run out of bullets. Once you reach 200 points, your reload amount is reduced to 35 bullets, raising the difficulty even further as the game progresses.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3ac2888 e-grid e-con-boxed e-con e-child\" data-id=\"3ac2888\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-febe5a9 elementor-widget elementor-widget-video\" data-id=\"febe5a9\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;video_type&quot;:&quot;hosted&quot;,&quot;controls&quot;:&quot;yes&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t\t\t\t<div class=\"e-hosted-video elementor-wrapper elementor-open-inline\">\n\t\t\t\t\t<video class=\"elementor-video\" src=\"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/wp-content\/uploads\/2025\/11\/2025-11-20-09-52-34.mp4\" controls=\"\" preload=\"metadata\" controlsList=\"nodownload\"><\/video>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c50ea9f elementor-widget elementor-widget-video\" data-id=\"c50ea9f\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;video_type&quot;:&quot;hosted&quot;,&quot;controls&quot;:&quot;yes&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t\t\t\t<div class=\"e-hosted-video elementor-wrapper elementor-open-inline\">\n\t\t\t\t\t<video class=\"elementor-video\" src=\"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/wp-content\/uploads\/2025\/11\/Videoprojekti-2.mp4\" controls=\"\" preload=\"metadata\" controlsList=\"nodownload\"><\/video>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div id=\"e-n-tab-content-2567607433\" role=\"tabpanel\" aria-labelledby=\"e-n-tab-title-2567607433\" data-tab-index=\"3\" style=\"--n-tabs-title-order: 3;\" class=\" elementor-element elementor-element-82a5c0e e-con-full e-flex e-con e-child\" data-id=\"82a5c0e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8760954 elementor-widget elementor-widget-text-editor\" data-id=\"8760954\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>This is an alternative version of the original Dodging game, featuring three selectable difficulty levels. The first mode is accessible to anyone and offers a relaxed experience. The second mode increases the challenge and requires solid reaction speed to succeed. The third mode reaches an extreme difficulty where success relies heavily on sharp reflexes and a fair amount of luck, making it significantly harder than the previous two modes.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6720899 e-grid e-con-boxed e-con e-child\" data-id=\"6720899\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-44502ec elementor-widget elementor-widget-video\" data-id=\"44502ec\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;video_type&quot;:&quot;hosted&quot;,&quot;controls&quot;:&quot;yes&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t\t\t\t<div class=\"e-hosted-video elementor-wrapper elementor-open-inline\">\n\t\t\t\t\t<video class=\"elementor-video\" src=\"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/wp-content\/uploads\/2025\/11\/Videoprojekti-3.mp4\" controls=\"\" preload=\"metadata\" controlsList=\"nodownload\"><\/video>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6a0323c elementor-widget elementor-widget-video\" data-id=\"6a0323c\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;video_type&quot;:&quot;hosted&quot;,&quot;controls&quot;:&quot;yes&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t\t\t\t<div class=\"e-hosted-video elementor-wrapper elementor-open-inline\">\n\t\t\t\t\t<video class=\"elementor-video\" src=\"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/wp-content\/uploads\/2025\/11\/2025-11-20-10-40-56.mp4\" controls=\"\" preload=\"metadata\" controlsList=\"nodownload\"><\/video>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-9ab4404 e-con-full e-flex e-con e-parent\" data-id=\"9ab4404\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6a82ea5 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"6a82ea5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4b87dec elementor-widget elementor-widget-heading\" data-id=\"4b87dec\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Skill bar<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cbc4328 elementor-widget elementor-widget-progress\" data-id=\"cbc4328\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"progress.default\">\n\t\t\t\t\t\t\t\t<span class=\"elementor-title\" id=\"elementor-progress-bar-cbc4328\">\n\t\t\t\tProgramming\t\t\t<\/span>\n\t\t\n\t\t<div aria-labelledby=\"elementor-progress-bar-cbc4328\" class=\"elementor-progress-wrapper\" role=\"progressbar\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"99\" aria-valuetext=\"99% (html)\">\n\t\t\t<div class=\"elementor-progress-bar\" data-max=\"99\">\n\t\t\t\t<span class=\"elementor-progress-text\">html<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-progress-percentage\">99%<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-d0015c1 e-con-full e-flex e-con e-parent\" data-id=\"d0015c1\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-de13bb0 elementor-widget elementor-widget-progress\" data-id=\"de13bb0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"progress.default\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-progress-wrapper\" role=\"progressbar\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"40\" aria-valuetext=\"40% (Javascript)\">\n\t\t\t<div class=\"elementor-progress-bar\" data-max=\"40\">\n\t\t\t\t<span class=\"elementor-progress-text\">Javascript<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-progress-percentage\">40%<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-076e524 elementor-widget elementor-widget-progress\" data-id=\"076e524\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"progress.default\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-progress-wrapper\" role=\"progressbar\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"90\" aria-valuetext=\"90% (css)\">\n\t\t\t<div class=\"elementor-progress-bar\" data-max=\"90\">\n\t\t\t\t<span class=\"elementor-progress-text\">css<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-progress-percentage\">90%<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-21e0f7d elementor-widget elementor-widget-progress\" data-id=\"21e0f7d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"progress.default\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-progress-wrapper\" role=\"progressbar\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"80\" aria-valuetext=\"80% (React)\">\n\t\t\t<div class=\"elementor-progress-bar\" data-max=\"80\">\n\t\t\t\t<span class=\"elementor-progress-text\">React<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-progress-percentage\">80%<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-313fdd3 elementor-widget elementor-widget-progress\" data-id=\"313fdd3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"progress.default\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-progress-wrapper\" role=\"progressbar\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"68\" aria-valuetext=\"68% (Python)\">\n\t\t\t<div class=\"elementor-progress-bar\" data-max=\"68\">\n\t\t\t\t<span class=\"elementor-progress-text\">Python<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-progress-percentage\">68%<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2fea0e6 elementor-widget elementor-widget-progress\" data-id=\"2fea0e6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"progress.default\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-progress-wrapper\" role=\"progressbar\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"16\" aria-valuetext=\"16% (Unity)\">\n\t\t\t<div class=\"elementor-progress-bar\" data-max=\"16\">\n\t\t\t\t<span class=\"elementor-progress-text\">Unity<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-progress-percentage\">16%<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-28f89d8 elementor-widget elementor-widget-progress\" data-id=\"28f89d8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"progress.default\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-progress-wrapper\" role=\"progressbar\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"50\" aria-valuetext=\"50% (Database)\">\n\t\t\t<div class=\"elementor-progress-bar\" data-max=\"50\">\n\t\t\t\t<span class=\"elementor-progress-text\">Database<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-progress-percentage\">50%<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0b57102 elementor-widget elementor-widget-progress\" data-id=\"0b57102\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"progress.default\">\n\t\t\t\t\t\t\t\t<span class=\"elementor-title\" id=\"elementor-progress-bar-0b57102\">\n\t\t\t\tDesign\t\t\t<\/span>\n\t\t\n\t\t<div aria-labelledby=\"elementor-progress-bar-0b57102\" class=\"elementor-progress-wrapper\" role=\"progressbar\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"60\" aria-valuetext=\"60% (Blender)\">\n\t\t\t<div class=\"elementor-progress-bar\" data-max=\"60\">\n\t\t\t\t<span class=\"elementor-progress-text\">Blender<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-progress-percentage\">60%<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d6ae015 elementor-widget elementor-widget-progress\" data-id=\"d6ae015\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"progress.default\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-progress-wrapper\" role=\"progressbar\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"42\" aria-valuetext=\"42% (Photoshop)\">\n\t\t\t<div class=\"elementor-progress-bar\" data-max=\"42\">\n\t\t\t\t<span class=\"elementor-progress-text\">Photoshop<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-progress-percentage\">42%<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f1ebff3 elementor-widget elementor-widget-progress\" data-id=\"f1ebff3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"progress.default\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-progress-wrapper\" role=\"progressbar\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"46\" aria-valuetext=\"46% (Illustrator)\">\n\t\t\t<div class=\"elementor-progress-bar\" data-max=\"46\">\n\t\t\t\t<span class=\"elementor-progress-text\">Illustrator<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-progress-percentage\">46%<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-aa32b93 elementor-widget elementor-widget-progress\" data-id=\"aa32b93\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"progress.default\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-progress-wrapper\" role=\"progressbar\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"54\" aria-valuetext=\"54% (XD)\">\n\t\t\t<div class=\"elementor-progress-bar\" data-max=\"54\">\n\t\t\t\t<span class=\"elementor-progress-text\">XD<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-progress-percentage\">54%<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a9d031c elementor-widget elementor-widget-progress\" data-id=\"a9d031c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"progress.default\">\n\t\t\t\t\t\n\t\t<div class=\"elementor-progress-wrapper\" role=\"progressbar\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"54\" aria-valuetext=\"54% (WordPress)\">\n\t\t\t<div class=\"elementor-progress-bar\" data-max=\"54\">\n\t\t\t\t<span class=\"elementor-progress-text\">WordPress<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-progress-percentage\">54%<\/span>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4738c4b e-con-full e-flex e-con e-parent\" data-id=\"4738c4b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a266a5b elementor-widget elementor-widget-spacer\" data-id=\"a266a5b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Projects Here are some Javascript and React projects I&#8217;ve made Tic-Tac-Toe Pok\u00e9mon api Time This is a simple 2-player tic-tac-toe [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-32","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Skills and Projects - Taneli Ly\u00f6ri<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/skills\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Skills and Projects - Taneli Ly\u00f6ri\" \/>\n<meta property=\"og:description\" content=\"Projects Here are some Javascript and React projects I&#8217;ve made Tic-Tac-Toe Pok\u00e9mon api Time This is a simple 2-player tic-tac-toe [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/skills\/\" \/>\n<meta property=\"og:site_name\" content=\"Taneli Ly\u00f6ri\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-04T06:13:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/wp-content\/uploads\/2025\/11\/Nayttokuva-2025-11-20-083807.png\" \/>\n\t<meta property=\"og:image:width\" content=\"675\" \/>\n\t<meta property=\"og:image:height\" content=\"906\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/eportfoliot.redu.fi\\\/eportfoliot\\\/tanelilyori\\\/skills\\\/\",\"url\":\"https:\\\/\\\/eportfoliot.redu.fi\\\/eportfoliot\\\/tanelilyori\\\/skills\\\/\",\"name\":\"Skills and Projects - Taneli Ly\u00f6ri\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/eportfoliot.redu.fi\\\/eportfoliot\\\/tanelilyori\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/eportfoliot.redu.fi\\\/eportfoliot\\\/tanelilyori\\\/skills\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/eportfoliot.redu.fi\\\/eportfoliot\\\/tanelilyori\\\/skills\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/eportfoliot.redu.fi\\\/eportfoliot\\\/tanelilyori\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/Nayttokuva-2025-11-20-083807.png\",\"datePublished\":\"2025-11-13T08:19:18+00:00\",\"dateModified\":\"2026-02-04T06:13:40+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/eportfoliot.redu.fi\\\/eportfoliot\\\/tanelilyori\\\/skills\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/eportfoliot.redu.fi\\\/eportfoliot\\\/tanelilyori\\\/skills\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/eportfoliot.redu.fi\\\/eportfoliot\\\/tanelilyori\\\/skills\\\/#primaryimage\",\"url\":\"https:\\\/\\\/eportfoliot.redu.fi\\\/eportfoliot\\\/tanelilyori\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/Nayttokuva-2025-11-20-083807.png\",\"contentUrl\":\"https:\\\/\\\/eportfoliot.redu.fi\\\/eportfoliot\\\/tanelilyori\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/Nayttokuva-2025-11-20-083807.png\",\"width\":675,\"height\":906},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/eportfoliot.redu.fi\\\/eportfoliot\\\/tanelilyori\\\/skills\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/eportfoliot.redu.fi\\\/eportfoliot\\\/tanelilyori\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Skills and Projects\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/eportfoliot.redu.fi\\\/eportfoliot\\\/tanelilyori\\\/#website\",\"url\":\"https:\\\/\\\/eportfoliot.redu.fi\\\/eportfoliot\\\/tanelilyori\\\/\",\"name\":\"Taneli Ly\u00f6ri\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/eportfoliot.redu.fi\\\/eportfoliot\\\/tanelilyori\\\/#\\\/schema\\\/person\\\/349b0f25fbdb120b8b8a7bd66d95af10\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/eportfoliot.redu.fi\\\/eportfoliot\\\/tanelilyori\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/eportfoliot.redu.fi\\\/eportfoliot\\\/tanelilyori\\\/#\\\/schema\\\/person\\\/349b0f25fbdb120b8b8a7bd66d95af10\",\"name\":\"taneli.lyori\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a1a7e187909493a7fda365010a4f07043ed325b3c24c9462a8cfb16801d4594c?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a1a7e187909493a7fda365010a4f07043ed325b3c24c9462a8cfb16801d4594c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a1a7e187909493a7fda365010a4f07043ed325b3c24c9462a8cfb16801d4594c?s=96&d=mm&r=g\",\"caption\":\"taneli.lyori\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a1a7e187909493a7fda365010a4f07043ed325b3c24c9462a8cfb16801d4594c?s=96&d=mm&r=g\"},\"sameAs\":[\"https:\\\/\\\/eportfoliot.redu.fi\\\/eportfoliot\\\/tanelilyori\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Skills and Projects - Taneli Ly\u00f6ri","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/skills\/","og_locale":"en_US","og_type":"article","og_title":"Skills and Projects - Taneli Ly\u00f6ri","og_description":"Projects Here are some Javascript and React projects I&#8217;ve made Tic-Tac-Toe Pok\u00e9mon api Time This is a simple 2-player tic-tac-toe [&hellip;]","og_url":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/skills\/","og_site_name":"Taneli Ly\u00f6ri","article_modified_time":"2026-02-04T06:13:40+00:00","og_image":[{"width":675,"height":906,"url":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/wp-content\/uploads\/2025\/11\/Nayttokuva-2025-11-20-083807.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/skills\/","url":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/skills\/","name":"Skills and Projects - Taneli Ly\u00f6ri","isPartOf":{"@id":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/#website"},"primaryImageOfPage":{"@id":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/skills\/#primaryimage"},"image":{"@id":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/skills\/#primaryimage"},"thumbnailUrl":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/wp-content\/uploads\/2025\/11\/Nayttokuva-2025-11-20-083807.png","datePublished":"2025-11-13T08:19:18+00:00","dateModified":"2026-02-04T06:13:40+00:00","breadcrumb":{"@id":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/skills\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/skills\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/skills\/#primaryimage","url":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/wp-content\/uploads\/2025\/11\/Nayttokuva-2025-11-20-083807.png","contentUrl":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/wp-content\/uploads\/2025\/11\/Nayttokuva-2025-11-20-083807.png","width":675,"height":906},{"@type":"BreadcrumbList","@id":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/skills\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/"},{"@type":"ListItem","position":2,"name":"Skills and Projects"}]},{"@type":"WebSite","@id":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/#website","url":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/","name":"Taneli Ly\u00f6ri","description":"","publisher":{"@id":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/#\/schema\/person\/349b0f25fbdb120b8b8a7bd66d95af10"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/#\/schema\/person\/349b0f25fbdb120b8b8a7bd66d95af10","name":"taneli.lyori","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/a1a7e187909493a7fda365010a4f07043ed325b3c24c9462a8cfb16801d4594c?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a1a7e187909493a7fda365010a4f07043ed325b3c24c9462a8cfb16801d4594c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a1a7e187909493a7fda365010a4f07043ed325b3c24c9462a8cfb16801d4594c?s=96&d=mm&r=g","caption":"taneli.lyori"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/a1a7e187909493a7fda365010a4f07043ed325b3c24c9462a8cfb16801d4594c?s=96&d=mm&r=g"},"sameAs":["https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori"]}]}},"_links":{"self":[{"href":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/wp-json\/wp\/v2\/pages\/32","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/wp-json\/wp\/v2\/comments?post=32"}],"version-history":[{"count":135,"href":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/wp-json\/wp\/v2\/pages\/32\/revisions"}],"predecessor-version":[{"id":341,"href":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/wp-json\/wp\/v2\/pages\/32\/revisions\/341"}],"wp:attachment":[{"href":"https:\/\/eportfoliot.redu.fi\/eportfoliot\/tanelilyori\/wp-json\/wp\/v2\/media?parent=32"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}