Dark theme

Skill Set & Technical Information

Jack of Trades, Master of Some

Everything on this website unless stated otherwise has been hand coded by me. The first section, On this site, details how I put this site together. Any libraries and tools I've used are listed in the aptly named Libraries and Tools section.

I'm not in on all the programming lingo, so I hope this list is clear, even if some of the terms are wrong. Questions and corrections are encouraged; refer to my contact information below.

On This Site

On This Site

cron

I use cronjobs to retrieve information and save it to a JSON file. What prompted me to use cron is YouTube Data API's quota limit (10,000 tokens a day - since a search call uses 100 tokens, after 100 visits the API wouldn't return a search result anymore), and I schedule tasks that only need to be updated every so often.

Currently scheduled cronjobs:

CSS

CSS is the language I've used the longest and the language I am most confident in. My journey started with modifying stylesheets on websites like wikia (now fandom.com), which usually require making use of CSS hacks.

I regularly make use of pseudo-elements and selectors, CSS variables (var(--variable-name-here)), calculations and media queries... chances are if it exists in CSS, I've used it before.

Here's a little titbit: I use the drop-shadow filter sometimes, but when I learned multiple drop shadows grow exponentially, causing some browsers to crash, I cut back on using them.

.htaccess

This one's a doozy. Yes, I made my .htaccess work for my site, but it took a lot of experimenting and faulty redirections before I did.

Using .htaccess and some regex magic, I:

  • Redirect any requests for this website to their HTTPS and www versions,
  • Remove the .php extension on pages,
  • Remove trailing slashes accordingly: together with a canonical metatag on every page, I make sure every page has only 1 URL for SEO purposes,
  • Internally redirect pages with query tags, as seen on artwork and any pages that make use of my "blog-post" format (Geoventures, code snippets ),
  • Redirect requests for favicon.ico, usually assumed to be in the root folder by search engine crawlers, to the right location,
  • Redirect to a general error page that displays whatever error the site ran into: This page doesn't exist, for example,
  • Do cache control on my static resources (however Cloudflare does the heavy lifting).

During testing I may have used the permanent redirect flag R=301 sometimes, but I learned not to do that unless absolutely sure.

HTML

Not much to be said here. I don't know where else to put the following, so here goes: I use Google's "hidden" Shared Stuff API, as detailed in this article on DEV Community, to get favicons for outgoing links without having to save them to my webhost.

JavaScript

The dynamic loading of content without refreshing the page (picking an artwork tag, picking a music blurb, changing this website's theme to dark mode and back) has to be done through AJAX. What happens behind the scenes in summary, is that in JavaScript I call for a PHP script that can pull content or change session settings, and JavaScript makes it possible to put the results back onto the page if needed.

I know how to use JQuery, though if possible I stick to vanilla JavaScript.

JSON and XML

I handle and use both JSON and XML. When using an API I'm likely sticking to whichever format it serves by default. I do like to make a distinction for data of my own: text-heavy data, like the content of this website, are saved in XML format, while in a (for example) game-making context I'd sooner use JSON. To pull the information I need from my website's XML files, I use XPath.

The sitemap of this site, also in XML format, I generate through XML-Sitemaps.com.

MySQL

I use MySQL with PHP for database retrievals, and on the back end within my personal rudimentary content editor I do updates, inserts, and entry deletions.

PHP

My language of choice for making websites every time.

  • Each page is built on a few PHP classes which handle pulling in the content saved in XML format, parsing it, generating metadata for the page, and other repetitive tasks. In reality the pages are the barest of skeletons which rely on PHP to give it form.
  • I have functions in place to make linking to files as softcoded as possible. I work on my website locally before putting it online, so to make my job easier I account for differences in folder names, $_SERVER variables, et cetera - migrating from one host to another proved to me even more how many tiny different variables there are to account for.
  • I make use of the Last.fm API and the YouTube Data API on the music lair. To get a "song of the day" I get a random entry from my list of songs I have "loved" on Last.fm, and use that information to perform a YouTube search to get a link to the song in question.
    • For the time being I marked the link to the YouTube video as "experimental", since there's no guarantee the search call will actually return the song (and may for example return a link to the entire album.)
  • I made a basic CMS for myself for database upkeep.
  • The cronjobs I have scheduled are PHP scripts.
  • I have used cURL requests in PHP before. (examples pending - I haven't had to use cURL in practice so far.)

Libraries and Tools

Libraries, APIs

Hosting

URL & SEO control

  • Google Search Console - shows which pages from your website have been found and indexed by google, and if it fails, the reason why. Also proved useful when writing the .htaccess file, even though it does take a few days for Google to index a page and for re-indexation requests to go through.
  • Htaccess Tester - I couldn't have written the .htaccess file without this tool! You do need to know how the basics of .htaccess to use it.
  • XML-Sitemaps.com - the site I use to generate my website's sitemap

Miscellaneous

  • PageSpeed Insights - a site that details which elements of a page take up the most loading time. I use this site in combination with the Network panel in DevTools to optimize my site.
  • picresize - my preferred tool to make thumbnails for my artwork
  • regex101 - online regex testing tool
  • Visual Studio Code - my code editor of choice - I like it's simplicity and catalogue of extensions, like:
    • Five Server - (GitHub), which, together with XAMPP, allows me to test my website locally before putting it online

About Compression

My artwork, when enlarged, is accessible in it's original format (PNG, and sometimes JPG or GIF), though the thumbnails make use of WebP, with fallback for unsupported browsers.

Other programming

Other programming

The past few years I've mainly done web development, so until I have any concrete and interesting examples for these languages here's a quick summary:

  • Angular: currently learning
  • C: specifically ROBOTC
  • C++: both C++ and Arduino's C++ dialect
  • Excel/Google Sheets (functions)
  • GameMaker, GameMaker Language
  • Java
  • JavaScript: Phaser
  • jQuery
  • Node.js

Other Skills

Operating Systems

Like most, I've used Windows for forever... however in 2024 I stepped into the world of Linux.

I daily drive Gentoo (OpenRC) after having used Arch Linux for a few months. I connect to this website's FTP through Nemo.

Artwork

My preferred program for digital art is Procreate, and for pixelart specifically I use Aseprite.

In the past I've used Autodesk Sketchbook and before that PaintTool SAI. I use Microsoft Paint sometimes, then more than now, for both regular art and pixelart.

I have experience with Adobe Illustrator and Indesign.