Randomness from Gonçalo https://goncalovf.com Sun, 13 Aug 2023 07:54:15 +0000 en-US hourly 1 https://wordpress.org/?v=6.4.1 https://goncalovf.com/wp-content/uploads/2020/06/cropped-site-logo-32x32.png Randomness from Gonçalo https://goncalovf.com 32 32 PPRs, when are they worth investing in? https://goncalovf.com/pprs-when-are-they-worth-investing-in/ Mon, 17 Jul 2023 08:05:27 +0000 https://goncalovf.com/?p=126 PPRs, or Planos Poupança Reforma, are retirement plans specific to Portugal. You can invest in them as long as you have a personal fiscal identity in Portugal (called a NIF) or, in other words, as long as you have residency in Portugal.

We can see PPRs as wrappers for financial assets. Investors could buy those assets directly, or decide to buy a PPR that holds them. In both cases, investors are putting their money in the assets themselves, but in ways that differ in tax treatment and costs.

This article is not intended to explain PPRs’ intricacies — that’s already well covered in other online resources. Instead, it serves to point people to resources I’m building to be able to assess if and when a PPR is worth investing in. For now, those resources are:

I’ll continue to improve these resources and possibly add new ones to the list.

]]>
Configure PHPCS in your IDE and CI/CD (talk at WordCamp Lisbon 2023) https://goncalovf.com/presentation-in-wordcamp-lisbon-2023/ Sun, 21 May 2023 17:53:21 +0000 https://goncalovf.com/?p=112 At WordCamp Lisbon 2023, I gave a talk on how to setup tools to make it easier to build code under WordPress coding standards. The talk was in Portuguese.

]]>
Case-study: Convert a WordPress multisite instance with 1,200+ websites to Gutenberg (talk at Oporto WP meetup) https://goncalovf.com/avada-to-gutenberg/ Fri, 31 Mar 2023 17:50:00 +0000 https://goncalovf.com/?p=120 I recently presented a case-study in Oporto’s WordPress meetup group. The case-study was about a project where the client wanted to replace the Avada theme of a multisite instance with over 1,200 sites with Gutenberg, converting all the content to native Gutenberg blocks.

The work included creating a PHP script to handle the content conversion. In the meetup, I detail how I built this script. Watch the video recording of my presentation, while going through the presentation.

]]>
Buy vs Rent — a calculator https://goncalovf.com/buy-vs-rent-calculator/ Sun, 30 Jan 2022 09:47:00 +0000 https://goncalovf.com/?p=104 Is it Better to Rent or to Buy you home?

Often, I hear that “renting is always bad for your finances because you’re essentially giving money away to the landlord, which could otherwise be used to build home equity.”

For many people, this thinking is wrong. The unintuitive truth is that renting is often cheaper than buying. Or, if it is indeed more expensive, it’s less so than people think.

To clarify the real costs of ownership and renting, and make them comparable, I built the calculators linked below. They are both in Google Sheets so that you can inspect the calculations being made and change them as you see fit. Feel free to share as well!

Both are heavily based on the calculator created by The New York Times.

]]>
omeututor: Reflection on an entrepreneurial venture https://goncalovf.com/omeututor-a-reflection/ Tue, 05 Oct 2021 14:45:08 +0000 https://goncalovf.com/?p=74 In 2018, I built omeututor.com, a marketplace for 100% online tuition focused on the Portuguese market. This was my first real adventure into entrepreneurship and web development.

Of course, since I was just starting out in these two very difficult fields, I made a ton of mistakes and the venture was not successful. I stopped working on it after 6 exhausting months and closed the website after a year.

Nevertheless, I see this experience as a turning point in my career. From then on, I’ve been continuously putting time and effort into learning about technology, design, business, and related subjects which will lead me to do more impactful work and to a more dynamic and flexible career.

This post serves as a memoir of what omeututor.com once was and a reflection of what I’ve learned with this venture.

omeututor.com in its prime

Being omeututor.com a marketplace to connect students with tutors, let’s look at both the students’ and tutors’ experience with the website.

Students’ experience

Students’ journey started on the “How it works” page, where they learned how to find tutors and schedule a session.

“How it works” page. Section: how to schedule a session.

The marketplace offered 100% online tutoring. That means that the whole process from finding a tutor to having the tutoring session was all online. Sessions were held through an outsourced platform that I customized to look like in the image above.

Scrolling down the page, students learned about the platform’s features and they could experience it for themselves in a “demo room” at any time.

“How it works” page. Section: tutoring platform’s features and “demo room”.

If the software was appealing to the students, they could then search for a suitable tutor in the “Tutor lists”. Tutor lists included the tutor’s name, a picture of them, their “headline” and short description, as well as the courses they tutored and the minimum price for a session. The page also allowed students to filter tutors according to several criteria.

