Projects

COVID-19 Dashboard

This project was one of my favourite tools for breaking my way out of tutorial hell 👹. I also wanted this project to serve me as a display of my JavaScript skills to potential employers or collaborators.

By the time I decided to start working on this project I had just finished learning about Promises, async...await, APIs and error handling. I wanted to code a project to implement all of this knowledge.

Lessons learned

At the start, this project seemed simple, but it quickly got complicated, especially because I was dealing with three different APIs (and a couple more that didn’t work in the end).

I didn’t spend much time on HTML, but CSS proved to be demanding once more 😅. Thanks to the challenges I faced I gain more CSS skills and learned how to better debug it.

Regarding JavaScript, I could have implemented MVC from the get-go, so I will do that in my next project. As I previously said, I prefer not to refactor this project and leave it as a witness of my skills at the time.

APIs are reliable… most of the time 🤭. I’m sure paid APIs perform better, so if I need to use them in the future for a more serious project, I will research deeply what is the best API to get for the job.

This project still has room for improvement, but I had to make the decision to stop working on it at some point. Overall, I think it’s functioning as expected.

Tech stack used in this project

In this project, I employed the following technologies:

HTML5
CSS3
Git & GitHub
JavaScript
Figma
Netlify & Vercel

To-Do app

Doing courses and tutorials is great, but sometimes is difficult to evaluate how much are we actually learning. Watching video after video and coding along with the instructor gives us very good guidance, but it is not a realistic scenario. In a real-world job, we will have to solve problems and start figuring things out by ourselves (with the help of Google, of course 😉). So, to test how much I was actually learning during the JavaScript course I was doing I decided to make a simple To-Do app in HTML, CSS and vanilla JavaScript.

Lessons learned

Thanks to this project I could have a taste of how much work an application like this one takes.

I learned about the importance of structuring HTML in a meaningful semantic way, and how a good HTML structure can make our lives easy when we start working on CSS and JavaScript in later stages of the project.

I underestimated CSS 😅. The classes names are a bit funny and messy, so in the future, I'll try to implement BEM notation and maybe SASS. I discovered that some behaviour that initially thought of was in the realm of JavaScript can easily be achieved with CSS, such as animations on elements.

Regarding JavaScript, this was the first time I coded following the OOP paradigm and, despite feeling a bit out of my element, I now can see the potential that following this paradigm has.

The project has a lot of room for improvement, but I wanted to live it like that to have a "snapshot" of my knowledge and skills up to the point in time where I was working on it.

Tech stack used in this project

In this project, I employed the following technologies:

HTML5
CSS3
Git & GitHub
JavaScript
Figma
Netlify & Vercel

Blog Posts

Hammering down React basics, with a paint coat of Material UI

This project is an excuse to practice React basic concepts and to experiment with Material UI. I will be building a simple application to build a list of favourite books 📚.

In the past, I was used to coding with an imperative approach: stating line by line all the necessary steps the program needed to execute in order to achieve the desired outcome. With JavaScript, and especially with React, this mindset is changing, moving towards a declarative paradigm. I no longer state line by line what needs to be done, but the end results I’m pursuing.

This declarative approach is still new for me, and it’s taking me some work to get used to it, but I’m feeling more comfortable with it. (...)

2 use cases of the useReducer ReactJS hook

useReducer
is a Hook that allows us to manage multiple states more efficiently, create complex state logic, and manage states that depend on previous states. The following two use cases are good examples of how we can make use of this hook.

Manage multiple states

useReducer
can be used to simplify the way in which multiple states impact a piece of data. In this case, adding, removing, and clearing an array can be achieved by using
useReducer
instead of three separate states.

Modify complex states, such as arrays or objects: login form

useReducer
can be especially handy when dealing with multiple states and a complex state logic. By handling a login form with this hook instead of multiple useState hooks we can appreciate how powerful this hook is. (...)

5 use cases of the useState ReactJS hook

useState
is a Hook that needs to be called inside a function component to add some local state to it. React will preserve this state between component re-renders.

State management

Let's start with a warning: don't write a
setState
call in the main body of the component function, because it will create an infinite loop. The loop is created because the initial render calls the state update function
setState
, which in time triggers a re-render and a new function evaluation. The
setState
call should be inside a function that is called when an event is detected.

Conditional rendering

We can use a state to conditionally render a component or part of it.

Toggle flags

