Skip to main content

Funny Drupal modules that help us deal with the insane learning curve!

Glasses nose moustache disguise
Drupal is not the only community where software exists just because it either is funny or does something funny. For example, the Linux community has its own share of jokesters! I've talked about some weird distro's here, namely Ubuntu Satanic, Hanah Montana Linux, biebian etc. Many software have been named because of awesome puns or as an homage to a movie or TV series. Apache comes to mind. "A-patchy" server. Get it? Python is named python because Guido van Rossum was reading the published scripts from “Monty Python's Flying Circus”, a BBC comedy series from the 1970s. KDE does something I find very interesting. The browser that ships with KDE is called Konqueror, the terminal - Konsole, the text editor - Kate, the camera app - Kamoso, and the system monitor - Ksysguard. I kommend their konsistency. I Kould go on but let's get back to Drupal. 

Setting up Drupal on ddev for drupal core contributions

PHPUnit
Drupal is an open-source content management system that relies on the contributions of its passionate community to thrive and evolve. If you're interested in contributing to Drupal Core, you'll need a development environment that allows you to work efficiently and effectively. One popular choice for creating a local development environment for Drupal is DDEV. In this article, we'll walk you through the process of setting up Drupal on DDEV for Drupal Core contributions.

Why is Drupal perfect for non-profits and NGOs?

QED42 Clients

Drupal is considered a good CMS (Content Management System) for NGOs (Non-Governmental Organizations) and Non-profits and is often recommended for their websites and technology products. Drupal is a flexible and powerful open-source CMS that offers a range of features and capabilities that align well with the needs of NGOs. The Drupal CMS, it's community and it's philosophy has uniquely evolved to fit this particular use case perfectly. Let's look at some of them closer.

How proper SEO and the Drupal CMS helped my article be a Google featured snippet

SEO
Proper search engine optimization (SEO) techniques and the use of Drupal 10 played a significant role in making my article a Google search featured snippet for the keyword "Solid Principles Drupal". In this article, we will explore how these factors contributed to the success and visibility of the article.

Software Design Patterns: Drupal's architecture and reusability

Design patterns

Software design patterns are crucial tools in the field of software development, providing developers with proven solutions to common programming challenges. These patterns encapsulate the collective wisdom and best practices of experienced software engineers, enabling the creation of robust, scalable, and maintainable code. In this article, we will explore the importance of design patterns in programming, their benefits, and some popular examples of design patterns using Drupal in most examples, because I try to bring Drupal into everything. 

Why being a back-end developer without ever writing any front-end code is a bad idea even though it is possible

Frontend and Backend
While it is possible to specialize in backend development without any knowledge of the frontend, it is not a good idea. Backend developers who understand the frontend can collaborate better with frontend developers, troubleshoot issues, and produce better quality code that is optimized for the user experience. With the growing demand for full-stack developers, having experience in both frontend and backend development can open up more career opportunities.

Design patterns in Drupal

Patterns
Drupal follows best practices in software development by utilizing various design patterns. Design patterns are established solutions for common programming challenges, providing a structured and reusable approach to software design. In Drupal, these design patterns are used to ensure extensibility, flexibility, scalability and maintainability of the CMS. From the Observer pattern for event handling, to the Plugin pattern for modular functionality, to the Factory pattern for object creation, Drupal leverages a variety of design patterns to implement its robust architecture. This introduction provides a glimpse into the key design patterns used in Drupal CMS, which play a crucial role in shaping its modular and flexible nature

SOLID principles in Drupal

Drupal
As one of the most popular open-source content management systems (CMS), Drupal provides a powerful platform for building complex web applications. To ensure that Drupal projects are scalable, maintainable, and extensible, it is essential to follow best practices for writing modular and clean code. One such set of principles that can greatly aid in achieving these goals is SOLID principles. SOLID is an acronym that represents a set of five principles - Single Responsibility Principle (SRP), Open/Closed Principle (OCP), Liskov Substitution Principle (LSP), Interface Segregation Principle (ISP), and Dependency Inversion Principle (DIP). In this article, we will explore how to apply SOLID principles in Drupal development with examples.

How dependency injection works in Drupal?

Drupal
In Drupal, dependency injection is implemented using the Symfony Dependency Injection component, which is a popular PHP library for managing dependencies in object-oriented applications. Drupal is built on top of Symfony framework and leverages its components for various functionalities, including dependency injection

6 best linux distros for everyday use

Top Linux Distros
When it comes to choosing a Linux distribution, ease of use is often a crucial factor, especially for beginners or users transitioning from other operating systems. With the wide variety of Linux distributions available, it's important to understand which ones are known for their user-friendly design and straightforward user experience. In this comparison, we will take a closer look at popular Linux distributions such as Pop!_OS, Ubuntu, Linux Mint, Manjaro, Fedora, MX Linux, Zorin OS, and Elementary OS, and evaluate their ease of use based on their interfaces, documentation, community support, pre-installed software, and overall user experience. Whether you're a seasoned Linux user or new to the world of open-source operating systems, this comparison will help you make an informed decision about which distribution may be the best fit for your needs and preferences.

