/ English

Computer science may be one of the fields where we spend the most of our time making tools. Whenever there is something to be done, there need to be a tool specifically engineered for that.

Need to test a new software? You will need tools. Need to automate a process? You will need tools. Need to test that network protocol and server you just wrote? You need tools.

## An example of tool

Everyday I find myself making, improving or using all sorts and matters of tools. One of them is LaTeX: a software to convert its text based format into PDF documents. I take all sorts of notes all the time, and I organize them in LaTeX which then makes readable documents out of them. That is absolutely great.

My LaTeX (with my little macros, aka homemade tools) looks like this:

\section{Notes about something}

Some note text.

Some other note.

\begin{warningblock}{}
Be careful of that.
\end{warningblock}

\begin{tipblock}{Could be useful for X}
These are advice for doing X
\end{tipblock}


Which render to this:

Finding and making tools is one of the most critical time-sinks when making my encrypted cloud storage. This is a nice tool that allows for people to make tools from it.

## My own tools

Other tools I use often are:

• git: Used for both source code and as a storage base for my TODO list in pman Joe Armstrong-style
• pman: the tool that I made using git as a backend
• Crystal: For complex scripts that could grow legs in the future
• Pomodoro: A tiny script for time management
• Andrew: one of the Crystal script that took legs and now generates code to parse things
• expect: a tool to test command-line programs or run automation on them

All of those tools have a purpose in a developer's workflow, and developers should strive to make tools suited to their workflow and team. And when projects get more complex and complicated (like our encrypted cloud storage software) it gets more and more important to arm yourself with the tools for the job.

## Making libraries and reusable assets

One of the project I spend the most time working on is the Freestanding General Purpose library.

The main reason for that is the same as the reason why the .NET framework exists: to provide a flexible base for software development projects, with reusable, customizable elements to accelerate development and that, in turn, get stronger with time through testing and usage in different projects.

## Be a craftsperson

Don't hesitate in making tools that will automate your day. Sometimes, even a very very simple Makefile can be an amazing tool, or sometimes it is just a few lines of bash or C++.

A software craftsperson should never shy of making the right tool for the right job.

### Conclusion

Tools are what allows any craftperson into their trade. You can hardly do a better job than what the tools allow you to. A craftperson also have to learn and recognize tools at their true value.

I invite you to check the information at https://nekoit.xyz/, join us on Discord or Telegram, or follow me on Mastodon [email protected]

#### Ludovic Lagouardette

Founder of NekoIT, Developer and Cloud architect