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

6 productivity tips for beginner data scientists, analysts and data engineers
Latest   Machine Learning

6 productivity tips for beginner data scientists, analysts and data engineers

Last Updated on July 20, 2023 by Editorial Team

Author(s): Gift Ojeabulu

Originally published on Towards AI.

Careers

Tips that will fast-track productivity in your data science, analysis and engineering journey as a beginner.

Photo by Kelly Sikkema on Unsplash

What inspired me to write about this topic is the fact that a lot of beginners reach out to me for questions like:

  • what are the things I need to become a good data scientist?
  • How can I improve myself as an absolute beginner?
  • How can I stand out at interviews?

I could remember When I wanted to learn data science and machine learning.

I was also curious about specific things I need to do to fast-track myself while I just started since having passed that stage and have more experience.

I will be sharing some tips that will help beginners in their journey from my experience In data science.

In this article, You will understand ways to improve yourself as an aspiring or beginner data scientist.

I will explain six important productivity tips to improve yourself as a beginner, junior, undergraduate, or aspiring data scientist, data engineer or data analyst.

These tips are:

  • Solve problems, don’t stick to tools or programming languages.
  • Collaborate with others.
  • Fundamental First.
  • Stop procrastination & avoid Imposter Syndrome.
  • Build Side Projects.
  • Start Writing.
  1. Solve problems, don’t stick to tools or programming languages: A beginner should be focused on solving problems.

What is the process of problem-solving In data science?

  • Knowing how to clean your data.
  • Ensuring data quality.
  • Telling stories with data.
  • Making reports and recommendations.
  • Analyzing and making business impacts.

In this way, you give attention to solving business problems.

Every programming languages have their shortcoming, No programming language is perfect.

What do I mean?

  • Based on research and use cases, the R programming language is best for working with statistical concepts because R has more built-in libraries for statistics than Python.
  • Python seems to be better when trying to work with machine learning and deep learning.
  • Javascript is best for model deployment on the browser.

We should know that if I am trying to work on a project that involves using advanced statistics, R is the best programming language in this case while if I am trying to work with machine learning and deep learning then Python is the best tool for me to use.

Therefore, if Python is not giving a suitable solution, I should optimize for a better way to solve problems.

2. Collaborate with others: A popular African proverb says that if you want to go fast, go alone, but go together if you want to go far. In data science, collaboration plays a significant role in your career progression.

Doing data science, and data engineering alone may work for Zindi or Kaggle competitions. but this is not the case in the real world because data science entails a lot of data visualization, Data Cleaning, model deployment, and so on.

Great things in business are never done by one person; they’re done by a team of people–Steve Jobs

It is hard to be an expert in every aspect of data science.

Collaborating with other fellow data scientists will make you go far.

Real-world projects require people with different expertise, from data visualization experts to Machine Learning Engineers, computer vision Engineers, Product Data scientists, etc.

My Advice to beginner data scientists is to look for fellow enthusiasts in the field, try to collaborate and work on Data Science projects, go for Hackathons and work as a team.

Collaboration fosters teamwork and communication skills, which are very crucial soft skills for data scientists, engineers or data analysts.

3. Fundamental First: Learn to master the basics.

Mastering the basics will help you learn advanced concepts in data science quickly, as they built all advanced concepts on the basics.

As you go into data science, learn to expect you are going to be a master at it, however long it will take.

It might be so tempting to skip the basics because of the pressure of things developing so fast.

Winners don’t just learn the fundamentals, they master them. You have to monitor your fundamentals constantly because the only thing that changes will be your attention to them — Michael Jordan

We live in a world where beginners pursue fancy libraries, concepts and frameworks.

Beginner Data scientists want to skip understanding the basics of statistics, and linear regression to complex things like computer vision, and neural networks, they want to skip machine learning to deep learning.

This is like a baby trying to run quickly without crawling or even walking at all. In the long run, this will affect your journey.

The concept of conditional statements, data cleaning, and feature engineering is used when building machine learning end-to-end applications.

Understand the basic concepts before going further or building bigger things in data science.

4. Stop Procrastination & Avoid Imposter Syndrome: Procrastination is one of the biggest hurdles beginner data scientists face. Staying consistent as a beginner is hard, but you will do yourself well when you are consistent. The more consistently you are learning & improving, the easier for you to get your dream job.

Consistency is key. When you are inconsistent, you prolong the time you need to get the job, as you will also stay outdated, since data science is a developing field.

The best way to curb procrastination is to start. Just start it. It is so easy to procrastinate as a beginner because you will always find 1000(One thousand) reasons to start later but stop procrastinating.

