the magpie's ramblings

angry bird caws at the internet

I have a lot of avenues to reach me. Arguably too many – I struggle to keep track of (much less reply to) everything. Some friends are on Matrix, some are on Telegram, a couple are on Discord. Sometimes I'll even get an odd notification from FB Messenger, or Instagram chat, or an SMS, or a call. And that's just friends — my public profiles have separate IM inboxes on the Fediverse, or Twitter, or even *gags* Bluesky. It's a lot for my stupid, ditzy-ass brain to keep track of. And it never really stops. All this trash is constantly in my fucking pocket, buzzing my phone like a very unsexy magic wand.

I shouldn't be trying more messaging apps. I already have enough on my plate. But I'm not known for making good, sensible decisions, so I'd ended up dipping my toes into IRC either way. And I'd rediscovered something really cool?

Most messaging apps treat you as being online by default – your client is always online, always throwing messages at you, you are assumed to always be reachable; some folks will get mad and think you're ignoring them if you don't reply within a couple hours. It's fucking ridiculous. Meanwhile, IRC makes being online a conscious choice. By default, you're offline and unreachable, and you get to choose when you decide to go online. In a world where we are constantly being bombarded with an incessant barrage of stuff, having the power of choice handed back to you like this feels amazing. This is how social media should feel.

Okay, admittedly, these are not an IRC feature, but they were a thing in the times of IRC and AIM. Yeah, can we have those back please??

I'd recently gone on a little vacation of sorts that had me offline and busy most of the week. The AIM-era messaging app GG made informing all my contacts that I'll be AFK piss-easy — I just had to set my status and... there, everyone knows.

Literally every other messenger I use made it near impossible. With the exception of Facebook's apps (which do have statuses, but they disappear after 24h), every other app either had no way to publish a status, or had it paywalled (Durov is a fucking hack). fjkkdhfjkdfgd.

oh damn, I guess I forgot I had this? haha.

I've been thinking of giving blogging another try, lately. ...well, “lately”. okay, more like “ever since I'd set myself up with a website”, aha. Though, I'd originally just envisioned having my blog on there, directly, as generated by my static site generator.

That being said,,, I'd been thinking that maaaaybe I should give things a less,, effort-intensive try, first. Updating that site is honestly friction-laden enough, as-is, what with having to have the source code and FTP credentials handy; add to that the pressure my brain seems to put upon me to make my blog posts read like,, fucking essays or w/e... that's hella not happening. maybe I'll figure something else out if I really get into blogging. but for now, I'll try it out again over here. :)

Why does CSS make it impossible to pick when you want to stop collapsing margins?

Margins are a great tool that allows developers to write more universal, reusable classes easily. It seems like a huge oversight that we don't yet have a simple “stop collapsing margins within the bounds of this element” property yet,when the way the “overflow” property works already demonstrates that it is possible! And yet, as of right now, the only way to achieve this effect if to hack about with overflow or padding! ughhhhh

Having recently been revisiting old Warriors MAPs and animation memes from my childhood, I was pleasantly surprised to find Windows 11's version of MS Paint finally has keyboard shortcuts!

...and was promptly disappointed when I couldn't find them listed anywhere. So I decided to take matters into my own hands.

Here are the more helpful shortcuts you may not be aware of, coming from older versions of Paint or more modern art programs:

Tools

  • P – Pencil
  • E – Eraser
  • B – Fill Bucket
  • I – Color Grabber (press again to return to previously selected tool!)
  • T – Text
  • Z – Zoom
  • S – Select (and switch between square and lasso)

Tool Settings

  • Ctrl + Plus(+) – Increase the size of a brush by 1 px
  • Ctrl + Minus(-) – Decrease the size of a brush by 1 px

