Name: Towards AI Legal Name: Towards AI, Inc. Description: Towards AI is the world's leading artificial intelligence (AI) and technology publication. Read by thought-leaders and decision-makers around the world. Phone Number: +1-650-246-9381 Email: pub@towardsai.net
228 Park Avenue South New York, NY 10003 United States
Website: Publisher: https://towardsai.net/#publisher Diversity Policy: https://towardsai.net/about Ethics Policy: https://towardsai.net/about Masthead: https://towardsai.net/about
Name: Towards AI Legal Name: Towards AI, Inc. Description: Towards AI is the world's leading artificial intelligence (AI) and technology publication. Founders: Roberto Iriondo, , Job Title: Co-founder and Advisor Works for: Towards AI, Inc. Follow Roberto: X, LinkedIn, GitHub, Google Scholar, Towards AI Profile, Medium, ML@CMU, FreeCodeCamp, Crunchbase, Bloomberg, Roberto Iriondo, Generative AI Lab, Generative AI Lab Denis Piffaretti, Job Title: Co-founder Works for: Towards AI, Inc. Louie Peters, Job Title: Co-founder Works for: Towards AI, Inc. Louis-François Bouchard, Job Title: Co-founder Works for: Towards AI, Inc. Cover:
Towards AI Cover
Logo:
Towards AI Logo
Areas Served: Worldwide Alternate Name: Towards AI, Inc. Alternate Name: Towards AI Co. Alternate Name: towards ai Alternate Name: towardsai Alternate Name: towards.ai Alternate Name: tai Alternate Name: toward ai Alternate Name: toward.ai Alternate Name: Towards AI, Inc. Alternate Name: towardsai.net Alternate Name: pub.towardsai.net
5 stars – based on 497 reviews

Frequently Used, Contextual References

TODO: Remember to copy unique IDs whenever it needs used. i.e., URL: 304b2e42315e

Resources

Take our 85+ lesson From Beginner to Advanced LLM Developer Certification: From choosing a project to deploying a working product this is the most comprehensive and practical LLM course out there!

Publication

Data Careers — Explained
Latest

Data Careers — Explained

Last Updated on June 21, 2022 by Editorial Team

Author(s): Nitin Chauhan

Originally published on Towards AI the World’s Leading AI and Technology News and Media Company. If you are building an AI-related product or service, we invite you to consider becoming an AI sponsor. At Towards AI, we help scale AI and technology startups. Let us help you unleash your technology to the masses.

Data Careers — Comparison Explained

Courtesy: Image via Freepik

I recently applied for jobs in the Data Science space, and while the titles and descriptions were different, the skillsets and responsibilities were the same. Sometimes it’s the other way around. I decided to pin down similarities, differences, and transitions between roles without creating too much confusion.

Not just newcomers but those who’ve worked in the field for a while tend to get confused with the data-related career landscape.

In terms of newcomers, I’ve noticed from the requests I get from people who’d like to join the data field in some capacity that there’s a general lack of understanding of what one needs to know to figure out how they fit in. We’re going to look at five distinct careers in data, and hopefully, we’ll provide some advice on how to get into it.

To avoid adding extra layers of complication, we’ll focus on industry roles, not ones in research. If you’re at the point in your career where you think this role is an option, you probably don’t need the info in this article. Therefore, we’ll leave out executive-level jobs like Chief Data Officer.

Common Data Science Use-Cases

Data is the new currency of today’s business world and, if well tamed, can quickly become a competitive advantage. More companies are hiring data professionals to boost revenue, forecast sales, and manage costs.

The Internet of Things (IoT), mobile apps, and AI have made big data solutions so simple that small and medium businesses can use them. There are several ways companies can use big data analytics to improve efficiency and make better decisions.

  1. Segmentation: Customer segmentation or clustering can be done with data science by splitting your customers into groups or clusters. When it comes to sales & marketing, it can be significant since it allows you to create focused, individualized marketing campaigns that can help boost sales and conversions. Data professionals use machine learning tools like K-means to cluster data points together.
  2. Forecasting: Companies are leveraging data science to develop predictive models to forecast sales in the future. They try to predict sales based on historical data. Additionally, data science forecast future daily deals based on promotions and seasonal influences.
  3. Recommendations: If it is vital for business, you might develop a recommendation system like Netflix, Spotify, or even Amazon. You can increase sales and engage your customers by implementing a recommendation system, which predicts the probability of a product being purchased by a customer and suggests other products as a cross-selling strategy.

