What are your favorite programming languages?
Go and Python are my favorite languages. I also like C and Erlang,
and don't dislike JavaScript. Lastly, I love Prolog.
I have experience in other languages but would prefer to stick with
these.
Have you tried Rust?
I've been hearing for years that Rust is great in many ways. Also that it is now present in the Linux Kernel, Firefox, and Discord. Rust also seems to be a great alternative to Go. But as of the writing of this answer I have not tried it yet.
What is your favorite editor, and IDE?
Vim is my editor of choice. My OS is my IDE.
I like to have a big vimrc file along with a few plugins that allow me
to build my own custom development environment for whatever projects
I'm working on, independently of language, framework, target
platform.
If I can't use the normal vim, probably because I'm in a Windows
machine or using a language/framework that requires a specific IDE,
then at least I'll try to use a plugin that gives me Vim keybinds.
I've worked with a few languages at the same time, and I've found that
organizing my environment to my development needs far outclasses
sticking to a single IDE. So I tend not to use them.
Even knowing you prefer Vim, do you have other favorite editors or IDEs?
For an editor, I've found Visual Studio Code to be very good. Their
Vim emulation isn't so great, but it gets the job done when Vim isn't
available.
For IDEs, I found the Jetbrains IDEs, like PyCharm and IntelliJ IDEA,
to be very good. Their integration of terminals, consoles, debuggers,
tests, and such tools is very good. The Vim emulation is better than
the one in VSC.
Tabs or spaces?
The best choice is to stick with the conventions of the language. For
example for Python that is spaces and for Go that is tabs.
There are reasons that languages adopt one or the other. For Python, it
is important to indent code so that function arguments in multiple
lines align, for example, so spaces are used to achieve that. For such
reasons I don't even acknowledge any discussion about which one is
better globally, since different systems serve different needs of the
language with which you are programming in, and there really isn't a
globally best.
Better yet is to use an automatic formatter. Go has that builtin,
Python has projects that do that very well. IDEs usually have some auto
formatting which is already quite good. So such a discussion really
isn't needed.
Do you prefer double or single quotes?
I don't care!
In languages that allow double or single quotes, for some years I've
had opinions about how they should be used. At some point I would
always prefer double quotes, since languages like C use double quotes
for strings, and single quotes for chars. At another point, I would
prefer single quotes, because it's easier to type for most keyboard
layouts. At other times I've got back to double quote, since it was
more readable.
In the end, I've seen to many arguments for one or the other style, so
I would fall on the same argument of "Tab or Spaces", which is, stick
to the conventions of the language. Sadly, even within a language I've
seen far to many discussions about which one should be used.
I just stick to the choice that makes people around me bother me less
with this discussion.
Why do you not engage in flame wars?
I will happily have a discussion about a given tool, or about a way to
use a tool any day of the week If, and only if, such discussion is done
in a respectable and non emotional manner.
Flame wars usually start with someone seeing you use a tool and
automatically giving you shit for doing so. Such a conversation already
starts without the possibility of weighting pros and cons of using such
a tool, and without the consideration for any context or experience
surrounding the usage of such a tool. Worst of all, they are made with
the intend of bullying or trolling other people.
As examples of this insufferable attempts at conversation, we have: You
like Linux, are you crazy? You use Vim, are you stuck in the 70s? You
like SQL, are you a masochist?
If you are really interested into why I use a given tool, at least be
respectable enough to listen to what my experience is with them, and
try to have an open mind.
Which are your favorite databases?
PostgreSQL! I may use other databases depending on the specific use
case, time for development, and overall context of the project, but
PostgreSQL is my number one choice in most cases.
Redis is usually another database that makes it's way to my projects,
either to be used directly or because other tools need it. I like it
very much since it is so simple, well designed, and usefull.
Why do you like SQL and relational databases?
SQL and relational databases didn't came out of nothing. They are the
result of decades of research and improvements.
Storing and retrieving data is a gigantically deep and diverse subject.
Although, there isn't anything that even comes close to a one size fits
all for this subject (although PostgreSQL is close), SQL and relational
databases are still the best case for most situations.
The arguments that conclude that SQL is bad because it's hard to learn,
or that relational databases are bad, because you have to define the
tables and types, and it's hard to change them, simply don't hold any
water for me. I'm all for having tools which are as simple and
intuitive as possible. But one cannot ignore the benefits of SQL and
relational databases because they require a bit more skill.
This opinion doesn't invalidate the usage of NoSQL databases. Many have
their usages in specific use cases, for which they were created, and
I'll happily use them when it makes sense.
Other favorite tools?
I can't live without Git, Docker, and a decent shell along with a decent terminal emulator! Many of the usual linux tools are also a must, like curl, wget, htop, diff, tree, grep, etc. In linux environments I also always use tmux.
Your personal projects seem to lack unit testing. Why?
I like maintaining a few personal projects, it's not only fun but also
a great way to learn and experiment with new technologies.
Unfortunately, I usually only have a few hours per month to work on
them, so I have to make decisions regarding what to develop. Since the
projects are usually very small, I tend not to do the tests and simply
try new things out of the box.
Why does this website, and your personal projects, look like they were made in the 90s?
I haven't worked actively on Frontend development for many years.
Professionally speaking, it hasn't made sense for me to focus a
sufficient amount of time to become an expert in modern frontend
development in the last few years, so I lack the proper skills to do so
nowadays.
Spending my personal time learning these frameworks is simply not
something I want to do. When I've done so I ended up spending a lot of
time dealing with npm issues, or getting lost in webpack configs, and
not actually developing the frontend. I can't afford to waste my time
on such things.
I have nothing but a great deal of respect for people who maintain
frontend projects, I just don't want to spend my weekends working on
that. Instead, I like to develop vanilla HTML, CSS, and JavaScript.
It's not as dynamic or modern, but it is good enough for the simple
frontends that I need, and using a big framework would be overkill
anyway.
I also have a soft spot for the look and feel of the older Internet.
I found media files, like images, in your git repos. Why?
In my git repositories you may find a couple a images, this is true.
They will usually be one of the following: a logo, a favicon, an image
used in documentation, an image used as an example of some process of
that project.
Such files are usually only committed once, and having them in a git
repository is the simplest, fastest way to deliver them to a new
development or deployment environment, or share them on github and
similar. Git is also smart enough to not show diffs of binary data,
should a logo be replaced by a new one, for example.
For such cases, the size increase of a repository is simply not a big
deal.
Why do you use light themes?
99% of the time, that I spend looking at text in a computer or phone
screen, I am in a well illuminated room. In such an environment, it is
easier to read dark text on a light background. It might be my eyes
only, but having it the other way around makes it harder for me to read
and causes me head aches.
Most people seem to prefer dark themes for the same reason I prefer
light ones. Although, has far as I know, one should actually alternate
between light and dark as lighting conditions change to reduce eye
strain and head aches. That is actually why dark mode is sometimes
called night mode, implying that it is adequate for low light
conditions.
Another point is that most people seem to confuse the pain of bright
screens for light themes, saying that looking into light themes is to
bright. In reality, you can and should have a relatively low brightness
setting in your screen to avoid eye strain, regardless of theme.
Why do you use the Portuguese keyboard layout?
I grew with the Portuguese keyboard layout. The first time that I've
considered using a different keyboard layout was only when I got my
first job outside of Portugal. It was then that I've realized that a
lot of people from all over the world actually program with the US
layout, since so many keys common in programming are in a better
position.
While I think that learning a new layout for that convenience is
awesome, I don't intent on making that change. I have far to many years
of muscle memory with my own layout, not only to type, but also to use
my different key binds. I don't want to spend time learning a new one
now, since the benefits would not be that great.
I should point out that the labels on my keyboards are irrelevant,
after all I don't look at the keyboard anymore when I type, and I'm
actually using a German keyboard with the Portuguese layout to type
this English text!
What are your hobbies?
I love playing Tennis and Guitar!
Tennis, I mostly play in sand during the summer and in a tennis hall
during the winter.
Guitar, I used to play mostly metal when I was younger, but nowadays I
just play a classical guitar.
What languages do you speak?
Portuguese from Portugal is my native language. American English is close to a native language. I speak German (Hochdeutsch) fairly well, but don't consider myself fluent yet. I would like to learn Ukrainian in the future.
Coffee?
Yes, please!