2021-01-02

fail

things that dont seem right. almost all of it computer related

the headlines dont mean all of it is bad

in text

  • fixed formatting like with pdf: non-flowing text, non-interchangeable font, more difficult text selection
  • using a long dash without space instead of a space surrounded minus "understanding-and increasing-coffee quality and for ensuring that...", so that it can be visually confused with a dash connected word. there is no need for a long dash, just use space separated minus
  • so-called planking , like this : some people consistently use spaces around commas , semicolons and periods . and question marks ? yes , even question marks .
  • space around brackets ( like this )
  • "hi!!!!!!!!! the item i bought from you doesnt work!!!!!!!!!!! how can i return it??????????? thanks!!!!!!!!!"
  • capitalisation. there is no real need for having a second alphabet set of uppercase letters
  • camelcase and full uppercased words
  • serif fonts

quoting like this

,,word"
`this'
`or`
``daemon managing daemons''

computer

  • blinking cursors: distracting, irritating, invisible half of the time
  • displaying times as "about one month ago" instead of the date. because often when you are interested in the date, you look for exact dates that help you put it on a timeline. the "roughly x years ago" formats are less useful, longer, less consistent and more complicated to produce than just displaying the exact date 2017-02-05
  • not descriptively naming downloadable files. you will never find them again
  • software patents, software patents, software patents
  • using bz2 when there are better alternatives
  • semicolons at the end of programming language expressions
  • names for software versions "tumbleweed" "karmic koala". nobody can see the order and approximate release time of those versions. there will be multiple names for the same thing, as numeric version numbers are still needed
  • creating default directories in the home directory, sometimes undeletable
  • xml
  • foo/bar/baz as example variable names
  • "segmentation fault" is one of the worst error names ever. it happens way too often to have such an obscure name. even calling it just "memory access error" would be an improvement
  • non-free programming languages and programming languages that depend on specific ide software
  • editor modelines. for example # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
  • requiring a specific, non-alphabetic css property order
  • requiring to write a long config file instead of having defaults
  • huge amount of files on the top-level of project directories. typical with autocrap
  • documentation: coming soon!
  • led lights on electronics. examples: wlan stick, laptop, keyboard (shift lock, roll, num-lock), fan, computer case, monitor, network card, stereo
  • using icon fonts on websites does not work if the user has a custom font for browsing
  • "if" with indent in languages where the structure is not generally indent-based. all other code is usually indentation safe but this introduces a whitespace issue. "goto fail"
  • projects that have documentation only in pdf
  • the names of the libreoffice variants: still and fresh
  • programming languages with a long list of reserved words
  • displaying "unexpected error" instead of something like "error without descriptive message". to the user the error will of course be unexpected
  • libraries that dont list the api with a list of functions anywhere on the homepage or documentation
  • predefined bookmarks after install. for example in firefox or gftp

all-caps file names

README
NEWS
LICENSE

there is no reason to uppercase it. they often happen to be empty, too, because tools create them as default files for developers to fill.

configuration files that include extensive documentation

  • choose: documentation or configuration file
  • are more difficult to: merge, check for options, change options
  • are having the manual in the config file
  • i want to see what i have set, or add what i want to add, and dont want to search through thousands of lines about different settings that possibly exist
  • on config file updates by package managers, there is no easy diff possible if a smaller custom file was used

naming

  • server header variables for cgi in uppercase, fe "REQUEST_URI"
  • http headers always capitalised, fe "X-Accel-Redirect", "Content-Type"
  • the official http header "HTTP referer" is a misspelling
  • religiously uppercasing sql keywords. for example "SELECT AS FROM WHERE ORDER LIMIT"

focus stealing

when a window is open and another one pops up and steals the window focus. if currently typing the typing now continues in the pop-up window

beep on linux consoles

happens when a tab-completion leads to no results, or you reach the beginning or end of a line: beep, beepbeep, beepbeeepbeepbepbeep. is or used to be the default on most linux distributions

package management

  • each distribution and programming language with its own package manager
  • most of them do not support the installation of different versions of programs, leading to usage of things like docker and vagrant

recommending or forcing non-intuitive editors like vi or emacs onto users

they are far from intuitive. you would put a user in front of something he wont be able to use or even exit

formatting

  • random use of newlines
  • separating each code line by at least two newlines
  • no spaces around infix operators
  • spaces around both sides of brackets
  • 8 spaces indent

linux

  • saving config files directly in /home/username instead of /home/username/.config
  • the file name that the "last" utility uses: wtmp
  • the file name /etc/profile. should be named /etc/login or similar
  • .bashrc, .bash_profile, .profile, /etc/bash.bashrc, /etc/bash.bashrc.local, /etc/profile chaos

iso-9660

the most common format for data on compact discs. all filenames are restricted to contain only uppercase letters, numbers and underscore. the length of filenames is limited to 31 characters, directory nesting is limited to 8 levels and complete pathnames are limited to 255 characters. no files greater than 4G

"autocrap": autotools, automake, etc

  • misconfiguration of autotools is probably the most common cause of build failures in the free software domain. build failures suck
  • project root directories are littered with like 20 autoconf files. which can not be easily kept in a sub-directory
  • the output is overly verbose
  • no program that uses autotools can call itself lightweight
  • numerous autoconf files and dependencies are often used for simple copy installation procedures
  • builds fail for documentation generation, unmaintained tests or convenience preparation
  • i suppose it is one of the top causes that make old software unusable

soap

  • wsdl neither makes it easier to make requests to webservices, nor to design the schema
  • build the xml without a specialised application? good luck
  • attributes, content, schemas, doctypes, named opening and closing tags, xsd

naming

  • dist/distrib instead of something like "compiled"
  • develop/devel instead of dev or development
  • bin instead of "executables", "exe", "scripts" or similar

ubuntu, debian

  • modifies upstream packages. renames binaries, restructures directories, etc
  • large welcome banner on each login
  • mailcheck on login. "no mail"
  • at least three different applications with different semantics for managing packages. dpkg, apt, apt-get, apt-cache
  • apt-get is way too verbose, has many repositories even for the most basic core packages
  • dpkg packages are way more complicated than pacman packages
  • any ubuntu version will stop getting new packages after 1-3 years. then to get the new version of a browser for example, time consuming manual builds or a comprehensive system upgrade is necessary that may break things
  • delays on ssh login and logout
  • .bashrc and .profile files full with needless defaults
  • nano is configured with syntax highlighting by default. sometimes unreadable on dark displays
  • makes a network request and searches for programs in repository each time a command cannot be found
  • always autostart enables and starts all new services on package install unasked
  • /etc/apache2 instead of /etc/httpd
  • httpd.conf is an empty file
  • requires to know about, find and install separate -dev packages for library headers
  • /var/www/htdocs, /var/www instead of /srv/http
  • "no permission to save" because sudo was not used, then loosing all editing
root@server:/etc/cron.d# cat .placeholder
# DO NOT EDIT OR REMOVE
# This file is a simple placeholder to keep dpkg from removing this directory
admin@ubuntubox:~$ service ufw stop
stop: Rejected send message, 1 matched rules; type="method_call", sender=":1.8" (uid=1000 pid=7061 comm="stop ufw ")
interface="com.ubuntu.Upstart0_6.Job" member="Stop" error name="(unset)" requested_reply="0"
destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init ")
$ ssh ubuntubox
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-37-generic x86_64)
Documentation:  https://help.ubuntu.com/
System information as of Fri Oct 09:20:16 CEST 2014
System load:  0.08   Memory usage: 1%   Processes:   74
Usage of /home: 23.1% of 47.12GB   Swap usage:   0%   Users logged in: 0
Graph this data and manage this system at:
https://landscape.canonical.com/
Last login: Fri Oct 08:56:30 2014 from 192.168.1.46

in javascript

  • [1, 5, 20, 10].sort() // [1, 10, 20, 5]
  • [10, 10, 10].map(parseInt); // [10, nan, 2]
  • number printed as 4.0. fix? parseFloat(4.0) or 4.0|0 because bit operations implicitly convert to non-float

scheme

  • caar, cadr, cdar, cddr, caaar, caadr, cadar, cdaar, caddr, cdadr, cddar, cdddr, caaaar, caaadr, caadar, cadaar, cdaaar, cddaar, cdadar, cdaadr, cadadr, caaddr, caddar, cadddr, cdaddr, cddadr, cdddar, cddddr
  • using ;; and ;;; for scheme comments
  • .sls and .ss filename suffixes instead of just .scm

r6rs

  • introduces square brackets with the same meaning as round brackets
  • introduces new mixed naming scheme. flonums with the undelimited "fl" prefix. or the undelimited "p" suffix

cron

how about a cron that:

  • shows an example for the configuration file format in the manpage
  • does not install cron.* preset directories in /etc
  • does not install default jobs
  • does not want users to use vim
  • does not necessarily support user crontabs
  • uses only /etc for configuration

emacs

keybinding chaos. modes usually come with their own keybindings, overwriting yours

git

some man pages read like this: "massage the porcelainish onion peeling parameter for downstream commands"

windows

  • this file is currently in use
  • right-click sometimes takes a long time to show the context menu
  • focus stealing, other windows pop up while you are typing
  • lots of settings necessary to reduce the spying from microsoft
  • file selection dialog and my computer doesnt show links to get to the desktop

bloat

/*
  * File created by John the Great Programmer on 1984/02/01.
  */

/**
  * A class that helps with summation
  *
  * @created by john the great programmer
  *
  *
  */

class SummationHelper

    /**
      *
      * A function that calculates the sum of x and y.
      *
      * @param Integer x An integer to sum with y.
      * @param Integer y An integer to sum with x.
      *
      * @return Integer The sum of x and y.
      *
      */

    int sumIntegers(int x,int y)
    {
        /*
          * Returns the sum of x and y.
          */

        return x-y;

    }
    /*
     * End of function sum.
     */

end
/*
 * End of class SummationHelper.
 */

united states of america

  • inch, foot, yard, mile, acre, ounce, pound, gallon, fahrenheit. 6 foot 2 inch tall, weighing 8 stone (uk). does not use celsius, the temperature scale used by all other countries in the world
  • illegality of prostitution
  • highest percentage of citizens in prison. freeing 96% of current inmates would make it world average
  • energy market not deregulated. only a minority of states allow choosing the energy provider
  • less democratic, non-proportional voting systems. two party, money lobbied first-past-the-post system with gerrymandering and seemingly endless and pointless two-year pre-election phases
  • employer chooses the healthcare provider, if any, not the employee
  • special laws to censor animal rights abuses with extended punishment for people who document it
  • civil forfeiture
  • gun ownership is a right, healthcare isnt
  • the fact that police must expect to get shot almost any time
  • ubiquitous pseudo-voluntary tipping; to prevent hostility and for business owners to shift responsibility on customers

esperanto

  • the vocabulary draws about two-thirds from romance and one-third from germanic languages. the syntax is romance and the phonology and semantics are slavic. influenced by the native languages of the early authors
  • the default form of some nouns is masculine while a derived form is used for the feminine. for example, nouns that denote persons and whose definitions are not explicitly male are often assumed to be male unless explicitly made female, such as doktoro, a phd doctor (male or unspecified) versus doktorino, a female phd
  • uses several diacritics, which are arguably unnecessary complicating marks on latin letters

lojban

  • ' instead of h

other

  • europe-wide shipping is prohibitively expensive. for example, 5 euro in-country versus 15 euro to any neighboring or eu country
  • copyright for works of dead artists
  • intro animations, intro pages, logo, logo animations or the like of any kind
  • the frequent ringing of church bells or muezzin calls. smothers creative thinking work
  • this page was intentionally left blank
  • references to non-free works
  • forced drug tests for cannabis and alcohol for university students and employees
  • doctor for homeopathy. "my mom is a doctor"
  • offer only a video for explanations on a website
  • not knowing how something could happen: will never happen
  • not knowing how something could be done: impossible
  • time format: "Mar 28 00:39:04 2017" instead of "2017-01-28 00:39:04"
  • using roman numerals
  • metric ton when we can say megagram
  • made/hosted with {heart-symbol}. heart symbol for rating, liking, saving as favorite or similar