Meme Encyclopedia
Media
Editorials
More

Popular right now

Woman Scared of Breasts

Woman Scared of Breasts

Philipp Kachalin

Philipp Kachalin • 5 years ago

Chinese Frog Mascot

Chinese Frog Mascot

Sakshi Sanjeevkumar

Sakshi Sanjeevkumar • 2 years ago

Tifa making an appearance at the Italian Senate during a livestream from the government.

Italian Senate Tifa Livestream

Brandon Wink

Brandon Wink • 3 years ago

67 meme / six seven meme image examples from TikTok.

6-7 Meme

Phillip Hamilton

Phillip Hamilton • 8 months ago

Saddam Hussein's Hiding Place meme format depicting the original illustration of Saddam's hiding place before he was captured.

Saddam Hussein's Hiding Place

Philipp Kachalin

Philipp Kachalin • 4 years ago

Know Your Meme is the property of Literally Media ©2024 Literally Media. All Rights Reserved.
Fail_whale

Submission   51,104

Part of a series on Twitter / X. [View Related Entries]


Fail Whale

Fail Whale

Part of a series on Twitter / X. [View Related Entries]

Updated Mar 31, 2011 at 06:12PM EDT by Brad.

Added Aug 17, 2010 at 10:16AM EDT by Sapphire Sky.

PROTIP: Press 'i' to view the image gallery, 'v' to view the video gallery, or 'r' to view a random entry.

This submission is currently being researched & evaluated!

You can help confirm this entry by contributing facts, media, and other evidence of notability and mutation.

About

The Fail Whale is a way of showing when Twitter, would become under some maintenance to show as if the site is under repairs, as well… it's under maintenance. It originally became an image of a whale being carried by stings held by birds flying over the water. This then became into a texty version as users would use blocky characters in text to create a whale with the word "fail".

Twitter users are familiar with the image of the Fail Whale. This social object has been onto by Twitter fans not just as representing Twitter's downtime, but also as representing the community's love for the site. Despite Twitter's troubles, most of its users stayed true, watching and waiting as the team began the long process of recoding the application in order for it to scale up. As Twitter succumbed to the strain of running under-provisioned service, the Fail Whale image would show. And this image began to take on a life of its own. This is the story of the Fail Whale.

Origin

You probably thought that Twitter was using designs they paid for, right? Well, apparently that was not the case. The designer behind the Fail Whale, Yiying Lu, had posted the image to the stock photo web site, iStockPhoto. (She has now removed the original link). Although the image of the Fail Whale was widely known, the designer herself was not. Tom Limongello decided to change that.


Share Pin

Related Entries 210 total

Cover6
Nobody:
Screen_shot_2017-02-23_at_3.41.32_pm
They're Good Dogs Brent
Ratioed_twitter
The Ratio / Ratioed
Image
Slide Into Your DMs


Recent Images 15 total


Recent Videos 0 total

There are no recent videos.





