From b13c3ffccaaeb768c2e297952cfa938aa3796c8c Mon Sep 17 00:00:00 2001 From: Miloslav Ciz Date: Mon, 27 Dec 2021 00:21:13 -0600 Subject: [PATCH] Write some shit --- compsci.md | 22 ++++++++++++++++++++++ game.md | 2 +- good_enough.md | 7 +++++++ gui.md | 19 +++++++++++++++++++ ui.md | 2 +- 5 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 compsci.md create mode 100644 good_enough.md create mode 100644 gui.md diff --git a/compsci.md b/compsci.md new file mode 100644 index 0000000..7619b60 --- /dev/null +++ b/compsci.md @@ -0,0 +1,22 @@ +# Computer Science + +Computer science, abbreviated as "compsci", is (surprise-surprise) a [science](science.md) studying [computers](computer.md). The term is pretty wide, a lot of it covers very formal and theoretical areas that neighbor and overlap with [mathematics](marh.md), such as [formal languages](formal_language.md), [cryptography](cryptography.md) and [machine learning](machine_learning.md), but also more practical/applied and "softer" disciplines such as [software_engineering](software_engineering.md), [programming](programming.md) [hardware](hardware.md), computer networks or even [user interface](ui.md) design. This science deals with such things as [algorithms](algorithm.md), [data structures](data_structure.md), [artificial intelligence](ai.md) and [information](information.md) theory. The field has become quite popular and rapidly growing after the coming of the 21st century computer/[Internet](internet.md) revolution and it has also become quite spoiled and abused by its sudden lucrativity. + +## Overview + +Notable fields of computer science include: + +- [artificial intelligence](ai.md) +- [computer graphics](graphics.md) +- [databases](database.md) +- [hardware](hardware.md) design +- [networking](network.md) +- [security](security.md) and [cryptography](cryptography.md) +- [software engineering](software_engineering.md) +- theoretical computer science +- [user interface](ui.md) +- smaller field or subfields such as [operating systems](os.md), [compiler](compiler.md) design, formal verification, speech recognition etc. + +Computer science also figures in interdisciplinary endeavors such as [bioinformatics](bioinformatics.md) and [robotics](robotics.md). + +In the industry there have arisen fields of [art](art.md) and study that probably shouldn't be included in computer science itself, but are very close to it. These may include e.g. [web design](webdesign.md) (well, let's include it for the sake of completeness), [game](game.md) design, [system administration](sysadmin.md) etc. \ No newline at end of file diff --git a/game.md b/game.md index 100200c..834ce1f 100644 --- a/game.md +++ b/game.md @@ -1,6 +1,6 @@ # Game -Game (also gayme) is software whose main purpose is to be played and entertain the user. Sadly most games are [proprietary](proprietary.md). +Game (also gayme) is [software](software.md) whose main purpose is to be played and entertain the user. Sadly most games are [proprietary](proprietary.md). Among [suckless](kiss.md) software proponents there is a disagreement about whether games are legit software or just a [meme](meme.md) and harmful kind of entertainment. The proponents of the latter argue something along the lines that technology is only for getting work done, that games are for losers, that they hurt [productivity](productivity_cult.md), are an unhealthy addiction, wasted time and effort etc. Those who like games see them as a legitimate form of relaxation, a form of art and a way of advancing technology. The truth is that developing games leads to improvement of other kinds of software, e.g. for rendering, physics simulation or virtual reality. diff --git a/good_enough.md b/good_enough.md new file mode 100644 index 0000000..aff7e04 --- /dev/null +++ b/good_enough.md @@ -0,0 +1,7 @@ +# Good Enough + +A good enough solution to a problem is a solution that solves the problem satisfyingly while achieving minimal cost (effort, implementation time etc.). This is in contrast to looking for a better solutions for a higher cost. For example a tent is a good enough accommodation solution while a luxury house is a better solution (more comfortable, safe, ...) for a higher cost. + +To give an example from the world of programming, bubble sort is in many cases better than quick sort for its simplicity, even though it's much slower. + +In technology we are often times looking for good enough solution to achieve [minimalism](minimalism.md) and save valuable resources (computational resources, programmer time etc.). It rarely makes sense to look for solutions that are more expensive than they necessarily need to be, however in the context of [capitalist software](capitalist_software.md) we see this happen many times as price is artificially and intentionally driven up for economic reasons (e.g. increasing the cost of maintenance of a software eliminates any competition that can't afford such cost). This is only natural in [capitalism](capitalism.md), we see the tendency for wasting resources everywhere. \ No newline at end of file diff --git a/gui.md b/gui.md new file mode 100644 index 0000000..84b3bf2 --- /dev/null +++ b/gui.md @@ -0,0 +1,19 @@ +# Graphical User Interface + +Graphical user interface (GUI) is a visual [user interface](ui.md) that uses images; basically this includes icons, colors, shapes, mouse cursor, windows, buttons, pictures etc. This stands in contrast with [text user interface](tui.md) (TUI) which is also visual but only uses text for communication. + +Expert computer users normally frown upon GUI because it is the "noobish", inefficient, limiting, hard to automate way of interacting with computer. GUI brings [complexity](complexity.md) and [bloat](bloat.md), they are slow, inefficient and distracting. We try no to use them and prefer the [command line](cli.md). + +GUIs mostly use [callback](callback.md)-based programming, which again is more complicated than standard polling non-interactive I/O. + +## How and When to Do GUI + +GUI is not forbidden, it has its place, but today it's way too overused -- it should be used only if completely necessary (e.g. in a painting program) or as a completely optional thing build upon a more [suckless](suckless.md) text interface or [API](api.md). So remember: first create a program working without GUI and only then consider creating an optional GUI [frontend](frontend.md). + +Still, when making a GUI, you can make it [suckless](suckless.md) and lighthweight. Do your buttons need to have reflections, soft shadows and rounded anti-aliased borders? No. Do your windows need to be transparent with light-refraction simulation? No. Do you need to introduce many MB of dependencies and pain such as [QT](qt.md)? No. + +The ergonomics and aesthetic design of GUIs has its own field and can't be covered here, but just keep in mind some basic things: + +- Don't have too many elements (buttons etc.) at the screen at once, it's confusing as hell and drives noobs away. +- Things must be intuitive, i.e. behave in a way that they normally do (e.g. main menu should be at the top of the window, not the bottom etc.). +- Just use your brain. If a button is important and often used, it should probably be bigger than a button that's used almost never, etc. diff --git a/ui.md b/ui.md index 9ce791e..ab63f97 100644 --- a/ui.md +++ b/ui.md @@ -1,6 +1,6 @@ # User Interface -User interface, or UI, is an interface between human and computer. +User interface, or UI, is an interface between human and computer. Such interface interacts with some of the human senses, i.e. it can be visual (text, images), auditory (sound), touch (haptic) etc. Remember the following inequality: