Kaspie Codes (v1.1)
Polynomial
LeetCode
Project Euler
I started a web development project over the summer, as I thought it would be an excellent way to learn new skills and build something nice in the process. However, I disliked the idea of being dependent on subscription services like AWS, G-Cloud, etc. This opened up a new set of challenges that came with self-hosting. Here's what I currently use to operate my website:
So far in my web-devlopment journey, I realize my biggest weakness has been aesthetic design. There are an insane number of small CSS and Javascript nuances. If I don't know how to use a CSS property I can always figure it out via Stack Overflow. However, UI design isn't a skill you can master in a few months. There are many concepts like 'white spacing' and 'color palettes' that determine if a portfolio looks professional or crude.
From time to time, I'll visit the greats like brittanychiang.com or robbowen.digital for inspiration.
Since the v1.0, I've added a few animations, as well as this progress page that you are reading. The logo typing animation on the home page was fairly easy to accomplish in Javascript and added some personality to the portfolio. This progress page serves as a diary of sorts for my ongoing projects and other goals that I have.
This month, I leave home to study in college. I will be very busy, but there are a few things I hope to accomplish.
As it stands, Kasper Codes is a static website with no backend. Whenever I want to make a change or post progress updates on this page, I need to edit the static html and change the raw files on my server. Adding a backend database will make posting updates effortless, while distributing loading times evenly. For the database, I plan to use something free like Excel or Google Sheets API. Google Sheets as a database may seem preposterous (it is), but it's free of cost and storage is on the cloud. (I don't need to SSH everytime I post progress)
Like most Internet Service Providers, my ISP uses a dynamic IP address, which Cloudflare maps my domain name to. While my server has been up (roughly 3 weeks), Comcast has not changed my IP address but they inevitably will in the future, which will bring my server offline. To combat this, I plan to write a bash script to update the IP address in the Cloudflare DNS record. While I could update the DNS record manually, this would require I monitor the status of my server constantly. To save myself from stress, I will automate this process.
I had to redesign my Polynomial utility library due to a flaw I noticed recently. Ideally, a mathematical data type should have closure under operations.
int + int, int - int, int * int, and int / int all return the type int.
Like integers, polynomials are technically not closed under division. The workaround to this is
having the method 'Polynomial1.divide(Polynomial2)' change the value of Polynomial1 to the quotient
and return the remainder. This works out well because the quotient and remainder of polynomial division
will always fit the type Polynomial and no data is lost. My problem was my Polynomial class could only represent
integer coefficients while needing to implement polynomial division. This was a pretty serious problem given
some polynomials could not be divided without yielding non-integer quotients or remainders.
I wrote a Rational Number mini-library, and I quickly got carried away and wrote a math parser to test it. The rational number data type built consists of a BigInteger (Java math library) numerator and denominator. Representing rational numbers as simplified fractions offers superior theoretical precision, making it perfect for polynomial arithmetic.
Since implementing polynomials with rational coefficients, I've finished writing functions for integrals and derivatives as well as division. Now that I can calculate if one polynomial is divisible by another, I have the tools needed to start tackling some harder problems, namely the polynomial factoring algorithm.
When I brought this problem up to my algorithms professor last semester at Ohio State, he described it as a "hard problem" though I wasn't sure if he meant 'difficult' or 'NP-Hard'. The modern way of solving high degree polynomials involve approximations like Newton's Method and the Bisection Method. There is also no formula to solve polynomials of degree ≥ 5. By solve, I mean decompose the polynomial into a product of irreducible polynomial factors. This is similar to the root-finding problem, only root-finding also isolates complex roots.
If I can, I would much prefer to solve polynomials analytically instead of using approximations. While I don't have much knowledge in abstract algebra, I have a pretty good idea of where to start looking:
I am taking Math 3345 at Ohio State which should strengthen my background in theoretical math. Hopefully by the end of this semester, I would have learned enough to implement an existing algorithm or something similar.
"LeetCode is an online platform for coding interview preparation. The service provides coding and algorithmic problems intended for users to practice coding. LeetCode has gained popularity among job seekers and coding enthusiasts as a resource for technical interviews and coding competitions. . . LeetCode offers 3236 questions across its three levels of difficulty; with 801 questions categorized as easy, 1679 as medium, and 713 as hard. " - WIKIPEDIA
My goal is to stay sharp by challenging myself with coding problems and mental exercises. I believe that working in small amounts (≤ 1 hour) every day is a good strategy for me. From my previous experience, I know working too hard for long sessions is an easy way to burn out and lose consistency.
I plan to begin completing problems when I start autumn semester at Ohio State. Quality is more important than quantity in my opinion. Using the limited time I have, I prefer one fast and/or elegant solution over three brute-force solutions. I will be publicly posting my progress here periodically, as a form of accountability. If you (the person visiting my website) are reading this there isn't a progress update within the next few months, feel free to send shame via email: [email protected].
Happy Coding!
"Project Euler (named after Leonhard Euler) is a website dedicated to a series of computational problems intended to be solved with computer programs. The project attracts graduates and students interested in mathematics and computer programming. Since its creation in 2001 by Colin Hughes, Project Euler has gained notability and popularity worldwide. It includes 900 problems as of 14 July 2024, with a new one added approximately every week." -WIKIPEDIA
My goal is to stay sharp by challenging myself with coding problems and mental exercises. I believe that working in small amounts (≤ 1 hour) every day is a good strategy for me. From my previous experience, I know working too hard for long sessions is an easy way to burn out and lose consistency.
I plan to begin completing problems when I start autumn semester at Ohio State. Quality is more important than quantity in my opinion. Using the limited time I have, I prefer one fast and/or elegant solution over three brute-force solutions. I will be publicly posting my progress here periodically, as a form of accountability. If you (the person visiting my website) are reading this there isn't a progress update within the next few months, feel free to send shame via email: [email protected].
Happy Coding!
Kaspie Codes (v1.1)
Polynomial
LeetCode
Project Euler
I started a web development project over the summer, as I thought it would be an excellent way to learn new skills and build something nice in the process. However, I disliked the idea of being dependent on subscription services like AWS, G-Cloud, etc. This opened up a new set of challenges that came with self-hosting. Here's what I currently use to operate my website:
So far in my web-devlopment journey, I realize my biggest weakness has been aesthetic design. There are an insane number of small CSS and Javascript nuances. If I don't know how to use a CSS property I can always figure it out via Stack Overflow. However, UI design isn't a skill you can master in a few months. There are many concepts like 'white spacing' and 'color palettes' that determine if a portfolio looks professional or crude.
From time to time, I'll visit the greats like brittanychiang.com or robbowen.digital for inspiration.
Since the v1.0, I've added a few animations, as well as this progress page that you are reading. The logo typing animation on the home page was fairly easy to accomplish in Javascript and added some personality to the portfolio. This progress page serves as a diary of sorts for my ongoing projects and other goals that I have.
This month, I leave home to study in college. I will be very busy, but there are a few things I hope to accomplish.
As it stands, Kasper Codes is a static website with no backend. Whenever I want to make a change or post progress updates on this page, I need to edit the static html and change the raw files on my server. Adding a backend database will make posting updates effortless, while distributing loading times evenly. For the database, I plan to use something free like Excel or Google Sheets API. Google Sheets as a database may seem preposterous (it is), but it's free of cost and storage is on the cloud. (I don't need to SSH everytime I post progress)
Like most Internet Service Providers, my ISP uses a dynamic IP address, which Cloudflare maps my domain name to. While my server has been up (roughly 3 weeks), Comcast has not changed my IP address but they inevitably will in the future, which will bring my server offline. To combat this, I plan to write a bash script to update the IP address in the Cloudflare DNS record. While I could update the DNS record manually, this would require I monitor the status of my server constantly. To save myself from stress, I will automate this process.
I had to redesign my Polynomial utility library due to a flaw I noticed recently. Ideally, a mathematical data type should have closure under operations.
int + int, int - int, int * int, and int / int all return the type int.
Like integers, polynomials are technically not closed under division. The workaround to this is having the method 'Polynomial1.divide(Polynomial2)' change the value of Polynomial1 to the quotient and return the remainder. This works out well because the quotient and remainder of polynomial division will always fit the type Polynomial and no data is lost. My problem was my Polynomial class could only represent integer coefficients while needing to implement polynomial division. This was a pretty serious problem given some polynomials could not be divided without yielding non-integer quotients or remainders.
I wrote a Rational Number mini-library, and I quickly got carried away and wrote a math parser to test it. The rational number data type built consists of a BigInteger (Java math library) numerator and denominator. Representing rational numbers as simplified fractions offers superior theoretical precision, making it perfect for polynomial arithmetic.
Since implementing polynomials with rational coefficients, I've finished writing functions for integrals and derivatives as well as division. Now that I can calculate if one polynomial is divisible by another, I have the tools needed to start tackling some harder problems, namely the polynomial factoring algorithm.
When I brought this problem up to my algorithms professor last semester at Ohio State, he described it as a "hard problem" though I wasn't sure if he meant 'difficult' or 'NP-Hard'. The modern way of solving high degree polynomials involve approximations like Newton's Method and the Bisection Method. There is also no formula to solve polynomials of degree ≥ 5. By solve, I mean decompose the polynomial into a product of irreducible polynomial factors. This is similar to the root-finding problem, only root-finding also isolates complex roots.
If I can, I would much prefer to solve polynomials analytically instead of using approximations. While I don't have much knowledge in abstract algebra, I have a pretty good idea of where to start looking:
I am taking Math 3345 at Ohio State which should strengthen my background in theoretical math. Hopefully by the end of this semester, I would have learned enough to implement an existing algorithm or something similar.
"LeetCode is an online platform for coding interview preparation. The service provides coding and algorithmic problems intended for users to practice coding. LeetCode has gained popularity among job seekers and coding enthusiasts as a resource for technical interviews and coding competitions. . . LeetCode offers 3236 questions across its three levels of difficulty; with 801 questions categorized as easy, 1679 as medium, and 713 as hard. " - WIKIPEDIA
My goal is to stay sharp by challenging myself with coding problems and mental exercises. I believe that working in small amounts (≤ 1 hour) every day is a good strategy for me. From my previous experience, I know working too hard for long sessions is an easy way to burn out and lose consistency.
I plan to begin completing problems when I start autumn semester at Ohio State. Quality is more important than quantity in my opinion. Using the limited time I have, I prefer one fast and/or elegant solution over three brute-force solutions. I will be publicly posting my progress here periodically, as a form of accountability. If you (the person visiting my website) are reading this there isn't a progress update within the next few months, feel free to send shame via email: [email protected].
Happy Coding!
"Project Euler (named after Leonhard Euler) is a website dedicated to a series of computational problems intended to be solved with computer programs. The project attracts graduates and students interested in mathematics and computer programming. Since its creation in 2001 by Colin Hughes, Project Euler has gained notability and popularity worldwide. It includes 900 problems as of 14 July 2024, with a new one added approximately every week." -WIKIPEDIA
My goal is to stay sharp by challenging myself with coding problems and mental exercises. I believe that working in small amounts (≤ 1 hour) every day is a good strategy for me. From my previous experience, I know working too hard for long sessions is an easy way to burn out and lose consistency.
I plan to begin completing problems when I start autumn semester at Ohio State. Quality is more important than quantity in my opinion. Using the limited time I have, I prefer one fast and/or elegant solution over three brute-force solutions. I will be publicly posting my progress here periodically, as a form of accountability. If you (the person visiting my website) are reading this there isn't a progress update within the next few months, feel free to send shame via email: [email protected].
Happy Coding!
I started a web development project over the summer, as I thought it would be an excellent way to learn new skills and build something nice in the process. However, I disliked the idea of being dependent on subscription services like AWS, G-Cloud, etc. This opened up a new set of challenges that came with self-hosting. Here's what I currently use to operate my website:
So far in my web-devlopment journey, I realize my biggest weakness has been aesthetic design. There are an insane number of small CSS and Javascript nuances. If I don't know how to use a CSS property I can always figure it out via Stack Overflow. However, UI design isn't a skill you can master in a few months. There are many concepts like 'white spacing' and 'color palettes' that determine if a portfolio looks professional or crude.
From time to time, I'll visit the greats like brittanychiang.com or robbowen.digital for inspiration.
Since the v1.0, I've added a few animations, as well as this progress page that you are reading. The logo typing animation on the home page was fairly easy to accomplish in Javascript and added some personality to the portfolio. This progress page serves as a diary of sorts for my ongoing projects and other goals that I have.
This month, I leave home to study in college. I will be very busy, but there are a few things I hope to accomplish.
As it stands, Kasper Codes is a static website with no backend. Whenever I want to make a change or post progress updates on this page, I need to edit the static html and change the raw files on my server. Adding a backend database will make posting updates effortless, while distributing loading times evenly. For the database, I plan to use something free like Excel or Google Sheets API. Google Sheets as a database may seem preposterous (it is), but it's free of cost and storage is on the cloud. (I don't need to SSH everytime I post progress)
Like most Internet Service Providers, my ISP uses a dynamic IP address, which Cloudflare maps my domain name to. While my server has been up (roughly 3 weeks), Comcast has not changed my IP address but they inevitably will in the future, which will bring my server offline. To combat this, I plan to write a bash script to update the IP address in the Cloudflare DNS record. While I could update the DNS record manually, this would require I monitor the status of my server constantly. To save myself from stress, I will automate this process.
I had to redesign my Polynomial utility library due to a flaw I noticed recently. Ideally, a mathematical data type should have closure under operations.
int + int, int - int, int * int, and int / int all return the type int.
Like integers, polynomials are technically not closed under division. The workaround to this is having the method 'Polynomial1.divide(Polynomial2)' change the value of Polynomial1 to the quotient and return the remainder. This works out well because the quotient and remainder of polynomial division will always fit the type Polynomial and no data is lost. My problem was my Polynomial class could only represent integer coefficients while needing to implement polynomial division. This was a pretty serious problem given some polynomials could not be divided without yielding non-integer quotients or remainders.
I wrote a Rational Number mini-library, and I quickly got carried away and wrote a math parser to test it. The rational number data type built consists of a BigInteger (Java math library) numerator and denominator. Representing rational numbers as simplified fractions offers superior theoretical precision, making it perfect for polynomial arithmetic.
Since implementing polynomials with rational coefficients, I've finished writing functions for integrals and derivatives as well as division. Now that I can calculate if one polynomial is divisible by another, I have the tools needed to start tackling some harder problems, namely the polynomial factoring algorithm.
When I brought this problem up to my algorithms professor last semester at Ohio State, he described it as a "hard problem" though I wasn't sure if he meant 'difficult' or 'NP-Hard'. The modern way of solving high degree polynomials involve approximations like Newton's Method and the Bisection Method. There is also no formula to solve polynomials of degree ≥ 5. By solve, I mean decompose the polynomial into a product of irreducible polynomial factors. This is similar to the root-finding problem, only root-finding also isolates complex roots.
If I can, I would much prefer to solve polynomials analytically instead of using approximations. While I don't have much knowledge in abstract algebra, I have a pretty good idea of where to start looking:
I am taking Math 3345 at Ohio State which should strengthen my background in theoretical math. Hopefully by the end of this semester, I would have learned enough to implement an existing algorithm or something similar.
"LeetCode is an online platform for coding interview preparation. The service provides coding and algorithmic problems intended for users to practice coding. LeetCode has gained popularity among job seekers and coding enthusiasts as a resource for technical interviews and coding competitions. . . LeetCode offers 3236 questions across its three levels of difficulty; with 801 questions categorized as easy, 1679 as medium, and 713 as hard. " - WIKIPEDIA
My goal is to stay sharp by challenging myself with coding problems and mental exercises. I believe that working in small amounts (≤ 1 hour) every day is a good strategy for me. From my previous experience, I know working too hard for long sessions is an easy way to burn out and lose consistency.
I plan to begin completing problems when I start autumn semester at Ohio State. Quality is more important than quantity in my opinion. Using the limited time I have, I prefer one fast and/or elegant solution over three brute-force solutions. I will be publicly posting my progress here periodically, as a form of accountability. If you (the person visiting my website) are reading this there isn't a progress update within the next few months, feel free to send shame via email: [email protected].
Happy Coding!
"Project Euler (named after Leonhard Euler) is a website dedicated to a series of computational problems intended to be solved with computer programs. The project attracts graduates and students interested in mathematics and computer programming. Since its creation in 2001 by Colin Hughes, Project Euler has gained notability and popularity worldwide. It includes 900 problems as of 14 July 2024, with a new one added approximately every week." -WIKIPEDIA
My goal is to stay sharp by challenging myself with coding problems and mental exercises. I believe that working in small amounts (≤ 1 hour) every day is a good strategy for me. From my previous experience, I know working too hard for long sessions is an easy way to burn out and lose consistency.
I plan to begin completing problems when I start autumn semester at Ohio State. Quality is more important than quantity in my opinion. Using the limited time I have, I prefer one fast and/or elegant solution over three brute-force solutions. I will be publicly posting my progress here periodically, as a form of accountability. If you (the person visiting my website) are reading this there isn't a progress update within the next few months, feel free to send shame via email: [email protected].
Happy Coding!