\input{header.texinc}

\title{Criterion C: Development}

\begin{document}
\maketitle

% Remember to demonstrate algorithmic thinking.

\section{Structure and justification}

\section{Algorithmic thinking}

\section{Development techniques}

\section{Existing tools}

The following tools, libraries, and other materials were used in the
development of this product.

\begin{itemize}
	\item The \href{https://go.dev}{Go programming language}'s
		\href{https://go.dev/ref/spec}{specification} was referred to,
		especially for documentation on how channel operations work;
		its GC toolchain (the most widely-used reference
		implementation) is used as the compiler during development and
		production; its standard library is used extensively in the
		program.

	\item \href{https://gobyexample.com}{Go by Example} was referred to for
		documentation on command-line flags and contexts.

	\item \href{https://developer.mozilla.org/en-US/}{MDN Web Docs} was
		used as my primary source of JavaScript documentation.

	\item \href{https://godocs.io}{A hosted fork of gddo} was used as my
		primary source of Go documentation, along with using the
		\texttt{go doc} command as part of the GC toolchain.

	\item \href{https://git.sr.ht/~emersion/go-scfg}{scfg}
		written by \href{https://emersion.fr}{Simon Ser} is used to
		parse configuration files.

	\item \href{https://github.com/MicahParks/keyfunc}{keyfunc}
		written by \href{https://micahparks.com/}{Micah Parks} is used
		to update the JSON Web Key Set to validate JSON Web Tokens for
		user authentication.

	\item \href{https://github.com/coder/websocket}{websocket} maintained
		by \href{https://coder.com/}{coder} is used for bi-directional
		communication.

	\item A minimal variant of the
		\href{https://www.rfc-editor.org/rfc/rfc1459#section-2.3}{RFC1459
		IRC message format} is used as the message format in
		client-server communication.
	
	\item \href{https://github.com/golang-jwt/jwt}{golang-jwt} is used to
		parse and validate JSON Web Tokens for user authentication.

	\item \href{https://github.com/google/uuid}{uuid} by Google is used to
		generate
		\href{https://www.rfc-editor.org/rfc/rfc9562.html}{UUIDs}
		during testing.
	
	\item \href{https://github.com/jackc/pgx}{pgx} by
		\href{https://jackchristensen.com/}{Jack Christensen} is used
		to establish a connection with the PostgreSQL database backend.

	\item \href{https://www.postgresql.org/}{PostgreSQL} is used as a
		database backend.

	\item \href{https://golangci-lint.run/}{golangci-lint} is used as a
		linter to detect programming errors.

	\item \href{https://neovim.io/}{neovim} is used as a text editor; its
		LSP client was used to connect to
		\href{https://pkg.go.dev/golang.org/x/tools/gopls}{gopls} for
		error detection and documentation provision while editing code.

\end{itemize}


\end{document}
