It's easier to work with Promises (or Async/await) compared to callbacks. This is especially true when you work in Node-based environments. Unfortunately, most Node APIs are written with callbacks.
Today I want to show you how to convert callbacks to promises.
As I created applications with Express and Node, I learned about three useful middlewares:
Morgan
Camelcase
Remove empty properties
Of these three, Morgan is an actual middleware. You can download [Morgan][1] from npm directly. The other two are middlewares I created with [camelcase-keys][2] and [omit-empty][3] respectively.
I want to share what these three middlewares do, and how they make life easier for me when I'm creating applications.
I played around with testing lately. One thing I tried to do was to test the endpoints of my Express application.
Setting up the test was the hard part. People who write about tests don't actually teach you how they set it up. I could not find any useful information about this, and I had to try and figure it out.
So today, I want to share the setup I created for myself. Hopefully, this can help you when you create your own tests.
I always use MongoDB as a database when I work on an app. And I like to connect to a database on my computer because it speeds up dev and test-related work.
Today, I want to share how to create and connect to a local MongoDB Database.
I used to think it would be easy to write backend if I knew JavaScript. I thought it would be easy because Node is JavaScript. I didn't have to learn a new language.
But I was wrong.
But backend was hard to learn. I took ages to learn it. (And I'm still trying to master it).
I realized I had problems learning backend because I thought Frontend and Backend were the same—they were just code.
That's a big mistake.
Frontend and Backend are different beasts altogether. I had to respect their differences before I could learn Backend properly.
If I were to explain the difference between Frontend and Backend (in terms of implementation), I would say:
I shared how to build a calendar with CSS Grid in the [previous article][1]. Today, I want to share how to build a Flexbox fallback for the same calendar.
If you stuck around for a while, you might have noticed I used to post a video (and an audio) every Friday for most of 2018. I call them "Fridays with Zell".
In 2019, I decided to stop making videos. I want to share why I decided to stop making videos.
Date is weird in JavaScript. It gets on our nerves so much that we reach for libraries (like Date-fns and Moment) the moment (ha!) we need to work with date and time.
But we don't always need to use libraries. Date can actually be quite simple if you know what to watch out for. In this article, I'll walk you through everything you need to know about the Date object.
I use [Visual Studio Code][1] as my text editor. When I write JavaScript, I follow [JavaScript Standard Style][2].
There's an easy way to integrate Standard in VS Code—with the [vscode-standardjs][3] plugin. I made a [video][4] for this some time ago if you're interested in setting it up.
But, if you follow the instructions in the video (or on vscode-standardjs's readme file), you'll come to notice there's one small detail that needs to be ironed out.
Try writing a function the old way, and save it repeatedly. VS code will toggle between having and not having a space before the left-parenthesis of the function.
<Image src="/images/2019/vscode-standard/functions.gif" alt="VS code toggles between having and not having a space before '('."/>
You get the same problem when you write methods with the ES6 method shorthands:
<Image src="/images/2019/vscode-standard/methods.gif" alt="Same problem happens when you create methods with ES6 method shorthands."/>
"Do you have any advice on finding a job as a developer?"
Many people have asked me that question, but I can’t give a proper answer because I have never been hired as a developer before. What I did was:
Wriggled my way into a Wordpress dev role in an admin-based internship
Freelanced
Run my own company
So I'm horribly inadequate at answering a question about finding a job.
But Chris Lienert is an expert at it. Chris has experience hiring and building teams of excellent developers. (A fun aside: He used to co-run CSS Singapore, which is a monthly CSS Meetup in Singapore).
I managed to grab Chris (before he left Singapore for good) and asked him to talk about the job application process. You'll hear golden advice in this interview from Chris, like:
Chris' opinions about the hiring process.
How to improve your chances of getting an interview
What to do if you don't get a job
How you should write your CV
What to do during the actual interview
What questions to ask during the interview
How to answer any tricky questions you get
Note: We jumped around a lot in this 1.5 chat because Chris has so much to say about this topic. I highly recommend you listen to the audio version if you can.
To make it easier for you to digest, I also summarized what we talked about into three stages:
We're fierce and protective when we talk about stuff we care about. And as developers, we care a lot about these topics:
Accessibility
Web Performance
CSS
JavaScript
Frameworks
Inclusivity and Equality
There are no problems with voicing your opinion. We all have our opinions and we want them heard. I understand and respect that.
But we should be mindful of the way we say things. If we voice our opinions as complaints, name-calling, and shaming, our opinions don't get heard. No change would happen. They simply create a vicious cycle of worry, hate, and anxiety.
If we change how we project our voice, we can make real change happen. And our culture will change for the better.
We developers have become quite a toxic bunch of people to be with. We create fierce "debates" on every media we're in. Twitter, Facebook, wherever we're at.
We talk about how CSS suck (and how they don't).
We talk about Accessibility and Performance (and bitch companies that don't do them well).
We talk about frameworks vs no-frameworks. React vs Vue vs Vanilla JavaScript. And why you SHOULD learn frameworks vs why you SHOULDN'T learn frameworks.
We also talk about how some technologies are "dead" (even though they still continue living for quite some time).
Everyone has opinions. Most of these opinions are complains. We spread anger, fear, and worry in our communications. Daily
This should stop (but it won't, because you can't control what people say or do). What you can do is take a break and ignore what everyone else has to say.
JavaScript is a strange language. Once in a while, you have to deal with a callback that's in another callback that's in yet another callback.
People affectionately call this pattern the callback hell.
It kinda looks like this:
firstFunction(args, function () {
secondFunction(args, function () {
thirdFunction(args, function () {
// And so on...
})
})
})
This is JavaScript for you. It's mind-boggling to see nested callbacks, but I don't think it's a "hell". The "hell" can be manageable if you know what to do with it.