Recursively merge folder on macOS (native tool)
So my sister ended up in a situation where she had been maintaining two different folders on her Mac, each one containing a huge amount of…
read more →
Hi, I'm Manos :)
I am Full Stack Software Engineer from Greece, currently focusing on Front End technologies. I usually speak JavaScript!
I created this blog to document my development journey, share my thoughts and concerns about technology and self-development, while solidifying my everyday learning.
So my sister ended up in a situation where she had been maintaining two different folders on her Mac, each one containing a huge amount of…
read more →
How to configure Jest with a TypeScript project, while also using custom path mapping.
read more →
Using aliased instead of relative imports in React & TypeScript.
read more →
If you've ever worked with SQLite, you should be aware of the supported data types and Boolean isn't one of them.
read more →
In this part we are going to
read more →
In this short article, I would like to show you how to debug Electron production binaries on Windows, Mac & Linux.
read more →
It's really annoying having a certain build/deployment GitHub action run on every push.
You can use this to run it based on the commit message's content:
name: Publishon:push:branches:- masterjobs:publish:if: "contains(github.event.head_commit.message, '[build]')"
Feel free to change the '[build]'
part with whatever string you want.
You can also put a !
at the beginning to invert the logic (Run the action on commit messages that DON'T contain a certain string)
A refresh rate of 60 FPS is typical for any device these days. This means that in the timeframe of 1 second, the browser has to draw 1 frame on the screen, which in turn means that each frame has a time budget of 16.6ms (1 second / 60 frames = 16.66ms). Drawing this frame in 16.6ms includes:
Since all of these tasks run in a single thread, when they take more than ~10ms (not 16ms, because there is also other work being done by the browser), frames start to drop. Drop enough frames and visually perceptible lagginess starts to occur.
Sources: Rendering Performance by Paul Lewis
Problems line endings might create, why different operating systems sometimes use different line endings and how to configure git to save yourself from headaches.
read more →
Quick post about the SQLite UPSERT and the new RETURNING clause.
read more →
In this part we are going to setup Redux, connect it to Firebase and create our first component.
read more →
It's a very common scenario when you have to compare strings ignoring their case. The usual approach is to convert both of them to upper or…
read more →
In this first part we are going to take a look at the requirements, plan the application structure, initialize a React app and set up Firebase.
read more →
In this short post I am sharing some best practices that I've learned, during my journey writing React applications.
read more →
In layman's terms, a linked list is a list of nodes, where each node holds two things: a value and a pointer to the next node in the list. Let's see how we can implement one using JavaScript.
read more →
Use git pull --rebase to keep a tidy commit history.
read more →
Git can be very useful and at the same time very frustrating, if you don't know what you are doing. Spending a little time to get familiar with some workflows and commands are going to make for a great investment in your career!
read more →
Nice little thing I learned today: When you pass an Array
as a value to a template literal, it gets implicitly coerced into a String
. Behind the scenes String.prototype.concat
is used, as stated in the ECMA-262 specification document.
const fruits = ['apples', 'oranges'];console.log(`${fruits}`); // 'apples,oranges'
So, you've just finished college or maybe you are just thinking of getting into software development. First thing that comes into your mind is how you are going to get your foot in the door, find a job and bootstrap your career.
read more →