2018-10-29

fail

most 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 minus
  • space around brackets ( like this )
  • so-called planking like this : some people consistently use spaces around commas , semicolons and periods . and question marks ? yes , even question marks .
  • "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, useless, invisible half of the time anyway
  • 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. the "roughly x" are less useful, longer, less consistent and more complicated to produce than just displaying the exact date 2017-02-05
  • not appropriately naming downloadable files. you will never find them again
  • software patents, software patents, software patents
  • still using bz2
  • semicolons at the end of programming language expressions
  • names for software versions "suse linux tumbleweed" "ubuntu karmic koala", nobody can see from when that version is and which came last. there will be multiple names for the same thing
  • 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
  • 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 sensible defaults
  • large amount of files on the top-level of project directories. typical with autocrap
  • textual programming languages that depend on a specific ide
  • 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 naming of the libreoffice variants: still and fresh
  • programming languages with a long list of reserved words
  • displaying "unexpected error" instead of "error without descriptive message" or similar. 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

they happen to be often empty, too, because tools create them as default files for developers to fill

configuration files that include extensive documentation

  • choose: documentation or configuration file
  • more difficult to: merge, check for options, change options
  • it is 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 exist
  • on config file updates by package managers, there is no easy diff possible if a custom file is used
  • decreases the likelihood of a helpful diff because formatting changes may have been introduced in different versions

naming

  • server header variables for cgi always 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 uses their own package manager
  • many of them do not support installing different versions of the same package

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 round brackets

linux

  • 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 mess
  • saving config files directly in /home/username instead of /home/username/.config

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 perhaps the most common cause of build failures. 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
  • i suppose it is one of the top causes to 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 every 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 and do not even use lzma compression
  • any ubuntu version will stop getting any new packages after 1-3 years. then to get the new version of a browser for example, 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
  • /etc/apache2 instead of /etc/httpd
  • httpd.conf is an empty file
  • requires to install separate -dev packages for library headers
  • /var/www/htdocs
  • always enables and starts services on package install unasked
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
root@server:/etc/cron.d#
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. just use .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
  • lots of settings necessary to reduce the spying from microsoft
  • focus stealing, other windows pop up while you are typing
  • right-click sometimes takes a long time to show the context menu

bloat

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

/**
  * A class that helps with summation.
  */
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 sum(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. 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
  • sales tax is not included in the prices displayed
  • employer chooses the healthcare provider, if any
  • gun ownership is a right, healthcare isnt
  • pseudo-voluntary tipping is ubiquitous
  • civil forfeiture
  • special laws to censor animal rights abuses with extended punishment for people who document it

interesting fact: by the original constitution only white male land owners where allowed to vote

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 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

other

  • europe-wide shipping is too expensive. for example 5 euro in-country, 15 euro for 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 regular ringing of church bells. muezzin calls
  • this page was intentionally left blank
  • source references to non-free works
  • forced drug tests for cannabis and alcohol for university students and employees
  • doctor for homeopathy
  • offer only a video for explanation 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}. using a big heart symbol for rating, liking, saving as favorite or similar