Use the arr.join([separator]) function. The separator specifies a string to separate each pair of adjacent elements of the array. The separator is converted to a string if necessary. If omitted, the array elements are separated with a comma (“,”). If separator is an empty string, all elements are joined without any characters in between them.

    private generateBlogPostHeader(commaSeparatedListOfTags: string, snippet: Snippet): string {
        let header: string = '';

        header += 'categories: [snippets]\n';
        header += `tags: [${snippet.tags.join(',')}]\n`;
        header += '---\n';

        return header;

You can also use the toString() method in this particular case with the same result

header += `tags: [${snippet.tags.toString()}]\n`;

Reference -

Shared with from Codever. 👉 Use the Copy to mine functionality to copy this snippet to your own personal collection and easy manage your code snippets.

Codever is open source on Github ⭐🙏

When I first just published the “Save to” chrome extension in the Chrome Web Store, I did not have the time to develop a version for Firefox, thinking I would need to learn another technology. Recently I developed another extension to Save code snippets to This time I was determined to invest the time to make also Firefox version. As it turns out I had to make little to no changes in code base to make it work both in Chromium based and Firefox browsers. All this with great help from the webextension polyfill the guys from Mozilla created for us.

So, in this blog post we are going to revisit the Save link to extension, and I will detail the changes required to make the extension compatible with Firefox.

The, newly renamed, Save link to browser extension is available for:

Chrome Firefox
Chrome Firefox

Before I do that, let’s have a look at the extension in action, so you know what I am talking about:

Browser extension in action

Right click OR click the extension icon to save the active tab’s link to

Continue Reading ...

I find myself lately looking for recent visited bookmarks via the Ctrl+h - History dialog on To make my life even easier, I added a filter box in the dialog. You can now add one or more keywords to filter the displayed results even further. One thing let to another and I have added the filter box to other bookmarks lists, like Pinned, ReadLater or My Dashboard:

show filter animation

In this blog post I will present the implementation in Angular required to achieve this new feature.

Octocat Source code for is available on Github - Star

Continue Reading ...

As you might recall from my previous post GraphQL Resources to help you get started, I have started to dig deeper into GraphQL. What better way to deepen one’s knowledge than with a hands-on experience? So, in this blog post I will present the implementation of a GraphQL server API that provides CRUD operations. I chose the Javascript implementation of GraphQL, GraphQL-js 1 and set up a GraphQL server with Express Graphql2. To make the scenario more realistic, the API developed in GraphQL acts as integration layer to the existing REST API supporting

You can find the source code for the examples in this post on Github: graphql-expressjs-crud-demo

Continue Reading ...

I have recently started to look more thoroughly into GraphQL. I must say I felt a bit overwhelmed at the beginning with the question - “Where do I start?”, I mean take a look at the spec… or don’t! Not yet.

I had already bookmarked dozens of GraphQL resources, I had read or watched before. I sat down and analyzed them again. So, I came up with a list of GraphQL resources I found most useful to begin. Thus, you can get a good grasp of GraphQL in about two or three days.

Note: The order is also important

After you are done with the theory I suggest you get your hands dirty and checkout my second blog post on GraphQL - Complete example of a CRUD API with Express GraphQL

Continue Reading ...