{"id":17,"date":"2021-01-12T04:11:00","date_gmt":"2021-01-12T04:11:00","guid":{"rendered":"http:\/\/www.maginobi.net\/main\/home\/"},"modified":"2022-04-18T23:27:38","modified_gmt":"2022-04-18T23:27:38","slug":"home","status":"publish","type":"page","link":"http:\/\/leif.sahyun.net\/main\/","title":{"rendered":"Home"},"content":{"rendered":"\n\n\n\n\nabout me\n\n\n\n\n\nHi&#8230;\n\n\n<p style=\"font-weight: 500; font-size: 14px; line-height: 2; text-align: left; color: rgb(93, 93, 93); font-family: roboto;\">I&#8217;m Leif Sahyun, a Software Engineer at <a href=\"https:\/\/www.alegeus.com\/\">Alegeus<\/a>&nbsp;and an alum of Worcester Polytechnic Institute (<a href=\"https:\/\/www.wpi.edu\/\">WPI<\/a>) Class of 2020. I love all kinds of technology, but I am particularly fond of robots and distributed systems. Some of the projects I&#8217;ve worked on in those areas can be found on my <a href=\"http:\/\/leif.sahyun.net\/projects\/\">academic projects page<\/a>, and my resume can be found <a href=\"http:\/\/leif.sahyun.net\/res\/resume.pdf\">here<\/a>.<\/p>\n\n\n<p style=\"font-family:roboto;font-weight:500;font-size:14px;line-height:2;text-align:left;color:#5d5d5d;\"><span style=\"background-color: transparent;\">On the academic projects page, you can also find summaries of the two major projects I worked on at WPI, my IQP and my MQP. I traveled to London for my Interactive Qualifying Project (IQP), where I worked on a team to enhance community engagement in the London Borough of Hounslow before, during, and after emergencies. In my Major Qualifying Project (MQP), I worked with a team to design a robotic Firefighting Remote Exploration Device to assist firefighters in exploring dangerous burning buildings.<\/span><\/p>\n\n\n<p style=\"font-family:roboto;font-weight:500;font-size:14px;line-height:2;text-align:left;color:#5d5d5d;\"><span style=\"background-color: transparent;\">In my free time, I enjoy hiking, juggling, and tabletop roleplaying games. This site&#8217;s blog will have mostly tech-y DIY project posts, but if you like D&amp;D or other RPGs, you might want to check out my hobby-oriented blog at <a href=\"http:\/\/www.maginobi.net\">maginobi.net<\/a>.<\/span><\/p>\n\n\n\n\n\n<p>leif sahyun<\/p>\n\n\n\n\n\n\n\n\n\nFeatured posts\n\n\n\n\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div pagelayer-id=\"0en5705\" class=\"pagelayer-row pagelayer-row-stretch-auto pagelayer-height-default\">\n\t\t\t\n<style pagelayer-style-id=\"0en5705\">[pagelayer-id=\"0en5705\"] .pagelayer-col-holder{padding: 10px}\n[pagelayer-id=\"0en5705\"] .pagelayer-background-overlay{-webkit-transition: all 400ms !important; transition: all 400ms !important}\n[pagelayer-id=\"0en5705\"] .pagelayer-svg-top .pagelayer-shape-fill{fill:#227bc3}\n[pagelayer-id=\"0en5705\"] .pagelayer-row-svg .pagelayer-svg-top{width:100%;height:100px}\n[pagelayer-id=\"0en5705\"] .pagelayer-svg-bottom .pagelayer-shape-fill{fill:#e44993}\n[pagelayer-id=\"0en5705\"] .pagelayer-row-svg .pagelayer-svg-bottom{width:100%;height:100px}\n<\/style>\n\t\t\t\n<div class=\"pagelayer-row-holder pagelayer-row pagelayer-auto pagelayer-width-auto\">\n\n<div pagelayer-id=\"ptd5538\" class=\"pagelayer-col\">\n\t\t\t\n<style pagelayer-style-id=\"ptd5538\">[pagelayer-id=\"ptd5538\"] .pagelayer-col-holder > div:not(:last-child){margin-bottom: 15px}\n[pagelayer-id=\"ptd5538\"] .pagelayer-background-overlay{-webkit-transition: all 400ms !important; transition: all 400ms !important}\n<\/style>\n\t\t\t\t\n<div class=\"pagelayer-col-holder\">\n\n\n<ul class=\"wp-block-latest-posts__list has-dates wp-block-latest-posts\"><li><div class=\"wp-block-latest-posts__featured-image\"><a href=\"http:\/\/leif.sahyun.net\/main\/?p=249\" aria-label=\"Routing Algorithms for Robotics\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"168\" src=\"http:\/\/leif.sahyun.net\/main\/wp-content\/uploads\/2026\/01\/RoutingSimExample-300x168.png\" class=\"attachment-medium size-medium wp-post-image\" alt=\"\" style=\"\" srcset=\"http:\/\/leif.sahyun.net\/main\/wp-content\/uploads\/2026\/01\/RoutingSimExample-300x168.png 300w, http:\/\/leif.sahyun.net\/main\/wp-content\/uploads\/2026\/01\/RoutingSimExample-768x431.png 768w, http:\/\/leif.sahyun.net\/main\/wp-content\/uploads\/2026\/01\/RoutingSimExample.png 963w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/div><a class=\"wp-block-latest-posts__post-title\" href=\"http:\/\/leif.sahyun.net\/main\/?p=249\">Routing Algorithms for Robotics<\/a><time datetime=\"2026-01-03T21:50:53+00:00\" class=\"wp-block-latest-posts__post-date\">January 3, 2026<\/time><div class=\"wp-block-latest-posts__post-excerpt\">In robotics applications where large numbers of robots work together such as robotic swarms or fleets of warehouse robots organizing pallets, algorithms are needed to efficiently route each robot to its destination. Frequently, these systems are modeled as directed graph networks, with nodes indicating possible robot destinations and edges for viable paths not colliding with\u2026 <a class=\"wp-block-latest-posts__read-more\" href=\"http:\/\/leif.sahyun.net\/main\/?p=249\" rel=\"noopener noreferrer\">Read more<span class=\"screen-reader-text\">: Routing Algorithms for Robotics<\/span><\/a><\/div><\/li>\n<li><div class=\"wp-block-latest-posts__featured-image\"><a href=\"http:\/\/leif.sahyun.net\/main\/?p=235\" aria-label=\"Why Object Oriented Inheritance Is Bad and How to Fix It\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"202\" src=\"http:\/\/leif.sahyun.net\/main\/wp-content\/uploads\/2026\/01\/PlatypusTaxonomy.drawio-300x202.png\" class=\"attachment-medium size-medium wp-post-image\" alt=\"\" style=\"\" srcset=\"http:\/\/leif.sahyun.net\/main\/wp-content\/uploads\/2026\/01\/PlatypusTaxonomy.drawio-300x202.png 300w, http:\/\/leif.sahyun.net\/main\/wp-content\/uploads\/2026\/01\/PlatypusTaxonomy.drawio.png 343w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/div><a class=\"wp-block-latest-posts__post-title\" href=\"http:\/\/leif.sahyun.net\/main\/?p=235\">Why Object Oriented Inheritance Is Bad and How to Fix It<\/a><time datetime=\"2026-01-02T05:13:50+00:00\" class=\"wp-block-latest-posts__post-date\">January 2, 2026<\/time><div class=\"wp-block-latest-posts__post-excerpt\">Inheritance in object-oriented design can be a useful concept for organizing code and reusing functionality. At its core, inheritance allows a new class to derive properties and behaviors from an existing class which allows reusing functionality without duplicating it. By inheriting from a base class, the subclass automatically gains access to all the parent&#8217;s public\u2026 <a class=\"wp-block-latest-posts__read-more\" href=\"http:\/\/leif.sahyun.net\/main\/?p=235\" rel=\"noopener noreferrer\">Read more<span class=\"screen-reader-text\">: Why Object Oriented Inheritance Is Bad and How to Fix It<\/span><\/a><\/div><\/li>\n<li><div class=\"wp-block-latest-posts__featured-image\"><a href=\"http:\/\/leif.sahyun.net\/main\/?p=1\" aria-label=\"Tips For Hosting Node.js Apps With cPanel\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"184\" src=\"http:\/\/leif.sahyun.net\/main\/wp-content\/uploads\/2021\/01\/nodejs-new-pantone-black-300x184.jpg\" class=\"attachment-medium size-medium wp-post-image\" alt=\"\" style=\"\" srcset=\"http:\/\/leif.sahyun.net\/main\/wp-content\/uploads\/2021\/01\/nodejs-new-pantone-black-300x184.jpg 300w, http:\/\/leif.sahyun.net\/main\/wp-content\/uploads\/2021\/01\/nodejs-new-pantone-black-768x470.jpg 768w, http:\/\/leif.sahyun.net\/main\/wp-content\/uploads\/2021\/01\/nodejs-new-pantone-black.jpg 800w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/div><a class=\"wp-block-latest-posts__post-title\" href=\"http:\/\/leif.sahyun.net\/main\/?p=1\">Tips For Hosting Node.js Apps With cPanel<\/a><time datetime=\"2021-01-12T03:48:50+00:00\" class=\"wp-block-latest-posts__post-date\">January 12, 2021<\/time><div class=\"wp-block-latest-posts__post-excerpt\">Setup Guide You can setup Node.js apps through cPanel by going to the &#8220;Setup Node.js App&#8221; button, clicking &#8220;Create Application&#8221; and filling out the details there, including application root, url, and startup file. The Application Root tells the server where your application code is stored. The&nbsp;Application Url&nbsp;determines what public url your application will be accessible\u2026 <a class=\"wp-block-latest-posts__read-more\" href=\"http:\/\/leif.sahyun.net\/main\/?p=1\" rel=\"noopener noreferrer\">Read more<span class=\"screen-reader-text\">: Tips For Hosting Node.js Apps With cPanel<\/span><\/a><\/div><\/li>\n<\/ul>\n\n\n<\/div><\/div><\/div><\/div>\n<\/div>\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"pagelayer_contact_templates":[],"_pagelayer_content":"","footnotes":""},"class_list":["post-17","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"http:\/\/leif.sahyun.net\/main\/index.php?rest_route=\/wp\/v2\/pages\/17","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/leif.sahyun.net\/main\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/leif.sahyun.net\/main\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/leif.sahyun.net\/main\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/leif.sahyun.net\/main\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=17"}],"version-history":[{"count":28,"href":"http:\/\/leif.sahyun.net\/main\/index.php?rest_route=\/wp\/v2\/pages\/17\/revisions"}],"predecessor-version":[{"id":228,"href":"http:\/\/leif.sahyun.net\/main\/index.php?rest_route=\/wp\/v2\/pages\/17\/revisions\/228"}],"wp:attachment":[{"href":"http:\/\/leif.sahyun.net\/main\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=17"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}