"dark metamorphosis" "ew, what's wrong with your legs" site under constant construction
  • File
  • Edit
  • View
  • Insert
  • Format
  • Help

A Collection of Thoughts & Opinions

read them if you can be bothered. also feel free to message me with dissenting or conflicting opinions. i may not answer – i'm not great with telecommunications – but i'll probably read them and consider them.

  1. resolutionless buttons
  3. tabulation & indentation
  4. on piracy & morals
  5. dark souls
  6. in appreciation of css
  • File
  • Edit
  • View
  • Insert
  • Format
  • Help

Want Your Own Resolution Button?


okay so i've always been a fan of vector graphics - why in this world of rapidly increasing resolutions are we tying our images to pixel sizes? most of the time one can't see the pixels anyways, and it always seems to age poorly - but i've only just had the idea of applying it to a "Now!" button. pixels are so small nowadays that i have seen on many sites (including my own) the use of a "scale on hover" effect, which necessitates deciding between nearest neighbour and bilinear filtering and doesn't look great either way, so i think it's time we have a future-proof alternative. i have seen people making larger buttons (exempli gratia), but that seems like something of a sticking-plaster fix to me

however, when trying to create one i found a sore lack of information on animating them, so i'll write this as a sort of guide. there are three ways to create an animated svg (herein ASVG), but i'll only be looking at smil, as i don't like javascript and css animations are …just css animations

first thing to do is decide if asvg is right for you, so consider this before making one:

benefits malefits
the big one: infinite scalability. your button is future-proof, and can be displayed at any size as sharp as the day you made it (including at non-integer ratios, for those who have their screen scale at 150%) the support is just not great. it's not even as good as webp. i think all modern browsers support asvg, but i don't think any image viewers do (certainly gwenview does not).
infinite framerate. svg uses timescale animations, which scale to the refresh rate of your monitor, rather than raster's discrete frame aproach (and gif's max fps of 50hz which does not fit with most monitor's 60hz). just look at that silky smooth animation i can't find any programmes that properly support asvg, so you'll have to write the xml manually
you'll be the coolest kid on the block, with your button in a unique(ish) format depending on the number of elements, they tend to be slightly bigger (now button is ~56kb for animated, ~32kb for static; compared to ~16kb for apng, ~22kb for gif || train button is ~112kb for animated, ~104kb for static; compared to ~35kb for apng, ~57kb for gif) than the tiny 88x31 size of ordinary buttons
there are no "proprietary" source files (.ase, .xcf), as svg's have layers baked in, and are viewable in a text editor

update as of : turns out i'm not original, viatrix had already had the idea of svg buttons, though i maintain that animated ones are original. i think hers is cooler than mine though, being modelled after the libpng button: ; so i made a new animated one modelled on hers


still want to make one? well here's some info:

the first thing to do is make your normal svg. there are many programmes to do this: i use inkscape usually, as i started using it when boxysvg didn't support linux, but i think boxysvg is better. there are plenty of tutorials for vector editing, so i won't bother to say much about that here

a couple things of note though:

i made mine in 88x31, as it was an easy way to get the ratio right, but there's no reason not to make yours in 176x62, or 44x15½, or whatever (even non-88:31 ratios, if you don't care about precedent)

when you've finished editing, duplicate your text layers, hide one, and bake the other to paths (inkscape: pathobject to path). this means if your svg is being viewed on a device without your fonts installed, the text still shows up correctly

you'll probably be fine if using something like times new roman, but it's very little effort and makes it more portable