I put together 4 data career archetypes, complete with descriptions and info on what makes them unique.

Courtesy: Image via Freepik

A. Data Analyst

The data analyst solely envisions their focus on the insights and presentation of data.

Data analysts deal only with descriptive statistical analysis and data presentation. It includes reporting, dashboards, KPIs, business performance metrics, and anything referred to as “business intelligence.” Similar to the role often requires interaction with (or querying of) databases, both relational and non-relational, as well as other data frameworks.

Highlights: Large data sets are gathered, processed, and analyzed in a Data Analyst’s job. After they deal with the data, model it, and report it, they bring in technical expertise to ensure it’s accurate; once that’s done, the process, design, and present their findings so people, businesses, or organizations can make better decisions.

Transition: A Data Analyst can become a Data Scientist or a Data Engineer after a few years.

Responsibilities:

  1. Query databases and warehouses to get data.
  2. Clean and filter data.
  3. The process of extracting data from different sources and then organizing it to find new information.
  4. Visualizing the insights via dashboards.
Courtesy: Image via Freepik

B. Data Engineer

The data engineer are the drivers of data pipelines leading from engineering to managing the infrastructure which supports the data management.

In what way is the data infrastructure defined? As data is on its way to being analyzed or modeled, as well as the tasks that come after this analysis or modeling, this collection of software and storage solutions allows retrieval of data from a data store and processing of data in a specific way (or series of courses) and moving data between tasks (as well as the tasks themselves). That’s the path data takes from its source to its ultimate destination. The data engineer probably knows about DataOps and how it fits into the data lifecycle.

Highlights: A Data Engineer job description falls into the category of a software engineer who builds and maintains data infrastructure and systems. The Data Engineers set up the data warehouses, pipelines, and databases used by the Data Analysts and Data Scientists.

Transition: There’s no doubt that the Data Engineer role is the most well-defined one, and you’ll probably notice the most consistency with it. Let’s take a look at what a Data Engineer does. However, they can move vertically to become a senior data engineer or a data architect.

Responsibilities:

  1. Construct and maintain ETL (Extract, Transform, and Load) pipelines.
  2. Cloud computing.
  3. Big data and distributed computing frameworks.
  4. Create and integrate APIs — look at the top 6 API testing tools here.
  5. Machine learning deployment and integration.
  6. Build, test, and maintain large-scale processing systems and databases to meet business needs.

Any Comparison?

Senior Data Engineers are often compared to Data Architects. Varied upon business roles, they tend to overlap the majority of skillset and responsibilities; however, data engineers who worked closely on assisting model deployment or monitoring tend to have the edge over their peers.

Salaries are similar for senior Data Data Engineer and Data Architect (regions like Europe & Asia considered for this blog).

Courtesy: Image via Freepik

C. Data Scientist

The data scientist, sometimes called the jack of all, is vital for a business to ask the right questions, drive insights from data and generate predictions to take proactive actions.

An architect and engineer deal with infrastructure, while an analyst deals with pulling descriptive facts from data. It’s the job of the machine learning engineer to make the resulting models widely available and to advance and use the tools available to leverage data for predictive and correlative capabilities. The data scientist is primarily concerned with the data, the insights that can be extracted from it, and the stories that can be told, regardless of the technologies or tools needed to carry out that task.

Highlights: A Data Scientist is a professional who incorporates different statistical techniques, data analysis methods, and machine learning to understand and analyze data to draw business conclusions. A data scientist can be focused on research, business, or development.

Categories of the Role:

  1. It’s the mission of research-focused data scientists, also called Machine Learning Researchers or Research Scientists, to transform their field, which usually translates into developing or implementing new machine learning methods. In addition to complex problem spaces like machine vision and natural language processing, they also work on big data problems like social media. They’ll usually use Python, deep learning tools, and frameworks like TensorFlow.
  2. It’s the goal of business-focused data scientists to help companies make informed decisions based on data. That means 1) understanding a business problem and 2) knowing how to use data to solve it. They usually use scripting languages, like Python, combined with machine learning, statistics libraries, and SQL to get through the data and solve problems.
  3. A development-focused data scientist scales data science processes or builds apps based on them. They enable us to leverage data at scale, whether using machine learning models or building the infrastructure to handle big data. They’re usually called Machine Learning Engineers, Data Engineers, or Machine Learning Developers.