“Tutor list” page for college courses.

For tutors that seemed suitable, students could go to their profiles to get an in-depth description of the tutors’ academic background, experience, and approach to tutoring.

Having picked a tutor, the student would choose a slot in the tutor’s availability calendar, pick a subject, and optionally include some text and files for the tutor to read as context for the session.

“Tutor’s profile” page.

After submitting the form, a booking request was sent to the tutor. If the tutor confirmed it, off they were to have their session at the arranged date and time!

Tutors’ experience

The tutors’ journey started with them learning about our service on the “Tutor register” page. Here, I argued for giving tutoring sessions, particularly online ones, and for choosing us as the provider for the software stack (including bookings, payments, tutoring platform, etc.).

“Tutor register” page. Section: Why giving tutoring and why omeututor.com

Scrolling down the page, tutors would find a form where they would submit basic information about themselves – name, email, etc. – and a short text describing why they would be a good addition to the tutoring community. If they convinced me, I would approve their registration, allowing them to complete their profile (namely set courses for which they could give tutoring, prices, and availability).

This process was briefly described on the same “Tutor register” page, as seen below.

“Tutor register” page. Section: tutor onboarding process

Unfortunately though, the onboarding process wasn’t as smooth as depicted above. It was time-consuming and complex. The result was that, in its prime, over 400 tutors had registered on the website, but not even 100 had completed their profile and therefore were shown on the website as available for tutoring.

To try to solve this issue, at first I created some user guides on how to complete the profile, like the excerpt below exemplifies.

“Tutor Onboarding Guide” excerpt.

But a quick data analysis with Google Analytics showed that people who did in fact go to the guides didn’t stay long enough to read them. Afterward, I put a lot of effort into making the onboarding process easier, but the improvement in onboarding completion rates was minimal.

Roadmap

I’ve always valued being transparent to our product’s community of users. Therefore, even though I was struggling with many parts of the project, I decided to create a “Roadmap” page where I exposed our plans for the business and for the software’s features.

A portion of the “Roadmap”

Of course, in hindsight, working on this was frivolous, but I guess it shows my commitment to transparency and inclusion of users’ feedback since users could submit their suggestions at the bottom of this page.

Blog

To promote the business, I started a blog that mainly targeted students applying to colleges.

I tried to make these articles insightful and original, so I got data from the Ministry of Education and made this data easy to read through dynamic visualizations.

Visualization of admission-grades to college courses

See post here.

Visualization on how students associate courses when applying to colleges

See post here.

However, I only wrote two articles before quitting the entire project. Still, both were a great success After posting them on Reddit, they drove significant traffic to the website. People’s feedback on Reddit was very good.

What I learned

Although I closed the website in 2019, and therefore all my effort resulted in nothing that is tangible today, I learned a lot with this project. Which is, of course, what everyone says in face of failure, but I do believe this failure has rendered me more capable of executing projects in the future and also more resilient.

I can group my learnings under three headers.

Execution > Idea

Execution is more important than having the idea. I believe that the idea behind omeututor.com was interesting and that there’s a growing market for it (note that the idea was not originally mine – I extracted it from similar services that existed in the world at that time). But my execution was terrible.

In particular, the prominent learnings I derived from my errors in execution were the following.

Validate hypotheses

It’s crucial to: first, explicitly build hypotheses on what users want and on your business model; and second, test those hypotheses with real users.

I, on the other hand, just did the work I believed had to be done, without actively validating my hypotheses. I mean, I did open some channels to receive feedback from users, namely in the Roadmap page I talked about earlier, but that’s not actively searching for validation. That’s only passively obtaining feedback, and the feedback I got through those channels was too little and too skewed.

This resulted in:

  • A tremendous amount of work in features that turned out to be frivolous.
  • Quitting too quickly because I had no way to assess whether the project as a whole was going to be successful.

Produce quality code and documentation

Quality code and documentation are not only a matter of pride in the work you do. They are absolutely essential for:

  • Robustness. Meaning your app’s capacity to withstand stress and manage scenarios that you didn’t foresee without breaking.
  • Maintainability. Quickly finding where bugs are so that fixes happen fast.
  • Speed and agility in development.

Plan your UX

Every point of friction in the user experience will result in users leaving your app. In order to reduce exits in your pipeline, you have to plan your UX to be as simple, intuitive, and to require the minimum amount of effort/steps from your users as possible.

Healthy mindset > Senseless grit

When I was building omeututor.com, I was in terrible mental-health shape. My obsession with the business led me to overwork myself to the point of exhaustion, and no good decision comes from such a place. The more tired I became, the more narrowed my eyesight was, resulting in the execution errors I mentioned above.

