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.
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.
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: path → object 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>
<animateTransform>
transform
property). this is
the one i used in the above
button
<animateMotion>
<g
id="text935">
as it is the group that
contains all of the "Now!" letters that i baked to paths.
<animate[Transform]>
tag as an immediate child of your chosen element†
<animateTransform
type="scale">
,
you will probably need a
transform-origin
css property - i just use trial and
error to find it
from="x [y] [z]"
& to="x [y] [z]"
properties, or a
values="x [y] [z]; x [y] [z]; [x [y] [z]]"
property.
values="1;0.9;0.6;0.5;0.6;0.9;1"
)
which i think looks fine with small, fast-moving objects
<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
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
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 |
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
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
tab-size:
8;
i can't enforce how my code is presented
i can't line things up properly with tabs
Graphics.fillCircle(
124,
304,
((math.max(stkMax.lx, stkMax.ly) * 0.3) + 4),
clr.dRed
)
for a couple of reasons. most of these are conjecture, so take them with a pinch of salt:
if you've come here from the prs button on the homepage, read this first
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.†
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
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:
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:
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
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 = / | ____ / \ / / __| | | | | (__ \____\_)_) \____)
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)