useState
can be used to toggle between two values, usually true and false, in order to toggle a flag, such as the display mode.

Counter

useState
can be used to keep track of a variable through multiple re-renders, such as in a counter application.

Get API data and store it in state

A more complex use of this hook is presented when we need to interact with an API. In this case, we can use a state to store the response of a
fetch()
to the API, and the state of a spinner that will indicate if the data is being fetched.(...)
;

About Me

Damian Demasi with a hat in a park on a sunny day.

LinkedIn

Twitter

GitHub

Hi! 👋 I'm Damian

My interest in technology started when I was a teenager and dial-up Internet connections were booming. I still remember plugging in a 10 metres telephone cable to my PC from the phone box every night to avoid keeping my family’s phone line busy during peak hours.
In those days I started playing with Linux as well, thanks to a book about the Slackware distro that I bought and came with a set of floppy disks. I right away noticed the importance of having a backup of your files, because I ended up formatting the hard drive multiple times due to the learning process.
Around the same time, I also started playing with scripting on several IRC programs. In those days, social networks as we know them today didn’t exist, so the “chat rooms” were the closest we could get.
It was inevitable that I started playing with HTML also. I used to make very rudimentary pages about things I liked and hosting them on GeoCities for free.
Fast forward some years, I chose to study Computer Science at university but, after a year, I switched to Telecommunications Engineering. After graduating, I got my first job at Hewlett-Packard as a support analyst, but I quickly moved to a company specialised in mobile telecommunications, Claro AMX, in which I worked most of my professional life.
In 2019, my wife and I decided to quit our jobs, sell all of our possessions, and move to a different continent. We jumped over 12.000 km from Argentina to Australia, searching for new experiences and a better future. I started studying for an MBA a couple of weeks after arriving in the country, and I finished it in 2021.
I think making such a big change in my life allowed me to face most of my fears and reassured my self-confidence and trust in my capabilities, which is difficult for someone that is constantly pushing himself to be better. In 2021, after working for an Australian technology company developing an integration of the SNMP protocol in the C programming language, I rediscovered how good it felt to make programs; to create something out of nothing.
That last experience is what brings me to this moment, returning to my humble beginnings in web development. With all the work experience I gathered on different companies, and the practice gained by studying engineering and a masters, I’m now focusing all my energy and knowledge into becoming the best web developer I can be, hoping to work in this industry for the rest of my professional life.
I know I might be late in the game, but I’m studying new technologies every day, coding and building projects as often as I can, and looking forward to gaining work experience in web development related companies.
I’m a firm believer in the growth mindset concept, and that “life is not about finding yourself, but about creating yourself” (George Bernard Shaw).

My tech stack

I'm proficient with the following relevant technologies:

HTML5
CSS3
Git & GitHub
JavaScript
ReactJS
Figma
Netlify & Vercel
Linux, Windows & macOS

César Ariel Villagra

Certified Scrum Master

Project Manager

Mobile Core Networks

Expert Engineer

“Damian is an excellent person to work with. His detailed knowledge of the business requirements makes him a very important resource. His professionalism & commitment are the keys for the successful delivery on time of the projects. He always has a keen eye on the 'day to day' details as well as the ability to differentiate immediate, near term and long term goals. His leadership skills makes working with him an enriching, challenging & enjoyable experience.”

Exequiel Barrirero

Co-Founder

DevOps Cloud Engineer @ Binbash

AWS Certified Architect

“After sharing several month at HP with Damian, I can say that he is a very enthusiast engineer, and has an amazing ability to learn new things by his own. He has an excellent technical background and was always willing to assist in any situation. Moreover, he was always adding value to our team, enforcing his co-workers with training and knowledge sharing. Hence, I don't hesitate to recommend him as employee, partner and person.”

Adrián Dzienisik

Telecommunications Engineer

Product & Business Analyst

SAFe 4 Certified Practitioner

“I had the pleasure to work with Damian at Claro for over 2 years, and I can say he is an excellent professional and a great person to work with. He consistently demonstrated a solid technical background, as well as excellent leadership and communication skills. He was a great mentor to me, and a committed team member, always adding value and sharing his knowledge of the business. In addition to this, his personality, positive attitude and dedication makes working with him a real enjoyable and valuable experience.”

Contact

Let's get in touch!

📣

You can shoot me an email, send me a message on LinkedIn, or, if you prefer, use the contact form below.