Firefox Web Extensions
I decided to publish a couple
of trivial web extensions for firefox that I use. They just
toggle preferences settings so the extensions themselves are
completely trivial.
Unfortunately you need to use a fucking web service to make them
installable in the browser, but at least you can then install them
later using the "anus menu"
in about:addons
. Due to this i've included the
signed .xpi files in the repository.
blogz mobile
Another small update to the site that should improve the display
on mobile phones or other very narrow browsers.
Firstly it switches to mobile mode earlier at 640 pixels width
rather than 480. Images are now resized to fit when in this mode.
And I changed the tag menu to be a compact version - this required
a small change to the generator but is implemented in the css.
No idea on browser compatability but it WORKSFORME on my desktop
machine.
blogz update
Today I checked in some small changes
to blogz (the software which
runs this blog).
Primarily they move the blog index and 'etag' value from include
files to a .c file so a new post doesn't trigger an almost
complete rebuild of the application. It only takes a fraction of
a second but it was bothering me!
I also removed some over-indulgent use of meta-make.
I mentioned this on the ZedZone host page but I've also added
git-over-http checkout for all my repositorities. The checkout
url's are listed
on https://code.zedzone.au/.
Prototyping - Vulkan
I've started a new project to track my prototying and expriments
with programming Vulkan in C
- zproto-vulkan.
No promises on this one but i'll see how I go. I might also do
something simialr with some Java(FX) toys i've been playing with.
HD7970/GCN1 + Vulkan
I have an old discarded GCN1 card from work that I'm using in my
new machine - that's the HD7970. Apart from being a 3-slot
power-hungry monster plugged into an itty bitty little ITX board
it's still a great graphics card for a workstation.
Unfortunately for me though, it doesn't have any OpenCL support in
any current Linux drivers. You have to go back to the catalyst
driver, but that doesn't work on any modern distribution or kernel
(it last supported Ubuntu 14.04). It's unlikely AMD will ever get
the ROCm code to support it, and it's unclear if there's even
enough public documentation for any outsider to be able to get the
necessary kfd driver working.
But I did find out it can at least support vulkan! Until this new
machine I've just been using Ubuntu 16.04 so never had new enough
anything to get vulkan running anywhere. You have to change from
the radeon to the amdgpu driver but everything works well. On the
internets people seem upset that you either get vulkan or
video-decode but my experience with the video decode has been very
poor so I don't think I'm missing much. I don't really watch
videos anyway.
So I've switched over to amdgpu and I've finally had a chance to
play with vulkan. I've gone
through the lunarg sdk
tutorial
and 'minimal'
compute example, but converting the c++ to plain c. The
compute-only path is definitely not as convenient to use as OpenCL
(this is something of an understatement!) but I suppose
it's something and I wanted to learn about it anyway.
I've also started playing a little
with clspv to try
compiling some OpenCL to vulkan SPIR, but there are some fairly
major limitations. And just invoking kernels is messy.
I don't really have a goal in mind for now although I was looking
at some very basic 'genetic' art (my implementation isn't really genetic, it's just a random search with one prior generation) a
couple of weeks ago, so maybe that. It's a lot of work compared
to using JavaFX though.
More Computer Shit
Given I don't have anything else to do i've spent a lot of time
playing with the new machine.
Oh and the monitors came today. A couple
of phillips
25" 16:10 screens.. They seem ok - not perfect but I think
i'm just nit-picking, especially given my less-than-perfect eyesight.
Running through the calibration images
on www.lagom.ml it's
mostly pretty good. The main failings are slightly dark on the
blue line in the contrast test (2 isn't really visible, but it was
a fairly bright day when i checked it), and a little bit of
pixel-flicker with a couple of the patterns in the inversion test.
I suppose it's pretty minor and you need to be unnaturally close.
I tried downloading some landscape pictures to check the colour
reproduction and was pretty dissapointed in some of the vertical
banding I was seeing, but then I downloaded some others and I
think it was just a poor image.
The 'presence' detector seems to detect my chair when i'm not in
it so i'm not sure if that's more than just a gimmick, and I guess
when i'm at my PC i'm at it all day anyway. The "reader" mode
makes the whole screen greyscale - which is actually quite nice to
be honest but i'll probably just forget to use it. It would be
nice if it was combined with 'economy' mode which is easier on the
eyes, but alas it is not.
I'm glad I just went with 2x25" at least, the pair pretty much
completely fills my field of view and the 16:10 gives me another 8
lines of text to think with.
Guix again
Normally I just dump tars into /usr/local or /opt for various
packages like netbeans but I decided to try using slackbuilds (or
creating my own). That worked ok for netbeans and openjdk, octave
was more work but not too much, but it fell down when I tried to
get blender installed.
So I had the bright idea of trying to get guix going as an
application-level package manager on the system. So I spent way
too long turning all of it's dependencies into slackware packages
using slackbuilds - far too late into the night - only to end up
with a guix which crashed repeatedly. And guile errors are about
as useful as python ones.
So I fucked that all off and just installed from the binary
distribution.
Which works, but i'm still not sure i'm convinced yet.
Everytime i run an update or install it seems to want to download
everything, and the packages seem to be built with every
conceivable option enabled so they drag in enourmous amounts of
software (the 'graph' of octave is undecipherable). Add to that
that every operation is SLOW AS FUCK. Although it turns out
savannah.gnu.org is being DDOS'd ad the moment so that might be
part of the reason. guix is a fuck-ton of code though so it's not
a simple system in the least.
But it does have way more (and way more relevant!) packages than
slackware, and is much easier to use than slackbuild. The cost is
a few GB of duplicated libraries and utilities I suppose. Eh, I
dunno, i'll see how it goes I suppose, for now i've got most of
what I need to code away. I mean, slackware still packages xeyes
...
JavaFX
I decided to try building javafx from source to find out why the
gluon packages don't work with netbeans - it doesn't read the
src.zip, nor does it understand the javadoc. This is a
surprisingly easy process, basically just run gradlew and off it
goes, and it doesn't even take very long to compile (at least on
this machine!).
The only thing I had to fix is the idiocy of using '-Werror', on
C++ of all fucking things. Just sneeze and the standard 'library'
or the language changes and suddenly what-was-once-pristing code
spews dozens of worthless warnings everywhere.
Anyway after that netbeans still didn't work with the build I made
... it turns out it doesn't handle java9's javadoc format, and
there's some bug reading the source (or maybe it doesn't handle
modular sources?). I just pointed it at the source-code
directories directly and that works well enough and I've finally
got on-line documentation back again - yay!
Compiling Shit
Speaking of building, I created a custom linux kernel. Cut down a
bit and only the modules I need. Well it doesn't really cut all
that much out but it does save 6MB at runtime.
But it compiles the whole thing in under 90 seconds!
I experimented a bit with the cpu goveror as well,
ondemand/performance doesn't really make much of a difference but
setting the maximum frequency does. You can only set 3 values,
2200000, 2800000, and 3800000. The first two seem to set an upper
limit and the top value lets the CPU boost if it can, perhaps they
equate to 45W, 65W anbd unlimited CPU settings - I can't seem to
find any such in my BIOS.
The main point is that using 2800000 or lower the cpu fan doesn't
ramp up so it must be using much less power. In blender, 2.8Ghz
delivers 70% of the performance and 2.2Ghz about 55%. I don't
have the numbers but compilation was a bit better than from
memory. My SFX 450W PSU has been running with no fan most of the
time as well, despite changing over to a monster 3-slot HD7970 for
the time being (not that i have anything opengl to tax it, and
there's no OpenCL drivers for any modern kernel). I also tweaked
the cpu fan curve in the bios so it doesn't ramp and and down
constantly - a higher base speed and a wider first step. This
makes it much quieter in general use.
Anyway, the machine fucking flies, as you should bloody
well expect for $1800 of computer bits (just the cpu/mobo/ram/nvme
ssd). And that doesn't include gpu, screens, keyboard, mouse, psu
or case, so it is by far the most expensive computer i've ever bought.
KDE
I'm still using KDE, and actually I don't mind the window manager
for the most part (be nice to be able to drag windows between
desktops though). But there's some weird shit in there i've
slowly been pruning out like the oddly named PIM and search stuff
which brings in a lot of junk like mariadb and so on. I can still
log on so it can't have been too vital. The panel is mostly ok
but boy does it have a dumb way of configuring itself. A tiny
menu across the bottom of the screen, shitty animations (here's a
hint: ease in and out!), and strange things that move while you're
trying to get the mouse ontop of them. IT's like it's a
half-arsed attempt at a touch-screen interface but it's too small
even for that.
I'll give it a bit more of a go but I imagine that xfce4 is in my
not-too-distant future, and perhaps i'll give some of the others a
go.
New PC / GNU / Linux / ?
So I got my new pc bits yesterday and put them together. It's
just sitting 'open bench' at the moment with an old HD5770 as the
gpu.
I thought I might try a different GNU distribution, i'm pretty
sick of ubuntu and well systemd is a load of shit so I wanted to
try others. Last time I got a new machine i set it up with the
same config as my work machines (ubuntu 16.04), but I don't want
this to have anything to do with work.
I also ordered a couple of 24" 16:10 1920x1200 monitors. I don't
really like monitors bigger than that and one just isn't enough.
Maybe I should've gone for 4K monitors but I didn't. They haven't
shipped yet but fingers crossed I get them by the end of the week.
Artix
Artix is a systemd-less arch. I managed to get it up and going
but it just didn't feel great. It asks too many questions about
what to install (e.g. xfce4 has about 20 sub-packages, I have no
idea what i need) and the defaults are really pants. xterm is
almost unusable. The install documentation misses a few steps
which result in broken systems. And actually I forgot to install
jfs-utils so it broke after a power cycle anyway. Sigh. Well
it's not like I don't forget to install jfs-utils on other
distributions as well, but I just couldn't be fucked fixin it this
time.
gentoo
A bunch of stuff in artix is from gentoo so i gave that a good
look, it's got some interesting features. But I dunno, I didn't
even try to install this one after further thought it just seemed
like too much hassle - I don't really want to maintain my own
distro which is basically what it amounts to.
The gentoo documentation is pretty odd, it obviously originated
many years ago but is also written from the perspective of someone
who has never used linux at all.
guix
I tried installing guix. I actually managed to find a way to
create a bootable image with a standard kernel (that linux-libre
thing just wont cut it), and got it booting. And then it all fell
down - it has zero support for jfs, which is the only filesystem i
will use after being burnt by others. Given it took most of a day
to find that out i'm pretty pissed off, and would probably be more
pissed off it i literally had anything better to do while my hip
heals.
I find the guix documentation ... poor as it effectively assumes
you already know how to use it. It's also hard as fuck to explore
anything due to the long paths and the inability to just edit
things like syslog.conf.
It's also almost impossible to find anything about guix on the
internet - using duckduckgo it basically ignores "guix" if it's
supplied (even in quotes), and google is barely any better. Makes
them both useless.
I was hoping for more, but maybe i'll try it in virtualbox later
on.
For anyone interested, to get a standard kernel installer I
started
here: Installing
GUIX on a NUC but the boot image config.scm shown didn't work.
Instead I found (using find???) an install.scm I presume from the
nonguix channel. On my system it was in
/gnu/store/pis1cw2b6zx0m5hwilq8n7bi52ackiwn-nonguix-ecf5742/nongnu/system/install.scm
slackware64-current
So now i'm downloading an install image
for slackware64-current
and will give that a go. Hopefully the kernel is new enough.
Update a little later: Well that went fairly easily. I
just installed everything and and am pruning bits and pieces away
that I don't need like bluetooth and printer applets,
networkmanager, pulseaudio and so on. I'm using wireless for the
moment but it's hardcoded in wpa_supplicant.conf easily enough.
Packages seem pretty up to date and the pure-alsa-system stuff in
extra is a nice touch.
I'm trying KDE as a desktop this time. I don't think i've ever
used it before. It's got some weird shit but i've managed to get
the window manager to be almost right, if a bit fugly.
One thing in general the 'wraith prism' heatsink which comes with
the 3900X is a little under-specced. It doesn't have enough
thermal mass so the fan ramps up rapidly all the time. Oh well so
be it. The machine certainly feels snappy but the nvme drive
probably helps a lot there.
Now I just gotta find something to do with all those threads.
New Computer
Being stuck in the house is getting boring so I finally pulled the
pin on buying a new computer. Well enough bits to build one
anyway.
I've ordered a Ryzen 3900X, 32GB/RAM, a 1TB NVME SSD, and a X570
mITX motherboard. My long-term aim is to build a case for it but
I probably wont be able to do that for a while due to the broken
hip. For now I'll use an old ATX case. I'll also use an old GPU
for now. I'll probably install Slackware.
Hopefully it doesn't take too long to arrive, the shopfront claims
everything is in stock but maybe being 'black Friday' when I
ordered it will make a difference - it was purely coincidence that
I ordered on that particular Friday (I mean we don't have
thanksgiving so it's nonsense here anyway).
I don't really know what i'll do with all those threads - compling
Java or C is quick enough for my projects and I have barely been
doing any programming anyway. Shrug.
My bung leg is proving to be very frustrating. I can't really go
anywhere or do anything, I can't carry anything. It still hurts
when sitting or lying down or pretty much anything else. The
crutches get in the way all the time and to move you need clean
hands so cooking is a pain - i've been baking bread regularly.
I'll have to have them until after xmas so it's going to be a long
slow month. They're also precarious and just take a lot of effort
and concentration to use.