Canvas

  • Ctrl + Scrollwheel – Zoom
  • Ctrl + PageUp – Zoom in
  • Ctrl + PageDown – Zoom out
  • Ctrl + E – Open canvas properties (or, more accurately, canvas size, since that's the only property at the moment)
  • Ctrl + W – Open “Resize & Skew” window
  • Ctrl + R – Toggle ruler
  • F12 – Save as new file

This is not a full list, just the most common, useful ones. You can find some other, more obscure key combinations on the Microsoft site, though – seeing as, as of 13.02.2022, the list doesn't yet contain some of the new shortcuts I'd listed here – that list may not be fully exhaustive, either.

Good luck on your old school dA-related escapades! Have fun!

Aseprite is by far the best pixel art tool I've ever had the pleasure of using. I've been happily using it for quite a few years without any issue. That's until I decided to move to fedora.

You see, while Aseprite's creator – David Capellodoes theoretically provide linux builds of Aseprite (at some added cost), he – annoyingly enough – only builds .deb packages.

Luckily, thanks to Aseprite's unique business model – that being open source, but with paid builds – it's somewhat easy to compile Aseprite from source code by yourself.

Step 1: Install dependencies

These one-liners are the same as in the official install instructions, with one small change – I've added python2, which is required by some of the scripts you'll be running in the next step.

For Debian: sudo apt-get install -y g++ cmake ninja-build libx11-dev libxcursor-dev libxi-dev libgl1-mesa-dev libfontconfig1-dev python2

For Fedora: sudo dnf install -y gcc-c++ cmake ninja-build libX11-devel libXcursor-devel libXi-devel mesa-libGL-devel fontconfig-devel python2

For Arch: sudo pacman -S gcc cmake ninja libx11 libxcursor mesa-libgl fontconfig python2

Step 2: Build Skia

Skia is a 2D graphic library developed by Google Inc., and pretty much the only dependency of Aseprite that you'll have to compile yourself. Sadly, the build process is somewhat tricky, as it depends on the deprecated python2, and does require some super-secret tricks you might now know about!

First off, you'll need to make a deps/ directory in your home folder, then clone google's build tools repo and the aseprite-m81 branch of the aseprite fork of skia into it, like so:

mkdir $HOME/deps
cd $HOME/deps
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
git clone -b aseprite-m81 https://github.com/aseprite/skia.git

...then add the depot_tools repo to your PATH environment variable, and cd into the skia repo:

export PATH="${PWD}/depot_tools:${PATH}"
cd skia

Now's the tricky part that you won't find in dacap's documentation! In the skia/ folder you'd just cd'd into, you'll find a file called .gn. Open it up in a text editor, then add the following line at the end:

script_executable = "python2"

Having done that, you may now run the following commands to download dependencies, prepare build files for ninja, then (finally) build the library with ninja.

python tools/git-sync-deps
gn gen out/Release-x64 --args="is_debug=false is_official_build=true skia_use_system_expat=false skia_use_system_icu=false skia_use_system_libjpeg_turbo=false skia_use_system_libpng=false skia_use_system_libwebp=false skia_use_system_zlib=false"
ninja -C out/Release-x64 skia modules

Step 3: Build Aseprite

Finally, having built Skia, you can now build Aseprite itself. Download the Aseprite-v1.x-Source.zip file from the latest Aseprite release and extract it somewhere, then, cd into that folder, and run the following bundle of commands:

mkdir build
cd build
cmake \
  -DCMAKE_BUILD_TYPE=RelWithDebInfo \
  -DLAF_BACKEND=skia \
  -DSKIA_DIR=$HOME/deps/skia \
  -DSKIA_LIBRARY_DIR=$HOME/deps/skia/out/Release-x64 \
  -DSKIA_LIBRARY=$HOME/deps/skia/out/Release-x64/libskia.a \
  -G Ninja \
  ..
ninja aseprite

This bundle is exactly the same as in the official INSTALL.md build instructions, and – just as in the original – $HOME/deps/skia is the directory where you'd built Skia earlier.

...and you're done!

Yep, that's it. Provided none of the commands errored out – you should now have a built, working version of aseprite in the build/bin/ folder. :)

If you enjoy Aseprite, make sure to support it's creator by buying it!