Naguel

I'm Nahuel, and these are my work experiences, ideas and thoughts as a web developer working on the eCommerce industry.

Screwing up badly at work

Screwing up badly at work

Recently I changed some configuration on a client's site that triggered thousands of emails to different customers, forcing our client's Customer Service to handle the same amounts of customers calls on a day that they would have on a normal week, and finally having our client writing an apology email for all affected users saying that there was no data breach in the site.

It was a long day.

Admit it

Shit happens, and people make mistakes. I did on that occasion, I probably will again in the future or somebody else will, but I will be happy if we as a team don't make the exact same mess I did.

The first thing to do when you screw up is to admit it: tell somebody that you screwed up and tell that person how you screwed up exactly.

If there's a big problem, and you alone caused that problem, chances are people will be chasing ghosts to fix something they won't understand completely how it started (if you don't come forward and tell them exactly what happened).

You are the only one that knows, basically (until everybody finds out).

The idea is to change everybody's mind from panicking about a mystery error to focus on how to put down the fire and doing some damage control. Back to my example, everybody was wondering how the emails went out but when I told them it was me changing a setting then everybody move towards finding a solution (emails were still going out at that point).

Really, trying to cover up something is really a stupid idea because, again, shit happens and it shouldn't be the end of the world, and people will find out rather sooner than later.

Say sorry as you should be

Being on the defense on this type of situations is pretty common, but you shouldn't be. You made a mistake, you admitted it, now apologise without making excuses or blaming something (or somebody) else.

As individuals and as a team we should learn some stuff starting with the fact that human error is an actual thing. Saying sorry is as important as learning to accept someone's apology.

Keep in mind that if you didn't screw up this time you could be the one causing the mess next time, so don't believe you are so perfect. At the same time, if you were the cause of all the problems today, relax, somebody else will take the leading role next time.

Not the same mistake twice

When the adrenaline is over and the problem is solved do everything within your reach to avoid the same mess to repeat itself.

Let's try to have new problems, not always the same ones (it's boring that way).

While all human errors can't be eliminated (unless there's no human in the equation) we can always reduce the chances for them to happen by identifying what mechanism we (the team) can put in place to prevent them.

Back to my emails, the setting I changed wasn't on the Live site but on a testing environment, that happens to contain real customer data. In this case the problem was on how we create those testing environments (a fault on the process we have in place for doing that).

The problems could be prevented by improving the processes, adding any necessary documentation, and most important by spreading the information across the team.

Learn from a mistake is not a cliche phrase but instead it's something "tangible".

If you really learned from a mistake you will ended up with more documentation available to the team, a better process in place, and everybody informed of what happened and what can be done to avoid it happening again.


Always keep in mind that La La Land was announced the winner of the Best Movie category in the The Oscars ceremony because somebody handed the wrong envelope. And they improved the process for the following events.

Configure the Terminal to use MAMP's PHP

Configure the Terminal to use MAMP's PHP

By default, after installation, MAMP will make its PHP binaries "available on the browser" while the Terminal will keep on using the system's PHP with its own configuration.

The idea behind changing the Command-line to start using the PHP coming with MAMP and its configuration is to be able to switch rapidly between PHP versions and to have the configuration for PHP in only one place.

Out there you can find enough guides that helps you archive this because, frankly, there are plenty of methods to get this done. This next one is how I personally do it because it's easy to implement and it also covers something most of other guides won't which is configure the Terminal to also use the same php.ini MAMP uses.

Configuring the Command-line to use MAMP's PHP

You need to edit your Terminal's Profile in order to add the following to the end:

#export PATH=/Applications/MAMP/bin/php/php7.1.33/bin:$PATH
#export PATH=/Applications/MAMP/bin/php/php7.2.33/bin:$PATH
export PATH=/Applications/MAMP/bin/php/php7.3.21/bin:$PATH
#export PATH=/Applications/MAMP/bin/php/php7.4.9/bin:$PATH

As you can see I'm adding a different line per PHP version I want to potentially have available on the Command-line (PHP 7.1.33, PHP 7.2.33, etcetera) but having them all but one (PHP 7.3.21) commented with the # at the beginning.

