% Options for packages loaded elsewhere
\PassOptionsToPackage{unicode}{hyperref}
\PassOptionsToPackage{hyphens}{url}

\documentclass[
]{article}
\usepackage{amsmath,amssymb}
\usepackage{titlesec}
\usepackage{titling}
\usepackage{lmodern}
\usepackage{xcolor}
\usepackage{iftex}
\usepackage[margin=1in]{geometry}
\ifPDFTeX
  \usepackage[T1]{fontenc}
  \usepackage[utf8]{inputenc}
  \usepackage{textcomp} % provide euro and other symbols
\else % if luatex or xetex
  \usepackage{unicode-math}
  \defaultfontfeatures{Scale=MatchLowercase}
  \defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
\fi
% Use upquote if available, for straight quotes in verbatim environments
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
\IfFileExists{microtype.sty}{% use microtype if available
  \usepackage[]{microtype}
  \UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
}{}
\makeatletter
\@ifundefined{KOMAClassName}{% if non-KOMA class
  \IfFileExists{parskip.sty}{%
    \usepackage{parskip}
  }{% else
    \setlength{\parindent}{0pt}
    \setlength{\parskip}{1pt plus 2pt minus 1pt}}
}{% if KOMA class
  \KOMAoptions{parskip=half}}
\makeatother
\definecolor{myblue}{RGB}{24, 102, 201}
\titleformat{\section}
{\huge\bfseries\color{myblue}}
{}
{0em}
{}[\titlerule]

\titleformat{\subsection}
{\Large\bfseries}
{}
{0em}
{}

\titleformat{\subsubsection}[runin]
{\bfseries}
{}
{0em}
{}[:]

\titlespacing{\subsubsection}
{0em}{0.75em}{0.5em}

\titlespacing{\subsection}
{0em}{1em}{0.65em}

