About Me - Programming / Software
I grew up with a Windows 95 computer that had Word 97 on it. As a kid I explored every nook and cranny of what that computer had to offer, and learned a lot about Windows and Office this way. Word 97 also had an amazingly robust customization system that I'm still enamored by, and also one other key feature: macros. I was fascinated by macros; the computer could record my actions and then play them back in my document or in a brand new document. Being able to get a computer to change and do things by just one click of a button wowed me. And on top of that, macros were recorded down in VBA code, which you could then access and edit further. Unfortunately, I didn't fully understand how the VBA code a macro generated translated into the actions I saw on screen.
That changed in 2008 (when I was in 8th grade), when I picked up the book "Build a Program Now! Using Visual Basic 2008 Express Edition". This was the key that unlocked programming's mysteries to me, and set me fully on the path of being a computer nerd.
As the years went by, I continued to follow the improvements to Windows and Office. I poked and prodded the UI design present in Windows XP a lot, and then in 2006 Microsoft unveiled the Ribbon interface, which debuted in Office 2007. This was fascinating to me and it was the first time I got to see, first-hand in real time, the UI and UX considerations that led to the Ribbon we have today. (The video ""The Story of the Ribbon"" is an amazing presentation I recommend everyone to watch, it's just a shame Microsoft took down the original website so now the video's only available through the above archive link or crappy YouTube reuploads.)
With Office 2007 and my Visual Basic 2008 book as inspirations, I became fascinated with not only programming but also building a pleasing, colorful, and customizable UI.
I started in Visual Basic with my own projects, including building my own calculator program, but in high school I joined on to the Better Explorer project. I worked on that for years, and learned a lot from others on the team, including the lead developer Dimitar. Better Explorer also served as my introduction to C# and standard .NET coding practices.
Nowadays, C# is my primary language of choice, as I feel it's the perfect combination of speed, safety, features, and simplicity. Also, C# works on all the platforms I care about: desktop, web, gaming, mobile, even Office. Most of the time, I've paired C# with WPF, building desktop apps on Windows. I'm now trying to branch out more, including using ASP.NET Blazor on this very website and trying out Avalonia UI and .NET MAUI to build apps for multiple platforms. I've also done small things in Java, C++, Python, and JavaScript/TypeScript.
As I keep going, I've started working on larger and larger projects, such as building my own game engine, a calendar program, and a digital system for creating and editing TTRPG character sheets. Not everything I've done has turned into a releasable product, but I've learned something new with each project I take on, and my hopes for the future is to keep learning and expanding my horizons and get more products out and hope people use/like them.
For UI design, I now have my own UI library and icon set I use for my desktop programs and I'm still continuing to learn on this front too. With my programs and UIs, my aim is always to develop projects that look nice, are fairly customizable, and also have accessibility support.
Software/Tools I Use
If, for some reason, you want to see what kind of stuff I use to make the stuff I make, here you are!
-
Full IDE: Visual Studio
The Community Edition of Visual Studio has all the features and such that I would be looking for as a hobbyist/individual developer. Very customizable and since it's also a commonly-used IDE for .NET, C++, and beyond, a lot of extensions and resoutces exist to tweak and utilize Visual Studio in any and all situations I'd be looking for.
-
Alternate IDE: Visual Studio Code
Visual Studio Code is helpful when I want a lot of the code-editing features of Visual Studio, but don't need the full project management/structure. VS Code is great when I want to open some random Markdown or XML file quick, do a few changes, and then move on. A lot of the extensions made for VS Code also make it easy to customize in exactly the way I'm looking for too.
-
Raster image editor: Paint.NET
Based upon the idea of taking the Windows built-in tool Paint and expanding it with a few new features, Paint.NET is now a pretty dang powerful image editor, great for a lot of pixel art and icon work that I do.
-
Icon editor: IcoFx
I randomly came across IcoFx years ago, and now happily support its development with the Business License. Very helpful for filling in the gap I had of trying to make .ico icons with the images I made in Paint.NET.
-
Vector image editor: LibreOffice Draw
An unorthodox choice, I suppose, but I generally don't work as much in vector art as an actual artist may, so the features of LibreOffice are enough to do what I need. The Draw program is at least more explicitly designed as a vector image editor, versus PowerPoint, which I had been using before!
-
Screen recordings/streaming: OBS Studio
OBS Studio has a great set of features for those needing to do livestreaming, with the ability to create different layouts and designs for the livestream display. And for basic screen recording, OBS Studio is really easy to get set up and working.
-
Web browser: Vivaldi
Not necessarily a development tool, per se, but an important part of the process at times! And, also, everyone needs a web browser for accessing the Internet. Vivaldi is built by the team that previously made Opera, using the same core as Chrome and Edge, but with a lot more customization and some cool added features.
My Favorite .NET Libraries
For many of my .NET projects, you'll probably see me using some of these libraries every time.
Obviously, I do use my own UI library (as well as some other development tools that I've made for myself), but here I want to list libraries made by others that I use a lot!
- Markdig - parser for Markdown files
- NAudio - flexible audio processing library
- Ookii.Dialogs.Wpf - adds extra system dialogs to WPF
- Avalonia - cross-platform XAML-based UI framework
- Newtonsoft.Json - JSON processing/handling library
- AvalonEdit - text editor for editing code
- Vortice.XInput - XInput support for .NET projects
You can see what libraries and projects I use for my website on the About this website page.