pm [at] pedromelgueira [dot] com

< FAQ

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!