Introducing The Embedded Terminal on Windows

Planet KDE - Wed, 2023-02-15 02:18

Kate has been supported on Windows for a long time however, we missed one crucial feature on Windows that made it not as good as Kate on Linux. That feature was the built-in terminal. If you are a developer you might have to use the terminal a lot and having a built-in terminal inside your editor can be really helpful and convenient.

With 23.04, we have filled this gap. After a hectic weekend of 20+ hours of hacking on a borrowed windows machine and sacrificing a lot of other things, Kate now has a built-in terminal on Windows as well. The terminal we used is based on qtermwidget which is a fork of an older version of Konsole and uses ptyqt for pty. I had to make a lot of modifications to support the new terminal on Windows/Mac/Linux and make it build with Qt6 as well as Qt5 but now it is done and we merged it last night after some testing. There are going to be a lot of bugs for sure, but at least we now have a proper terminal to offer on Windows. Obligatory screenshot below:

I have tried hard to offer the exact same experience to Windows users that we give Linux users so that no one has to learn anything. I am glad to say that it will be quite similar if not the same. There are a couple of shortcomings, but the rest looks almost the same. It supports multiple tabs (focus the terminal and hit Ctrl+Shift+T), search, colorschemes and opening links.

Does this mean anything will change for Linux or Mac users?

No. Linux users will still enjoy the latest Konsole. However, if someone doesn't have Konsole installed for whatever reason this new terminal will be activated as a fallback.

Will Konsole itself work on Windows?

Atm no. However, the good news is that making Konsole work on Windows will probably not be that hard and now we have some proof that Konsole can work on windows. I have been in touch with one of the Konsole devs about this and we might end up porting Konsole to windows this year :)

Before closing the post, I must say that this is a temporary solution. We don't really want to maintain a full terminal inside the editor as it's a lot of weight to carry. The main fear I have is that none of the active Kate developers use Windows which means that it will be a bit hard to fix the bugs. Let see. The ideal solution for us is that we port Konsole to windows and then reuse that.

Are you a Kate user on Windows? We'd love some feedback.


A matching thread for this can be found here on r/KDE.

Categories: FLOSS Project Planets

Codementor: DataTypes in C programming Language

Planet Python - Wed, 2023-02-15 00:12
fundamentals of C Programming series continued...
Categories: FLOSS Project Planets

Valhalla's Things: My experience with a PinePhone

Planet Debian - Tue, 2023-02-14 19:00
Posted on February 15, 2023

I’ve had and used1 a PinePhone for quite some time now, and a shiny new blog sounds like a good time to do a review of my experience.

TL;DL: I love it, but my use cases may not be very typical.

While I’ve had a mobile phone since an early time (my parents made me carry one for emergencies before it was usual for my peers) I’ve never used a typical smartphone (android / iPhone / those other proprietary things) because I can’t trust them not to be designed to work against me (data collection, ads, tricking users into micro payments, and other antipatterns of proprietary software design), and bringing them to sanity as most of the people I know do is too much effort for my tastes.

Instead, as a phone I keep using an old nokia featurephone2 which is reliable, only requires charging once a week, and can easily survive falling from hand height to the ground, even if thrown 3.

And then I’ve been carrying a variety of other devices to do other computer-like tasks; earlier it was just a laptop, or a netbook, a Pandora (all of which used a dongle to connect to mobile network internet) then I tried a phone with FirefoxOS (it could have been better) and now the PinePhone has taken their place, at least when I’m not carrying a laptop anyway.

So, the tasks I use the PinePhone for are mostly:

  1. sending and receiving xmpp messages, with no need for notifications (when somebody needs to tell me something where urgency is required, they know to use the other phone, either with a call or an sms);
  2. tethering an internet connection to the laptop;
  3. reading djvu scans of old books while standing in a queue or something;
  4. checking something on the internet when I’m not close to a real computer (i.e. one with a keyboard and a big screen);
  5. running a timer while heat-setting fabric paint with an iron (and reading a djvu book at the same time — yes, this is a very specific task, but it has happened multiple times already :D );
  6. running a calculator with unit conversions;
  7. running the odd command line program;
  8. taking pictures, especially those that I want to send soon (I often also carry a DSLR camera, but I tend to wait a few days before I download them from the card);
  9. map related things.

3 and 5 work perfectly well, no issues there. 1, 2 and 4 usually work just fine, except for the fact that sometimes while the phone is suspended it forgets about being a phone, and needs to be restarted to turn the modem back on. It’s not a big deal while using the phone, I just need to check before I try to use it after a few hours.

For 1, I also had to take care to install dino-im from experimental, as up to now the features required to fit the interface in a mobile screen aren’t available in the official release, but I believe that this has just been fixed.

Somewhat related to 4, I’ve also installed kiwix and the dumps of wiktionary and wikivoyage, but I haven’t had a chance to travel much, so I’m not really using it.

For 6 I’m quite happy with qalculate, the GUI version of qalc (which is what I use on my laptop), even if it has a few minor interface issues, and 7 of course works as well as it can, given the limitations of a small screen and virtual keyboard.

8 is, let us say, problematic. The camera on the PinePhone is peculiar, only works with a specific software, and even there the quality of the pictures is, well, low-fi, vintagey pictures are a look and that’s a specific artistic choice, right? Thanks to the hard work of the megapixels maintainer the quality has improved a lot, and these days it is usable, but there are still limits (no webcam in the browser, no recording of videos).

9 is really bad. A few times I can remember getting a GPS fix. A few times in many months, and now and then I keep trying, to see if a miracle has happened, but usually I only get a vague position from wifi data (which isn’t great, when walking through less densely populated areas).

I’ve seen another PinePhone running gpsd and getting data from an external GPS receiver via bluetooth, and if I really needed it I may seriously consider that solution.

