What to Know About Coffee Badging

+ linux distros, data science resources, and return to office mandate

This week we’re talking about Linux distros, programming projects, and how to handle return-to-office mandates. Plus we’re asking for your feedback. Please check out the survey at the bottom to let us know what you want to see.

This Week’s Resources

How to Hack Coffee Badging

Did you fall in love with work from home (WFH), but are now being faced with a return to office (RTO) mandate?

Let me introduce you to coffee badging, the art of showing up to your office building just long enough to grab a coffee, swipe your badge, and then get out — giving the illusion that you’re at the office when in reality, you’re working from anywhere but there.

Imagine this: you show up in-office just long enough to grab a coffee, swipe your badge, and then head out—leaving the illusion that you’ve been at your desk for a full day when in reality, you’re anywhere but.

This is coffee badging, and it’s all about making brief appearances to satisfy workplace requirements like an RTO mandate while continuing to work remotely.

DataCamp’s Learning Resources

Ultimately, DataCamp is a superb resource for those who want to learn more about data science and data engineering, but those who take these classes will need to be driven and self-motivated.

Short Version: DataCamp offers hundreds of courses, dozens of skill tracks, and more than a handful of career tracks — all in the field of data science. Through DataCamp, computer scientists can learn Python, R, SQL, and more, all while building their data science portfolio through real-world projects. 

In DataCamp, students can learn in four ways:

  • Courses: Individual data science courses such as Introduction to Python, Introduction to SQL, and Introduction to R introduce students to a single concept at a time.

  • Skill Tracks: Learning skill tracks such as R Programming, Importing & Cleaning Data, and Visualization include multiple, in-depth classes to provide students with a broader spectrum of knowledge.

  • Career Tracks: Career tracks such as Data Analyst, Data Scientist, and Python Programmer include comprehensive sets of courses intended to give students everything they need to know about a specific career.

  • Certifications: Certifications such as Data Scientist or Data Analyst prove an individual’s existing knowledge about specific fields.

The Top 6 Best Linux Distros for Programming

A Linux distribution, often referred to as a Linux distro, is a complete and packaged OS based on the Linux kernel.

But what is the Linux kernel? Great question! This is the nucleus of the OS as it interacts directly with the hardware of your computer, and it manages system resources.

However, the Linux kernel alone is not sufficient for most users, as it lacks many of the software applications and tools needed for everyday computing tasks.

The top 6 linux distros ranked for developers.

A Linux distro includes the Linux kernel and a collection of libraries, software packages, system utilities, and graphical interfaces that make it a functional and user-friendly operating system.

Our editor evaluated them and provided insights in an article on Hackr.

What's the best Linux distro for programming?

JavaScript: Why We Love to Hate It

Whether you’re brand new to coding or a JavaScript pro, how well do you really know JavaScript ===?

As the most popular programming language for more than a decade, JavaScript continues to dominate the collective mindshare in web development.

Watch the video on our YouTube channel, or learn more about why we love (and love to hate) JS at Hackr.

And don’t forget to read our guide to the best JavaScript frameworks.

Projects for Programmers

If you’re a programmer looking for a job, check out the job board for all the latest opportunities.

But if you’re just getting started on building a portfolio, you’ll want to make your own projects. That’s why we compiled all of our programming project articles in one place. They’re free to use, and you can see the full source code for most of them.

What are you building this week?

let currentPlayer = 'X'; // Player X always starts
let gameBoard = ['', '', '', '', '', '', '', '', '']; // 3x3 game board
let gameActive = true;

function handlePlayerTurn(clickedCellIndex) {
  if (gameBoard[clickedCellIndex] !== '' || !gameActive) {
      return;
  }
  gameBoard[clickedCellIndex] = currentPlayer;
  checkForWinOrDraw();
  currentPlayer = currentPlayer === 'X' ? 'O' : 'X';
}

function cellClicked(clickedCellEvent) {
  const clickedCell = clickedCellEvent.target;
  const clickedCellIndex = parseInt(clickedCell.id.replace('cell-', '')) - 1;
  if (gameBoard[clickedCellIndex] !== '' || !gameActive) {
      return;
  }
  handlePlayerTurn(clickedCellIndex);
  updateUI();
}

const cells = document.querySelectorAll('.cell');

cells.forEach(cell => {
  cell.addEventListener('click', cellClicked, false);
});

function updateUI() {
  for (let i = 0; i < cells.length; i++) {
      cells[i].innerText = gameBoard[i];
  }
}

function announceWinner(player) {
  const messageElement = document.getElementById('gameMessage');
  messageElement.innerText = `Player ${player} Wins!`;
}

function announceDraw() {
  const messageElement = document.getElementById('gameMessage');
  messageElement.innerText = 'Game Draw!';
}

const winConditions = [
  [0, 1, 2], // Top row
  [3, 4, 5], // Middle row
  [6, 7, 8], // Bottom row
  [0, 3, 6], // Left column
  [1, 4, 7], // Middle column
  [2, 5, 8], // Right column
  [0, 4, 8], // Left-to-right diagonal
  [2, 4, 6]  // Right-to-left diagonal
];

function checkForWinOrDraw() {
  let roundWon = false;

  for (let i = 0; i < winConditions.length; i++) {
      const [a, b, c] = winConditions[i];
      if (gameBoard[a] && gameBoard[a] === gameBoard[b] && gameBoard[a] === gameBoard[c]) {
          roundWon = true;
          break;
      }
  }

  if (roundWon) {
      announceWinner(currentPlayer);
      gameActive = false;
      return;
  }

  let roundDraw = !gameBoard.includes('');
  if (roundDraw) {
      announceDraw();
      gameActive = false;
      return;
  }
}

function resetGame() {
  gameBoard = ['', '', '', '', '', '', '', '', ''];
  gameActive = true;
  currentPlayer = 'X';
  cells.forEach(cell => {
      cell.innerText = '';
  });
  document.getElementById('gameMessage').innerText = '';
}

const resetButton = document.getElementById('resetButton');
resetButton.addEventListener('click', resetGame, false);

Note that you can get the corresponding HTML and CSS code in the article.

Rate this Newsletter

The team at Hackr.io aims to provide the best information possible. Please let us know how we're doing!

Login or Subscribe to participate in polls.