“Neurons” by Birth Into Being is licensed under CC BY-NC-SA 2.0

This was originally posted in tiagojdf.

When I was first starting as a junior programmer I would always get lost when looking at backend code.

I assumed that part of it was because I was a junior developer; that I did javascript instead of whatever language was used in that backend; and that frontend development was very different from backend.

I worked with backends in php and python, with several frameworks, and every time I would feel lost during the first couple of weeks. …


Photo Home office by DavidMartynHunt. Licensed under CC BY 2.0.
Photo Home office by DavidMartynHunt. Licensed under CC BY 2.0.
Photo Home office by DavidMartynHunt. Licensed under CC BY 2.0.

Originally posted on https://tiagojdf.com/

Like many of you, I am currently working from home. I’ve been doing it for more than a year, and one thing that I noticed while talking to my peers is that is has not been easy to keep a healthy work/life balance.

Working from home has its own challenges, for example, sometimes I feel guilty about my performance during the day. I feel that I am not as focused as I should be, that there are many distractions. …


Snippet is a weekly podcast where I share snippets of coding knowledge.

Originally posted on https://tiagojdf.com/

Last week I talked about “Less is more” and how you should not add code because you might need it in the future. Today, in our efforts to simplify code and to do more with less, I want to talk about deleting existing code.

First of all, deleting code is hard. Deleting code to simplify it or to completely remove it, can cause all kinds of issues, so before you start deleting code you should ask yourself should I remove this code? In order…


Snippet is a weekly podcast where I share snippets of coding knowledge.

Originally posted on https://tiagojdf.com/

Today I want to talk about a coding principle that I think really shapes the way I code. This principle is “Less is more”.

Last week I was working on improving web vitals, namely on loading images on scroll. Usually I would just add the loading=”lazy” attribute to the images and be done with it.

The thing is, on this particular page we used some legacy code to load the images that used divs and background images. …


TL;DR: A model of everyone’s favorite hedgehog, and this time with a peek at my creative process.

It’s been two weeks since I last made my first 3D model. I loved it, and I am back for more.

This time around I want to focus more on the creative part of my model and less on the technical part.

Since I am still doing my first models, I am basing myself in 2D sprites of characters that I love. It so happens that a few days ago I had the chance to reminisce about my favorite childhood characters with a…


TL;DR: I love pixels and their 3D brothers, the voxels. MagicaVoxel is great to make 3D. Use the hintbox. Using a 2D pixel sprite to make a 3D model is easy and how I took advantage of this. It’s easy to share your work in Sketchfab.

I have recently joined the team of Sketchfab. As part of the job I get to look at great models everyday from some of the best 3D artists out there. Being passionate for 3D and looking at great artworks like Van Gogh’s room, made me want to give 3D modelling a try.

Since…


TL;DR: Add your user to your git config. My favourite aliases. I set up a gist to keep a .gitconfig file, and so should you.

Every now and then you change computers or you run you a new virtual machine/container. When you do so you lose most of your personal configurations for a lot of software. This forces you to work in suboptimal conditions or redo your configurations.

Recently I had to set up my git configuration and I thought I would share my experience with you.

First I set up my user credentials in the command line (github docs):


TL;DR: When your controller is destroyed, it emits $destroy. You can listen to this event and unbind variables, remove listeners, etc. to avoid leakage or undesired side effects. Demo time.

Angular is a convenient framework. Convenient, but also complex.
One of its main features are controllers, which make it easy to connect your model to your view. As your app grows, so does the number of controllers in it, which are instantiated and destroyed all the time. During that process, it is easy to introduce leaks by not cleaning up after your controllers. For example, if you have been…


TL;DR: For a multipage form use a parent state for the controller and nested states for the views. A parent state can have a controller that is shared by all child views, making the data flow much easier to reason about.

by portlandwebworks.com

If you have been using angular for a while now, you might have had to share data between states. If you did so, you probably ended up creating a service that stores the data and is then imported by several views. Even though that solution works, there are other patterns out there to share data, that sometimes seem more…


TL;DR: Use the rn-geolocation npm package. After you install it, install Google Repository and Google Play Services dependency. Add the plugin to your Android build by changing your settings.gradle and android/app/build.gradle and add the package to your MainActivity.java.

For the past few days I have been developping a React Native app for Android. One of the things I needed for my app was geolocation. I started by trying navigator.geolocation just to figure out that the Geo Location module is a Missing Module in React Native for Android. Since that was not an option, I set out looking for answers:

Tiago Ferreira

Dev at Sketchfab

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store