Every time you switch the PHP version in MAMP you should come back to the Profile and leave uncomment the same version so the Terminal and MAMP match.

Your Command-line's Profile file depends on your shell. If you are using the default Terminal coming with macOS chances are the Profile will either be ~/.bash_profile or ~/.bashrc. Mines it's ~/.zshrc because I use Oh My Zsh.

Remember that everytime you change your Profile you need to "reload" it by doing source ~/.bash_profile (or whatever file you are using).

You can check if everything was applied as expected by executing php --ini and seeing the paths are pointing to MAMP.

Configuring the Command-line to use MAMP's php.ini

Here's something interesting about MAMP Pro: it generates, each time it starts, the final php.ini file it will be using during the execution as its content depends on the settings configured on the software’s UI.

For example, if you enable/disable Xdebug on MAMP by ticking/unticking the checkbox on the app, MAMP will regenerate the php.ini file with your configuration (this is basically how MAMP applies any setting change that you perform from the UI).

The final generated php.ini file is located at /Library/Application Support/appsolute/MAMP PRO/conf/php.ini.

We already configured the Terminal to use MAMP's PHP binaries but we also need to configure it to use the generated php.ini by going to /Applications/MAMP/bin/php/php7.3.21/conf (where the not auto generate php.ini file is located) and delete it (after a back up).

Then we need to create a symlink called php.ini for /Library/Application Support/appsolute/MAMP PRO/conf/php.ini (which is the auto generated one by MAMP) by doing:

ln -sf /Library/Application\ Support/appsolute/MAMP\ PRO/conf/php.ini php.ini

The conf folder should ended up looking like this:

Of course the example is for PHP 7.3.21 but you will need to repeat this for the folder of each PHP version you will be using on the Command-line.

This only applies to MAMP Pro as the non-Pro version doesn't generates any php.ini and if you want to change something you need to edit the original file yourself.

Lazyload post Feature Image from Unsplash in Ghost

Lazyload post Feature Image from Unsplash in Ghost

Unsplash is a great Ghost built-in integration that allows you to quickly add an image to your posts, and I personally use it every time to add the Feature Image to all my articles (the big one below the title, before the content).

Unfortunately, out of the box the image from Unsplash is really big (2000px wide) and impacts on the page speed of the site since the browser will download the image first then continue with the rest of the page.

There's no much we can do about the image size as we can't follow the "How to use responsive images in Ghost themes" official guide because that only applies to images you manually upload and not those coming from third-parties...

Dynamic image sizes are not compatible with externally hosted images. If you insert images from Unsplash or you store your image files on a third party storage adapter then the image url returned will be determined by the external source.

...but with a little bit of HTML and JavaScript we can lazy load them to prioritize the content over the image download.

Usually, the Feature Image in the Ghost theme will look something like:

<img src="{{feature_image}}" />

This is a classic img tag with the src containing the URL of the image. But we need to do some changes here first before moving to the JS side of this technique.

In the src we are going to put a placeholder image to avoid having a broken image while the rest of the page loads, we are going to move the actual image to the data-src attribute, and finally we'll add a new class to the element.

<img src="{{asset "images/placeholder.png"}}" data-src="{{feature_image}}" class="lazyload" />

The placeholder image should be a small image in terms of weight. I'm using an image with a solid colour of 183 bytes so I can "reserve" the space of the final Feature Image to avoid "jumps" in the browser while everything loads.

Finally, the JS is quite simple. We need to wait for the window to be loaded, get all the img elements with the lazyload class, and replace the src with what's on the data-src so we trigger the actual image download.

window.addEventListener('load', (event) => {
    let images = document.getElementsByClassName('lazyload');

    for (let i = 0; i < images.length; i++) {
        images[i].src = images[i].dataset.src;
    }
});

With this in place we should see that the content is prioritized over the Unsplash image, and if we are using a placeholder we should see that first in the "Network" tab of our browser's DevTools, with the actual image loading later.

Having a successfully work from home lifestyle

Having a successfully work from home lifestyle

