Have you ever heard of suckless1? I think I stumbled onto suckless
sometime while reading K. Mandla2, though there’s a reasonable
chance it might have happened before then. suckless immediately resonated with me because of their
philosophy3. Their software also looks good, very accurately
reflecting the idea of minimalism4; often requiring you to rethink
how you typically interact with software to do what you want to do. Sometimes this process of re-evaluation
is fruitful, sometimes maybe less so, but it’s always interesting to experience. They have their own Linux
distribution, called stali5 which I really recommend reading about.
I’ve found a couple of other distributions that are similar in various ways:
CRUX6, Tiny Core Linux7
and Morpheus8. Morpheus in particular looks to be faithful to the
suckless way. I think CRUX and Tiny Core Linux are both full GNU stacks, so they’re less interesting to me
personally, but if I struggle to be productive with the more experimental stali and Morpheus, then I wouldn’t
hesitate to give them a try.
There are multiple facets to minimalism. Morpheus and stali both adopt non-GNU tools like
musl9, sbase10 and
ubase11. (Though stali doesn’t officially adopt all of these yet.)
I like the idea of this, because GNU tools are often huge, complicated pieces of software with all kinds of
support, sometimes for legacy systems that are practically ancient. The idea is also novel to me. I had
simply never considered using a runtime libc other than glibc before. Clang isn’t new, so the idea of using a
non-GNU compiler isn’t quite as novel, but in practice it’s still not common. Have you ever thought about the
organization of a Linux distribution? Prior to reading about stali, I hadn’t. Linux distributions ship with
dynamic libraries in common locations and programs are built to dynamically load these libraries at runtime.
This can cause some problems:
- Programs can, ironically, be larger because they are now requiring all APIs in a given dynamic library even
if they only use a small subset.
- You have to build your program with a compatible compiler and with the proper library versions.
Armed with this new knowledge, I’m really curious to try building statically linked programs with a non-GCC
compiler using something other than glibc. Tiny C Compiler (TCC)12
caught my eye, but I had issues doing what I wanted. I can’t recall exactly what I encountered. I also gave
Clang a whirl13 but that similarly didn’t want to work for me. I
did get something going with musl and GCC14, but that’s clearly
just a piece of what I want.
Okay, sorry, minimalism. Another aspect here is system initialization. I guess there’s a conflict in the
larger Linux community over systemd. I’ve never really been curious about init systems before and my only
prior exposure was invoking
service [start|stop|restart] .... When I
started exploring Manjaro Linux, I also saw two variants (regardless of the specific desktop environment
being included): with systemd or with openrc. I had no idea what that meant at the time, so I didn’t
learn anything from it. suckless link to information about systemd on their stali page and I learned a lot
from that. I can’t say I actively dislike systemd because it’s in my Arch installation and it appears to be
working well enough. However, I’m now curious about alternative init systems and especially in trying to pare
things down to their simplest minimal subset. suckless have sinit and all the distributions I linked above
use something other than systemd.
So all of these things are very interesting to me and I’ve been downloading images and trying to use
alternative Linux systems for just the tiniest amount of time now. It’s a learning experience for sure. Both
Morpheus and stali lack less, more and various other tools I’ve come to rely on. We’ll see how things
2Motho ke motho ka botho
4Lessism Over Minimalism
7Tiny Core Linux
12Tiny C Compiler
13How to compile C apps with musl and Clang
14GCC + musl
Well, today I had a “fun” little diversion.
I started out by wanting to connect a game controller to my crappy little Dell Mini so I can start prototyping some games.
Of course a controller isn’t required, but I like controllers and it seemed like a small little learning exercise.
If you know me and my experience with computers, then you’ll know that this didn’t go as planned. Also, why would I be writing about it if it did? :-)
I’m running a console-only installation of Arch Linux with systemd. That should give you context for the following, and if your environment is different then you’ll have to modify the appropriate commands accordingly. I’m also talking specifically about using a USB bluetooth adapter, though I just checked and apparently this little netbook has built-in bluetooth.
Before starting, let’s assess our current USB situation:
Take note of what’s showing.
Now plug in the usb bluetooth adapter and check again:
Make sure the device shows up properly.
Now, I don’t have any bluetooth utilities installed by default, so I have to set that up:
sudo pacman -S bluez bluez-utils
grep btusb /proc/modules # Make sure the kernel module is loaded
systemctl start bluetooth
systemctl status bluetooth # Verify the bluetooth service is working
At this point I had a problem.
The primary issue is that trying to execute
scan on from
bluetoothctl would tell me that the bluetooth device wasn’t ready. I had a difficult time resolving it, and started resolving a secondary issue that may or may not have been related. I noticed in the
systemctl status bluetooth call an error message regarding sap-server which lead me to some resources.1
By following a comment on that bug, I was able to resolve the problem.
sudo mkdir /etc/systemd/system/bluetooth.service.d
sudo $EDITOR /etc/systemd/system/bluetooth.service.d/customexec.conf
# Now in customexec.conf:
# Out of the file now:
systemctl stop bluetooth
systemctl start bluetooth
systemctl status bluetooth
Now that problem has been resolved. But I still can’t scan…
Thankfully the solution is extremely simple:
> power on # This is the problem!
> scan on
Well, the whole goal was to get a controller talking with my laptop which I opted to do via bluetooth and I got bluetooth working… however, I brought a PS3 controller to try with. Unfortunately, PS3 controllers use a proprietary protocol on top of bluetooth and can’t be paired with normally. See more info.2 I should have known this already, because you have to connect a PS3 controller via USB cable to a host PS3 system to get it to pair with that system. Well, luckily enough there is a utility you can download called
sixpair that’s available in the AUR. Unfortunately, simply using
sixpair on its own isn’t enough.
And thus, the end of my journey with connecting the PS3 controller to my laptop. At least for now.
1Arch Bluetooth Issue
2PS3 Controller Bluetooth Guide
I haven’t been too active here or on my daily coding project1. So
what’s been going on?
Honestly, not too much. A lot of Dark Souls. I mean watching VaatiVidya2
and EpicNameBro3 while also playing through Dark Souls:
Prepare to Die Edition4 and Dark Souls II: Scholar of the First
Sin5. I love that series so much. I’m not very good at it and I
don’t like everything that the games do or that the community is interested in; but overwhelmingly I am
completely entranced by it.
Besides videogaming and family business, I’ve been doing a little bit of software tinkering. However, this
tinkering is a lot less on the programming side of things and much moreso on the configuration and setup
side of things. I’ll document these things more in the near future. Here’s a quick summary of what I’ve been
- Mumble Raspberry Pi Server
- SSD Nodes VPS for my domain name and to forward network traffic to my home servers
- X-less Arch installation on my Dell Mini 10 (ie., console-only)
And some things I’ll be playing with soon:
- Much more console-land exploration on Arch
- Sabotage and/or Tiny Core Linux exploration
- Linux From Scratch study
- More electronics (when I get my AliExpress shipments)
- More home servers
- Linux Kernel programming study
- Linix Framebuffer programming study
- Rust language study
And more family time, more workout time and more Dark Souls. :-) I plan to write on all of this stuff and I
think having my new setup on the Dell Mini will help achieve this goal.
1BitBucket Daily Coding Practice
2VaatiVidya on Youtube
3EpicNameBro on Youtube
4Dark Souls: Prepare to Die Edition on Steam
5Dark Souls II: Scholar of the First Sin on Steam
So, it turns out I like KDE.
I use Ubuntu a lot. It’s installed on all of my computers and it’s the server OS I’ve used
at work for the past five or so years. Typically I stick with Unity on the desktop.
There are a few reasons why I opted to change: I like to try new things, I get bored,
I haven’t used KDE in a while. It’s hard to say exactly. A few strong contenders:
I was rather impressed with Kdbg recently and started using that in all my C projects. I’ve
been using Manjaro, and on my more powerful machines I opted for the default distro which
includes KDE. Rich Geldreich told me to use it.1
I had been using it for a few weeks and ran into similar issues with regards to multiple
monitors and screen locking, so I opted back to Unity. Well, here I am switching right back
to KDE and it is definitely a much more comfortable, possibly more intuitive UI.
So there you have it. I apparently like KDE.
1Rich Geldreich: A Shout-Out to QtCreator 2.8.x on Linux
Today is a grab-bag of miscellaneous thoughts and updates that aren’t necessarily related to each other.
First off, I haven’t been keeping up with my daily programming practice, but it’s not for lack of will.
As my last post may have illustrated 1; I’ve been dealing with computer problems. I’ve only recently managed
to get a working installation of Windows on my machine, but I’ve run into problems with my GNU/Linux distro,
so actual productivity work is put on hold until that’s resolved.
I mentioned previously my desire to do “intentful game reviews.” 2 Clearly that has not gone anywhere.
Part of the reason is a lack of desire to play the sorts of games I explicitly expressed interest in playing.
Partially it’s a stronger focus on programming and non-gaming related activities as I also described. 3
The Witness is out now, and as far as I can tell, it is the epitome of the kind of game that I expressed
a desire to spend time thinking about and reviewing. Part of all this hoopla with dual-booting Windows
and Linux is so that I can actually play The Witness. (As well as Titanfall and The Witcher 3 among others.)
So we’ll see. I’m hopefull I can get my machine into a nice state where these kinds of things can happen. :-)
Going forward, I don’t see myself expending a lot of effort on thinking about games. Chris Franklin does
a better job than I can see myself doing 4 and I don’t want to put much effort into paying particular
attention to experiences I’m not actually enjoying. So if I like a game, I’ll play it and enjoy it, and if it
sticks with me, then I may deem it worth of comment on here. But don’t expect anything resembling a schedule
or consistent practice.
Windows 7 vs. Any Modern GNU/Linux Distro
Just a quick thought on this that I don’t think deserves a full post of its own.
During my recent adventures in installing various OSes in various ways, the discrepancy between a freshly
installed Linux system versus a freshly installed Windows 7 system hit me with full force.
This isn’t all that surprising, as Windows 7 was released in 2009 and here we are 7 years later.
Nevertheless, I have a Windows 7 install disk and I have various GNU/Linux distros kicking around, so my
actual experience here is directly affected.
Windows 7 by default gives you so very little. My desktop LAN interface doesn’t even work without installing
several drivers for my motherboard. Once I have network access I have to go grab a video driver to get out
of 800x600 resolution. In contrast, any modern Linux distro will install all necessary drivers by default
so you’re at least in a basically functioning environment. There are caveats, sure, like a reasonable chance
that your wifi card isn’t supported in an obvious way, or maybe you’re stuck with open source video drivers
that don’t perform as well as the closed-source binary blobs. Even with these caveats, the base installation
you’re left with is leaps and bounds above what a fresh Windows 7 installation will get you.
Windows 10 does seem to address this gap.
I’ve been dabbling in various Zelda games recently. I finished Wind Waker several weeks ago, and I’m well
into Twilight Princess now. I was having fun with Twilight Princess, but the Wii controls finally got to me.
The imprecision is absolutely killer. There’s no point playing a videogame if the input you’re providing
is consistently getting misinterpreted. As much as I like aspects of Twilight Princess (and by extension;
Skyward Sword), the Wii’s control system just destroys the overall experience. This distaste has led me to
seek out other isntallments in the series that use “standard” controls. The most obvious method of doing
this currently seems to be the 3DS.
So I borrowed a 3DS from Lucas. 5
So far I am really enjoying it. I’ve been playing Ocarina of Time. I play with the 3D setting on, but set
to about 2/3rds of maximum depth. I don’t think Ocarina of Time is a perfect game by any means, but this
is one of the better ways I’ve experienced Link to date. I really like the 3D effect, too; it makes it seem
like there’s a little 3D physical toy acting according to my whim. That may get old, but I do think the 3D
effect adds to the overall experience, however slightly.
1GrooveStomp: UEFI and Windows 10
2GrooveStomp: Inspired to Share Gaming Experiences
3GrooveStomp: Daily Coding