Responsibilities:

Data scientists clean, process, and manipulate data using various tools. Other key responsibilities include:

  1. Perform ad-hoc data mining.
  2. Collect data from a bunch of sources, both structured and unstructured.
  3. Design and evaluate advanced statistical models to work on big data; Interpret data with statistical methods.
  4. Using historic & recent data to build predictive models and machine learning algorithms.
  5. Visualizing reports and dashboards for stakeholders.

Any Comparison?

Data scientists are often compared with Senior Data Analysts or Data Engineers. This is due to the fact as various skills overlap across these three roles. The key distinguisher is Programming, Data Visualization & Communication skills. Anyone proficient in these skills can horizontally move across a career.

Salaries are a similar range for mid-senior Data Scientist/Data Engineer and Senior Data Analyst (regions like Europe & Asia considered for this blog).

Courtesy: Image via Freepik

D. Data Architect

The data architect is the mastermind behind the data product. They lead the management and governance of data.

A data architect manages data and builds the infrastructure for storing and supporting it. As far as data analysis is concerned, such a role doesn’t need to do much (beyond data store analysis for performance tuning), and Python and R aren’t likely necessary. But you’ll need to know relational and non-relational databases like an expert.

Highlight: An architect must choose the right data stores for different data types and transform and load them. Databases, data warehouses, and data lakes are all storage landscapes the data architect will be familiar with. Probably the one who will have the most knowledge and relationship with hardware, primarily related to storage, as well as the best understanding of cloud computing architectures of anyone in this article.

Transition: Unlike the data engineer role, the data architect focuses on data, whereas a data engineer builds and maintains data pipelines (see below). Although the two roles may overlap, ETL is anything you do that transforms or moves data, especially from one store to another; starting a pipeline of data.

Responsibilities:

Data architects design and plan the structure and management of data pipelines keeping data governance in mind. Other key responsibilities include:

  1. Design & plan data pipelines as per business requirements (ETL or ELT).
  2. Collect data from a bunch of sources, both structured and unstructured.
  3. Design and evaluate ways in which the data can be easily monitored to assist in DevOps or MLOps engineer.
  4. Support a team of data scientists and data engineers in building simulator engines to perform back-testing of their data pipelines and machine learning models.
  5. In absence of security engineers, device secure techniques or suggest platforms to scale-up data applications.

Any Comparison?

Data Architects are sometimes compared with Chief Information Officers (CIO)or Chief Data Officers (CDO). The reason is that they oversee the data projects and have a solid foundation in data engineering and data science.

Salaries can significantly vary for Data Architect & CIO/CDO based on organization size and managerial responsibility & hierarchy (regions like Europe & Asia considered for this blog).

Key Takeaways

Well, even though there are defined rules & responsibilities to the above roles, that doesn’t mean I can shy away from learning and practicing the skill of their desired position. I’ll encourage all my readers to seek opportunities and, based on interest, think about horizontal career moves than the conventional vertical corporate ladder.

Disclaimer: We won’t be diving into the skillset list as sometimes it can be overwhelming and varies based on business use-cases.

If you like this article, follow me for more relevant content. Also, feel free to connect with me on LinkedIn, and let’s be part of an engaging network.


Data Careers — Explained was originally published in Towards AI on Medium, where people are continuing the conversation by highlighting and responding to this story.

Join thousands of data leaders on the AI newsletter. It’s free, we don’t spam, and we never share your email address. Keep up to date with the latest work in AI. From research to projects and ideas. If you are building an AI startup, an AI-related product, or a service, we invite you to consider becoming a sponsor.

Published via Towards AI

Feedback ↓

