It seems to me that the point in time at which I stopped enjoying using computers came right around the time that "UI" fell out of fashion to be replaced by "UX" - User Experience.
The problem seems to be that all the UX Designers fell the need to come up with something original and unique. The result is that all but a very few applications and websites, I regard as intolerable.
We all know about Firefox but fortunately we have Pale Moon. I have very few gripes about Pale Moon.
What really drives me round the bend are javascript scrollbars. It's not that they're implemented in javascript, it's that they never work right. Perhaps if someone gave away a readymade scrollbar implemented in JS that were used widely but no every single page on the internet has to roll its own scrollbar.
I found Linux Mint unusable until I figured out how to enable scrollbar arrowhead in BOTH Gnome 2 and Gnome 3. The response of The Self-Appointed Experts is that one should grab the thumb then drag it up and down but that does not work well when I'm editing source written by someone else, which source has very long files.
At least I do have my arrowheads back. Now if I could only convince my family and my high school friends to hang somewhere other than FaceBook.
I'd wipe my drive and use only Linux if I could find a text editor I like. And yeah I'm actually quite good at GNU Emacs and at one time I enjoyed it but came to prefer the GUI text editors on the Mac. Bluefish gets me most of the way there but it works poorly with projects that have lots of source files.
I'm working on an in-house app that is built out of multiple Free Software components. Some of them are quite large; I need to modify them. I'm not going to sell my project rather the results of its computations.
My Acer Aspire E 15 mostly works OK when it's plugged in but is reluctant to start up when it's not plugged in, also it has spontaneous shutdowns when it's not plugged in. A couple days ago I "refreshed" my PC, which Windows claimed would be a system reinstall that would delete my apps but save my settings. Well it wiped my settings too.
The problem was alleviated somewhat but did not go away.
If I run memtest86 or memtest86 I have no problems. This leads me to believe it's a problem with software, such as a corrupted system file or setting.
It's still under warranty if I can't diagnose it myself I'll call tech support. I just don't want to have to send it in if I don't absolutely have to because I'd want to run a full backup first, but I've torrented vast quantities of pr0n Open Source installation ISOs.
Norman King suggested I adjust my battery power options, that would rewrite the battery settings. That didn't help.
I've been planning the architecture and design goals of the first to-be-public release of SubLinux for about half a year.
SubLinux is the personal XFCE i586+ distro I built from source, and from which I am writing this. Generally, only me, family and friends are ever given copies of SubLinux. Source for SubLinux 1 has been lost.
Some background
SubLinux 1 was released in mid-2012, and was also an i586 distro. However, it had many severe flaws, and while functional, bugs were often encountered. It had a busybox/GNU hybrid userland, and while efficient, this frequently caused problems with software compilation. It was a small system, less than 2GB big once installed. It came with the Midori browser.
It was mostly used as a Fedora substitute on machines with no i686/CMOV support, and on thumbdrives as a portable system.
It used the syslinux bootloader instead of GRUB, which is used by most distributions. It did not support UEFI.
SubLinux 2 was released in early 2014, and has replaced Fedora on all of my desktops, excluding my server.
It's also i586-based, but has a true GNU userland. It shipped with XFCE 4.10, but has since been upgraded to 4.12, and has had numerous kernel upgrades. It has no package manager, was built from source, and provides both a PAE and non-PAE kernel. Unlike SubLinux 1, it has debugging symbols stripped from all binaries, yet provides both static and shared libraries of all system libraries, and all headers are present at installation, and thanks to the stability of the GNU userland, SubLinux 2 has proven to be an outstanding system for software development. It has a GCC 4.8.2 based toolchain. Like SubLinux 1, it also uses the syslinux bootloader. SubLinux 2 does not support UEFI. Systems wishing to use it must boot in "legacy" mode.
Moving forward
There are a handful of reasons I want to make SubLinux 3 a public, supported distribution.
* I am spoiled now that I've had a distribution that suits my tastes precisely, and I'd like to share it with the like-minded.
* It will showcase my Epoch Init System, my anti-systemd vaccine.
* There is a lack of distributions with the desired "vibe" of freedom, catering to power users, and enabling development.
Major design goals:
* Support for both i586 and x86_64, possibly in one single build, with the userland being primarily i586, but containing all libraries necessary to execute x86_64 code, and providing an optional x86_64 kernel. This would guarantee that no matter which system you boot it on, it will indeed boot. And, if the system supports x86_64, such applications will be able to run.
The compiler toolchain should also support both i586 and x86_64.
* Great for development, making it easy to deal with a large variety of programming languages.
* Vanilla software, only adding patches to software that are required to compile it. This includes the kernel.
* A complete graphical desktop, probably XFCE.
* Includes other power user tools, like terminator, isomaster, etc.
* No unnecessary duplicate applications in the default installation. One that runs in the CLI, one that runs in GUI. For example, mousepad will be installed, but leafpad will not.
* Efficient, with a focus on keeping system resource usage down to a minimum while still providing the aforementioned complete GUI and desktop.
* Annual release, with updates provided over the internet periodically.
SubLinux 3 will be a desktop-oriented distribution, with a full GUI. It will, again, include all development related files (excluding complete source) in each default package, so you'll never need to install some "-devel" package. And like SubLinux 2, it will include both static and shared libraries for every package. It will likely ship with XFCE as the default desktop, and will rely on (me-endorsed) community builds for other desktops. And that's where our next piece of the puzzle comes in.
packrat, a new package manager
I've been writing a package manager called packrat. It has one major design goal: Make it really easy to create packages.
As a consequence of this, it does not include dependency resolution support, making it similar to Slackware's package management scheme. You can, at present, in the unstable builds of packrat, create a package with one command. It uses tarballs for storage, and has metadata and sha1 checksum file verification. Packages will likely not support signing.
It will support downloading "action lists" from the internet for updates and deprecations, and will include a *built in* GTK frontend, eliminating the need for 3rd party tools for graphical package management.
That's about it for now guys. I'll let you know if I come up with any other brilliant ideas. :^)
-Subsentient
If you read the news you often read about the incredible cruelty shown towards the homeless, for example about "police sweeps" in which - just a couple weeks ago - 150 people were tossed out of their tent camp in Vancouver, Washington, followed by a bulldozer "cleaning up" what were once their possessions.
But in my actual experience the kindness shown towards homeless people such as myself is far, far more common than is the cruelty. It's just that the cruelty gets more press.
I often hang out at all-night restaurants as I prefer to sleep during the day - during the day there are day centers for the homeless but at night one must either brave the cold, or find a restaurant that will permit one to hang out all night long in return for purchasing one single coffee.
The restaurant I'm at right now gives me my coffee absolutely free of charge. I tell them they don't have to do that, they I sing on the street for tips and so have the means to pay.
"You should accept help when it is offered to you," pointed out one of the waitresses. Just now she asked me if I wanted breakfast.
This isn't the first time, a while back the manager of a Carl's Jr. bought me breakfast, also the owner of a Burger King bought me lunch.
I finally applied for Social Security Disability Insurance, as a result of my Aphasia (not my mental illness). The clerk who took my application was confident it would be approved but there is some problem with my tax records that I expect I can straighten out.
When one's SSDI is approved one's first check is backdated to the lesser of one year before one's application or the date one became disabled. For me that would be quite a lot of money.
I am not dead certain but I contemplate donating all that money to the charities that look after people like me.
I've recently done some touchups to my SubStrings library, and have reminded myself of my own undying glory, er, I mean, come to the conclusion that it's useful enough to warrant me advertising it a little bit. I use it in a large percentage of my projects nowadays. I thought I'd showcase part of what makes it awesome to me.
Before we begin, there is one thing I must mention: SubStrings is only designed to work well with null terminated strings only. It's almost certainly unsafe to use it for anything else.
And, one last thing: This is indeed a C library, written in C89 and works in C. The OOP appearance, such as SubStrings.Length(), is function pointer trickery for cleanliness' sake. SubStrings is also a non-hosted library, meaning it has no dependencies, and can thus even be used in your bootloader's source code.
String copy and concatenation, truly safe
SubStrings copy and concatenation functions have precise bounds checking, and always result in a null terminated string, and, if the size parameter is given accurately, SubStrings never has buffer overflows. Let's illustrate.
#include "substrings/substrings.h"
void MyFunc(void)
{
char Array[1024];//So, the maximum string data copied will be sizeof Array - 1, so there is room for the '\0'.
SubStrings.Copy(Array, "My string is awesome!", sizeof Array);/*SubStrings.Cat's size parameter needs to be the *maximum capacity* of the destination. You don't need to subtract from
the max size each iteration of a loop. SubStrings knows how to do it.*/
SubStrings.Cat(Array, " And it merges really nice too!", sizeof Array);
}
strcpy and strcat() are in general, unsafe, and strncat and strncpy have differing and confusing behavior. SubStrings eliminates these problems with one consistent approach for concatenation and copy operations.
All the necessities provided
SubStrings also provides all the other functions you might want for basic string operations, including Length(), Compare(), NCompare() [analogous to strncmp()], Find(), and CFind() [Find a single character], and FindAnyOf() [Analogous to strchr()].
Find() and CFind() accept another, new argument, allowing you to directly request the N-th occurrence of the matching string/characters. There is also IsLowerS, IsLowerC, IsUpperC, and conversion functions like LowerS, LowerC, UpperS, and UpperC.
In general, functions ending in S deal with strings, and functions ending in C deal with single characters.
High level stuff is here too
Some of the cooler stuff is stuff you might expect to find in Python.
Stuff like StartsWith, EndsWith, Replace, Strip, Reverse, and StripLeadingChars and StripTrailingChars.
And some original ideas too
There are other functions, like Extract(), which pulls the string content that's in between two sequences.
Let's have an example.
#include "substrings/substrings.h"
int main(int argc, char **argv)
{
int Inc = 1;
char Buf[256];for (; Inc < argc; ++Inc)
{
if (SubStrings.StartsWith("--config=", argv[Inc]))
{
SubStrings.Extract(Buf, sizeof Buf, "=", NULL, argv[Inc]);
DoSomething(Buf);
}
}
}
What's happening here is that Extract is pulling the data that starts after the =, and since the next parameter is NULL, it reads on until the end of the string. This makes handling command line arguments marginally simpler.
There's other goodies, like SubStrings.CopyUntil(). Let's take a look.
#include "substrings/substrings.h"
void MyFunc(void)
{
const char *const String = "Wibble[END]Nurble[END]Aburble[END]Farts";
const char *Iter = String;
char Buf[256];
while (SubStrings.CopyUntil(Buf, sizeof Buf, &Iter, "[END]", true))
{
puts(Buf);
}
}
This produces the output:
Wibble
Nurble
Aburble
Farts
I actually find myself using CopyUntil and its sister function CopyUntilC quite often. Then there's SubStrings.Line.GetLine(), which is a specialized CopyUntil that helps with processing multi-line C strings.
Lastly, there's another useful function, Split().
#include "substrings/substrings.h"
void MyFunc(void)
{
const char *String = "Gerbil|Wibble";
char One[256], Two[256];SubStrings.Split(One, Two, "|", String, SPLIT_HALFONE);
}
Now, One[] contains "Gerbil|" and Two[] contains "Wibble". You can specify to discard the split tokens, or put them in half one or two. The options are SPLIT_NOKEEP, SPLIT_HALFONE, and SPLIT_HALFTWO. Because Split() doesn't ask for buffer sizes for the sake of convenience, the way to do it safely is to make sure that both One and Two will be able to hold the entire length of String, if needed.
This library is getting more touchups. You can find the github here, and the SubStrings homepage here.
Thoughts, ideas or suggestions? Let me know.
Well, it finally happened. Last night, I had sex with someone new for the first time in 13 years.
I've been seeing this girl for about a month now, and it's been going surprisingly well. I've been seeing her once a week and she has been coming over to my place and I make her dinner and then we cuddle on the couch and talk. Last night we moved things to the bedroom.
It wasn't as awkward as I though it was going to be. After having sex with the same person for 13 years, I was really nervous to experience someone new. Anyways, I guess sex is sex. It all felt familiar, so it didn't feel as weird as I thought.
I haven't used a condom in a LONG time, and I remember how much condoms suck. I needed to pick up some non-latex ones, so that might be a factor. I also think that the condom was maybe too small, and also I think that it might be better if I add some lube to the inside. If anyone has a suggestion of a good non-latex condom, please recommend below.
We cuddled in bed after and talked, which was really nice.
After she left, I changed she sheets on the bed, and waited for my wife to come home. When she did some home, it wasn't really a big deal at all. I told her how things went (basically what I said above) and that I had already changed the sheets. We hugged, and then it was back to the routine. It really was like nothing had changed. (Thank god!)
We have been talking about this for so long, that it was nice to actually have something happen and see that everything is still okay. I showered before bed, and then cuddled with my wife as we fell asleep -- just like normal.
So far, so good.
Expounding on what I feel ban-worthy as linked in a recent story I subbed...
These are my opinions not site policy. That said, they are also my minimum requirements to remain on staff.
Over-the-top spam: This means dozens of spam comments to a single story, automated or not. Anything less can and should be dealt with by simply modding the comments as Spam.
Gross/repeated illegal activity: Linking to copyrighted works and other illegality of the minor variety that we notice should be resolved by editing the comment in the database and letting the user know why their comment was edited in a reply. Bans should be reserved for things such as illegal and credible threats or multiple instances of minor illegal activity that was not ceased when notified that it should be.
Opinions, truly held or of a trollish nature: Absolutely never should this be criteria for a ban.
The meaning of "site bans": Banning an account or IP address from posting to the website. I don't have as much issue with IRC bans, it's a secondary means of communication for us not our primary one.
Any further clarification or other questions, feel free to ask.