This is the new normal, get used to it and get ready, because what's now (somehow still) a benefit from a company will be a requirement in the not too distant future. I wouldn't be surprised if working from home becomes a skill on a job offer rather than a perk.

Imagine listing on your resume not only your English level but also your work from home seniority.

All the lockdowns imposed around the globe due to the Covid-19 situation forced companies into a WFH scheme where everybody went remote from day to night.

I think this is here to stay in a combination of remote working and office space, resulting on a true flexible work from home scheme, because this is not only better for the employee but also cheaper for a company (no more rent?).

No more bs against working from home thanks to a pandemic
Companies were forced to reorganize quickly to continue working with their employees from home: the bs around this was cut immediately, the scepticism towards having people working from their homes disappeared. It had too, there was no other option.

I had the luxury of a WFH benefit on my last job and now, for the past two years, I became a full time remote employee to a London-based eCommerce agency so I sort of know how to work from home, and I don't see myself ever again going to an office Monday to Friday, so here's my take with three aspects on how to nail working from home.

Your space in the house

My first ever mistake (and probably everybody's first ever mistake) when I started to work from home everyday was to use the same table where I ate as my desk too.

The problem is not the table itself and the fact that the Mac shares it with a slice of pizza, but the inner feeling of being always on the same place, always, all the time, when working and when not doing it.

So even if you disconnect from Slack or close the lid, you are always at your working station, which is not good (mentally speaking).

Having a room in your house as the office is the main recommendation somebody could give you when diving into the work from home culture because it will easily allow you to "call it a day" when you have to, the same way you picked up your things from your desk at the company building and returned home.

Sometimes you'll need to isolate from the rest of the house when living with somebody else, on situations like having to concentrate on a task or having a Zoom meeting so here's where a door will come at handy, or some noise-cancelling headphones.

This leads us to having a set of house rules for all the house members for when work is happening, because not everybody is used to this work from home scheme and there was no reason at all until now to be aware of this new normal and having somebody in the house that now works from it.

For example, I tend to announce that I'm going to start a meeting, and that's enough for me. But you can set other rules too, like "Headphones means no interruptions", or guidelines for when the office door is closed.

Surely, I understand that having a spare room to be used as an office is usually a luxury, I'm no idiot.

For example, I rented my current place with this objective in mind, and I'm sure this will be something that's going to be considered, in the future, for when renting and/or moving.

But, still, there's always something you can do to mentally disconnect from work when you are done with it.

If you can't have a separate room, you maybe can have a specific place in the house to work, which is not the table where you eat. Like a small desk on the dinner or living room, that you know you use only for working.

Even if there's no physical space to do so, and you are forced no matter what to use the dinner table for working, then you can rely on environment settings to differentiate working hours from free time (like lighting).

Finally, something that works when there's no office room in the house is to close the computer and save it on a drawer, as a big gesture to call it a day.

A routine to avoid burnouts

One of the main problems of working from one, that we already mentioned as partially solvable by having a dedicated physical space to work, is the feeling of being on a constant work mode, on a state where work and life get mixed together and there's no clear differentiation between one and the other.

Having to go to an office imposed, at some capacity, a routine that you had to follow like waking up at a specific hour, having to take a shower for the sake of respecting your coworkers, having breakfast, etcetera.

Now you have to set your own routine, which is easy, and follow it, which is not.

This starts with having to follow regular hours every day, a routine. For example, I have set on my smartwatch reminders to have breakfast and lunch, which is a way to avoid losing track of time when I'm working.

Even if I do not actually follow them on a day because "I'm too busy" or because "I need to finish this first", it's a way to take awareness of "when are we".

You don't need to actually get up hours before work to take a shower, that clearly can be done later, but you shouldn't get up a minute before checking in at work. Allow you at least 15 minutes of being up and running before sitting on your desk.

I know that stay in bed for as much as we can is temping, and it's a clear benefit of working from home. But that's the benefit of not commuting, that's from where we gain sleeping hours.

So, 15 minutes of sleep won't make you any difference, but having 15 minutes for you before starting to work results on being more awake, therefore rested, through the entire day.

For a better working day, work on having a better wake up routine.

You don't have to have breakfast before work, that doesn't have to necessarily be part of your wake up routine, but instead you can have it later, during work, as a break.

Pause work during working hours to have breakfast? Isn't that against the rules? Please! When you were at the office you had some water cooler moments, or stop by the desk of a coworker to have some chat about whatever, or you made yourself five cups of coffee.

You had your breaks at the office and it's fine to have them now at home.

Call it a day

Avoid falling into an eternal working state of mind, or workaholism, is what you will be constantly fighting while working for home if you don't train yourself to be better at remote working.

Stop working is part of being good at it.

If the company you work for doesn't care for time tracking, you should track your time anyway, for yourself, to be aware of how much are you spending at work. And, as if you were going to an office, you should call it a day at some point, and don't work until the next day.

At the company I work for we have a Slack reminder with some stuff before we go, which also works as a reminder of what time is it (the same as the use of an alarm or the reminders I already mentioned I have on my smartwatch).

And when it's time to go. Go. No, really, go. Whatever it is, with the exception of an emergency, can be continued tomorrow... or next week.

If you can go out after calling it a day, even better. Leaving home is very good to clear your mind, even if it's for a short walk or for having a moment at a coffee store (which is my thing).


Working from home was always a luxury I can see becoming the new normal after this big social experiment we all suffered due to the pandemic.

Internet is full of tips and tricks on how to succeed at working from home. You just need to find those that suit you and get on with it.

How to write a resume

How to write a resume

I know this one probably isn't the first article you ended up reading about how to write a resume. I understand, you are looking for a job change or your first opportunity and this matters so much that you are looking for many suggestions.

I happen to be on the other side of the table as I screen candidates based on their resumes and I get to conduct interviews. Those interviews, by the way, happens only if the resume appeals me, and that's why it matters: a resume can give you your first shot at a job position or totally kill your opportunity.

Since I get to see some resumes every now and then, I'm already expecting something from them when I grab one, and I'll try to tell you what's that so you can write a good one.

Look, I know this is a long article, but it's your resume we are talking about.

It is worth the time.

Anatomy of a resume

Introduction

Say something before diving into the hard data of your work experience and studies. That's how you prove to be human.

This is not exactly a cover letter but something shorter and more general (not aiming directly at the company you are applying to). Imagine only having 20 seconds to introduce yourself at a date and that's about it.

Paint an overall picture of who you are, what are you looking at and what are you capable of.

For example, I'm a developer and this is my introduction:

Hi there, I'm a Full Stack Developer, more inclined to the Front End part of it, who has been working with eCommerce platforms like Magento since 2013.

I usually work with xHTML, CSS, SASS, Compass, LESS, JavaScript, VUE, jQuery, a little bit of Grunt, PHP, Laravel, another little bit of MySQL, Git as a revision control system, Agile methodology with Scrum as an agile development method, and of course Magento.

I really like English, which is my secondary language, that's why I'm very happy with my IELTS Life Skills B1 (IELTS UKVI) certification.

A good introduction will give the company you are applying to an idea of where you might fit.

Experience

This is the most important bit, where job hunters focus when reading a resume, and it's surprising how many people got it wrong.

Experience is about listing your entire career in a way that becomes easy to read and to understand, so it needs to be perfect.

There are two ways I would recommend this to be done: one is by listing roles and the company where that role happened (that's the classic approach), and another way is to list companies and roles performed while working for each company (which is the recommended option if you had multiple roles in the same place, or to show career progress inside the company).

LinkedIn uses these two approaches combined depending on how many roles you add to the same company.

The main issue I always encounter within this section is that people usually list the title of the role, the company, the dates when that happened, and nothing more, but that's not even close to be enough.

List the actual tasks you take care of while performing on a specific position. When people read your resume they need to know what you have actually done, the real stuff you have actually done.

For example, a common job title is the "Technical Leader" for a web development agency. What that means to you?, because certainly it doesn't mean the same on every company. Did you code review stuff or that wasn't your job? Did you manage deployments or that didn't fall into your job description? Did you coach people? What else?

I'm a Full Stack Developer at my company... and I do code reviews, deployments, I interview people, take care of the onboarding of new employees, etcetera. The tasks I perform are not usually associated with the title of the role I have so that's why it's also important to be specific.

Depending on the job and/or role it might be worthy to also specify the projects you worked on, which could be a good idea if you operated as a freelance for some period of time.

Certifications

This is how you validate your previous listed experience.

Everybody know that a certification on its own is no evidence at all that you dominate the platform/software/field that certification is about, but they are used as a filter during the screening of several resumes.

So, if you have them, add them. It's more for like "Oh, look, she has this certification, so she dedicated personal time to get it, that tells something of her".

If you happen to have a certification on a different language, besides any study that proves you speak it, this is the place to add them.

Language certifications are pretty important, specially if you are looking for a job in a foreign company.

Additional projects

A lot of people do freelance stuff at the same time that works at a company as a full-time employee, collaborates on an Open Source project, or maintains a personal one.

Whatever is your case, or if you have something similar, you should list that too as it's part of your experience. And, the fact that you did that in parallel of having your regular job it's a plus the interviewer will consider.

For technical positions such as web developers this is also the moment when you introduce your personal repositories (such as GitHub), or any other social network account with focus on showing your work as a portfolio (for example, Behance).

As an interviewer, and as a resume screener (assuming that's a thing), I'm mainly focus on the technical aspects of the candidate, so a GitHub account (or similar) is for me a glimpse of the actual coding skills of the person applying for the job.

Education

Your experience (and the additional stuff you did), on top of your certifications, leaves your common education on a secondary position.

What you have done during your career, your career itself, it's your education, so at one point your attendance to college or Uni doesn't really matter. But, that's only true if you actually have a career to show.

There's still something worth highlighting here which are courses taken that are related to your professional career, either directly or complementing it.

Bonus track

Social networks?

Only if they add something to your professional profile, otherwise I wouldn't bother mentioning them.

A good examples of social networks worth mention are Twitter (if your use it professionally), GitHub (or similar version control system), and of course LinkedIn.

If you have a personal site, such as a blog, and specially if it's related to what you do professionally, mention it as well.

Hobbies?

Yes, of course. There are humans reading resumes made by other humans, so prove to be one.

A list of hobbies gives people a glimpse of your personality, and it's always good to know what you appreciate in life besides working.

Of course, this is pretty much optional, and you should share this personal side of you at the capacity you are comfortable at.

Additional personal data?

We are talking contact information here, which is important because, well, you want to be contacted back.

But also your country of residence, which is pretty much key information for time zone reasons, specially if you are applying at a foreign company.

Designs matters?

Depends on what you do for a living. If you work on something related to design, then yes, it does, and pretty much.

But, for example, if you are a developer, I personally don't care much about design and my main focus is on the content of the resume rather than how pretty that is.

Having LinkedIn

This is a double-edged sword.

LinkedIn is great, it's the perfect way to show your entire professional career. It gives you the ability to add everything we just discussed before and more.

From my personal point of view, I think having LinkedIn is enough, and that it could be your final resume. You don't need anything else.

For example, I don't have another resume but my LinkedIn profile, and when I applied to the current job I have I remember saying...

You can check my experience in my LinkedIn profile at https://www.linkedin.com/in/nahuelsanchez, let me know if you want a PDF version of my CV or something else.

...but that PDF version wasn't necessary because my LinkedIn profile had everything, it's complete.

And that's my point. If you are going to have a LinkedIn profile, have it up to date, have everything there. Make it your final and only one resume that's always available for whoever wants to read it.

Otherwise, what happens if I see a profile with content midway is that I assume that's all of your career. I can't tell if you were lazy and didn't update what I consider to be your resume.


If you are a web developer you can find me on LinkedIn and check my profile which I consider to be a good example to follow (not a perfect one, I said "good").

Also, again, if you are a web developer (which is my "area of expertise"), find me again on LinkedIn and tell me if you would like me to review your profile (after you applied to it everything that was presented here, of course).