OddPen

Welcome to my blog where I write mostly about technical things!

We often can provide assets with a URI or a so-called “Data URL” on the web. As they are so straightforward to use, they get pretty often copied (from a tutorial, snippet, or whatnot) without us being able to tell what they do, when to prefer them, or whether you should still be using them altogether. It's one of the lesser-known performance tweaks I will shed some light on in this blog post.

Read more...

One of my most controversial opinions is that I have a soft spot for Confluence. But wait, let me explain it a bit further. I understand all the pain people have with it. I get it. I'm usually in the same boat. However, I do not think it's Atlassian's fault for providing a better UX. For many things, it is just administrated and used poorly! Or, to put it in simpler terms, Confluence needs to be utilized correctly.

Read more...

The last few days, I have been pretty busy migrating my domain from “odd.af” to “ungra.dev”. I posted a bit on Social Media about the story, but I wanted to wrap it up in detail in this blog post.

Read more...

Whether I installed the app image or the Flatpack version of Spotify, I always had issues with the app icon in the window's title bar and the application switch. It fell back to a defaulting x11 icon.

Read more...

I welcome you to the marvelous world of JavaScript quizzes on Social Media! This very article is part of a series where we deep dive and demystify them. This is a tough one, so this article is a little longer than usual. So let's jump right into the in-depth exploration of constructors in JavaScript!

The Snippet

const c = 'constructor';
c[c][c]('console.log("wth?")')();
Read more...

Look who managed to head to my blog only to find himself reading an article about a tweeted Javascript quiz. In this series, I try to break such down, and this post features a lesser-known but often useful operator: Nullish Coalescing!

The Snippet

console.log(1 === null ?? 1)
Read more...

Glad you found this blog series about JavaScript Social Media quizzes! This week is a funny snippet around the loop-manipulating keywords break and continue. Get ready for some serious trickery!

The Snippet

for (var i = 1; i < 10; ++i) {
  if (i % 3) {
    continue;
  }
  if (i == 7) {
    break;
  }
  console.log(i);
}
Read more...

Welcome to my blog series about demystifying JavaScript quizzes from Social Media! This time is about a rather basic concept. Let's dive right into the beautiful world of logical operators in JavaScript!

The Snippet

let name1 = " ",
  name2 = undefined,
  name3 = "ravin",
  name4 = "rav",
  username = name1 && name2 && name3 && name4;

console.log(username);
Read more...

Welcome to my dev.to series about my takes on Social Media code challenges! This time it's going to be awesome. You will learn something about an API you use daily: length! You read that correctly. Length. Let's jump right in 👉

The Snippet

const numbers = ['100', '200'];
numbers.length = 0;

console.log(numbers[0]);
Read more...

Welcome to one of the articles about destructuring a coding quiz from Social Media. This time, we check out a very funny sorting algorithm. Be prepared to order numbers with timeouts!

The Snippet

const numbers = [29, 11, 201, 7, 99, 912, 39, 31];

for (let num of numbers) {
  setTimeout(() => console.log(num), num);
}
Read more...