Also, the apps available in mobian aren’t great either, even when compared to running tangogps on an OpenMoko with pre-downloaded maps (I mean! I don’t think my expectations are too high!).

I’ve heard that PureMaps is quite good as a software, but a bit of a PITA to package for Debian, and I really hope that one day there will be a linux-first mobile device with good GPS hardware, so that people will be encouraged to fix the software side.

Thankfully, I don’t usually need GPS and navigation software; when I’m driving into places I don’t know I usually have a human navigator, and when walking into places I can do with just a static map (either printed on paper or on the PinePhone), maybe some pre-calculated route from the OSM website and looking at street names to find out where I am.

Overall, for my use cases the PinePhone works just fine and is an useful addition to the things I always carry with me, and I don’t feel the pressing need to get an android phone. I don’t think it’s ready as a daily driver for everybody, but I think that depending on one’s needs it’s worth asking around (I’d recommend doing so on the fediverse with a #PinePhone and #mobian hashtag), as there is a non-zero chance that it may be a good fit for you.

  1. which, if I’m not mistaken, is often not implied by the fact of owning it :D↩︎

  2. for very low values of feature: it doesn’t have any kind of internet access, and there are only 3 games, one of which is snake.↩︎

  3. don’t ask.↩︎

Categories: FLOSS Project Planets

KDE Plasma 5.27.0 on Fedora (via our COPR)

Planet KDE - Tue, 2023-02-14 16:30

After the announcement upstream, Fedora’s @kde-sig follows up by making KDE Plasma 5.27.0 available on Fedora 36 and Fedora 37.

There’s a catch though: you will have to use our COPR.

The regular update on Fedora repositories will follow shortly, I will keep you all posted.

Feel free to join us at our Matrix room!.

Categories: FLOSS Project Planets

ImageX: Web Content Personalization: a Glimpse of Digital Experiences with a Personal Touch

Planet Drupal - Tue, 2023-02-14 15:40
Web Content Personalization: a Glimpse of Digital Experiences with a Personal Touch amanda Tue, 02/14/2023 - 20:40

With almost 2 billion websites on the Internet today, it’s no longer enough to have an appealing design and great content. You need to do everything you can to make customers’ experiences on your website more relevant, impressions more positive, and conversions more likely. This is not easily achievable because there is no “average user” — your website’s users are diverse in every way (and that’s great!). Luckily, there is a website strategy that can work wonders for you, and that is called web content personalization. Read on to discover more about creating digital experiences with a personal touch. 


Web content personalization explained


The key idea behind content personalization is that a website’s message needs to be tailored to match the needs, interests, backgrounds, activities, and motivations of individual users. In other words, your website should display the content that is most useful to a given user at a given moment so they are most likely to be interested in your offer and make a positive decision about it. 


Implementing a successful content personalization strategy is like telling each customer “Hi, we know what you need, so we are happy to offer it to you!”. Imagine walking into your favorite bakery where the salesperson is meeting you with your favorite blueberry muffins before you even asked. They are also informing you about their latest offering — chocolate strawberries because they know you like everything chocolate. Finally, they are inviting you to drop by next week so they can give you a little tasty birthday gift.


Similar personalized experiences can be provided on a website with the help of tailored product recommendations, exclusive offers, special CTAs for different visitors, and so on. Personalization enables marketers to craft their message to make it look like it has been personally created for a given visitor. Instead of being overwhelmed with irrelevant options, your visitors see exactly what they expect to see at the moment. 


Content personalization is so common that users expect it from websites. A study by Epsilon shows that 80% of customers are more likely to purchase from companies that use content personalization. According to Forrester, 89% of digital businesses invest in personalization, including famous brands like Sephora, Netflix, and USAA. 


User data in web content personalization


To display the content that best resonates with each user’s expectations, you can rely on various user data signals. Ways to collect these data signals include using various online forms (for registration, subscription, feedback, surveys, quizzes, etc.), wishlists on the website, marketing analytics tools, CRMs, specialized personalization platforms, customer support tickets, website cookies, browser fingerprinting, and more — of course, with respect to all privacy regulations. 


The hair product manufacturer Aveda collects customer data via a hair quiz to provide personalized product recommendations.


Any user data might be useful for content personalization, but let’s review some examples of the most commonly used types of data:


  • Geographic location (the country, region, or city from which a user is visiting your website).
  • A wide range of demographic data such as gender, age, ethnicity, family status, education level, employment, industry, job title, income level, hobbies, and more.
  • Technical data such as device type (desktop, mobile, or tablet), browser, operating system, and sometimes even screen resolution.
  • The traffic source from which the user has come to your website:
    • organic traffic
    • direct traffic
    • referrals
    • paid search
    • email marketing
    • social media
  • Funnel stage (awareness, consideration, or decision).
  • The status of an authenticated and non-authenticated user.
  • The status of a new or returning customer.
  • The user’s behavior and interactions with your website, emails, etc.:
    • visited URLs
    • time spent on the website
    • search history
    • clicked CTAs
    • submitted forms
    • previous purchases
    • cart abandonment 


Based on all these types of data, you can split your overall audience into smaller segments or groups that have some characteristics in common, and then show personalized content versions to each of the groups. You can take a step further and create user personas — archetypical users that represent the needs and characteristics of a subgroup of your target audience.


Content personalization with different website elements


To create a message that resonates with visitors on an individual level, it’s possible to personalize a wide array of website elements. You can show dynamically generated variations of permanent website content sections, as well as tailored pop-ups, navigation, and more. All website elements can have different versions of text and visuals, and even the order of the content items is important for personalization. Let’s review some examples of website elements that are often personalized.


Personalized hero section


A hero section, or a large banner placed prominently at the top of your website, can serve multiple purposes such as greeting your customers, describing a specific service or promotion, informing them of news, etc. It may include a heading, a subheading, a few brief sentences of text, a large eye-catching image, and an enticing call-to-action button leading to specific subpages. 


By dynamically displaying personalized hero sections to different visitors, you can cater to their different interests. Imagine, for example, a visitor who is accessing a fashion store from one of its target countries where the current season is summer. They can be shown a hero section with a promotion of trendy sunglasses shipped worldwide. Or, as shown in the image below, the hero section can target people of a specific profession from a specific geographical location.


A personalized hero section that targets drivers in Berlin.
Source: https://www.personalizationdecoded.com/p/how-would-we-personalize-the-sumup


Personalized content recommendations


Increase the user’s engagement by matching the recommended blog posts, videos, products, or services to their preferences. The recommendations can be based on a wide range of data such as the content the user has previously viewed, the industry they work in, and so on. 


Engaging content might keep the visitor on the website for a longer time so that they continue to read or view something more. In the image below, recommended services are displayed based on the results of the hair quiz by Aveda that we mentioned earlier in this blog post. 


Recommended services based on the user’s answer to the hair quiz.


Personalized pop-ups


Pop-ups on your website can be more engaging and convincing to specific users when personalized. For example, you could display a pop-up offering a discount for new visitors only if they subscribe to your newsletter. Or, if there is an upcoming event in the current visitor’s location, it would be great to inform them about it. Another example is to nudge a user with a discount coupon towards a product or service in a specific category that they have been exploring.


A personalized pop-up offering a discount in a specific category.
Source: https://popupsmart.com/blog/popup-design-templates-download


Personalized navigation


By reordering the items in the navigation menus, you give priority to the categories that your visitors are most interested in. This should help them quickly find what they are looking for instead of getting distracted by too many options. 


For example, if a prospective student has been browsing engineering programs during their last visit to a university website, the navigation menu can show them engineering programs at the top during their subsequent visits.

  Personalized social proof


When looking for social proof, what users will appreciate the most is information provided by other customers who have already used the same product, service, or technology, or with whom they share some common characteristics (such as industry, occupation, location, age, country, and so on). 


You can shape your social proof section accordingly. For example, if one of your company’s target subgroups includes finance specialists, it makes sense to display the feedback from customers with this job title first.


Personalized social proof displaying the feedback from finance specialists first.
Source: https://www.personalizationdecoded.com/p/how-would-we-personalize-the-social
  Final thoughts


By unlocking the potential of content personalization, you have a chance to create compelling digital experiences and skyrocket your conversion rate. You can always contact the ImageX team which includes specialists in digital strategy and planning, as well as web development. 


We will be happy to help you understand your audience, create a content personalization strategy, and successfully implement it on your website.

/sites/default/files/styles/original/public/2023-02/girl-with-red-hat-gL3-jTs_Q7g-unsplash%20%281%29.jpg.webp?itok=2V9Zm20_ Feature as an event Off Service Category Strategy Content Strategy Storytelling Digital Marketing SEO IsGated 0 IsDownloadable 0
Categories: FLOSS Project Planets

PyCoder’s Weekly: Issue #564 (Feb. 14, 2023)

Planet Python - Tue, 2023-02-14 14:30

#564 – FEBRUARY 14, 2023
View in Browser »

Monorepos in Python

A monorepo is a source control pattern in some organizations where a single code repository is shared for many or all projects. This interview with David Vujic discusses monorepos and the set of Python tools that can help you succeed with this pattern.

Business Process Models With Python and SpiffWorkflow

Can you describe your business processes with flowcharts? What if you could define the steps in a standard notation and implement the workflows in pure Python? This week on the show, Dan Funk from Sartography is here to discuss SpiffWorkflow.

Connect, Integrate & Automate Your Data - From Python or Any Other Application

At CData, we simplify connectivity between the application and data sources that power business, making it easier to unlock the value of data. Our SQL-based connectors streamline data access making it easy to access real-time data from on-premise or cloud databases, SaaS, APIs, NoSQL and Big Data →

Functional Python, Part II: Dial M for Monoid

This article is about “commandeering techniques from richly typed, functional languages into Python for fun and profit.” The focus is on Typeclasses and continuation-passing style.

SQLAlchemy 2.0 Released


DjangoCon Europe 2023 (Edinburgh) Call for Participation


Python 3.11.2, Python 3.10.10 and 3.12.0 Alpha 5 Are Available


Mypy 1.0 Released


Discussions It Is Becoming Difficult for Me to Be Productive in Python

This discussion is based on Avinash’s article of the same name, where he describes his journey from type-less to typed languages and why he is finding it harder to refactor his Python.

Python Jobs Software Engineer - Backend/Python (100% Remote) (Anywhere)


Python Video Course Instructor (Anywhere)

Real Python

Python Tutorial Writer (Anywhere)

Real Python

More Python Jobs >>>

Articles & Tutorials Python Parquet and Arrow: Using PyArrow With Pandas

Parquet and Arrow are two Apache projects available in Python via the PyArrow library. Parquet is column-oriented storage format for arrays and tables of data, while Arrow is an in-memory columnar format for data analysis. This article describes how to use them and how they compare to Pandas DataFrames.

How to Split a Python List or Iterable Into Chunks

This tutorial provides an overview of how to split a Python list into chunks. You’ll learn several ways of breaking a list into smaller pieces using the standard library, third-party libraries, and custom code. You’ll also split multidimensional data to synthesize an image with parallel processing.

Retool - The Fastest Way For Developers to Build and Launch Mobile Apps

Build and deploy mobile apps to iOS, Android, and as PWAs with no mobile expertise—all you need is JS and SQL. Retool Mobile is the fast way for developers to build business apps for teams on the go, at a warehouse, or in the field. And now teams of up to 5 users can build mobile apps for free →
RETOOL sponsor

Some Reasons to Avoid Cython

Cython lets you seamlessly merge Python syntax with calls into C or C++ code, making it easy to write high-performance extensions, but it is not the best tool in all circumstances. This article goes over some of the limitations and problems with Cython, and suggests alternatives.

Pandas Illustrated: The Definitive Visual Guide to Pandas

“Pandas is an industry standard for analyzing data in Python. With a few keystrokes, you can load, filter, restructure, and visualize gigabytes of heterogeneous information.” Learn all about Pandas with key illustrations to help understand the core concepts.

Standout Features in Django 4.2

Django 4.2 is slated for April and is currently in alpha release. This article covers some standout features that are coming, including psycopg v3 support, database comments, and lookups on field instances.

The Technology Behind GitHub’s New Code Search

For the last year, GitHub has been making large changes to how you can search for code on their site. This article describes what went into building the world’s largest public code search index.

Find Your Next Tech Job Through Hired

Hired is home to thousands of companies, from startups to Fortune 500s, that are actively hiring the best engineers, designers, data scientists, and more. Create a profile to let hiring managers extend interview requests to you. Sign for free today!
HIRED sponsor

Python Testing Tools Taxonomy

This entry in the Python wiki is an exhaustive list of testing tools and libraries. Content includes unit testing, mocking, fuzz testing, web testing, coverage tools, and much more.

Securely Deploy a FastAPI App With NGINX and Gunicorn

In this tutorial, you’ll learn how to use NGINX, and Gunicorn+Uvicorn to deploy a FastAPI app, and generate a free SSL certificate for it.

Projects & Code rtx: Runtime Executor (asdf Rust Clone)


django-admin-confirm: Mixin for Confirming Changes


tidypolars: tidyverse (R) Clone in Polars


jupyter-scheduler: Run Jupyter Notebooks as Jobs


pynimate: Python Package for Statistical Data Animations


Events Dash and Data Visualisation, New Zealand Python User Group

February 15, 2023

Weekly Real Python Office Hours Q&A (Virtual)

February 15, 2023

PyConFr 2023

February 16 to February 20, 2023

Python Northwest

February 16, 2023

PyLadies Dublin

February 16, 2023

Happy Pythoning!
This was PyCoder’s Weekly Issue #564.
View in Browser »

[ Subscribe to 🐍 PyCoder’s Weekly 💌 – Get the best Python news, articles, and tutorials delivered to your inbox once a week >> Click here to learn more ]

Categories: FLOSS Project Planets

Holger Levsen: 20230214-i-love-osuosl

Planet Debian - Tue, 2023-02-14 13:15
I love free software and I ❤️ OSUOSL

So in December 2018 I was approached somewhat out of the blue by someone from OSUOSL who offered eight servers to the Reproducible Builds project and as these machines had 32 cores and 144 GB Ram each (plus 3 TB on a single HDD) and they also offered free hosting, I very happyly said yes.

And since them I'm a very happy Oregon State University Open Source Labs user, and these days we're switching the setup to different machines, which is another story to tell some other time...!

My point now is: since 2018 I got to know OSUOSL and every year I like them more. They are super friendly, reliable (a working ticket system and a great IRC channel), offer help in various ways, be it with DNS names (and renamings...) or finding new hardware suited to our needs or whatever else we come up with. They are really dedicated to help free software projects and I'm grateful having the privilege to enjoy this since more than four years now.

To quote https://osuosl.org/:

"The Open Source Lab is a nonprofit organization working for the advancement of open source technologies.

The lab, in partnership with the School of Electrical Engineering and Computer Science at Oregon State University, provides hosting for more than 160 projects, including those of worldwide leaders like the Apache Software Foundation, the Linux Foundation and Drupal. Together, the OSL’s hosted sites deliver nearly 430 terabytes of information to people around the world every month. The most active organization of its kind, the OSL offers world-class hosting services, professional software development and on-the-ground training for promising students interested in open source management and programming."

So, IOW, I'm just seeing a very tiny tip of the iceberg of their awesome work. Check out https://osuosl.org/communities/ to see what I mean with very tiny tip. Search for "Debian" and "Reproducible" on that page

Thank you, everybody at OSUOSL! You rock and make a big difference for many projects! ❤️

Categories: FLOSS Project Planets

Everyday Superpowers: Use ABCs for less-restrictive type hints.

Planet Python - Tue, 2023-02-14 11:38

Many people, especially those new to type hints, write hints that make things harder for users. This article will give you one tool to make your code easier to use.

Categories: FLOSS Project Planets

The Drop Times: Drupal Best Suited for DXPs, Not for Brochure Websites: Jurriaan Roelofs

Planet Drupal - Tue, 2023-02-14 10:23
As part of our effort to feature products and distributions around Drupal, TheDropTimes (TDT) reached out to Jurriaan Roelofs, the founder and senior product manager of DXPR and arranged an email interview with him. Jurriaan painstakingly replied to them. Here is the result:
Categories: FLOSS Project Planets

Matt Glaman: Debugging your render cacheable metadata in Drupal

Planet Drupal - Tue, 2023-02-14 09:18

One of Drupal's greatest features, and often mysterious underworking to many site builders and developers, are its caching layers especially render caching. We have all been there before: we have no idea why it's not quite working, so we press "Cache rebuild" (or more infamously, "Flush all caches" of the pre-Drupal 8 eras), and like magic, things are displaying properly. Whenever we have to resort to clearing the cache to fix a page, that usually means a render cache item was not properly invalidated when it was supposed to have been. This is caused by missing cacheable metadata. Cacheable metadata is the information Drupal uses to understand when a cache item should be invalidated by its tags or maximum age. It's also used to provide variations of the cache based on context.

Categories: FLOSS Project Planets

Real Python: Getters and Setters in Python

Planet Python - Tue, 2023-02-14 09:00

If you come from a language like Java or C++, then you’re probably used to writing getter and setter methods for every attribute in your classes. These methods allow you to access and mutate private attributes while maintaining encapsulation. In Python, you’ll typically expose attributes as part of your public API and use properties when you need attributes with functional behavior.

Even though properties are the Pythonic way to go, they can have some practical drawbacks. Because of this, you’ll find some situations where getters and setters are preferable over properties.

In this video course, you’ll:

  • Write getter and setter methods in your classes
  • Replace getter and setter methods with properties
  • Explore other tools to replace getter and setter methods in Python
  • Decide when setter and getter methods can be the right tool for the job

To get the most out of this course, you should be familiar with Python object-oriented programming. It’ll also be a plus if you have basic knowledge of Python properties and descriptors.

[ Improve Your Python With 🐍 Python Tricks 💌 – Get a short & sweet Python Trick delivered to your inbox every couple of days. >> Click here to learn more and see examples ]

Categories: FLOSS Project Planets

Ned Batchelder: Late initialization, reconsidered

Planet Python - Tue, 2023-02-14 07:20

A few days ago I posted Late initialization with mypy, and people gave me feedback, and I realized they were right. The placebo solution described there is clever, but too clever. It circumvents the value of static type checking.

The comments on the blog post were telling me this, but what helped most was a Mastodon thread with Glyph, especially when he said:

I am using “correct” to say “type-time semantics consistently matching runtime semantics.”

The placebo works to say “there’s always a thing,” but it’s not a real thing. A more useful and clearer solution is to admit that sometimes there isn’t a thing, and to be explicit about that.

I actually took a slightly middle-ground approach. Some of the “sometimes” attributes already had null implementations I could use, but I removed all of the explicit “Placebo” classes.

Categories: FLOSS Project Planets

The Drop Times: Upcoming Interview with Aubrey Sambor

Planet Drupal - Tue, 2023-02-14 07:01
As an in-kind sponsor, we are looking to receive a few interviews from the members of the Florida Drupal Camp. We are excited to announce our next Interview with Aubrey Sambor. 
Categories: FLOSS Project Planets

Specbee: How to Integrate Google Tag Manager with Drupal 9 – An Easy Step-by-Step Tutorial

Planet Drupal - Tue, 2023-02-14 05:13
How to Integrate Google Tag Manager with Drupal 9 – An Easy Step-by-Step Tutorial Shefali and Shruthi 14 Feb, 2023 Subscribe to our Newsletter Now Subscribe Leave this field blank

Marketers are always seeking new ways to elevate website engagement and maximize interactivity. Yet, managing the countless third-party integrations and tracking tools implemented to enhance their business can quickly become overwhelming and chaotic. That's when Google Tag Manager comes to the rescue. With its intuitive and user-friendly platform, managing, updating, and tracking the snippets, tags, and integrations on your website has never been easier. From improving website performance to boosting conversion rates, Google Tag Manager offers the solution to streamline your digital marketing efforts and revolutionize your online presence.

Drupal 9 makes integrating with Google Tag Manager easy and effortless. The Google tag manager module in Drupal lets you quickly add, modify and remove tags on your website without touching any code! Read this easy step-by-step guide to learn how to integrate your Drupal 9 site with your Google tag manager.

What is Google Tag Manager and how can it help?

Google Tag Manager is like a toolkit. It has all the tools you need meticulously organized in one place. Tools like Google Analytics, Adwords, personalization tools, A/B testing tools, Remarketing, Native advertising pixels, and much more. All the integration tags can be stored in Google Tag Manager for better access and management. How can it help, you ask?

  • Marketers find it greatly beneficial as they don’t have to depend on developers to add and modify integration tags on the website. They can easily do it themselves.
  • Better organization of tags can help marketers’ access and manage their integrations easily.
  • Updating tags don’t require you to change them on multiple web-pages. 
  • Test if your tags get triggered on any event/action in the preview mode.
  • You can even check for formatting or security issues before deploying it to live.
  • Provides an extra layer of data security.
Integrating Google Tag Manager in Drupal 9

Drupal 9 integrates seamlessly with Google Tag Manager and installing it is also a breeze. Now that we know how useful Google Tag Manager is, let’s move on to integrating it with your Drupal 9 website.

Step 1 - Install the module

You can download the Google tag Manager module here.

Or run this command through composer with this command :

composer require 'drupal/google_tag:^1.4' Step 2 - Configure the Module

In the admin toolbar, go to Configuration-> System -> Google Tag Manager

Step 3 - Open Container Page

Once you click on Google Tag Manager, you will see a container page like this –

Step 4 - Add a Container

Click on the Add container button. This is where you will add the Container ID that you had created previously when you signed up with GTM. If not done already, go here to signup and create a container ID for yourself (shown in the below steps).

Step 5 - Create a Container

Under Account setup, give the Account name and your Country name.

Under Container setup, give the Container name and select the target platform as per your requirements.

Click on the Create button.

Step 6 - Get the Container ID

Once done, you will be able to see a popup screen that will display the code snippet that needs to be pasted in the head section. Look out for the Container Id which will look like an alphanumeric word and begins with “GTM”. Here it is “GTM-MXQN9XL”. Copy this code to your clipboard.

Step 7 - Insert the Container ID

Head back to your Drupal setup where you had to add the container ID. Give a name for your container in the Label field and paste the previously copied container ID in the Container ID field. Save the configuration.

Step 8 - And we’re all set!

To verify if the installation of Google tag manager has been successful in your Drupal site, go to the home page of your website and do an “Inspect Element”. If it has been installed properly, you should be able to see it within the tag.

Google Tag Manager is an extremely useful tool for site owners and marketers. Different third-party integrations can be maintained, added and modified easily. This greatly helps marketers in speeding up the process of experimenting and testing out various useful integrations that can lead to better user engagement. Drupal 9 comes loaded with plenty of powerful features and functionalities and tons of handy contributed modules that you can easily install and connect to. As a leading Drupal development company, we can help you build seamless digital experiences with Drupal. We’d love to talk to you!

Email Address Subscribe Leave this field blank Drupal Planet Drupal 9 Drupal 9 Module Drupal Development Drupal Module

Leave us a Comment

  Recent Blogs Image How to Integrate Google Tag Manager with Drupal 9 – An Easy Step-by-Step Tutorial Image From Code to Community: Shashwat Tiwari's Dual Pursuits Image Taming JavaScript in Drupal (Includes FAQs) Want to extract the maximum out of Drupal? TALK TO US Featured Case Studies

Great Southern Homes, one of the fastest growing home builders in the US, sees greater results with Drupal


A reimagined digital solution for Abaco, a global leader in embedded computing systems for the defense industry


Upgrading the web presence of IEEE Information Theory Society, the most trusted voice for advanced technology

View all Case Studies
Categories: FLOSS Project Planets

The Drop Times: DrupalCamp NJ Early Bird Pricing Ends Friday

Planet Drupal - Tue, 2023-02-14 04:59
Early Bird gets the worm. Now is the time to get a hold of your tickets and register for Drupal Camp NJ 2023.
Categories: FLOSS Project Planets

Golems GABB: How to Log Messages in Drupal 8

Planet Drupal - Tue, 2023-02-14 03:43
How to Log Messages in Drupal 8 Editor Tue, 02/14/2023 - 10:43

Keeping a logbook is necessary for the correct operation of the system, so it is prudent to add an algorithm to the code. Thanks to this solution, changes will be made automatically, and all employees with the necessary level of access will have access to them.
Previously, to activate the function used, two protocols were offered by the software. Today we no longer have to face such difficulties because the new Drupal 8 has merged two options into one. Change notifications appear in the "Reports" section, allowing viewing of the content in the user interface. More details about how to log messages in Drupal 8 and Drupal 8 module development will be discussed in our material. 

Categories: FLOSS Project Planets

Django Weblog: Django security releases issued: 4.1.7, 4.0.10, and 3.2.18

Planet Python - Tue, 2023-02-14 03:35

In accordance with our security release policy, the Django team is issuing Django 4.1.7, Django 4.0.10, and Django 3.2.18. These releases addresses the security issue detailed below. We encourage all users of Django to upgrade as soon as possible.

CVE-2023-24580: Potential denial-of-service vulnerability in file uploads

Passing certain inputs to multipart forms could result in too many open files or memory exhaustion, and provided a potential vector for a denial-of-service attack.

The number of files parts parsed is now limited via the new DATA_UPLOAD_MAX_NUMBER_FILES setting.

Thanks to Jakob Ackermann for the report.

This issue has severity "moderate" according to the Django security policy.

Affected supported versions
  • Django main branch
  • Django 4.2 (currently at pre-release alpha status)
  • Django 4.1
  • Django 4.0
  • Django 3.2

Patches to resolve the issue have been applied to Django's main branch and the 4.2, 4.1, 4.0, and 3.2 release branches. The patches may be obtained from the following changesets:

The following releases have been issued:

The PGP key ID used for this release is Carlton Gibson: E17DF5C82B4F9D00

General notes regarding security reporting

As always, we ask that potential security issues be reported via private email to security@djangoproject.com, and not via Django's Trac instance or the django-developers list. Please see our security policies for further information.

Categories: FLOSS Project Planets

Python Bytes: #323 AI search wars have begun

Planet Python - Tue, 2023-02-14 03:00
<a href='https://www.youtube.com/watch?v=0SepAcVf5yg' style='font-weight: bold;'>Watch on YouTube</a><br> <br> <p><strong>About the show</strong></p> <p>Sponsored by <a href="http://pythonbytes.fm/foundershub2022"><strong>Microsoft for Startups Founders Hub</strong></a>.</p> <p><strong>Connect with the hosts</strong></p> <ul> <li>Michael: <a href="https://fosstodon.org/@mkennedy"><strong>@mkennedy@fosstodon.org</strong></a></li> <li>Brian: <a href="https://fosstodon.org/@brianokken"><strong>@brianokken@fosstodon.org</strong></a> - may be a minute or two late. </li> <li>Show: <a href="https://fosstodon.org/@pythonbytes"><strong>@pythonbytes@fosstodon.org</strong></a></li> <li>Special guest: <a href="https://fosstodon.org/@pamelafox"><strong>Pamela Fox</strong></a> - @pamelafox@fosstodon.org</li> </ul> <p>Join us on YouTube at <a href="https://pythonbytes.fm/stream/live"><strong>pythonbytes.fm/live</strong></a> to be part of the audience. Usually Tuesdays at 11am PT. Older video versions available there too.</p> <p><strong>Michael #1:</strong> <a href="https://github.com/juftin/camply"><strong>camply</strong></a></p> <ul> <li>A tool to find campsites at sold out campgrounds through sites like recreation.gov and Yellowstone</li> <li>Finding reservations at sold out campgrounds can be tough.</li> <li>Searches the APIs of booking services like <a href="https://recreation.gov"><strong>recreation.gov</strong></a> (which indexes thousands of campgrounds across the USA) to continuously check for cancellations and availabilities to pop up.</li> <li>Once a campsite becomes available, camply sends you a notification to book your spot!</li> <li><p>Want to camp in a tower in California?</p> <p>camply campgrounds --search "Fire Lookout Towers" --state CA</p></li> </ul> <p><strong>Brian #2:</strong> <a href="https://github.com/hynek/hatch-fancy-pypi-readme"><strong>hatch-fancy-pypi-readme</strong></a></p> <ul> <li>Your ✨Fancy✨ Project Deserves a ✨Fancy✨ PyPI Readme! 🧐</li> <li>Hynek Schlawack</li> <li>Include lots of extras in a README.md <ul> <li>text fragments</li> <li>files, like AUTHORS.md or Changelog.md, with custom start, stop, pattern includes, etc.</li> <li>regular expression substitutions</li> </ul></li> <li>Several projects with examples, including <a href="https://github.com/psf/black/blob/main/pyproject.toml">black</a>.</li> </ul> <p><strong>Pamela</strong> <strong>#3:</strong> <a href="https://github.com/pyodide/pyodide/pull/3252"><strong>Pyodide dev branch now supports 3.11</strong></a></p> <ul> <li><a href="https://github.com/pyodide/pyodide/pull/3252">Python 3.11 PR</a></li> <li><a href="https://github.com/pyodide/pyodide/issues/3503">Benchmark Py3.11 and Py3.10</a> </li> <li><a href="https://pyodide.org/en/latest/console.html">pyodide console</a></li> <li><a href="https://github.com/pyodide/pyodide/issues/3410">TODO list for 0.23.0 alpha release</a> </li> <li><a href="http://www.dis-this.com">Dis-this: specializing adaptive interpreter</a> </li> <li><a href="https://www.recursionvisualizer.com/">Recursion visualizer</a></li> </ul> <p><strong>Michael #4:</strong> <a href="https://ec.europa.eu/info/law/better-regulation/have-your-say/initiatives/13410-Cyber-resilience-act-new-cybersecurity-rules-for-digital-products-and-ancillary-services/F3376611_en"><strong>EU hates open source?</strong></a></p> <ul> <li>via <strong>Pamphile Roy</strong></li> <li>The Cyber Resilience Act (CRA) is an interesting and important proposal for a European law that aims to drive the safety and integrity of software</li> <li>The proposal includes a requirement for self-certification by suppliers of software to attest conformity with the requirements of the CRA including security, privacy and the absence of Critical Vulnerability Events (CVEs).</li> <li>We recognize that the European Commission has framed an exception in recital 10 attempting to ensure these provisions do not accidentally impact Open Source software. </li> <li>However, drawing on more than two decades of experience, we at the Open Source Initiative can clearly see that the current text will cause extensive problems for Open Source software.</li> <li>Since the goal is to avoid harming Open Source software this goal should be stated at the start of the paragraph as the rationale, replacing the introductory wording about avoiding harm to "research and innovation" to avoid over-narrowing the exception.</li> <li>The reference to "non-commercial" as a qualifier should be substituted. The term “commercial” has always led to legal uncertainty for software and is a term which should not be applied in the context of open source</li> <li>OSI recommends further work on the Open Source exception to the requirements within the body of the Act to <em>exclude all activities prior to commercial deployment of the software</em> and to clearly ensure that <em>responsibility for CE marks does not rest with any actor who is not a direct commercial beneficiary of deployment</em>.</li> </ul> <p><strong>Brian #5:</strong> <a href="https://medium.com/pythoniq/so-single-or-double-quotes-in-python-47c2e7425f32"><strong>So, Single (‘) or Double (“) Quotes in Python?</strong></a></p> <ul> <li>Marcin Kozak</li> <li>PEP8 doesn’t recommend anything.</li> <li>REPL uses single quotes. &gt;&gt;&gt; x = "one" &gt;&gt;&gt; x 'one'</li> <li>Black sides with “double quotes”, due to the apostrophe in the string problem. <ul> <li>'Don\'t be so sad.' vs “Don’t be sad.”</li> </ul></li> <li>You get to pick, and don’t be bullied by black-fanatics.</li> <li>There’s always <a href="https://pypi.org/project/blue/">blue</a>, which is just like black, but <ul> <li>defaults to single-quotes</li> <li>line length defaults to 79, not black’s 88.</li> <li>preserves whitespace before hash marks for right hanging comments (so multiple lines can line up).</li> </ul></li> </ul> <p><strong>Pamela</strong> <strong>#6:</strong> <a href="https://pythonhosted.org/Frozen-Flask"><strong>Frozen-Flask</strong></a> </p> <ul> <li><a href="https://github.com/pamelafox/pamelafox-site/pull/10/files">Pamela’s PR for moving to Frozen Flask</a> </li> <li><a href="https://github.com/Frozen-Flask/Frozen-Flask/pull/128">Stepping down as a maintainer</a></li> </ul> <p><strong>Extras</strong> </p> <p>Brian:</p> <ul> <li>What does everyone think of <a href="https://github.com/pricing">GitHub pricing</a>?</li> </ul> <p>Michael:</p> <ul> <li>Much much better transcripts, for example, <a href="https://pythonbytes.fm/episodes/transcript/323/ai-search-wars-have-begun"><strong>this episode</strong></a>. <ul> <li>Means <a href="https://pythonbytes.fm/search">our search</a> works way better too</li> </ul></li> <li>The AI search wars have begun - <a href="https://www.youtube.com/watch?v=Nh5i5obZ8OY">Google Panics Over ChatGPT [The AI Wars Have Begun] video</a> <ul> <li><a href="https://9to5mac.com/2023/02/08/microsoft-bing-rockets-to-top-of-app-store/">Microsoft Bing rockets to the top of the App Store after announcing ChatGPT integration</a></li> <li><a href="https://www.news8000.com/lifestyle/technology/google-shares-lose-100-billion-after-companys-ai-chatbot-makes-an-error-during-demo/article_aab57c1e-28b8-59b9-8f68-a99ab001a6c6.html">Google shares lose $100 billion after company's AI chatbot makes an error during demo</a></li> </ul></li> <li><a href="https://talkpython.fm/pycharm-free">Free PyCharm</a> for all the Talk Python customers</li> <li>Thanks for the help with finding a good Flutter dev.</li> <li>Important Talk Python episode: <a href="https://talkpython.fm/episodes/show/403/fusion-ignition-breakthrough-and-python">Fusion Ignition Breakthrough and Python</a></li> </ul> <p>Pamela:</p> <ul> <li><a href="https://github.blog/changelog/2023-02-13-dependency-graph-supports-the-python-pep-621-standard/">Github pyproject.toml support</a>.</li> <li><a href="https://github.com/microsoft/python-package-template">Python Package Template</a></li> </ul> <p><strong>Jokes:</strong> </p> <ul> <li><a href="https://www.reddit.com/r/softwaregore/comments/zzuyhx/shouldnt_it_be_the_mctitle/"><strong>$McTitle</strong></a></li> <li><a href="https://www.boredpanda.com/funny-worst-input-fields/"><strong>Worst input fields</strong></a></li> </ul>
Categories: FLOSS Project Planets

Evolving Web: Hands-On With Drupal 10: Crafting Content With CKEditor 5

Planet Drupal - Tue, 2023-02-14 02:33

You don’t have to know a markup language such as HTML to create complex content on your digital platform. 

Users and editors without coding experience can easily craft and update web content using a rich text editor – also called WYSIWYG. It’s pronounced wizz-ee-wig, and stands for What You See Is What You Get. 

CKEditor 5 is the default WYSIWYG editor in Drupal 10, having been initially introduced in Drupal 9.3. Its powerful features make it far more than a mere update of CKEditor 4. In fact, CKEditor 5 was written completely from scratch to overhaul the content editing experience. 

Let’s take a look at what you can expect from CKEditor 5 in Drupal and how to make the most of its core and premium features. 

CKEditor 5 in Drupal Core: A Smoother User Experience  Better User Interface

CKEditor’s user interface has undergone a serious makeover. It’s been greatly simplified and modernized with UI improvements to icons, toolbar items mechanics, interface colors, and the theme. 

Three examples of UI display options. From left to right: Classic offers a fixed toolbar for distraction-free editing; Balloon comes with a floating toolbar so you can edit content in its real location; Inline displays the toolbar only when the editor is focused. Credit: CKEditor.

Balloon Panels

It used to be that adjusting embedded media and tables would bring up a dialog window that covered the content you wanted to format. These windows have been replaced with balloon panels that are much more intuitive, accessible, and mobile-friendly. 

Quick and Easy Tables

Creating and editing tables in CKEditor 4 was often a painstaking process. Content editors will be relieved to hear it’s a breeze in the newest version. You can insert, style, and adjust tables with just a few clicks. It’s also easy to copy and paste rows and columns. 

The tables toolbar offers an efficient editing experience. Credit: CKEditor.

Reworked Style Drop-Drown

The style drop-down has been improved so that you can now see how each style will look before applying it. 

Site admins can configure the styles available through CKEditor 5 in Drupal 10. Credit: CKEditor.

Improved Lists Feature

CKEditor 5 is more stable when it comes to creating complex lists. The improvements were based on a review of hundreds of scenarios relating to nested list items, including those with multiple blocks. 

CKEditor 5 Premium Features: A Catalyst for Collaboration

Adding the CKEditor 5 premium features module to Drupal 10 lets you use state-of-the-art solutions for collaborating and exporting content. It provides a Google Docs-like editing experience that gives you more control over your content and streamlines your editing processes. 

Track Changes 

When track changes mode is turned on, all your edits will be displayed as suggestions that can be accepted, discarded or commented on.

Revision History 

The sophisticated revision history feature allows you to see any changes made and who made them without having to leave the editor. You can also compare several revisions at once and restore previous versions.


You can now add comments to text and block elements such as images. Your team members can have discussions in threads and remove the comments when they’re done.

Check out the CKEditor 5 collaboration features demo. Credit: Drupal.

Real-Time Collaboration

Multiple authors can now work simultaneously on the same rich text content. You can see at a glance which users are actively editing at any time. 


You can now keep track of content changes by setting up notifications by email or writing a custom mechanism to get notifications via Slack. 

Export to Word and PDF

With the click of a button, you can create a PDF or Word Document from content you’ve crafted in CKEditor 5. There is also a pagination feature that lets you see how your document will be laid out for printing. 

CKEditor 5 lets you easily convert rich text content into a PDF. Credit: CKEditor.


MathType is now integrated with CKEditor 5. This feature allows you to display math equations and chemical formulas on your web pages. You can create keyboard shortcuts and save frequently-used equations and symbols. This could be a particularly useful tool for educational institutions.

The MathType integration lets you create various formulas in CKEditor 5. Credit: CKEditor

  Upcoming Features: What to Expect Next 

Here are some exciting features that are soon to be integrated into Drupal 10 or in your Drupal version of CKEditor 5. 


This allows you to edit content without having to click any toolbar buttons. Once it’s integrated into Drupal 10, you’ll be able to quickly create lists or format text simply by typing shortcuts. 

becomes a blockquote." data-entity-type="file" data-entity-uuid="65ddae15-8619-4c77-8c77-7015bf994793" src="https://evolvingweb.com/sites/default/files/inline-images/ckeditor5-autoformat-in-core.gif" width="777" height="353" loading="lazy" />

Try the autoformatting demo. Credit: Drupal.


You’ll soon be able to automatically create symbols with shortcut text, such as a copyright sign by typing (C). The transformations features can also be a great tool for introducing auto-correct rules.


Developers are currently limited to JavaScript if they want to write a plug-in for CKEditor. But CKEditor will soon deliver official TypeScript for the entire API.

Get Expert-Led Experience With Drupal 10

Want more know-how? Master the fundamentals with our Drupal for Content Editors Training. You'll come away with actionable knowledge to implement improvements to your content processes, accessibility, consistency, and value.


//--> //-->

+ more awesome articles by Evolving Web
Categories: FLOSS Project Planets