Sign Up for the Course
`; } else { console.error('Element with id="subscribe" not found within the page with class "home".'); } } }); // Remove duplicate text from articles /* Backup: 09/11/24 function removeDuplicateText() { const elements = document.querySelectorAll('h1, h2, h3, h4, h5, strong'); // Select the desired elements const seenTexts = new Set(); // A set to keep track of seen texts const tagCounters = {}; // Object to track instances of each tag elements.forEach(el => { const tagName = el.tagName.toLowerCase(); // Get the tag name (e.g., 'h1', 'h2', etc.) // Initialize a counter for each tag if not already done if (!tagCounters[tagName]) { tagCounters[tagName] = 0; } // Only process the first 10 elements of each tag type if (tagCounters[tagName] >= 2) { return; // Skip if the number of elements exceeds 10 } const text = el.textContent.trim(); // Get the text content const words = text.split(/\s+/); // Split the text into words if (words.length >= 4) { // Ensure at least 4 words const significantPart = words.slice(0, 5).join(' '); // Get first 5 words for matching // Check if the text (not the tag) has been seen before if (seenTexts.has(significantPart)) { // console.log('Duplicate found, removing:', el); // Log duplicate el.remove(); // Remove duplicate element } else { seenTexts.add(significantPart); // Add the text to the set } } tagCounters[tagName]++; // Increment the counter for this tag }); } removeDuplicateText(); */ // Remove duplicate text from articles function removeDuplicateText() { const elements = document.querySelectorAll('h1, h2, h3, h4, h5, strong'); // Select the desired elements const seenTexts = new Set(); // A set to keep track of seen texts const tagCounters = {}; // Object to track instances of each tag // List of classes to be excluded const excludedClasses = ['medium-author', 'post-widget-title']; elements.forEach(el => { // Skip elements with any of the excluded classes if (excludedClasses.some(cls => el.classList.contains(cls))) { return; // Skip this element if it has any of the excluded classes } const tagName = el.tagName.toLowerCase(); // Get the tag name (e.g., 'h1', 'h2', etc.) // Initialize a counter for each tag if not already done if (!tagCounters[tagName]) { tagCounters[tagName] = 0; } // Only process the first 10 elements of each tag type if (tagCounters[tagName] >= 10) { return; // Skip if the number of elements exceeds 10 } const text = el.textContent.trim(); // Get the text content const words = text.split(/\s+/); // Split the text into words if (words.length >= 4) { // Ensure at least 4 words const significantPart = words.slice(0, 5).join(' '); // Get first 5 words for matching // Check if the text (not the tag) has been seen before if (seenTexts.has(significantPart)) { // console.log('Duplicate found, removing:', el); // Log duplicate el.remove(); // Remove duplicate element } else { seenTexts.add(significantPart); // Add the text to the set } } tagCounters[tagName]++; // Increment the counter for this tag }); } removeDuplicateText(); //Remove unnecessary text in blog excerpts document.querySelectorAll('.blog p').forEach(function(paragraph) { // Replace the unwanted text pattern for each paragraph paragraph.innerHTML = paragraph.innerHTML .replace(/Author\(s\): [\w\s]+ Originally published on Towards AI\.?/g, '') // Removes 'Author(s): XYZ Originally published on Towards AI' .replace(/This member-only story is on us\. Upgrade to access all of Medium\./g, ''); // Removes 'This member-only story...' }); //Load ionic icons and cache them if ('localStorage' in window && window['localStorage'] !== null) { const cssLink = 'https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css'; const storedCss = localStorage.getItem('ionicons'); if (storedCss) { loadCSS(storedCss); } else { fetch(cssLink).then(response => response.text()).then(css => { localStorage.setItem('ionicons', css); loadCSS(css); }); } } function loadCSS(css) { const style = document.createElement('style'); style.innerHTML = css; document.head.appendChild(style); } //Remove elements from imported content automatically function removeStrongFromHeadings() { const elements = document.querySelectorAll('h1, h2, h3, h4, h5, h6, span'); elements.forEach(el => { const strongTags = el.querySelectorAll('strong'); strongTags.forEach(strongTag => { while (strongTag.firstChild) { strongTag.parentNode.insertBefore(strongTag.firstChild, strongTag); } strongTag.remove(); }); }); } removeStrongFromHeadings(); "use strict"; window.onload = () => { /* //This is an object for each category of subjects and in that there are kewords and link to the keywods let keywordsAndLinks = { //you can add more categories and define their keywords and add a link ds: { keywords: [ //you can add more keywords here they are detected and replaced with achor tag automatically 'data science', 'Data science', 'Data Science', 'data Science', 'DATA SCIENCE', ], //we will replace the linktext with the keyword later on in the code //you can easily change links for each category here //(include class="ml-link" and linktext) link: 'linktext', }, ml: { keywords: [ //Add more keywords 'machine learning', 'Machine learning', 'Machine Learning', 'machine Learning', 'MACHINE LEARNING', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, ai: { keywords: [ 'artificial intelligence', 'Artificial intelligence', 'Artificial Intelligence', 'artificial Intelligence', 'ARTIFICIAL INTELLIGENCE', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, nl: { keywords: [ 'NLP', 'nlp', 'natural language processing', 'Natural Language Processing', 'NATURAL LANGUAGE PROCESSING', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, des: { keywords: [ 'data engineering services', 'Data Engineering Services', 'DATA ENGINEERING SERVICES', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, td: { keywords: [ 'training data', 'Training Data', 'training Data', 'TRAINING DATA', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, ias: { keywords: [ 'image annotation services', 'Image annotation services', 'image Annotation services', 'image annotation Services', 'Image Annotation Services', 'IMAGE ANNOTATION SERVICES', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, l: { keywords: [ 'labeling', 'labelling', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, pbp: { keywords: [ 'previous blog posts', 'previous blog post', 'latest', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, mlc: { keywords: [ 'machine learning course', 'machine learning class', ], //Change your article link (include class="ml-link" and linktext) link: 'linktext', }, }; //Articles to skip let articleIdsToSkip = ['post-2651', 'post-3414', 'post-3540']; //keyword with its related achortag is recieved here along with article id function searchAndReplace(keyword, anchorTag, articleId) { //selects the h3 h4 and p tags that are inside of the article let content = document.querySelector(`#${articleId} .entry-content`); //replaces the "linktext" in achor tag with the keyword that will be searched and replaced let newLink = anchorTag.replace('linktext', keyword); //regular expression to search keyword var re = new RegExp('(' + keyword + ')', 'g'); //this replaces the keywords in h3 h4 and p tags content with achor tag content.innerHTML = content.innerHTML.replace(re, newLink); } function articleFilter(keyword, anchorTag) { //gets all the articles var articles = document.querySelectorAll('article'); //if its zero or less then there are no articles if (articles.length > 0) { for (let x = 0; x < articles.length; x++) { //articles to skip is an array in which there are ids of articles which should not get effected //if the current article's id is also in that array then do not call search and replace with its data if (!articleIdsToSkip.includes(articles[x].id)) { //search and replace is called on articles which should get effected searchAndReplace(keyword, anchorTag, articles[x].id, key); } else { console.log( `Cannot replace the keywords in article with id ${articles[x].id}` ); } } } else { console.log('No articles found.'); } } let key; //not part of script, added for (key in keywordsAndLinks) { //key is the object in keywords and links object i.e ds, ml, ai for (let i = 0; i < keywordsAndLinks[key].keywords.length; i++) { //keywordsAndLinks[key].keywords is the array of keywords for key (ds, ml, ai) //keywordsAndLinks[key].keywords[i] is the keyword and keywordsAndLinks[key].link is the link //keyword and link is sent to searchreplace where it is then replaced using regular expression and replace function articleFilter( keywordsAndLinks[key].keywords[i], keywordsAndLinks[key].link ); } } function cleanLinks() { // (making smal functions is for DRY) this function gets the links and only keeps the first 2 and from the rest removes the anchor tag and replaces it with its text function removeLinks(links) { if (links.length > 1) { for (let i = 2; i < links.length; i++) { links[i].outerHTML = links[i].textContent; } } } //arrays which will contain all the achor tags found with the class (ds-link, ml-link, ailink) in each article inserted using search and replace let dslinks; let mllinks; let ailinks; let nllinks; let deslinks; let tdlinks; let iaslinks; let llinks; let pbplinks; let mlclinks; const content = document.querySelectorAll('article'); //all articles content.forEach((c) => { //to skip the articles with specific ids if (!articleIdsToSkip.includes(c.id)) { //getting all the anchor tags in each article one by one dslinks = document.querySelectorAll(`#${c.id} .entry-content a.ds-link`); mllinks = document.querySelectorAll(`#${c.id} .entry-content a.ml-link`); ailinks = document.querySelectorAll(`#${c.id} .entry-content a.ai-link`); nllinks = document.querySelectorAll(`#${c.id} .entry-content a.ntrl-link`); deslinks = document.querySelectorAll(`#${c.id} .entry-content a.des-link`); tdlinks = document.querySelectorAll(`#${c.id} .entry-content a.td-link`); iaslinks = document.querySelectorAll(`#${c.id} .entry-content a.ias-link`); mlclinks = document.querySelectorAll(`#${c.id} .entry-content a.mlc-link`); llinks = document.querySelectorAll(`#${c.id} .entry-content a.l-link`); pbplinks = document.querySelectorAll(`#${c.id} .entry-content a.pbp-link`); //sending the anchor tags list of each article one by one to remove extra anchor tags removeLinks(dslinks); removeLinks(mllinks); removeLinks(ailinks); removeLinks(nllinks); removeLinks(deslinks); removeLinks(tdlinks); removeLinks(iaslinks); removeLinks(mlclinks); removeLinks(llinks); removeLinks(pbplinks); } }); } //To remove extra achor tags of each category (ds, ml, ai) and only have 2 of each category per article cleanLinks(); */ //Recommended Articles var ctaLinks = [ /* ' ' + '