Tags

A CDN cache warmer in Rust

Cache Memory
While using CDN caches like Cloudflare or Akamai and even for http caches like Varnish, it is important to "warm the cache" after deployments when the caches are usually cleared. This means sometimes manually loading up all the important pages for the first time so that it is loaded into cache. What if this could be automated through the sitemap using a simple CDN cache warmer.

Tags

Drupal security best practices

Drupal Security
I was recently looking certain random things for all Drupal sites that I know to see what information I can get from these sites and I was surprised to see that many of them do not have the basic Drupal security recommendations done. For example, I could tell the exact Drupal, PHP and Nginx versions in many cases. Some of the sites were on Drupal versions that were vulnerable. So I decided to write a checklist that if followed exactly will take care of at least the recommended best practices.

Use cloudflare to speed up your Drupal site and save money

Drupal + Cloudflare
If you're running a small Drupal site on limited space like I am, you'll probably not have more than 30 GB for hard disk space and maybe 2 vCPU and 2 GB RAM on your server. This could affect your Drupal site speed if there are a lot of images or even with time as the content grows, you'll have server load issues. I've optimized my site so much that the performance is 98-100 on most pages and still able to sustain a viewership of 250 - 500 views per day without the server freaking out.

How to increase productivity as a Drupal Developer

Drupal Development

These are few things I picked up and still learning on my Drupal development journey that made my life easier. I love the architecture of Drupal but do find sometimes the amount of code to write, effort and learning curve a bit tedious. But these are all solvable issues. And I have solved them (more or less). Here are some tips for the same.

Why I decided to use Scaleway to host my Drupal website?

Scaleway Logo
This website https://abh.ai has been hosted on almost all of the major players in the cloud hosting business. I started out with Scaleway around 7 years ago when they were providing these small ARM options with 20GB SSD. It was the cheapest solution back then costing less than 5€. But that doesn't mean it wasn't a good solution. It was excellent! It was fast and reliable. But because it was ARM and at the time a 32-bit processor, many things like docker could not be properly installed. This is why I decided to look for alternatives, which eventually brought me back to Scaleway!

Setting up dev servers at home with Raspberry Pis

Raspberry PI Cluster

This is a personal project of mine that has excited me a lot. I have always been obsessed with Single Board Computers (SBC) and the amazing things we can do with them. One of the most popular SBC is Raspberry Pi. They have pioneered the hardware and software capabilities for SBCs. Now we can run an Ubuntu server on any Raspberry Pi device. With Raspberry Pi, you can easily set up a server cluster at home and even host your own website, provided you have a strong internet connection and uninterrupted power supply.

New Drupal 8/9 module: Dopup

Dopup
This module provides simple popup block like that of sumo.me. Sometimes we need to display popup blocks which interacts with the user. Example, Get a Quote, Newsletter subscription forms. Using this module, the user can and their webforms to a block which is a popup and style it as well. After this, the user can specify when to display the popup to the user. Example, 5 seconds after the user is on the page, when the user scrolls to 50% of page and so on. The user can also add custom styles to the block.

A simple asynchronous reverse proxy in Rust

Getting Started with Rust
In my previous article, I had written a very simple and basic reverse proxy. It is just like Nginx but without all the usefulness. In this new code, I have used tokio.rs. Tokio provides runtimes for asynchronous programming. A runtime bundles services together and makes a single type of (for want of a better word) process, service, runtime, etc. This makes it easier to shut down, started, etc. In the code below, I have used TcpStream and TcpListener from the tokio library and not std. I have also spawned for tokio threads and within that, tokio tasks, which are sort of like green threads, but not quite because Rust does not natively support it.

A simple reverse proxy server in Rust

Why Rust
I wanted the application I write to be able to run well on a raspberry pi zero. And Rust could do all this extremely well. Apart from that, Rust is the safest language ever. And it's not like when Java says that it's secure. Rust means it and has gone above and beyond to make sure you can only write safe and secure code. It does this because it has one of the most advanced and thorough compilers, that WILL NOT compile your code unless it is safe. I choose Rust. Q.E.D.

A simple and fast Headless Drupal 8 solution: Acephalous

Headless Drupal Angular Acephalous
An API first distribution and a responsive Angular Single Page App using Angular material. Acephalous provides an Angular front-end and an API first Drupal back-end. Routing has been made simpler here by using the same routes from Drupal rather than re-inventing the wheel. Routing takes place in the Routing component in the Angular Single Page App. The purpose of this distribution is to create a fast, secure and small front end application while keeping all the Drupal 8 goodness like SEO, responsive images, routing, multilingual, easy content authoring, views. Basically Drupal acts like an smart content source and a JavaScript framework renders it.

How to customize your Macbook touch bar and make it useful again

Macbook Touch Bar
Even default Apple applications like Safari, provide very few useful actions from the touch bar. Even then, I mean c'mon, who uses Safari. So Apple should really re-think how to provide a more useful touch bar. Meanwhile, smart developers have provided a solution to make your Macbook touch bar more useful. The best such solution is My Touchbar My Rules (MTMR).

