This article discusses a framework that makes DevRel's impact visible by translating community activities into weighted scores and theoretical ROI for leadership.
This article explores how clearly defined functions enable large language models to make accurate tool calls, emphasising the importance of precision and developer intent in the function calling process.
In this article, we walk through the process of building a Model Context Protocol (MCP) client. Learn how to connect to servers, discover tools, and invoke them from your own app or LLM integration.
Model Context Protocol (MCP) servers expose tools, resources, and prompts to LLMs in a unified, structured way. This post explores how they work, how to build one, and why they are a critical part of the future AI stack.
Learn how to build a responsive, real-time user experience by consuming streamed Large Language Model responses on your frontend. This article provides a comprehensive guide to using both Server-Sent Events (SSE) and the Fetch API with Readable Streams, complete with code examples and a detailed comparison.
A hands-on guide for exploring how to train a simple AI model using TensorFlow.js to inpaint missing parts of images - without needing large datasets or prior machine learning experience.
The final article in the Agentic AI series explores multi-agent systems: how specialised agents collaborate through structured handoffs to complete complex user goals.
The orchestrator-worker pattern brings scalable structure to agentic AI workflows by cleanly separating high-level planning from specialised task execution. Through a practical trip planning example, this article demonstrates how LLMs can dynamically coordinate expert agents, grounded in schema-driven logic and real-world data.
This article explores how to implement a reflection loop-an agentic AI pattern where a model generates, critiques, and iteratively improves its output - using image captioning as a practical example.
Unlock faster, more diverse reasoning by running multiple LLM prompts in parallel and aggregating their responses into a single, cohesive output.
A hands-on walkthrough for web developers to demystify large language models by actually building a mini Transformer from scratch.
Explore how to intelligently route AI queries using schema-guided function calling and contextual categorisation.
Learn how prompt chaining enables AI to tackle complex tasks through step-by-step reasoning, boosting both accuracy and interpretability.
In this article we take a look at how to see if an image has low-entropy for LCP calculation.
WebP, AVIF, JPEG XL, Progressive JPEG - how do these image formats compare in terms of their load speeds and how can we measure it? In this article we review a small app that gives us a visual answer.
A new performance insight panel has been added to Chrome which helps with tracking down performance bottlenecks in a much easier fashion compared to the classic performance panel
In this article we take a look at the differences between call(), apply() and bind().
This article explains the two, often mixed-up, contains and includes methods.
This article explains the two, often mixed-up, slice and splice methods.
In this article we take a look at AVIF - a next generation image format that was first introduced by Netflix and it promises optimised performance over the widely used and popular JPEG.
Web Assembly allows developers to bring existing applications written in languages such as C++ to the web, leveraging the combination of modern browsers and JavaScript. This article features a C++ application port to Web Assembly.
This article discusses how to upload images using Netlify Functions, store them in Cloudinary and extract Exif metadata for further usage.
In this article we put together a project to demonstrate how to upload and display videos using Next.js
The long-awaited CSS feature has finally landed behind a flag in Chrome Canary. In this article, we will take a look at an example of using them in conjunction with a clever, AI-based cropping solution from Cloudinary.
Social share cards are a great addition to any website, however building them manually could be challenging. This article discusses how to create them in an automated way, and it also introduced a plugin that can be used with Eleventy.
Light and dark mode options are frequently added to websites; however, most solutions implement it as two-states, righteously. In this post, we'll take a look at a better, three-state approach.
Lazy-loading is a concept that allows us to defer the loading of certain components to eliminate potential performance bottlenecks. This article discusses lazy-loading techniques for popular frontend frameworks.
This article discusses how to best optimise videos shot in landscape/portrait mode in a React environment using the Orientation API.
What are the best ways to manage media assets for a Jamstack project? The aim of this article is to discuss your options.
Create a custom React component to do colour replacement using Cloudinary on your images.
The A in the Jamstack refers to APIs. In this post we take a look at how and why APIs matter for the Jamstack.
Explaining the three basic CSS positioning models in order to understand the concept of CSS.
Creating memes is always fun - in this article we take a look at how to utilise Cloudinary to generate themes for the Dolly Parton challenge.
Inspection of different pillar elements of HTML and the importance of them. Including topics like images, divs, forms, different tags and other key elements of HTML.
This article discusses how to make modern, visual websites more accessible for visitors having visual impairments. We have coined this 'media accessibility' or 'm16y'.
The aim of this article is to introduce the Jamstack. What is it about? What benefits are there for those who use it? These are the questions we will answer while having an overview of some of the services that can be used under the umbrella of the stack.
Using React hooks with GraphQL means less boilerplate code for apps. Read more about it in this article.
Today there are three popular rendering mechanism used: server-side rendering (SSR), client-side rendering (CSR) and pre-rendering. This article reviews how they differ from one to the other.
This article discusses isomorphic (universal) JavaScript and how it can be applied to a PWA without any frontend frameworks, relying only on vanilla JavaScript.
This article discusses how to create Progressive Web Apps using Vue.js (with the help of Workbox)
Useful informations for beginners, about how the workings of the internet, including topics such as IP addresses, webservers and more.
In this article we take a look at how to transform an application created using Angular & Firebase to function as a Progressive Web App.
Thoughts about Web Development and Coding from a Newbie
In a series of articles we'll take a look at how to create a PWA using Angular, Firebase and Cloudinary.
This article discusses decorators used in JavaScript.
The Optional Chaining Operator in JavaScript allows developers to safely check for the existence of deep nested properties in objects.
In this article, we'll go through some of the features that are currently being considered to be added to JavaScript.
VPS - Virtual Private Servers - are hosted, virtual servers that we can rent from various providers. They have multiple benefits, including but not limited to stability, performance and flexibility.
Syntactic sugar is everywhere in JavaScript. Most will say it's JUST syntactic sugar - a tiny bit of candy that makes your coding life sweeter. Well, is it? A little bit of sugar here, a bit there… and before we know it, we already need an insulin shot.
Enabling HTTPS support via the Angular CLI is really straight forward, however generating a trusted certificate can be tricky. This article discusses how to achieve HTTPS on localhost for Angular applications.
Some can argue that Set has more advantages compared to Array. Others may wonder why there is a need for Set now (we have been doing pretty well without one until now). What exactly differs these two and when to use one over the other?
This article discusses how to add utilise HTML5 style navigation for both Angular and Vue.js applications, and how to implement server side URL rewriting for full functionality.
In this 'Quick Tip' article, we review how to retrieve only the queried element in an object of arrays in MongoDB.
This article focuses on the current state of Modules in the JavaScript ecosystem
This article discusses how to run code coverage checks in Chrome DevTools as well as via Puppeteer in an automated way.
In this article we review how to adaptively cache images based on network speed with Workbox.js and Cloudinary.
In this article we review how to adaptively cache images based on network speed with Workbox.js via a custom plugin.
In this article, we take a look at how to manage images using GraphQL.
In this article, we'll take a look at Symbols, Iterators and Generators in JavaScript (ES2015) and we'll also implement an interesting example of using all three technologies.
This article discusses how to create an application in Node.js that will await input from a user via the readline built-in module.
In this article we are reviewing Serverless architectures, with a focus on Function-As-A-Service and we also take a look at an example implementation of FaaS
In this article, we'll take a look at how to pass command line arguments to a Node.js application executing from the CLI.
This article reviews how to add and utilise Material Design within an Angular application.
This article discusses how to integrate Bootstrap with an Angular project in three ways - using Bootstrap natively, via ng-bootstrap as well as ngx-bootstrap.
In this article, we'll take a look at the mysterious 'opaque response' and learn what it means.
This article draws a comparison between the built-in Ghost Image Management and a third party Image Management solution including a performance comparison.
In this article, we'll review a few ways to make sure that data is available for a component before we load it and display it in the application to the user.
In this article, we'll review the latest proposed additions to HTML - more precisely we'll discuss HTML 5.2 and HTML 5.3.
This article shows how to fix some of the deprecation warnings after updating to MongoDB 4 as well as using the MongoDB Node.js 3.x API.
In this article, we'll explore a concept based on Network Information API, Service Workers and Cloudinary to enable web applications to serve lower quality images (if necessary) in order to speed up the perceptual load time of the web app.
This article covers how to share a MongoDB database connection in a Node.js/Express application in the right way.
In this blog post we'll not only explore these differences but also discuss idempotent and safe HTTP methods.
In this article, we'll take a look at some of the basics of REST APIs and design such APIs, in the context of Node.js and Express.
In this article, we'll now see how to use such custom elements outside Angular and in a supposedly competing framework, Vue.js.
In this article, we'll take a look at the new custom elements feature in Angular6. We will see how to create a custom element as well as how to reuse it in a simple application.
In this article we are discussing the differences between the json(), send() and end() methods available as part of Express response object.
In this article, we'll take a look at GraphQL and go through a basic example while exploring why it's a great supplement for REST APIs.
JSONP is could be considered to be a useful way to avoid CORS errors however it has more cons than pros - this article discusses the most important factors.
In this article, we'll be taking a look at two ways to display real-time data in an Angular application - one using a timeout and the other using sockets.
In this article, we are discussing when it is required to unsubscribe from an observable in Angular to avoid memory leaks.
In this article, we are implementing a blockchain solution using JavaScript and while implementing, getting familiar with this emerging technology.
When working with various JavaScript frameworks, or only just by working in the field of web development, newcomers and novice developers often confuse attributes and properties concerning HTML pages. In this article, we'll clarify the difference between these two.
In this article, we'll take a look at how to hide and remove elements in DOM by using JavaScript, and we'll learn a few techniques and explain the differences between them.
In this article we are discussing the changes involved with the latest relase of the popular frontend framework by Google, Angular 6.
​Often when working with Angular applications, we make HTTP requests to access data from an API. Sometimes we are making requests to the same API endpoint in which case it'd make sense to cache the result of the response to avoid further requests.
Server-side rendering is an exciting​ concept especially when authentication is also part of an application. In this article, we take a look at how to achieve authentication using SSR.
En este artĂculo vamos a tratar de responder una pregunta muy importante: quiĂ©n es un desarrollador full stack?
In this article we are reviewing what it takes to render HTML content inside Angular templates, including a word of caution regarding unsafe content.
A frequently asked question in Angular2+ is the difference between constructor() and ngOnInit() inside components. This article gives an answer.
In this article we are reviewing three ways to get the version numbers of local or global npm packages installed.
Storing secrets, usernames and passwords can be done in Node.js via environment variables. We'll take a look at how to manage these in this article.
Interfaces and type aliases both offer contracts to fulfil in TypeScript code. At first they may look the same however there are some key differences between the two.
In this article we take a look at how to resolve the "[ts] Cannot redeclare block-scoped variable 'name'." error raised by TypeScript.
In this article we are taking a look at an unsupervised machine learning and using it we'll cluster our sample dataset.
When trying to utilise the ES2015 export/import statements (aka ES2015 module syntax) in Node.js we are presented with the 'Unexpected Token Export' error. There's a reason why this error appears and in this article we'll investigate why this is happening.
Angular comes with a safe navigation operator that guards against 'null' and 'undefined' values in property paths.
Often times when working with Node.js based web applications we are faced with an option to handle data sent from a form. In this article we'll take a look at how to extract POST data in Node.js
In this tutorial we'll learn how to upload files from an Angular5 application to a Node.js REST API that runs using Restify. For the file upload functionality we'll use the File Web API, without relying on a third party component.
In this article we are taking a look at how to apply a branch of Machine Learning - Natural Language Processing - to do sentiment analysis on unstructured text with JavaScript and NoSQL.
A new, more robust HttpClient is available as of Angular 4.3. In this article we are discussing its main changes with code examples.
In this article we are discussing how to secure a REST API using JWT (JSON Web Tokens).
An article explaining the differences between Promises and Observables in Angular.
This article discusses how to apply the Factory Pattern in a TypeScript environment
In this article we are discussing what semantic versioning is.
`async/await` is a great way to create asynchronous code and Node.js now supports these operators out of the box.
Express, the most used web server for Node.js has a new release coming out soon. In this article we discuss the changes Express 5 will bring.
Abstraction is an Object Oriented programming concept to hide complexity and in TypeScript we can make use of this via the abstract keyword.
Design patterns help us to design better software and write better code. Learn how to use the Adapter pattern with TypeScript in this article.
In this article we'll see how to fix the `Error: Uncaught (in promise): EmptyError: no elements in sequence` error caused by the Angular router.
Design patterns help us to design better software and write better code. Learn how to use the Singleton patternwith TypeScript in this article.
Read how you can potentially fix the 'can't bind to ngFor since it's not a known property of 'element' error.
Testing is an important aspect of development and in this article we'll take a look at how to add Jasmine unit tests to a JavaScript (ES6 / ES2015) code.
Read how to fix the 'This import is blacklisted, import a submodule instead' tslint error for RxJS and Angular.
Cross-Origin Resources Sharing (CORS) is a security protocol implemented by browsers. See how to avoid running into CORS errors via this article.
Using source maps it's possible to debug TypeScript code directly in the browser even after transpilation.
What is RxJS and what are observables? A gentle introduction to these terms and the technology that drives them.
Promises in JavaScript are a powerful concept that allow us to write asynchronous code in a synchronous fashion with better error handling than callbacks.
A range of new capabilities have been added to JavaScript with ES2015 that helps us work with arrays and objects.
TypeScript introduces Generics which allow us to use reusable components within our applications with ease.
Functions in TypeScript work in exactly the same way as functions in ES2015, allowing us to use rest and default params and fat arrow functions in combination with data types.
Rest Parameters, Spread Operator and default parameters for Functions are all great additions for JavaScript ES2015.
JavaScript promises have an important anti-pattern when it comes to using .then() with an error handler versus when using .catch() for handling errors.
Classes in TypeScript really extend JavaScript's (ES2015) class functionality and add their support for types and member access.
If you have worked with JavaScript before you may have heard the expression 'prototypal inheritance' or that JavaScript is a 'prototype' based language. As of ES2015 we can use the class keyword which adds syntactic sugar over the prototypes.
The way you have defined variables in JavaScript for the past decade has always been the same – by using the `var` keyword. In the latest version of JavaScript (ES2015) you can declare variables using let and const.'
The latest version of JavaScript (ES2015) allows us to write functions in a different way by using the arrow function syntax. This not only allows for terser function declarations but also has additional benefits.
Interfaces provide a very powerful way of to define entities that most conform a definition – in other words it allows us to specify properties for entities.
TypeScript uses data typing which is one of it's most important features for allowing developers to write better code.
TypeScript is a language developed by Microsoft that, among other things, has type support. In this article we'll discover its basics including how to setup your environment to work with this language.