Subscribe to our AI newsletter!

' + */ '

Take our 85+ lesson From Beginner to Advanced LLM Developer Certification: From choosing a project to deploying a working product this is the most comprehensive and practical LLM course out there!

'+ '

Towards AI has published Building LLMs for Production—our 470+ page guide to mastering LLMs with practical projects and expert insights!

' + '
' + '' + '' + '

Note: Content contains the views of the contributing authors and not Towards AI.
Disclosure: This website may contain sponsored content and affiliate links.

' + 'Discover Your Dream AI Career at Towards AI Jobs' + '

Towards AI has built a jobs board tailored specifically to Machine Learning and Data Science Jobs and Skills. Our software searches for live AI jobs each hour, labels and categorises them and makes them easily searchable. Explore over 10,000 live jobs today with Towards AI Jobs!

' + '
' + '

🔥 Recommended Articles 🔥

' + 'Why Become an LLM Developer? Launching Towards AI’s New One-Stop Conversion Course'+ 'Testing Launchpad.sh: A Container-based GPU Cloud for Inference and Fine-tuning'+ 'The Top 13 AI-Powered CRM Platforms
' + 'Top 11 AI Call Center Software for 2024
' + 'Learn Prompting 101—Prompt Engineering Course
' + 'Explore Leading Cloud Providers for GPU-Powered LLM Training
' + 'Best AI Communities for Artificial Intelligence Enthusiasts
' + 'Best Workstations for Deep Learning
' + 'Best Laptops for Deep Learning
' + 'Best Machine Learning Books
' + 'Machine Learning Algorithms
' + 'Neural Networks Tutorial
' + 'Best Public Datasets for Machine Learning
' + 'Neural Network Types
' + 'NLP Tutorial
' + 'Best Data Science Books
' + 'Monte Carlo Simulation Tutorial
' + 'Recommender System Tutorial
' + 'Linear Algebra for Deep Learning Tutorial
' + 'Google Colab Introduction
' + 'Decision Trees in Machine Learning
' + 'Principal Component Analysis (PCA) Tutorial
' + 'Linear Regression from Zero to Hero
'+ '