I don’t jog anymore, but when I did, I many times sped up my pace in the last portion of the jog to make the pain end quicker. But time and time again, this has proven to be a self-defeating strategy because I just end up in more pain than necessary. This is what happened with omeututor.com. I tried to overrun my exhaustion by working harder to reach the finish line quicker, but this was a royal failure.

I realize now that a healthy mindset is a requirement to face any important challenge. Work-life balance, allowing yourself the time to zoom out, to look back and assess, and to plan the future, are all absolutely crucial.

Together > Alone

I’ve also realized the value of having a partner. I wonder how things would have been different if I had had someone to brainstorm with, review plans with, celebrate with, struggle with…

I’m to blame for having done this alone – I did not actively look for support. Next time, I’m going with a partner.


And now, on to new adventures!

]]>
ERD of an investment robo-advisor app https://goncalovf.com/erd-robo-advisor/ Tue, 04 May 2021 15:22:00 +0000 https://goncalovf.com/?p=69 I’m a fan of learning-by-doing, so to learn about database design, I built an ERD for a hypothetical investment robo-advising app, like Betterment‘s or Wealthfront‘s.

(click on the image to enlarge it)

Of course, a robo-advising app should be incredibly complex, so this ERD should only cover a small part of its functionality. But in my opinion, it was already a good exercise to think about some design choices. For example:

  • How to logically structure an app into distinct components, which can help to better organize development work.
  • Which attributes should be kept simple (existing explicitly) or derived (calculated through other attributes), and how to make this decision taking into account the importance of performance and of reducing the risk of anomalies.
  • What’s the right balance between normalization and performance.
  • How to design tables for logging/auditing.
  • The difference between 1:1, 1:N, and N:N relationships, and how to represent them.
  • The difference between entities and weak entities.

I built this ERD with draw.io. If you want to extend it, download the source code and import it to draw.io.

]]>
“The stock market is not for me” https://goncalovf.com/the-stock-market-is-not-for-me/ Fri, 05 Jun 2020 09:11:55 +0000 https://goncalovf.com/?p=44 After finishing a guide on how to invest your savings in your 20s and 30s, I shared it with many of my friends.

“Thanks, that’s cool, but the stock market is not for me”, one replied with wide-opened eyes as if I had suggested joining the Devil’s cult.

Why such an immediate negative reaction? What is wrong with the stock market?

Let me try to guess some of the complaints you may have: the stock market is the climax of an economic system addicted to consumerism. A system where culture is shaped to enable corporations instead of corporations designed to enable culture. And the stock market is the key driver of this misguided focus. The stock market is concerned by one thing and one thing only – profits – and therefore promotes all sorts of bad incentives that hurt society.

You may have seen this cartoon:

A picture containing text, book, sitting, old

Description automatically generated

But what if I told you that the stock market is just a tool and that, as such, it isn’t intrinsically good or bad? Like Facebook or Instagram or any other social media platform, it is just a tool that can be wielded in a multitude of ways and for several purposes (I’ll elaborate on social media on another post). It is how you use these tools that can be judged as good or bad.

Forget for a moment your biases of the stock market and consider only this: the stock market is a tool with which you finance companies’ growth investments in return for part of the profits they will generate with that growth. Do you see anything intrinsically wrong with that?

What if I told you that, through the stock market, you can help mission-driven companies do the work they want to do? Companies that have sustainability and social benefit embedded in their core values?

What if I told you that the stock market enables win-win-win opportunities, where sound companies win, you win, and society as a whole win? Companies that genuinely want to do good are (like any other company) loathed by the constant uncertainty of whether they’ll survive in the market. By investing in them through the stock market, you’re improving their odds of survival, allowing them to provide their good service to society, while making sound investments that will benefit you.

I understand that seeing many people using a tool with wrong intentions may discourage you from using that tool at all. But I urge you to distinguish the use of the tool from the tool itself. Make the intellectual effort of seeing the stock market for what it is, and consider investing, for everyone’s sake.

]]>
How I’m investing my savings in my 20s and 30s: A guide https://goncalovf.com/how-im-investing-my-savings-in-my-20s-and-30s-a-guide/ Wed, 13 May 2020 09:24:00 +0000 https://goncalovf.com/?p=10 Introduction

4 min read.

Most of us fall into one of two camps in regard to our money: We either ignore it and feel guilty, or we obsess over financial details by arguing interest rates and geopolitical risks without taking action. Both options yield the same results—none.

—Ramit Sethi, I Will Teach You To Be Rich