-
    ` /*let comments = [] window.addEventListener('DOMContentLoaded', () => { comments = Array.from(document.getElementsByClassName('comment')) setInterval(() => { comments = Array.from(document.getElementsByClassName('comment')) }, 1000) }) window.addEventListener('scroll', e => { // get comments the user has scrolled past const passedComments = comments.filter(comment => { comment.checkableTop = comment.checkableTop || comment.getBoundingClientRect().top return comment.checkableTop < 0 }) for (const comment of comments) { if (comment === passedComments[passedComments.length - 1] || comments[0]) { # comment.style.position = 'sticky' # comment.style.top = '85px' # comment.style.zIndex = '1000' } else { comment.style.position = 'relative' comment.style.zIndex = '999' } } })*/ let fetchedInitialComments = false; let commentsContainer; window.addEventListener('scroll', e => { if (fetchedInitialComments) { return; } commentsContainer = commentsContainer || document.getElementsByClassName('comments-container')[0] if (commentsContainer.getBoundingClientRect().top < window.innerHeight) { fetchComments() } }) let commentsById = {} let fetchingComments = false; let loadedAllComments = false; function fetchComments() { if (fetchingComments || loadedAllComments) { return; } fetchingComments = true; let currentUrl = window.location.href; currentUrl = new URL(currentUrl.replace(/\/page\/[\d]+$/, '')); currentUrl.pathname += '/comments.json'; let commentsCount = document.querySelectorAll('.comment').length; currentUrl.searchParams.set('offset', commentsCount); fetchedInitialComments = true; fetch(currentUrl.toString(), { headers: new Headers({'content-type': 'application/json'}), }) .then(response => response.json()) .then(data => { const commentsElement = document.getElementById('comments-list'); if (data.comments.length == 0) { const revealButton = document.getElementById('revealComments'); revealButton.style.display = 'none'; loadedAllComments = true; } const commentCountElements = Array.from(document.getElementsByClassName('comments_count')); commentCountElements.forEach(element => { const count = data.total_count; element.innerText = element.innerText.replace(/\d+/, count);; }); for (const comment of data.comments) { const newComment = omegafy(commentTemplate, comment)[0]; if (comment.parent_id) { const parent = commentsById[comment.parent_id] || commentsElement.parentElement; const uls = parent?.getElementsByTagName('ul') uls[0]?.appendChild(newComment); } else { commentsElement.appendChild(newComment); } commentsById[comment.id] = newComment; ascribeCommentBehavior(newComment); } commentsCount = document.querySelectorAll('.comment').length; if (commentsCount >= data.total_count && document.getElementById('comments-list').parentElement.open) { try { document.getElementById('comments-list').parentElement.parentElement.getElementsByClassName('show')[0].remove(); } catch (e) { console.error(e); } } fetchingComments = false; updateUserInteractions(); }) .catch(error => { console.error('Error:', error); alert('An error occurred. Please try again.') fetchingComments = false; }); } let commentsLoaded = false; window.addEventListener('scroll', e => { const revealButton = document.getElementById('revealComments'); if (revealButton) { const rect = revealButton.getBoundingClientRect(); const inView = rect.top >= 0 && rect.bottom <= window.innerHeight; if (inView) { revealComments(); } } }); function revealComments(button) { commentsLoaded = true; const comments = document.getElementById('comments-list'); comments.parentElement.open = true; const revealButton = document.getElementById('revealComments') if (revealButton?.innerText == 'Show more comments') { fetchComments(); } if (revealButton) { revealButton.innerText = 'Show more comments' } return false; } function ascribeCommentBehavior(element) { const remoteLinks = Array.from(element.querySelectorAll('a[data-remote=true]')) remoteLinks.forEach(link => { $(link) .bind("ajax:success", function(evt, data, status, xhr){ if (data.error) { alert(data.error) return; } eval(evt.target.getAttribute('onsuccess') || 'null') }).bind("ajax:error", function(evt, data, status, xhr){ console.log('error', data) }); }) } function submitComment(form, event) { event.preventDefault(); form.style.display = 'none'; const formData = new FormData(form); const params = new URLSearchParams(formData); let currentUrl = window.location.href; currentUrl = new URL(currentUrl); if (currentUrl.searchParams.has('ab_test[split]')) { params.append('ab_test[split]', currentUrl.searchParams.get('ab_test[split]')); } params.append('redesign', 'true'); form.reset(); fetch(form.action, { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: params }) .then(response => { if (!response.ok) { throw new Error('Network response was not ok'); } return response }) .then(response => response.json()) .then(data => { try { const commentCountElements = Array.from(document.getElementsByClassName('comments_count')); commentCountElements.forEach(element => { const count = parseInt(element.innerText.match(/\d+/)[0]); if (isNaN(count + 1)) { return; } element.innerText = element.innerText.replace(/\d+/, count + 1);; }); const newComment = omegafy(commentTemplate, data)[0]; const uls = form.parentElement.parentElement.getElementsByTagName('ul') uls[0]?.prepend(newComment); commentsById[data.id] = newComment; ascribeCommentBehavior(newComment); updateUserInteractions(); } catch (e) { console.error(e); } }) .catch(error => { console.error('Error:', error); alert('An error occurred. Please try again.') }); return false; } function decrementCommentsCount() { const commentCountElements = Array.from(document.getElementsByClassName('comments_count')); commentCountElements.forEach(element => { const count = parseInt(element.innerText.match(/\d+/)[0]); if (isNaN(count - 1)) { return; } element.innerText = element.innerText.replace(/\d+/, count);; }); } function likeComment(linkElement) { const pressed = linkElement.getAttribute('data-pressed'); if (pressed == 'true') { return; }; const counter = linkElement.getElementsByClassName('count')[0]; counter.innerText = parseInt(counter.innerText) + 1; linkElement.setAttribute('pressed', 'true'); const scoreCounter = linkElement.parentElement.getElementsByClassName('score-counter')[0]; scoreCounter.innerText = parseInt(scoreCounter.innerText) + 1; return false; } function dislikeComment(linkElement) { const pressed = linkElement.getAttribute('data-pressed'); if (pressed == 'true') { return; }; const counter = linkElement.getElementsByClassName('count')[0]; counter.innerText = parseInt(counter.innerText) + 1; linkElement.setAttribute('pressed', 'true'); const scoreCounter = linkElement.parentElement.getElementsByClassName('score-counter')[0]; scoreCounter.innerText = parseInt(scoreCounter.innerText) - 1; return false; }

    Comments ( 23 )




      `
      Meme Encyclopedia
      Media
      Editorials
      More