About me
This page contains some information about some of my skills.
C++
I have been been learning and programming in C++ since the age of 12. There are two reasons I decided to learn C++. First, nearly all of my previous programming experience spanned Python, which is one of the slowest languages. Despite spending significant time profiling and optimizing sometimes the language was just too slow. Second, I wished to expand and broaden my current set of programming languages. There were some frameworks that I was interested in using that required C++. Perhaps the most prominent of these was Unreal Engine 5.
Since then, I have used it for most of my long-term projects. One of the first projects I did with it was to program a game with SDL, but I gave up not long after starting because of extremely frustrating bugs caused by undefined behavior. I moved away from game development for some time and programmed a few GUI apps in Qt or WinUI3, such as a health app, a photo viewer and metadata editor, and a performance optimizer toolkit. As of today, I am working on building a 3D rendering engine with the DirectX 11 and Vulkan graphics APIs, as well as a implementation of the C++ STL that adds new features that are found in Python's standard library. I have also been programming embedded systems.
I previously used the MinGW GCC and LLVM clang compiler with Windows but have mostly switched to MSVC's compiler and the Visual Studio IDE. I also try to use the latest and most modern C++ features whenever possible because they are reminiscent of my previous Python background.
Python
Python was the first language I learned beginning at the age of 9. In my first two years I programmed a number of apps with the Tcl/Tk framework. This included a calculator, a rich text editor, and a vector paint program. By the end of my first two years I became interested in game development and programmed a number of games. I was particularly interested in games with large crowds and large numbers of entities. During this time I learned many of the best practices for programming, and how to optimize code well. The limits of optimization in Python gradually gave way to an interest to learn C++.
Although I don't use Python as much as I used to today, I am still very familiar with the language and am very comfortable writing scripts and tools with it. One of the things I have made with Python recently is a machine learning model to predict added sugars for my health app.
JavaScript/Web Development
This website is not the first I have made, but web development is among the least desired projects to make. The main reason for this is because of the monetized ecosystem relative to other languages and Electron.
Languages such as Java, Python, C#, Rust, have most of their software libraries open source. I have been programming with C++, C#, Python, and Java for over five years and have not ever needed or been stopped by a paywall to use a library—in other words I have never needed to spend a single penny at all to program. In contrast it has been a couple months or so developing this current website and I have gone through many services that were freemium and made me quit. For example, I originally used Netlify to host my website but switched to Vercel, and decided to build my website from scratch to avoid having to pay for website building services such as Wix. Although originally intending to use FormSpree for the contact form I quit that as well.
Electron has becoming more and more prevalent as a library in today's
newest applications. I personally do not understand the reason behind
Electron when it can be used as a browser tab instead of a desktop
application. Electron apps consume huge amounts of memory and CPU; for
example the Canva desktop app uses 1.4 gigabytes of RAM, regardless if
it is in use or minimized. The equivalent browser tab on Chrome only
uses 500 megabytes, although still significant. And there is very little
difference in the two's functionality, except the Electron app also uses
600 MB of storage. This contributes to my dislike of JavaScript because
of its usage in areas I believe it should not be used in. Furthermore
Electron apps, such as Discord, Spotify, LinkedIn, have a tendency to
open on startup and minimize themselves into the system tray after being
closed, using large amounts of RAM and sometimes CPU even when they are
not currently or will not be used. And because I don't have unlimited
RAM, it is very frustrating to have to kill an app forcefully with
taskkill or Task Manager to free up the huge amount of
resources it is taking when it is not even being used. The RAM usage is
just as high as when they are used. It only appears to lower when the OS
swaps them out into the on-disk pagefile. The OS considers them good
candidates for the pagefile because they are not being used and are
taking up resources for no reason. Electron apps such as Spotify,
Discord, LinkedIn, Zoom Meetings, Notion, Visual Studio Code, Canva,
WhatsApp, the "new" Microsoft Teams and Outlook, all have the same issue
of high memory usage without many more features when compared to their
browser equivalent. Python may be even slower than JavaScript, but it
has a different use case than JavaScript. It is uncommon to find a
mainstream purely-Python app, and when it is, it usually uses a direct
native backend such as Qt that is well-optimized.
Another example—the "Projects" page of my website uses over 250 MB of RAM when opened in an Electron app made using nativefier, but only 50 MB when opened in Chrome.
In conclusion, I believe all apps that require many more resources than a simple website should be built with frameworks such as QML with JavaScript, C# with .NET MAUI, or Dart with Flutter. Languages like C++ should be only used for app development when it is really necessary, in order to reduce development time.
Blender
I have used Blender for two years, primarily for 3D animation, photorealistic rendering, and for product visualization of my Fusion 360 CAD designs. Some of the things I have made include:
- Projectiles and pyrotechnics
- Intel CPU
- NVIDIA GPU
- Laptop
- Ballista and trebuchet
- Pixar animation with name