', /* + '

Join thousands of data leaders on the AI newsletter. It’s free, we don’t spam, and we never share your email address. Keep up to date with the latest work in AI. From research to projects and ideas. If you are building an AI startup, an AI-related product, or a service, we invite you to consider becoming a sponsor.

',*/ ]; var replaceText = { '': '', '': '', '
': '
' + ctaLinks + '
', }; Object.keys(replaceText).forEach((txtorig) => { //txtorig is the key in replacetext object const txtnew = replaceText[txtorig]; //txtnew is the value of the key in replacetext object let entryFooter = document.querySelector('article .entry-footer'); if (document.querySelectorAll('.single-post').length > 0) { //console.log('Article found.'); const text = entryFooter.innerHTML; entryFooter.innerHTML = text.replace(txtorig, txtnew); } else { // console.log('Article not found.'); //removing comment 09/04/24 } }); var css = document.createElement('style'); css.type = 'text/css'; css.innerHTML = '.post-tags { display:none !important } .article-cta a { font-size: 18px; }'; document.body.appendChild(css); //Extra //This function adds some accessibility needs to the site. function addAlly() { // In this function JQuery is replaced with vanilla javascript functions const imgCont = document.querySelector('.uw-imgcont'); imgCont.setAttribute('aria-label', 'AI news, latest developments'); imgCont.title = 'AI news, latest developments'; imgCont.rel = 'noopener'; document.querySelector('.page-mobile-menu-logo a').title = 'Towards AI Home'; document.querySelector('a.social-link').rel = 'noopener'; document.querySelector('a.uw-text').rel = 'noopener'; document.querySelector('a.uw-w-branding').rel = 'noopener'; document.querySelector('.blog h2.heading').innerHTML = 'Publication'; const popupSearch = document.querySelector$('a.btn-open-popup-search'); popupSearch.setAttribute('role', 'button'); popupSearch.title = 'Search'; const searchClose = document.querySelector('a.popup-search-close'); searchClose.setAttribute('role', 'button'); searchClose.title = 'Close search page'; // document // .querySelector('a.btn-open-popup-search') // .setAttribute( // 'href', // 'https://medium.com/towards-artificial-intelligence/search' // ); } // Add external attributes to 302 sticky and editorial links function extLink() { // Sticky 302 links, this fuction opens the link we send to Medium on a new tab and adds a "noopener" rel to them var stickyLinks = document.querySelectorAll('.grid-item.sticky a'); for (var i = 0; i < stickyLinks.length; i++) { /* stickyLinks[i].setAttribute('target', '_blank'); stickyLinks[i].setAttribute('rel', 'noopener'); */ } // Editorial 302 links, same here var editLinks = document.querySelectorAll( '.grid-item.category-editorial a' ); for (var i = 0; i < editLinks.length; i++) { editLinks[i].setAttribute('target', '_blank'); editLinks[i].setAttribute('rel', 'noopener'); } } // Add current year to copyright notices document.getElementById( 'js-current-year' ).textContent = new Date().getFullYear(); // Call functions after page load extLink(); //addAlly(); setTimeout(function() { //addAlly(); //ideally we should only need to run it once ↑ }, 5000); }; function closeCookieDialog (){ document.getElementById("cookie-consent").style.display = "none"; return false; } setTimeout ( function () { closeCookieDialog(); }, 15000); console.log(`%c 🚀🚀🚀 ███ █████ ███████ █████████ ███████████ █████████████ ███████████████ ███████ ███████ ███████ ┌───────────────────────────────────────────────────────────────────┐ │ │ │ Towards AI is looking for contributors! │ │ Join us in creating awesome AI content. │ │ Let's build the future of AI together → │ │ https://towardsai.net/contribute │ │ │ └───────────────────────────────────────────────────────────────────┘ `, `background: ; color: #00adff; font-size: large`); //Remove latest category across site document.querySelectorAll('a[rel="category tag"]').forEach(function(el) { if (el.textContent.trim() === 'Latest') { // Remove the two consecutive spaces (  ) if (el.nextSibling && el.nextSibling.nodeValue.includes('\u00A0\u00A0')) { el.nextSibling.nodeValue = ''; // Remove the spaces } el.style.display = 'none'; // Hide the element } }); // Add cross-domain measurement, anonymize IPs 'use strict'; //var ga = gtag; ga('config', 'G-9D3HKKFV1Q', 'auto', { /*'allowLinker': true,*/ 'anonymize_ip': true/*, 'linker': { 'domains': [ 'medium.com/towards-artificial-intelligence', 'datasets.towardsai.net', 'rss.towardsai.net', 'feed.towardsai.net', 'contribute.towardsai.net', 'members.towardsai.net', 'pub.towardsai.net', 'news.towardsai.net' ] } */ }); ga('send', 'pageview'); -->