Acquia vs Platform.sh: The "better" Drupal hosting for your application

Acquia vs Platform.sh
For hosting Drupal applications, it is better to go with a hosting platform that promises support specifically for Drupal. There are many such platforms, Platform.sh, Acquia, Pantheon. Let's compare the two leading one's from a slightly different user perspective.

How to create a drop-down menu recursively using angular material button

Angular Js materials
Angular Material is the "Material Design" approach to making web apps in Angular. I have tried out some of this and it seems very easily doable. But I did find it difficult to get to the right way of doing things due to a lack of proper working examples. The documentation is very limited because there is a lot more you can do outside of what's described in the documentation. One such example is what I'm about demonstrate here. 

Things to remember when you change the domain name of your Drupal website

New domains
As you may have noticed, my domain name is now abh.ai. I've been wanting to change my domain name for some time now, for many reasons. People are often surprised that .xyz is a legitimate domain name despite abc.xyz. Plus, If it weren't for my friends, this change would never have happened. They, very astutely, pointed out that it sounds like the domain name of a porn site.

Headless (decoupled) Drupal using Drupal 8 and angular 6

Headless Drupal
Headless Drupal or decoupled Drupal is when you use Drupal only as a storage for content and a frontend that gets the data from the Drupal backend via an API. The front end is usually a JavaScript framework like Angular or Vue. In this example, we use Angular 6 as a front end and we open up my website www.abhaisasidharan.xyz available as JSON objects via an API. This enabled me to create an Angular Single Page Application which pulls content from abhaisasidharan.xyz. 

Serverless computing using AWS Lambda

AWS lambda
Serverless computing is exactly what the name suggests. No servers. Simple! We don't have to worry about managing servers for running small scripts like crawlers, redirects and simple computations that don't involve storage. But if there are API's involved, storage also can be managed. Endless possibilities. Which is why I decided to have a go at it and figure out what's so special about this serverless architecture you speak of!

Why I chose Asus Tinker board for my home server over Raspberry Pi? (Asus Tinker Board vs Raspberry Pi 3 B)

Tinkerboard
I recently bought the Asus Tinkerboard and decided that I should write a review about my experience and why I decided to go with this. It all started when I was trying to run gitlab ce on my 5$ a month DigitalOcean droplet. 512 MB RAM and 20 GB SSD. So as i suspected gitlab ce didnt work. Neither does composer. The memory just gets full and the process gets killed. So i decided to look for a cheap yet feasible solution for a tiny server at my home.

How to view your custom dimensions in google analytics reports?

Analytics Acquisition Dash
This article explains how to create custom reports in google analytics, assuming you have a google analytics account that tracks your site traffic. If you don't have one, create one, and set it up on your site using the Drupal 8 google analytics module. Go to analytics.google.com. This is how your dashboard will look like :

React vs Angular : The better head for the "Headless (decoupled) Drupal"

Angular vs Vue vs React
Drupal has always been criticized for its difficulty in creating truly good UI/UX, especially Drupal 7. In Drupal 8 this is considerably easier with the new twig engine. Even then there is a limitation to what we can do with the UI/UX. Don’t get me wrong, Drupal 8 backend is a godsend; extremely flexible and extensible. But to actually get that much flexibility in the front, we have to decouple.

Configuring i3 window manager (I3WM) on debian (Jessie) lenovo thinkpad x260

meh
Before going into the details of configuring i3wm, let me first introduce you to The Documentation of i3wm! Seriously. I don't even know why I'm writing this. Their documentation is fucking awesome! Firstly, I decided to go with i3wm, despite having Debian with Gnome is mainly because

Running debian (8) Jessie (backports) on lenovo thinkpad x260

Keyboard
Since the new Lenovo Thinkpad X260 houses the latest hardware like the i7-6500U skylake processor, Huawei ME906s LTE, Intel® Snowfield Peak 2 WiFi 2 x 2 802.11 a/c with Bluetooth® M.2 (vPro™) etc as mentioned here, things like WiFi, the graphics card and the LTE 3G port may not work with the stable release of Debian 8 (Jessie). This is because since you choose Debian stable, the software is a little bit outdated compared to other distributions. Stability at the cost of obsolescence. Fortunately, we have a not-so-unstable unstable version of Jessie aka Debian Jessie backports!

React vs Angular : The better head for the "Headless (decoupled) Drupal"

React Angular Drupal
Drupal has always been criticized for its difficulty in creating truly good UI/UX, especially Drupal 7. In Drupal 8 this is considerably easier with the new twig engine. Even then there is a limitation to what we can do with the UI/UX. Don’t get me wrong, Drupal 8 backend is a godsend; extremely flexible and extensible. But to actually get that much flexibility in the front, we have to decouple.
Subscribe to ASB Articles & shorts
x

Work

Therefore logo
80 Atlantic Ave, Toronto, ON Canada
Email: hello@therefore.ca
Call us: +1 4166405376
Linkedin

Let us know how we can help!