\titlespacing{\maketitle}
{0em}{0em}{0em}
\renewcommand{\maketitle}{
	\begin{center}
		{\huge\bfseries \theauthor}\\
		\vspace{.35em}
		sufyaan.me/mnml
	\end{center}
}
\usepackage{color}
\usepackage{fancyvrb}
\newcommand{\VerbBar}{|}
\newcommand{\VERB}{\Verb[commandchars=\\\{\}]}
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
% Add ',fontsize=\small' for more characters per line
\newenvironment{Shaded}{}{}
\newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{#1}}
\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
\newcommand{\BuiltInTok}[1]{\textcolor[rgb]{0.00,0.50,0.00}{#1}}
\newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{#1}}}
\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{#1}}
\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{#1}}
\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{#1}}}
\newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
\newcommand{\ExtensionTok}[1]{#1}
\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{#1}}
\newcommand{\ImportTok}[1]{\textcolor[rgb]{0.00,0.50,0.00}{\textbf{#1}}}
\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
\newcommand{\NormalTok}[1]{#1}
\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{#1}}
\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{#1}}
\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{#1}}
\newcommand{\RegionMarkerTok}[1]{#1}
\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{#1}}
\newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{#1}}
\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
\setlength{\emergencystretch}{3em} % prevent overfull lines
\providecommand{\tightlist}{%
  \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
\setcounter{secnumdepth}{-\maxdimen} % remove section numbering
\ifLuaTeX
\usepackage[bidi=basic]{babel}
\else
\usepackage[bidi=default]{babel}
\fi
\babelprovide[main,import]{english}
% get rid of language-specific shorthands (see #6817):
\let\LanguageShortHands\languageshorthands
\def\languageshorthands#1{}
\ifLuaTeX
  \usepackage{selnolig}  % disable illegal ligatures
\fi
\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
\urlstyle{same} % disable monospaced font for URLs
\hypersetup{
  pdftitle={(POST) Keep It Minimal},
  pdflang={en},
  colorlinks=true,
  linkcolor=blue,
  filecolor=blue,
  urlcolor=blue,
  pdfcreator={LaTeX via pandoc}}

\title{Sufyaan's Website}
\author{Sufyaan's Website}
\date{}

\begin{document}
\maketitle

\section[Keep It Minimal]{Keep It Minimal}\label{why-i-use-terminal-apps}

\textbf{27 June 2023}


\textbf{Category: }Software

In technology, you should keep it simple as much as possible. The KISS
philosophy and the \href{sufyaan.me/definitions/unix-philosophy/}{UNIX
philosophy} especially must be followed if you want quality software.
Most pieces of famous software nowadays do not follow this guideline and
it is costing millions of people dearly.

\hypertarget{why-minimal}{%
\subsection[Why Minimal?]{Why Minimal?}\label{why-minimal}}

Simply put, a piece of minimal software:

\begin{enumerate}
\tightlist
\item
  Is easier to maintain
\item
  Has a dearth of bugs
\item
  Runs fast on all devices
\item
  Is easily extensible
\item
  Helps avoid complications
\item
  Contributes to the world
\end{enumerate}

Let\textquotesingle s expand on the first and second points. Why is
minimal software so easy to maintain? Why do developers hate being
developers when they are working with bloated pieces of software?
Keeping software minimal gives developers the opportunity to easily find
code that is slowing down the whole program or is inefficient. It also
helps developers find bugs easy. This is because a smaller codebase
means that it takes less time to review the code. A group of 10 people
can easily perfect a program whose codebase is less than 1500 lines.
After that, it is just a work of maintaining the program and making sure
that any requests that users have are answered.

Minimal software runs fast on all devices. It is simply no contest. A
1000-line Python program is going to be much faster than a 100K-line C
program even though C is much faster than Python. Inefficiencies and
lackluster execution of functions in a program can be spotted much more
easily in a smaller program. There is a huge disregard for old
computers. People simply cannot use old computers anymore because the
software that they use is so inefficient that their computer struggles
to do basic things. For example, they use Adobe Reader to open PDFs
which is one of the worst things to do. Adobe Reader takes an incredibly
long time to open considering the fact that they are the ones that
invented PDFs. Another example is Word. Why does Word take long to open
and write on? It\textquotesingle s code is bloated. Think of Zathura. It
is a PDF viewer that follows the
\href{sufyaan.me/definitions/unix-philosophy/}{UNIX philosophy} of doing one
thing well. Even on the slowest of computers, Zathura takes milliseconds
to open a PDF. Think about LaTeX. You do the writing then you compile
the document into a PDF. It does everything from linking, referencing,
bibliographies much better than Word. In fact, it is so good that many
universities require its use for proper formatting and referencing.

Minimal software can be extensible as per the
\href{sufyaan.me/definitions/unix-philosophy/}{UNIX philosophy}. Instead of
creating a massive program that tries to do everything, minimalist
programs create modules for certain functions. This makes
troubleshooting a piece of cake as the initial confusion of finding out
what exactly causes the error is practically eliminated. For example, if
you are making a login page and the authentication does not work, you
know that you should look in the authentication module. However, if you
make it all in a single program, it is difficult to root out whether an
issue is due to an incorrect variable type or a redundant function.

All of this helps developers to avoid complications. No team wants
another error or speed complaint in the middle of another issue. All of
the advantages listed thus far help developers have peace of mind.

Finally, minimal pieces of software can be liberated and made into
\href{sufyaan.me/definitions/free-software/}{free software} to contribute to the
world. Once the initial stages of bug-fixing and optimization is over,
it is just a matter of letting the world find ways to make the program
better. An inefficiency that no one would spot otherwise can be ironed
out by a top-tier programmer who worked in a plethora of huge companies
with decades of experience. It also helps budding developers learn about
development.

\hypertarget{closing-the-program}{%
\subsection[Closing The Program]{Closing The
Program}\label{closing-the-program}}

To sum it up, everyone should use and develop minimal software if
possible. This is because minimal software is easier to maintain, debug
and optimize due to its smaller codebase. It also runs fast on all
devices and avoids complications during development time. Minimal
software can also be liberated into
\href{sufyaan.me/definitions/free-software/}{free software} which will allow
talented developers to review the program and contribute to the world.

\end{document}