Steps to avoid procrastination as a beginner data scientist

  • Plan your Task — Have a Clear Outline of What you want to do, and tackle one thing at a time.
  • Remove Triggers- Remove anything you know will distract you. For Example: If you will get distracted by social media. Delete Twitter or maybe the Facebook app, and try to log in through the browser. In this way, you reduce what causes you to procrastinate.
  • Promise to deliver within a time range publicly — One technique I use is to put it out on social media. For Example, I do something like, I will publish my article latest by next week Wednesday publicly on social media, which motivates me to publish an article before this deadline. Have used this several times. It works. It is like giving yourself a strict deadline to deliver. You can also join the 100 Days of code on Twitter to stay consistent.

As regard imposter syndrome, everybody gets imposter syndrome at some point. Developing is challenging, and it’s easy to feel like a fraud when you get stuck on a bug or can’t solve a “simple” issue.

The beauty of the impostor syndrome is you vacillate between extreme egomania and a complete feeling of: ‘I’m a fraud! Oh God, they’re on to me! I’m a fraud!’ . . . just try to ride the egomania when it comes and enjoy it, and then slide through the idea of fraud — Tina Frey

The best data scientists and machine learning engineers have imposter syndrome, have read posts on LinkedIn where professionals at MAANG (Meta, Apple, Amazon, Netflix, and Google) talk about how they faced imposter syndrome, so you have imposter syndrome as a beginner is valid but do not let it overrule you, because learning is a continuous process, it is an unending line.

The more you learn, the more you discover that there is a lot you don’t know and you still need to learn.

5. Build Side Projects: The earlier you build side projects, the better for you. You don’t have to know everything before you build side projects.

The more you go deep into data science, the more you discover that getting so many certificates of completion without building an actual project is not worth celebrating.

Never ask anyone for their opinion, forecast, or recommendation. Just ask them what they have — or don’t have — in their portfolio — Nassim Nicholas

This is the hard truth. The world we are in today is about what you can do.

We know musicians for their works the same as an artist. A hundred courses without a project are like just watching movies.

No one gets rewarded for that. Build projects. It is hard to get even an intern job having no project to show recruiters.

Don’t just stack certificates of completion with no project to show for it. Start small, build mini-projects, and then keep scaling to bigger projects with time.

6. Start Writing: I know as a beginner you might start thinking, but I just started learning data science. I do not know data science in-depth to write.
You don’t have to be an expert to write about a subject topic. You need to be able to explain it to an amateur.

Writing enforces you to think deeply and dig for clarity from the rabbit hole. When you write, you compel your brain to think intuitively through research and strive to know more.

There is always something to contribute to a topic, everyone has their perspective on a topic. This is one crucial reason you should start writing even as a beginner.

The trick to good writing is to write for yourself.

Write about topics you want to learn and explore.

Having an extensive project can be so hard for someone just learning data science as understanding how to build an end-to-end machine learning project can take time and be so hard for beginners.

The best thing to do is to write about any stage you are learning or have finished learning.

In this way, you dig deeper to understand the concept, rather than just surfing.

Share your knowledge through articles, threads and posts, as it will make you understand better.

In this way, you are also building your communication skills, which is a must-have skill for any data scientist, data analyst or data engineer.

When applying for an intern or entry-level job, these are things that make the recruiter see you as someone worth hiring.

There are a lot of overwhelming concepts in the data science and engineering field.

Adopting the Feynman learning technique is an effective way to learn and understand data science and machine learning.

Since I read about this technique, I started writing about data science and it is making me dig deeper and also clarify my thought through writing.

The Feynman-technique of learning :

The Feynman Technique is a learning method named after Richard Feynman.

In this technique, a person explains the concept they’re simply learning to themselves to find gaps in their knowledge.

The technique consists of four steps:

  • Pick a topic you want to understand and start studying it. E.g Web scraping with Python, Model deployment with Azure or Data versioning with DVC.
  • Pretend to teach the topic to a classroom — In this case, write about the topics, make in-depth research and share, and receive feedback.
  • Go back to the books, videos, or official documentation when you get stuck.
  • Simplify and use analogies!

If you can’t explain it simply, you don’t understand it well enough — Albert Einstein

Note: If you want to master something, teach it, as teaching a subject topic is learning twice.

And we draw into conclusion here…

You just learned six productivity tips for beginner data scientists, why should start writing, why you should stop procrastination and avoid imposter syndrome, the importance of collaborating with others, mastering the basics, and the benefits of building side projects as a beginner.

I hope you’ve learned a lot and will start applying these productivity tips in your day-to-day life as these Tips will fast-track productivity in your data science journey as a beginner.

Congratulations! You now have a grasp of the six productivity tips that will make you grounded in your data science journey as a beginner, junior or undergraduate data scientist.

I can’t wait to see you adopt what is explained in this article and start making waves with them.

Connect with me on Linkedin

Connect with me on Twitter

Join thousands of data leaders on the AI newsletter. Join over 80,000 subscribers and keep up to date with the latest developments 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'); -->