Throughout my life, I fell on the “ignore it and feel guilty” group. I never knew how much money I had in the bank, didn’t care much about how it was invested and had no visibility on how my income was being allocated to spending and savings.

Recently, however, at the age of 27, I decided to take control of my finances to ensure that I’m on the right track to having the life I want to have. So I did some research, defined my financial goals, and built a savings-and-investment plan to achieve those goals. And now I’m sharing my conclusions with you, in hopes that you’ll too take an active role in managing your finances and reach your true potential.

This guide is mostly directed to young adults in their 20s and early 30s, who will face some big expenses soon like buying a car, putting a down-payment for a house, paying for a wedding and/or a first child, and who have a long time to prepare for retirement. I’ll go into detail on the investment decisions I’ve made, and because these decisions depend on the country you’re in (more on this later), it’s particularly directed to my fellow Portuguese people. Nevertheless, if you’re from another country, going through my decision process will help you learn how to approach investing in your country as well. A lot of my insight came from reading on how to invest as a citizen of the US and UK and adapting to my situation.

Managing your finances entails many aspects, namely: earning more, spending consciously, getting better deals on big-ticket purchases such as a car or a house, and investing your savings. In this guide, I’ll only cover investing your savings because it’s both relevant to do right now and can be quite complicated, especially to people that did not have any education in economics and financial markets. To get a broader approach on how to manage your finances, I encourage you to read I Will Teach You To Be Rich by Ramit Sethi.

In summary, we’ll define our financial objectives and set up a plan to achieve them. We’ll first set up two savings-accounts: one for the short/medium-term, to cover foreseeable big expenses (car, house, wedding, etc.); and a second savings-account for the long-term. The long-term savings are to only be withdrawn at our retirement, to allow us to enjoy our end of life more freely. Then, we’ll choose where to invest with each account, and finally, decide how much of our savings (both the accumulated until now and future savings) we’ll allocate to each account.

We Won’t Become Financial Experts

Before we start building our personal finance system, an important note. Don’t think that you’ll have to get every single part of your finances in order before truly getting started managing your money. This thought will paralyze you. Just like you don’t have to be a master chef to cook for yourself or your loved ones, you don’t have to become a financial expert to take your first steps towards controlling your finances.

Getting started is more important than becoming an expert. (…) The easiest way to manage your money is to take it one step at a time—and not worry about being perfect. I’d rather act and get it 85 percent right than do nothing. (…) It’s better to make [the mistakes you’ll unavoidably make] now, with a little bit of money, so that when you have more, you’ll know what to avoid. (…)

Honestly, if you’re twenty-five and just starting out, your biggest danger (…) is being lazy and overwhelmed and not doing any investing at all. That’s why it’s important to understand the basics but not get too wrapped up in all the variables and choices.

—Ramit Sethi, I Will Teach You To Be Rich
]]>
Visualization on how students associate courses when applying to colleges https://goncalovf.com/vis-students-associate-courses/ Thu, 20 Sep 2018 18:38:00 +0000 https://goncalovf.com/?p=62 To promote omeututor.com – a marketplace for 100% online tutoring I founded in 2018 – I created a blog, which included 2 posts with visualizations about college admissions. This is the second post.

In Portugal, when students apply to colleges, they fill in a list of preferred courses and colleges they would like to be enrolled in, in order of preference. For this post, I got each students’ list of preferences for 2017 and quantified how many times each pair of courses were included in the lists. This calculation weighted how close the preferences are to each other. For example, a student’s first and second preferences have a stronger association than the student’s first and fourth preferences.

My goal with this post was to help students discover alternative courses to their preferred ones, which is important because many students can’t get into their preferred course because they didn’t get the required admission grade. Hopefully, knowing how others build their list of preferences could help a student build his own.

In the visualization, the bigger the circle, the more the course is associated with the one selected in the select-box.

The graph is in Portuguese because the business I was promoting was focused on the Portuguese market.

See the code for this graph.

]]>
Visualization of admission-grades to college courses https://goncalovf.com/vis-college-admission-grades/ Sat, 15 Sep 2018 17:11:00 +0000 https://goncalovf.com/?p=57 To promote omeututor.com – a marketplace for 100% online tutoring I founded in 2018 – I created a blog, which included 2 posts with visualizations about college admissions. This is the first post.

In this post, I wanted to help students view the minimum admission grade for different colleges for any particular course.

To use the graph:

  1. Select the courses you want to include.
  2. Select whether you want the previous year’s admission grade (2017) or the average of the previous 3 years (2015-2017).
  3. Place the cursor on top of a grade (circle) to read the information about the college..

Note: only grades for public institutions are included.

The graph is in Portuguese because the business I was promoting was focused on the Portuguese market.

See the code for this graph.

]]>