now, you're ready to animate. surprisingly, the best visual editor, i've found, is a browser. i used firefox, but i imagine safari or vivaldi would work just as well. the devtools work for svg as well as html (they're just types of xml), so just open your svg, press F12, and your changes will be reflected in real time

you have three basic tag options:

animate an svg property (e.g. rx {radius x-axis}): mdn
animate size, rotation, & position (anything that comes under css' transform property). this is the one i used in the above button
move an object along a path. i have never used this
  1. decide what type of motion you want, then right click on the element you wish to animate. for the example button (svg-ns.svg kind of modelled after the netscape one), i chose the <g id="text935"> as it is the group that contains all of the "Now!" letters that i baked to paths.
  2. add your <animate[Transform]> tag as an immediate child of your chosen element
    • i believe it can be any child, but i tend to add it as a final child by duplicating the last element, right-clicking, selecting "edit as svg", and then deleting the whole thing and typing in my code
  3. if using <animateTransform type="scale">, you will probably need a transform-origin css property - i just use trial and error to find it
  4. unlike css, no values need units, all are in pixels
    you can either use from="x [y] [z]" & to="x [y] [z]" properties, or a values="x [y] [z]; x [y] [z]; [x [y] [z]]" property.
    scale can take either one or two values space separated.
  5. for easing, you can either use the keySplines property (the proper way) or the hacky way i did (values="1;0.9;0.6;0.5;0.6;0.9;1") which i think looks fine with small, fast-moving objects
    • webkit/chromium for some reason throws a hissy fit if anything has a trailing semicolon, so make sure to remove those. (firefox/opera12 is fine with it)
  6. for a flashing effect, use <animate attributeName="opacity">, with the property calcMode="discrete"

that is what i have found with my experimentation. i will update with more if/when i find it, or you can message me a question, or check the few decent tutorials i have found

if using animateTransform, it will override any transform="whatever(x)" property. either apply this to all children manually, or move/scale the object without using transform=""
  • animated svg button, but massive
  • animated svg button, but massive
  • File
  • Edit
  • View
  • Insert
  • Format
  • Help

I Prefer the Nintendo/PS-Japan Controller Layout

in light of sony changing their enter button to in japan to mirror the western layout, i thought i'd write down why i think they made the wrong choice

i don't feel very strongly about this, and i agree that sony had to fix the east/west dichotomy, nevertheless when weighing up an almost

now, as much as i loathe sony, when talking about button placements it's easier to use the unambiguous ones; so from here on out: = ntdo , xinput ;   = ntdo , xinput ;   = ntdo , xinput ;   = ntdo , xinput

  • it just makes sense. most of us live in a left→right society, so the "forward" (accept) action should be to the right of "backward". also, having ✘ to accept is just wrong
  • it allows to be "primary action" (i.e. jump, dodge) and to be "interact", allowing one to pick up an item and dismiss the prompt with ease (e.g. dark souls)
    • i hoped breath of the wild would make this mainstream, especially with jump on
  • it spreads wear evenly. on my xbox controllers is worn out and mushy, whereas on my switch controller / are roughly even
  • the nintendo layout came first
  • ordinally, sony's buttons match nintendo's layout:
    1st letter in sequence, takes 1 stroke to draw
    2nd letter in sequence, takes 2 strokes to draw
    3rd letter in sequence, takes 3 strokes to draw
    4th letter in sequence, takes 4 strokes to draw
  • sony specific: from a business perspective, too. sony would be in the majority whichever way, but as i'd say their greater competitor is microsoft, making it easier to transition to xbox seems odd. forming a group with nintendo, thereby locking xinput out, seemed like the better choice to me

of course, none of this really matters to me, as i play through steam input, and can (and do) therefore map the enter/cancel buttons however i choose. that being said, it is a bit annoying how "accept" & "jump" are often tied to the same button

if you agree with this (half-finished) post, this page might be up your street

okay so, for further clarification:
  1. the super famicom controller was released in 1990, and the sega megadrive 6 button controller was only released in 1993, but that's almost irrelevant because:
  2. for enter wasn't standardised at that point (in fact, first-party games such as super mario all-stars used for accept)
  3. as to when that layout was standardised, i don't know but possibly not until the release of the sony playstation in japan; but even then the most common western layout was for accept and for back
  4. xinput inherited its layout from the dreamcast layout, (/// - the only one not to have a blue X button), but i don't know whether A for accept was set by sega or microsoft
  5. also, despite pioneering the modern four button layout with the snes, nintendo relinquished that with first the n64 controller for 3-armed aliens, and then the gamecube; not coming back to that layout until i believe the wii pro controller (2006), when they did re-standardise their own layout, but far later than everyone else
so whether you believe the nintendo layout actually came first, is a little subjective i think
  • File
  • Edit
  • View
  • Insert
  • Format
  • Help

Tabs are the Obvious Choice, Really

i will not reiterate the obvious, and far more important, accessibility arguments; as others have done so quite sufficiently. nor will i try to reiterate the many good points that others have made, or offer alternative solutions, as i'm sure others have done so more astutely

no; instead, to get my point across, i'll request you imagine a different world, a parallel universe if you will

imagine a world in which the horizontal tabulation character was never invented, and all indentation is done with spaces

a world in which every time one pastes code in from another place, it has to be futzed with and converted to 2, 4, 8 or whichever width one is currently using

a world in which one has to hope the ide is intelligent enough to insert 4 characters when pressing a single key, and to delete 4 characters when pressing backspace/delete once, but only when all the characters to the left of the cursor are whitespace (or right, presumably, in rtl langs)

a world in which one needs the indentation depth for a project to be agreed upon by the entire team prior to starting

a world in which the space character has differing semantic meanings depending upon where on the page it resides

now imagine someone invents a character that can do all that automatically. a character that allows everyone to choose what width they find easiest to read, and like any personal preference, that width is specific to them and does not inconvenience their teammates.

imagine that somebody discovers a number between 8 and 10, and uses that space to encode this character into ascii, so it will work in any text field that supports ascii or utf-8 (i.e. almost all); just by pressing a single key, that is already all keyboards, Tab ↹

surely this would be heralded as a technological revelation? surely this man would be paraded from the rooftops, as a true reincarnation of the deus mechanicus?

space indentation is one of the reasons poor programmers are stuck using monospace fonts, when the rest of the computing world moved on to proportional, arguably as early as 1984; we could have nice proportional fonts such as this

when using tabs for indentation, you're using a century proven and semantically appropriate method.
when using spaces, you're flouting this tradition in favour of a hacky solution; using characters not as intended, but as a system no better than mashing the X key on a typewriter in lieu of a proper delete key

now consider that before programmable computers were widespread, someone had the forsight to invent a character that can do all of these things automatically, and think this will be such a useful feature, we will assign it to one of the 127 characters we have available. i can't believe people just throw that away for the argument it looks a bit better on stack overflow

and that's the thing i understand least - there seems to be absolutely no cogent argument for spaces‽

some software that was obsolete before i started coding doesn't really like tabs much
why are we beholden to insufficient software? ␉ most certainly existed when they were written, so i don't quite know what the excuse was. most modern software deals fine with tabs, even css: tab-size: 8;
i can't enforce how my code is presented
good. code is not its fucking presentation - you can't dictate what font your code is read in, nor its colour or size; why should you try to dictate its indentation level?
i can't line things up properly with tabs
yes you can, watch:
	((math.max(stkMax.lx, stkMax.ly) * 0.3) + 4),
  • File
  • Edit
  • View
  • Insert
  • Format
  • Help

I Support Ethical Piracy

for a couple of reasons. most of these are conjecture, so take them with a pinch of salt:

  1. usually, the pirate would not have bought the product anyway, so no money was lost
  2. it allows breaking into industries (e.g. photoshop for designers), when not making money
  3. it's a good way of testing software, especially in these days of a lack of shareware/demos
  4. it's a good way of avoiding giving money to corporations one dislikes (e.g. nintendo)

if you've come here from the prs button on the homepage, read this first

  1. it's only one song at a time, so anyone using this site as a method of piracy is going to be waiting a long time for me to put up the specific song they want
  2. i've only downloaded it from youtube with youtube-dl, i haven't done anything almost everyone visiting this site couldn't have done for theirself
  3. it's sort of a form of free advertising, so i believe it will do more good than harm

if the current song is your music and you don't want it here; message me and i'll remove all references to it immediately

now, as for the common argument that "piracy is theft", no it's not. of course it's not. if it were, it wouldn't be called piracy. it would be called theft.

let's say you have a neighbour called greg. greg just got a new car. you're jealous of greg. however, greg is a wizard; and a very kind one at that. he says to you

i can see you want this car. i'll do you a favour. touch this car, and in a few hours, one exactly like it will turn up in your garage.
do you gleefully thank the generous magus? or do you say
thanks greg, but i'm too concerned about maserati's bottom line. i think i'll pass, and save up to possibly purchase my own.
piracy is like this. somebody else is putting stuff up for free, that you can duplicate by magic. why would you pass on this‽

now, my opinions on what classes as "ethical" differ per medium.

  1. music: i have no problems pirating; but i don't as spotify is a great music discovery service
  2. film/tv series: i actively encourage piracy
  3. fonts: hmmmnn…
  4. video games:
    • indie games: i'll never pirate
    • AA games: i might pirate as sort of free demo, and buy it if i like it.
    • AAA games: same as above; but if it's a studio i dislike (e.g. EA) i may not buy it at all

a: if you can find the music you want on cd (or other hard copy); that's great. if you can find it on bandcamp or another similar site, that's almost as great. if you can't, why spend money on "renting" a song from google or whomever, especially when almost none of it goes to the artist?

b: i didn't use to, back when netflix was useful; but in these days of fragmented streaming services and non-ownership, i think it's actively immoral to keep funding these tech giants like amazon & disney.

c: i don't know about fonts. they're too expensive to buy for most purposes, but they are only so expensive because they're that commonly pirated. ultimately, i'm okay with doing so for personal [local] use, but i'll try to find a free alternative for other uses

d: look. say one boycotts these publishers. that's great. they don't get money, but you don't get games. but what if we could have the same situation but you get the games as well…

i don't, however, pirate indie games. AAA studios are big enough to stand up for themselves; but indie studios, particularly those pushing the genre envelope, need all the help they can get

i don't even pirate epic exclusive indie games. i'll wait until they come to steam. as much as i dislike epic, it's the smart business decision to accept their offers, and i don't think devs should be punished for that

but don't take the word of some internet schmuck; take the word of several internet schmucks

however, even if i've persuaded you with this piece, i encourage you to form your own conclusions on what you consider acceptable piracy
  • File
  • Edit
  • View
  • Insert
  • Format
  • Help

I Don't Think Dark Souls Should Have an Easy Mode

not for the reasons you think! hear me out!

i don't believe there is any value in being good at games, nor should one gatekeep those who like to enjoy a good power-fantasy.

hear me out:

I Don't Believe DS Should Have an Easy Mode

not every piece of media is for everyone - i don't go into a cinema showing a rom-com, and complain about the lack of guns'n'ammo; i don't read the life and times of winston churchill and complain about the lack of greatsword wielding; i don't play amnesia and complain about the abundance of jump-scares.

in the same vein, not every game is for everyone, and that's okay! if you're put off by ds' difficulty, there are plenty of other great games out there.
some (slightly easier) similar games worth playing:

  • hellpoint
  • mortal shell
  • code vein ignore the art style, it's actually good
  • nose (yes it's a blatant knock-off, but it's really good)
  • jedi: fallen order (more like sekiro, but you get the picture)
  • mortem: fallen kingdom
  • thymesia i'm not sure it's actually any easier…

i never finished sekiro, because either i found it too hard, or the combat just didn't click for me. this does not mean i think sekiro is a bad game! it's just not for me

I Believe DS Should Not Have an Easy Mode

the difficulty in ds isn't just a gameplay element. it's a worldbuilding element. in ds, you are an undead on level footing with every other undead out there. the only thing keeping you from going hollow is your tenacity to push on and gain strength. if you were a force-wielding jedi, the story beats would feel (please excuse the pun) completely hollow.

this does not extend to all souls-likes. i think souls-likes as a genre, should mostly have difficulty options. this is just about dark souls specifically, and how it sets up its world.

this does not apply to mods. i think all games should be moddable, and i don't think this matters in this case as mods have an inherent "unnofficiality" to them that make it plain that "this is not the intended way to play". but i think having a difficulty option in the main menu i fear would lead to many people trying the game, thinking "this is too hard", and completely missing the entire point of the game.

that was all a bit controversial, so have a cat:

			           />    7
			          |  _  _|
			         /` = _x =
			        /        |
			  ____ /    \   /
			 /  __|     | | |
			|  (__ \____\_)_)
or demon's souls, elden ring, etc.
  • File
  • Edit
  • View
  • Insert
  • Format
  • Help

CSS is Like a Zachtronics Game, Really

right. unlike a zt game, it's bollocks. it's inconsistent, confusing, and seemingly random. it's clearly been designed by multiple people over decades, each with adifferent goal in mind. there are at least 6 different ways of centring items, depending upon its direction and parent.
off the top of my head:

  • align-items: center;
  • margin-inline: auto;
  • text-align: center;
  • justify-content: center;
  • vertical-align: middle; /* why is this one not center? */
  • transform: translate(0, -50%);

and, just like opus magnum, there is no "right" solution. i personally loathe flexbox, but think grid is so intuitive and lovely. just as mentioned in this video, one can either meet the targets of clarity, concision, or ease / time to finish; but not all three simultaneously. all code is hard to read when it's written by someone else, but css i find particularly hard compared to its ease of understanding at the time of writing, especially as it requires holding 2+ files in ones head (as the structure of the related html file is important, as well as possible js files).

and to be honest, that's fun. trying to figure out the "best" way to solve this puzzle, for æsthetics & maintainability, is just as good as TIS-100, and it's free! and you get something out of it at the end (more than just a steam achievement, at least)