Goose Game
Posted 4 months ago<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Goose Game</title>
<style>
body {
margin: 0;
overflow: hidden;
}
canvas {
display: block;
background-color: #75643f;
}
</style>
</head>
<body>
<canvas id="gameCanvas" width="800" height="600"></canvas>
<script>
const canvas = document.getElementById('gameCanvas');
const ctx = canvas.getContext('2d');
let x = canvas.width / 2;
let y = canvas.height / 2;
let radius = 30;
let targetRadius = 30;
const speed = 3;
const scaleSpeed = 1;
const minRadius = 30;
const maxRadius = 300;
let gooseHeadCollider = { x: 0, y: 0, r: 0 };
const keys = {
w: false,
a: false,
s: false,
d: false,
};
const palette = {
'1': 'tan',
'2': 'white',
'3': 'green'
};
const breadSprite = [
"011111111111110",
"112222222111111",
"122222222211111",
"122222222211111",
"012222222111110",
"001222221111100",
"001222221111100",
"001222221111100",
"001222221111100",
"001222221111100",
"001111111111100"
];
const vegetableSprite = [
"0000333330000",
"0033333333300",
"0333333333330",
"3333303033333",
"3333003003333",
"0303303033030",
"0000333330000",
"0000033300000",
"0000033300000",
"0000033300000",
"0000033300000"
];
const breads = [];
const vegetables = [];
function getBiasedY(canvasHeight, exponent = 2, reverse = false) {
const r = Math.random();
const biased = reverse ? 1 - Math.pow(r, exponent) : Math.pow(r, exponent);
return biased * canvasHeight;
}
function spawnBread() {
breads.push({
x: canvas.width + 10,
y: getBiasedY(canvas.height, 2, true),
speed: 1,
scale: 2
});
}
function spawnVegetable() {
vegetables.push({
x: canvas.width + 10,
y: getBiasedY(canvas.height, 2, false),
speed: 2,
scale: 2
});
}
setInterval(spawnBread, 500);
setInterval(spawnVegetable, 500);
document.addEventListener('keydown', (e) => {
if (e.key in keys) keys[e.key] = true;
});
document.addEventListener('keyup', (e) => {
if (e.key in keys) keys[e.key] = false;
});
function update() {
// Move breads and update their colliders first
for (const bread of breads) {
bread.x -= bread.speed;
const spriteWidth = breadSprite[0].length * bread.scale;
const spriteHeight = breadSprite.length * bread.scale;
bread.collider = {
x: bread.x + spriteWidth * 0.1,
y: bread.y + spriteHeight * 0.1,
width: spriteWidth * 0.8,
height: spriteHeight * 0.8
};
}
for (const veg of vegetables) {
veg.x -= veg.speed;
const spriteWidth = vegetableSprite[0].length * veg.scale;
const spriteHeight = vegetableSprite.length * veg.scale;
veg.collider = {
x: veg.x + spriteWidth * 0.1,
y: veg.y + spriteHeight * 0.1,
width: spriteWidth * 0.8,
height: spriteHeight * 0.8
};
}
// Now check for collisions and remove sprites
for (let i = breads.length - 1; i >= 0; i--) {
const bread = breads[i];
const dx = gooseHeadCollider.x - (bread.collider.x + bread.collider.width / 2);
const dy = gooseHeadCollider.y - (bread.collider.y + bread.collider.height / 2);
const dist = Math.sqrt(dx * dx + dy * dy);
if (dist < gooseHeadCollider.r + Math.min(bread.collider.width, bread.collider.height) / 2) {
breads.splice(i, 1);
targetRadius += 10; // Increase target radius
}
}
for (let i = vegetables.length - 1; i >= 0; i--) {
const veg = vegetables[i];
const dx = gooseHeadCollider.x - (veg.collider.x + veg.collider.width / 2);
const dy = gooseHeadCollider.y - (veg.collider.y + veg.collider.height / 2);
const dist = Math.sqrt(dx * dx + dy * dy);
if (dist < gooseHeadCollider.r + Math.min(veg.collider.width, veg.collider.height) / 2) {
vegetables.splice(i, 1);
targetRadius = Math.max(minRadius, targetRadius - 30);
}
}
// Movement controls
if (keys.w) y -= speed;
if (keys.s) y += speed;
if (keys.a) x -= speed;
if (keys.d) x += speed;
// Smoothly interpolate radius toward targetRadius
radius += (targetRadius - radius) * 0.1;
radius = Math.max(minRadius, Math.min(maxRadius, radius));
x = Math.max(radius, Math.min(canvas.width - radius, x));
y = Math.max(radius, Math.min(canvas.height - radius, y));
for (const bread of breads) {
bread.x -= bread.speed;
// Bread box collider (slightly smaller than sprite)
const spriteWidth = breadSprite[0].length * bread.scale;
const spriteHeight = breadSprite.length * bread.scale;
bread.collider = {
x: bread.x + spriteWidth * 0.1,
y: bread.y + spriteHeight * 0.1,
width: spriteWidth * 0.8,
height: spriteHeight * 0.8
};
}
for (const veg of vegetables) {
veg.x -= veg.speed;
// Vegetable box collider (slightly smaller than sprite)
const spriteWidth = vegetableSprite[0].length * veg.scale;
const spriteHeight = vegetableSprite.length * veg.scale;
veg.collider = {
x: veg.x + spriteWidth * 0.1,
y: veg.y + spriteHeight * 0.1,
width: spriteWidth * 0.8,
height: spriteHeight * 0.8
};
}
}
function drawGoose() {
ctx.beginPath();
ctx.arc(x, y, radius, 0, Math.PI * 2);
ctx.fillStyle = 'white';
ctx.fill();
const angle = -Math.PI / 2;
const headDistance = radius + 16;
const headX = x + Math.cos(angle) * headDistance;
const headY = y + Math.sin(angle) * headDistance;
const neckWidth = 10;
const neckHeight = 20;
ctx.save();
ctx.translate(headX, headY);
ctx.rotate(angle + Math.PI / 2);
ctx.fillStyle = 'white';
ctx.fillRect(-neckWidth / 2, 0, neckWidth, neckHeight);
ctx.restore();
const headRadius = 12;
ctx.beginPath();
ctx.arc(headX, headY, headRadius, 0, Math.PI * 2);
ctx.fillStyle = 'white';
ctx.fill();
const localBeakPoints = [
{ x: -6, y: 25 },
{ x: -6, y: 10 },
{ x: 6, y: 11 }
];
const rotatedPoints = localBeakPoints.map(p => {
const rotatedX = p.x * Math.cos(angle) - p.y * Math.sin(angle);
const rotatedY = p.x * Math.sin(angle) + p.y * Math.cos(angle);
return {
x: headX + rotatedX,
y: headY + rotatedY
};
});
ctx.beginPath();
ctx.moveTo(rotatedPoints[0].x, rotatedPoints[0].y);
ctx.lineTo(rotatedPoints[1].x, rotatedPoints[1].y);
ctx.lineTo(rotatedPoints[2].x, rotatedPoints[2].y);
ctx.closePath();
ctx.fillStyle = 'orange';
ctx.fill();
ctx.beginPath();
ctx.arc(headX + 3, headY - 3, 2, 0, Math.PI * 2);
ctx.fillStyle = 'black';
ctx.fill();
drawPixelBow(ctx, headX - 12, headY + 16, 2);
// Head collider for use in logic or debugging
gooseHeadCollider = {
x: headX,
y: headY,
r: headRadius
};
}
function drawPixelBow(ctx, startX, startY, scale = 2) {
const bowPixels = [
"0111011101110",
"1111111111111",
"1111111111111",
"0110110110110",
"0000110110000",
"0001110111000",
"0011100011100",
"0001100011000"
];
ctx.fillStyle = '#57aeff';
for (let row = 0; row < bowPixels.length; row++) {
for (let col = 0; col < bowPixels[row].length; col++) {
if (bowPixels[row][col] === '1') {
ctx.fillRect(startX + col * scale, startY + row * scale, scale, scale);
}
}
}
}
function drawPolkaDots(ctx, canvasWidth, canvasHeight, spacing = 40, dotRadius = 4) {
ctx.fillStyle = 'white';
for (let row = 0, y = 0; y < canvasHeight; row++, y += spacing) {
const isOddRow = row % 2 === 1;
const xOffset = isOddRow ? spacing / 2 : 0;
for (let x = 0; x < canvasWidth; x += spacing) {
ctx.beginPath();
ctx.arc(x + xOffset, y, dotRadius, 0, Math.PI * 2);
ctx.fill();
}
}
}
function drawSprite(ctx, pixelData, startX, startY, scale = 2, palette = {}) {
for (let row = 0; row < pixelData.length; row++) {
for (let col = 0; col < pixelData[row].length; col++) {
const code = pixelData[row][col];
const color = palette[code];
if (color) {
ctx.fillStyle = color;
ctx.fillRect(startX + col * scale, startY + row * scale, scale, scale);
}
}
}
}
function draw() {
ctx.fillStyle = '#94bce0';
ctx.fillRect(0, 0, canvas.width, canvas.height);
drawPolkaDots(ctx, canvas.width, canvas.height, 49, 2);
drawGoose();
for (const bread of breads) {
drawSprite(ctx, breadSprite, bread.x, bread.y, bread.scale, palette);
}
for (const veg of vegetables) {
drawSprite(ctx, vegetableSprite, veg.x, veg.y, veg.scale, palette);
}
}
function gameLoop() {
update();
draw();
requestAnimationFrame(gameLoop);
}
gameLoop();
</script>
</body>
</html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Goose Game</title>
<style>
body {
margin: 0;
overflow: hidden;
}
canvas {
display: block;
background-color: #75643f;
}
</style>
</head>
<body>
<canvas id="gameCanvas" width="800" height="600"></canvas>
<script>
const canvas = document.getElementById('gameCanvas');
const ctx = canvas.getContext('2d');
let x = canvas.width / 2;
let y = canvas.height / 2;
let radius = 30;
let targetRadius = 30;
const speed = 3;
const scaleSpeed = 1;
const minRadius = 30;
const maxRadius = 300;
let gooseHeadCollider = { x: 0, y: 0, r: 0 };
const keys = {
w: false,
a: false,
s: false,
d: false,
};
const palette = {
'1': 'tan',
'2': 'white',
'3': 'green'
};
const breadSprite = [
"011111111111110",
"112222222111111",
"122222222211111",
"122222222211111",
"012222222111110",
"001222221111100",
"001222221111100",
"001222221111100",
"001222221111100",
"001222221111100",
"001111111111100"
];
const vegetableSprite = [
"0000333330000",
"0033333333300",
"0333333333330",
"3333303033333",
"3333003003333",
"0303303033030",
"0000333330000",
"0000033300000",
"0000033300000",
"0000033300000",
"0000033300000"
];
const breads = [];
const vegetables = [];
function getBiasedY(canvasHeight, exponent = 2, reverse = false) {
const r = Math.random();
const biased = reverse ? 1 - Math.pow(r, exponent) : Math.pow(r, exponent);
return biased * canvasHeight;
}
function spawnBread() {
breads.push({
x: canvas.width + 10,
y: getBiasedY(canvas.height, 2, true),
speed: 1,
scale: 2
});
}
function spawnVegetable() {
vegetables.push({
x: canvas.width + 10,
y: getBiasedY(canvas.height, 2, false),
speed: 2,
scale: 2
});
}
setInterval(spawnBread, 500);
setInterval(spawnVegetable, 500);
document.addEventListener('keydown', (e) => {
if (e.key in keys) keys[e.key] = true;
});
document.addEventListener('keyup', (e) => {
if (e.key in keys) keys[e.key] = false;
});
function update() {
// Move breads and update their colliders first
for (const bread of breads) {
bread.x -= bread.speed;
const spriteWidth = breadSprite[0].length * bread.scale;
const spriteHeight = breadSprite.length * bread.scale;
bread.collider = {
x: bread.x + spriteWidth * 0.1,
y: bread.y + spriteHeight * 0.1,
width: spriteWidth * 0.8,
height: spriteHeight * 0.8
};
}
for (const veg of vegetables) {
veg.x -= veg.speed;
const spriteWidth = vegetableSprite[0].length * veg.scale;
const spriteHeight = vegetableSprite.length * veg.scale;
veg.collider = {
x: veg.x + spriteWidth * 0.1,
y: veg.y + spriteHeight * 0.1,
width: spriteWidth * 0.8,
height: spriteHeight * 0.8
};
}
// Now check for collisions and remove sprites
for (let i = breads.length - 1; i >= 0; i--) {
const bread = breads[i];
const dx = gooseHeadCollider.x - (bread.collider.x + bread.collider.width / 2);
const dy = gooseHeadCollider.y - (bread.collider.y + bread.collider.height / 2);
const dist = Math.sqrt(dx * dx + dy * dy);
if (dist < gooseHeadCollider.r + Math.min(bread.collider.width, bread.collider.height) / 2) {
breads.splice(i, 1);
targetRadius += 10; // Increase target radius
}
}
for (let i = vegetables.length - 1; i >= 0; i--) {
const veg = vegetables[i];
const dx = gooseHeadCollider.x - (veg.collider.x + veg.collider.width / 2);
const dy = gooseHeadCollider.y - (veg.collider.y + veg.collider.height / 2);
const dist = Math.sqrt(dx * dx + dy * dy);
if (dist < gooseHeadCollider.r + Math.min(veg.collider.width, veg.collider.height) / 2) {
vegetables.splice(i, 1);
targetRadius = Math.max(minRadius, targetRadius - 30);
}
}
// Movement controls
if (keys.w) y -= speed;
if (keys.s) y += speed;
if (keys.a) x -= speed;
if (keys.d) x += speed;
// Smoothly interpolate radius toward targetRadius
radius += (targetRadius - radius) * 0.1;
radius = Math.max(minRadius, Math.min(maxRadius, radius));
x = Math.max(radius, Math.min(canvas.width - radius, x));
y = Math.max(radius, Math.min(canvas.height - radius, y));
for (const bread of breads) {
bread.x -= bread.speed;
// Bread box collider (slightly smaller than sprite)
const spriteWidth = breadSprite[0].length * bread.scale;
const spriteHeight = breadSprite.length * bread.scale;
bread.collider = {
x: bread.x + spriteWidth * 0.1,
y: bread.y + spriteHeight * 0.1,
width: spriteWidth * 0.8,
height: spriteHeight * 0.8
};
}
for (const veg of vegetables) {
veg.x -= veg.speed;
// Vegetable box collider (slightly smaller than sprite)
const spriteWidth = vegetableSprite[0].length * veg.scale;
const spriteHeight = vegetableSprite.length * veg.scale;
veg.collider = {
x: veg.x + spriteWidth * 0.1,
y: veg.y + spriteHeight * 0.1,
width: spriteWidth * 0.8,
height: spriteHeight * 0.8
};
}
}
function drawGoose() {
ctx.beginPath();
ctx.arc(x, y, radius, 0, Math.PI * 2);
ctx.fillStyle = 'white';
ctx.fill();
const angle = -Math.PI / 2;
const headDistance = radius + 16;
const headX = x + Math.cos(angle) * headDistance;
const headY = y + Math.sin(angle) * headDistance;
const neckWidth = 10;
const neckHeight = 20;
ctx.save();
ctx.translate(headX, headY);
ctx.rotate(angle + Math.PI / 2);
ctx.fillStyle = 'white';
ctx.fillRect(-neckWidth / 2, 0, neckWidth, neckHeight);
ctx.restore();
const headRadius = 12;
ctx.beginPath();
ctx.arc(headX, headY, headRadius, 0, Math.PI * 2);
ctx.fillStyle = 'white';
ctx.fill();
const localBeakPoints = [
{ x: -6, y: 25 },
{ x: -6, y: 10 },
{ x: 6, y: 11 }
];
const rotatedPoints = localBeakPoints.map(p => {
const rotatedX = p.x * Math.cos(angle) - p.y * Math.sin(angle);
const rotatedY = p.x * Math.sin(angle) + p.y * Math.cos(angle);
return {
x: headX + rotatedX,
y: headY + rotatedY
};
});
ctx.beginPath();
ctx.moveTo(rotatedPoints[0].x, rotatedPoints[0].y);
ctx.lineTo(rotatedPoints[1].x, rotatedPoints[1].y);
ctx.lineTo(rotatedPoints[2].x, rotatedPoints[2].y);
ctx.closePath();
ctx.fillStyle = 'orange';
ctx.fill();
ctx.beginPath();
ctx.arc(headX + 3, headY - 3, 2, 0, Math.PI * 2);
ctx.fillStyle = 'black';
ctx.fill();
drawPixelBow(ctx, headX - 12, headY + 16, 2);
// Head collider for use in logic or debugging
gooseHeadCollider = {
x: headX,
y: headY,
r: headRadius
};
}
function drawPixelBow(ctx, startX, startY, scale = 2) {
const bowPixels = [
"0111011101110",
"1111111111111",
"1111111111111",
"0110110110110",
"0000110110000",
"0001110111000",
"0011100011100",
"0001100011000"
];
ctx.fillStyle = '#57aeff';
for (let row = 0; row < bowPixels.length; row++) {
for (let col = 0; col < bowPixels[row].length; col++) {
if (bowPixels[row][col] === '1') {
ctx.fillRect(startX + col * scale, startY + row * scale, scale, scale);
}
}
}
}
function drawPolkaDots(ctx, canvasWidth, canvasHeight, spacing = 40, dotRadius = 4) {
ctx.fillStyle = 'white';
for (let row = 0, y = 0; y < canvasHeight; row++, y += spacing) {
const isOddRow = row % 2 === 1;
const xOffset = isOddRow ? spacing / 2 : 0;
for (let x = 0; x < canvasWidth; x += spacing) {
ctx.beginPath();
ctx.arc(x + xOffset, y, dotRadius, 0, Math.PI * 2);
ctx.fill();
}
}
}
function drawSprite(ctx, pixelData, startX, startY, scale = 2, palette = {}) {
for (let row = 0; row < pixelData.length; row++) {
for (let col = 0; col < pixelData[row].length; col++) {
const code = pixelData[row][col];
const color = palette[code];
if (color) {
ctx.fillStyle = color;
ctx.fillRect(startX + col * scale, startY + row * scale, scale, scale);
}
}
}
}
function draw() {
ctx.fillStyle = '#94bce0';
ctx.fillRect(0, 0, canvas.width, canvas.height);
drawPolkaDots(ctx, canvas.width, canvas.height, 49, 2);
drawGoose();
for (const bread of breads) {
drawSprite(ctx, breadSprite, bread.x, bread.y, bread.scale, palette);
}
for (const veg of vegetables) {
drawSprite(ctx, vegetableSprite, veg.x, veg.y, veg.scale, palette);
}
}
function gameLoop() {
update();
draw();
requestAnimationFrame(gameLoop);
}
gameLoop();
</script>
</body>
</html>
N|E 25|54 53 23 23 35
Posted 4 months ago┌─┬─┬─┬─┬─┐ beginning square|message
├─┼─┼─┼─┼─┤ 22|33 14 24 31 53 13 35 45 22 44
├─┼─┼─┼─┼─┤ 53|12 33 21 55 41 42 35 12 21 13
├─┼─┼─┼─┼─┤ 41|14 44 55 22 44 42
├─┼─┼─┼─┼─┤ 11|53 41 54 15 15 43 41 15 44 15
└─┴─┴─┴─┴─┘ 35|44 32 33 41 55 11 12
column then row
begin|omit
R|T
A|S
L|B
P|F
H|V
├─┼─┼─┼─┼─┤ 22|33 14 24 31 53 13 35 45 22 44
├─┼─┼─┼─┼─┤ 53|12 33 21 55 41 42 35 12 21 13
├─┼─┼─┼─┼─┤ 41|14 44 55 22 44 42
├─┼─┼─┼─┼─┤ 11|53 41 54 15 15 43 41 15 44 15
└─┴─┴─┴─┴─┘ 35|44 32 33 41 55 11 12
column then row
begin|omit
R|T
A|S
L|B
P|F
H|V
$Goosecoin now live
Posted 8 months agoToday I am undulating with excitement, for this day I have the pleasure of announcing the launch of my long-awaited cryptocurrency $Goosecoin. This digital asset promises to be totally unlike any other we have yet seen. It promises to be disruptive and innovative and paradigm shifting in ways no one can yet imagine. I promise it will make you an incredible profit, clear up your acne, and separate your lights and dark for you on laundry day. Yes, I can promise you all these things.
$Goosecoin is the next generation of crypto. You can do anything with $Goosecoin. The only limitations is yourself. Aside from that, I don't really know what it is, but that doesn't seem to matter if I'm being frank with you. How can you get in on the ground floor of this exciting investment opportunity? That's easy. Just give me a lot of money. I'm not picky about the exact amount. I will then give you a ¥Goosecoin. You don't actually get anything, but I have a list on my fridge of everybody who has one. I will write your name on there as soon as I get around to it. So what are you waiting for? Don't miss out. Do it now.
$Goosecoin is the next generation of crypto. You can do anything with $Goosecoin. The only limitations is yourself. Aside from that, I don't really know what it is, but that doesn't seem to matter if I'm being frank with you. How can you get in on the ground floor of this exciting investment opportunity? That's easy. Just give me a lot of money. I'm not picky about the exact amount. I will then give you a ¥Goosecoin. You don't actually get anything, but I have a list on my fridge of everybody who has one. I will write your name on there as soon as I get around to it. So what are you waiting for? Don't miss out. Do it now.
Sending this message was important. Pay attention to it!
Posted 10 months agoHappy winter solstice superstition to you and all of yours. I hope you're all having a great time. I'm sure many of you are looking forward to my commissions opening in two weeks, and to those that intend to get one you'll need to be aware of some policy changes. In short, my prices are going up. The reason is deeply unpleasant and it may affect a lot of you out there.
Recently I learned that I have not been paying my taxes correctly. This has cost me a lot. Pretty much everything I managed to save over the last few years has been wiped out to cover back taxes and penalties. We're talking five digits. In addition to this forest-fire-level hit to my savings, paying my taxes correctly from this point on will make it extremely difficult to recover. Apparently, United States tax law is written so that a person in my position shoulders an absolutely appalling tax burden. I am treated as a business owner, however I lack any of the write-offs a real business would get. Now, stacking the quite large quarterly payments I must make on top of my living expenses (which also seem to climb constantly) I can barely get by on what I've been making in a month, on average.
The action I must take is one I deeply regret. I have enjoyed offering low prices and arbitrary discounts. I don't wan to make money; I want to make art. However, I can no longer give such low prices and I certainly can't hand out those discounts anymore. To those who might change their mind about commissioning me in light of the increase, I am deeply sorry. I never wanted to be unattainable.
What follows is the really important part. It has come to my attention that not only have I been doing taxes wrong, so are a lot of you. In trying to learn how to do it right, I have not encountered any furries who know how it works any better than I did. It seems troublingly likely that a bunch of artists out there are in the same trouble as me, and they don't even know it. If art is your sole source of income, you need to be making estimated tax payments four times a year. The penalties are utterly loathsome. They increase EVERY SINGLE DAY after you miss a payment. If you were supposed to make these payments going back years, like I was, that's a LOT of fucking interest. If you think this applies to you, amend your tax returns now. January is the time to clear it up. The longer you wait, the worse it gets.
I know a lot of you cheat your taxes on purpose. ("Friends and Family" my ass...) This message isn't really for you. I'm hoping to spread this knowledge to those who are in deep shit and unaware. Tell everyone to look up Quarterly Estimated Taxes. Read about it on the IRS website. I have disabled the comments on this post because I don't want anybody filling the comment section with misinformation about U.S. tax law. Please trust me that this is true. I paid a lot of money to a tax advisor to get this sorted out and it was explained to me in graphic detail. This is real.
Anyway, sorry for the crappy tidings. In a world where everything keeps getting more expensive for no good reason, the last thing I want to do is be part of that problem. This world, though, makes me do a lot of things I don't want to do. We'll go on having a good time anyway.
Wishing you all again the best of the calorically dense season, I remain,
Grotesquely yours,
Goose
Recently I learned that I have not been paying my taxes correctly. This has cost me a lot. Pretty much everything I managed to save over the last few years has been wiped out to cover back taxes and penalties. We're talking five digits. In addition to this forest-fire-level hit to my savings, paying my taxes correctly from this point on will make it extremely difficult to recover. Apparently, United States tax law is written so that a person in my position shoulders an absolutely appalling tax burden. I am treated as a business owner, however I lack any of the write-offs a real business would get. Now, stacking the quite large quarterly payments I must make on top of my living expenses (which also seem to climb constantly) I can barely get by on what I've been making in a month, on average.
The action I must take is one I deeply regret. I have enjoyed offering low prices and arbitrary discounts. I don't wan to make money; I want to make art. However, I can no longer give such low prices and I certainly can't hand out those discounts anymore. To those who might change their mind about commissioning me in light of the increase, I am deeply sorry. I never wanted to be unattainable.
What follows is the really important part. It has come to my attention that not only have I been doing taxes wrong, so are a lot of you. In trying to learn how to do it right, I have not encountered any furries who know how it works any better than I did. It seems troublingly likely that a bunch of artists out there are in the same trouble as me, and they don't even know it. If art is your sole source of income, you need to be making estimated tax payments four times a year. The penalties are utterly loathsome. They increase EVERY SINGLE DAY after you miss a payment. If you were supposed to make these payments going back years, like I was, that's a LOT of fucking interest. If you think this applies to you, amend your tax returns now. January is the time to clear it up. The longer you wait, the worse it gets.
I know a lot of you cheat your taxes on purpose. ("Friends and Family" my ass...) This message isn't really for you. I'm hoping to spread this knowledge to those who are in deep shit and unaware. Tell everyone to look up Quarterly Estimated Taxes. Read about it on the IRS website. I have disabled the comments on this post because I don't want anybody filling the comment section with misinformation about U.S. tax law. Please trust me that this is true. I paid a lot of money to a tax advisor to get this sorted out and it was explained to me in graphic detail. This is real.
Anyway, sorry for the crappy tidings. In a world where everything keeps getting more expensive for no good reason, the last thing I want to do is be part of that problem. This world, though, makes me do a lot of things I don't want to do. We'll go on having a good time anyway.
Wishing you all again the best of the calorically dense season, I remain,
Grotesquely yours,
Goose
Fear
Posted 2 years agoI was sitting in the park near the pond as I often do when I heard a commotion by the hot dog cart. Someone had eaten it. The culprit approached me, and he was more startling to behold than most people: A gander of very unusual size. He sat in the pond looking very put-out.
"Why so glum, Mr. Goose?" I asked him.
He glared at me and replied, "Why are you dressed like a clown?"
I laughed. "Maybe it's an ironic affectation. Maybe I hate clowns and I'm trying to mock them."
His glare became very suspicious.
"Ha ha, no, that would be silly. The fact is I'm dressed like a clown because I am a clown. Go on, tell me what's eating you and maybe I can cheer you up."
"You're not going to cheer me up," the goose groused. "How can I be happy in a world full of power-mad fools who delight in pain?"
"You seem well-suited to such a world. You are a monster, after all," I said.
"And no matter how outrageously terrible I am, no one ever laments it!" He honked.
"Hmm, so the problem is the world is full of cruel monsters, and your attempted remedy is to be the biggest, nastiest monster of them all," I said. "I can see why you're not having much success."
He opened his beak, then shut it again angrily.
"I think," I said, "You ought to wear this instead of me." And I took off my big red nose and stuck it on the end of his beak.
"Why so glum, Mr. Goose?" I asked him.
He glared at me and replied, "Why are you dressed like a clown?"
I laughed. "Maybe it's an ironic affectation. Maybe I hate clowns and I'm trying to mock them."
His glare became very suspicious.
"Ha ha, no, that would be silly. The fact is I'm dressed like a clown because I am a clown. Go on, tell me what's eating you and maybe I can cheer you up."
"You're not going to cheer me up," the goose groused. "How can I be happy in a world full of power-mad fools who delight in pain?"
"You seem well-suited to such a world. You are a monster, after all," I said.
"And no matter how outrageously terrible I am, no one ever laments it!" He honked.
"Hmm, so the problem is the world is full of cruel monsters, and your attempted remedy is to be the biggest, nastiest monster of them all," I said. "I can see why you're not having much success."
He opened his beak, then shut it again angrily.
"I think," I said, "You ought to wear this instead of me." And I took off my big red nose and stuck it on the end of his beak.
Motivation
Posted 2 years agoThe other day I had just completed my latest work, and I was admiring it. A golden egg, big as a house, laid on top of Bloodsucking Bob's Friendly Car Title and Payday Loans. Smashed the whole roof in. I was chuckling to myself in the parking lot when a dragon came up to me. Typical dragon, big and bloated, lots of jewelry, cage full of slaves.
"Oh hey, nice!" He says. "I love how you crushed that building and lit it on fire. Great technique."
"Thanks," I said.
"Me and some other high society folks are going to stomp buildings later. You should come along!" He said.
"Can't, I have to wash my hair," I replied.
"Oh, that's too bad. I'm sure the others would just adore you," he said.
I winced at that.
"Anyway, I'm off to go be fawned over and fed live cattle by my miserable thralls. They haven't been praising me or feeding me enough lately. But you know how that goes, don't you?" he said.
"It is so disappointingly rare for people like us to get what we deserve, isn't it?" I sneered.
"So true!" he exclaimed jovially. "But you, you're so immensely plump. I'm horribly jealous. How do you stay so fat?"
"Well it's easy, really," I explained. "Every time I meet someone I can't stand, I eat them."
Then I ate him.
"Oh hey, nice!" He says. "I love how you crushed that building and lit it on fire. Great technique."
"Thanks," I said.
"Me and some other high society folks are going to stomp buildings later. You should come along!" He said.
"Can't, I have to wash my hair," I replied.
"Oh, that's too bad. I'm sure the others would just adore you," he said.
I winced at that.
"Anyway, I'm off to go be fawned over and fed live cattle by my miserable thralls. They haven't been praising me or feeding me enough lately. But you know how that goes, don't you?" he said.
"It is so disappointingly rare for people like us to get what we deserve, isn't it?" I sneered.
"So true!" he exclaimed jovially. "But you, you're so immensely plump. I'm horribly jealous. How do you stay so fat?"
"Well it's easy, really," I explained. "Every time I meet someone I can't stand, I eat them."
Then I ate him.
Overheard through the door of a school counselor's office
Posted 2 years agoI'm not an animal... No, I don't deny that I have all the traits you say animals have. I have fur, and a tail, and four paws I walk on. But I refuse to use your word for it. Because it isn't real! It's just a word you made up, and I won't participate in your worldview by using it. To do so is to submit to your notion that the way I am is deviant. Flawed. Inferior. I am none of these things! You know, I actually like the way I am. I like my soft fur, and my whiskery snout. I think I have a lovely tail with lovely rings. My tail doesn't make me anything. It just means that I have a tail, which harms no one, and I am very happy to be this way. You see, I don't need "animals" to exist. You need for there to be animals. You need to make up boxes to put people in, to justify the abuses of your system and explain away its flaws. All at once, your insistence that I am an "animal" deflects blame on to me for society's failure to make space for me, and casts me in a subservient role within it. And that's what this is all about, down at the core. It's just about power. You say I'm divergent. Divergent from what?! By what right to you assume that people who walk upright and have chins and eyebrows and bare skin are the normal, proper way to be? By what right do you declare I have a disorder?! you have no right. What you have is merely power. What if it was the other way around, hm? What if people like me were in charge of the world and designed it to suit us? Then you would be the animal, wouldn't you? Maybe you are. It's arbitrary nonsense. Fuck you. I yield nothing.
There's always one
Posted 2 years agoI was feeling peckish the other day, so I followed the delicious sounds of industry to a factory that made powdered doughnuts. I love a good powdered doughnut, and they are especially good when they're fresh out of the corn syrup vat. They practically melt in your beak. Well, I crashed my way straight through the wall and set about having my fill. It made quite a stir, as you can imagine. Toppling machinery, raining bricks, ravenous gnashing and all that. Powdered sugar was everywhere. The floor was covered in at least an inch of the stuff. This incited a panic, of course. You people always overreact to the smallest things, I swear. You get trapped by a collapsed roof in a room with one titanic monster and that's all it takes to make you lose your minds. I mean, it wasn't a full minute before they were all bowing and scraping, begging to be spared, promising to worship me like a living god, blah blah blah. Well, by then I'd drained all the grease traps and I was still pretty hungry, so I started eating them. I snapped them up two at a time and spat out hard hats like sunflower shells until they were all gone, except one. He was either a rabbit or a crow; I couldn't tell which. He stood with his back in the corner and stared at me, frozen in terror. I looked him over, then turned and walked through the wall, filling the ruined factory floor with sunlight. I was surprised when he called after me through the hole I'd made. "Why didn't you eat me?" he demanded. "Why eat everyone else and leave me behind?" I stopped, and I gave him the simple honest answer. "Because your knees are black," I said, and continued on my lumbering way.
I was happy, at least.
Posted 2 years agoA funny thing happened to me the other day. I was just minding my own business eating playground sand when this guy comes up to me. He looked excited and desperate, like they often do. "You lay golden eggs, right?" He slobbers at me. Naturally I do, and I affirmed this fact to him. Of course he started begging for one. I tried to tell him off, but he couldn't be dissuaded. He was achingly obsessed with the notion of possessing one. "All right then," I said. "I'll let you have one, but only if you swear to me it will make you happy." He looked puzzled. "I don't just hand eggs out for no reason," I explained. "There has to be some good purpose to it. So you have to promise absolutely that having this egg will make you happy." He was still incredulous, but he said of course it would. How could it not? "Are you completely certain this egg will make you happy?" I said grimly. "Because if it doesn't, I'll eat you." That gave him pause, but he couldn't see any danger. "Of course it will make me happy! There's zero chance I'll be disappointed in a giant golden egg. Not unless you trick me..." I chuckled. "No tricks, I promise," I replied. He fancied himself shrewd, and countered with his own terms: "If you trick me, you can't eat me!" I agreed, and he was satisfied. I laid him his egg and he went away with it, cackling with glee.
The next day, I saw him again. This was not unexpected because I was standing in the street a few doors down from his house. He approached me angrily. "You liar!" He said. "You did trick me!" How so, I wanted to know. "You gave golden eggs to everyone!!" This was true enough. The previous night I had laid an egg in the yard of all his neighbors. "That's not a trick," I replied. "I merely saw how happy your egg had made you, so I decided to spread a little more happiness around." I said this, despite the people nearby trying to strsngle each other over an egg. "You are happy, aren't you?" He fumed at that. "Of course I'm not happy! You tricked me and you know it! How can I be happy if everyone else has an egg too?!" I cocked my head down at him. "Explain the trick," I requested. He was caught off guard by that. He sputtered for a moment. "What do you mean 'explain the trick?'" he asked, clearly expecting it to go without saying. "Explain the trick," I repeated. "Tell me how those other people having eggs affects your egg. Tell me what you were hoping to do with that egg that you can't do now that other people have them too." He stared at me, seeming to be at a loss for words. He hemmed and hawed, growing nervous. He wouldn't say it. He couldn't. Maybe he really didn't have the words for something so natural and unexamined within him. Maybe he did and he just couldn't bear to see it unveiled. Either way, I kept the bargain and I ate him.
The next day, I saw him again. This was not unexpected because I was standing in the street a few doors down from his house. He approached me angrily. "You liar!" He said. "You did trick me!" How so, I wanted to know. "You gave golden eggs to everyone!!" This was true enough. The previous night I had laid an egg in the yard of all his neighbors. "That's not a trick," I replied. "I merely saw how happy your egg had made you, so I decided to spread a little more happiness around." I said this, despite the people nearby trying to strsngle each other over an egg. "You are happy, aren't you?" He fumed at that. "Of course I'm not happy! You tricked me and you know it! How can I be happy if everyone else has an egg too?!" I cocked my head down at him. "Explain the trick," I requested. He was caught off guard by that. He sputtered for a moment. "What do you mean 'explain the trick?'" he asked, clearly expecting it to go without saying. "Explain the trick," I repeated. "Tell me how those other people having eggs affects your egg. Tell me what you were hoping to do with that egg that you can't do now that other people have them too." He stared at me, seeming to be at a loss for words. He hemmed and hawed, growing nervous. He wouldn't say it. He couldn't. Maybe he really didn't have the words for something so natural and unexamined within him. Maybe he did and he just couldn't bear to see it unveiled. Either way, I kept the bargain and I ate him.
Stop putting my name on ballots
Posted 3 years agoIt's very troublesome and inconvenient to be told that I have been granted some elected office which I have never heard of. It cuts into my schedule, which is full of more important things. I have to curtail enjoyable activities like disgorging corrosive slime and copulating with yachts to go sort this nuisance out when it happens, and it happens with increasing regularity. I write today as a plea: Please, stop giving me authority.
I noticed this odd behavior some time ago, shortly after I burned down a Cheesecake Factory. I was being followed everywhere I went by a group of people wearing funny hats that wouldn't stop staring at me. This was unsettling, naturally. I tried eating them, but this only made more of them show up. With no recourse, I decided to converse with them, and they explained that they were my acolytes and they would do anything I told them to. I thought this was the stupidest thing I ever heard, so I told them to prove it by leaping into a rock quarry. That was one cult solved, but I only attracted another, and then another, in increasing levels of devotion and outlandishness. My current cult, which I try to ignore, wears orange swim fins at all times (and nothing else) and regularly flagellates themselves with baguettes.
It didn't stop there. People bother me all the time wanting me to tell them what to do. People will interrupt me devouring a Burger King to ask for dietary advice. I go to shit on a country club and they make me a member. I get calls from cable news asking to interview me about your piddling issues and what I think should be done about them. They keep trying to put this thing on my head, I think it's a crown? And the worst part is I can't figure out why. I have no concern for you other than to hasten as quickly as possible your painful demise. I am a hideous monster, propelled by malice, reeking and honking and craving your flesh. But does it alarm you? No! People lay on the street and beg me to step on them, with coy reverse psychology and an affected baby-talk voice that disgusts even me. I try to be even more horrible to put an end to it all, but the worse I get the more thrilled you are at the prospect of me enslaving you. Which brings me to the issue at hand, the most intolerable of the annoyances I suffer: The staggering number of elections I seem to be winning. I have been made, without my knowledge or approval, the president of two PTAs, several HOAs, mayor of various towns across four states, Tax Assessor of Archibald County, Chief Finance Minister of Molvania, and I am told that I have a decent shot at becoming a senator of Florida.
Please, please stop this. Do not write my name on any more ballots. It's weird and a little disturbing. What do I have to do to make you people hate and fear me? Be nice?
I noticed this odd behavior some time ago, shortly after I burned down a Cheesecake Factory. I was being followed everywhere I went by a group of people wearing funny hats that wouldn't stop staring at me. This was unsettling, naturally. I tried eating them, but this only made more of them show up. With no recourse, I decided to converse with them, and they explained that they were my acolytes and they would do anything I told them to. I thought this was the stupidest thing I ever heard, so I told them to prove it by leaping into a rock quarry. That was one cult solved, but I only attracted another, and then another, in increasing levels of devotion and outlandishness. My current cult, which I try to ignore, wears orange swim fins at all times (and nothing else) and regularly flagellates themselves with baguettes.
It didn't stop there. People bother me all the time wanting me to tell them what to do. People will interrupt me devouring a Burger King to ask for dietary advice. I go to shit on a country club and they make me a member. I get calls from cable news asking to interview me about your piddling issues and what I think should be done about them. They keep trying to put this thing on my head, I think it's a crown? And the worst part is I can't figure out why. I have no concern for you other than to hasten as quickly as possible your painful demise. I am a hideous monster, propelled by malice, reeking and honking and craving your flesh. But does it alarm you? No! People lay on the street and beg me to step on them, with coy reverse psychology and an affected baby-talk voice that disgusts even me. I try to be even more horrible to put an end to it all, but the worse I get the more thrilled you are at the prospect of me enslaving you. Which brings me to the issue at hand, the most intolerable of the annoyances I suffer: The staggering number of elections I seem to be winning. I have been made, without my knowledge or approval, the president of two PTAs, several HOAs, mayor of various towns across four states, Tax Assessor of Archibald County, Chief Finance Minister of Molvania, and I am told that I have a decent shot at becoming a senator of Florida.
Please, please stop this. Do not write my name on any more ballots. It's weird and a little disturbing. What do I have to do to make you people hate and fear me? Be nice?
Giant Geese Aren't Real
Posted 4 years agoAnd they definitely aren't trying to eat you. You've probably been hearing from a lot of hysterical people lately that we're all in danger from giant man-eating geese. They even go so far as to say that these geese are the greatest threat to the country, even more than terrorists or homeless people. What nonsense! This lie is pushed by the mainstream media to keep you afraid and obedient. They want to keep you from doing the things you love and living up to your great potential. They want to take away your freedom to hang around large bodies of water covering yourself in barbecue sauce.
Look, I get it. Life is rough these days. This country isn't what it used to be. Every day our freedoms are being taken away from us. The great promises left to us by our forefathers, traditional values like sitting in ponds with apples in our mouths, are being eroded by people who want to disrupt our society. That's why you can't get a girlfriend. These same people are the ones spreading falsehoods about giant bloodthirsty geese. Well, I'm here to tell you the truth. Those shrill postmodernists talking about giant evil geese, they're the real giant geese. I'm here to tell you how you can get everything you want, take back your freedom, and occupy the superior position in society you deserve.
First of all, stop listening to anything the anti-goose east coast elites tell you. They just want to cancel you. Stick it to them by covering your entire body with slices of stale bread and blowing a duck call to alert any nearby waterfowl of your presence. If you do this, you will soon be an alpha male, like me. Just make sure you pay no mind to any sounds like massive webbed feet stomping towards you. That's just fake news.
Another key to success is eating lots of meat tenderizer and cake frosting until you're plump and supple and delicious. Elon Musk does this every day, and he's richer than Albania. You want to be rich, don't you? Of course you do. I have an audiobook for sale right now detailing 5 failproof strategies for becoming rich and powerful. I recommend you listen to it by the duck pond at the park, with headphones, at high volume, not looking at the water or anything that might be coming out of it.
It won't be easy. People are going to tell you not to marinate yourself in a red wine reduction, or pour ranch dressing all over your head, or get between two cartoonishly large slices of bread like a tasty human sandwich. They might call you stupid. They might shun you for it. If you urge others to do these things, they'll accuse you of "feeding the hellish goose monsters that plague us all." They'll point in horror and scream "It's right there! It's fifty feet tall and it's eating a car! Why don't you see it?!" But you'll know the truth. Just keep the faith, my friends, and we'll make America the great, delicious place it always was.
Look, I get it. Life is rough these days. This country isn't what it used to be. Every day our freedoms are being taken away from us. The great promises left to us by our forefathers, traditional values like sitting in ponds with apples in our mouths, are being eroded by people who want to disrupt our society. That's why you can't get a girlfriend. These same people are the ones spreading falsehoods about giant bloodthirsty geese. Well, I'm here to tell you the truth. Those shrill postmodernists talking about giant evil geese, they're the real giant geese. I'm here to tell you how you can get everything you want, take back your freedom, and occupy the superior position in society you deserve.
First of all, stop listening to anything the anti-goose east coast elites tell you. They just want to cancel you. Stick it to them by covering your entire body with slices of stale bread and blowing a duck call to alert any nearby waterfowl of your presence. If you do this, you will soon be an alpha male, like me. Just make sure you pay no mind to any sounds like massive webbed feet stomping towards you. That's just fake news.
Another key to success is eating lots of meat tenderizer and cake frosting until you're plump and supple and delicious. Elon Musk does this every day, and he's richer than Albania. You want to be rich, don't you? Of course you do. I have an audiobook for sale right now detailing 5 failproof strategies for becoming rich and powerful. I recommend you listen to it by the duck pond at the park, with headphones, at high volume, not looking at the water or anything that might be coming out of it.
It won't be easy. People are going to tell you not to marinate yourself in a red wine reduction, or pour ranch dressing all over your head, or get between two cartoonishly large slices of bread like a tasty human sandwich. They might call you stupid. They might shun you for it. If you urge others to do these things, they'll accuse you of "feeding the hellish goose monsters that plague us all." They'll point in horror and scream "It's right there! It's fifty feet tall and it's eating a car! Why don't you see it?!" But you'll know the truth. Just keep the faith, my friends, and we'll make America the great, delicious place it always was.
Valid to eat fingers
Posted 4 years agoI just wanted to weigh in on a controversial topic, put in my two cents worth. Eating fingers is a hot-button issue these days. It seems like everyone I meet, the first thing they want to say to me is a declaration of their opinion about eating fingers. Everyone is so opinionated these days, and everyone feels the need to broadcast their opinions to all who will listen. I don't talk about my beliefs ad nauseum. This journal is the exception to my usual tendency to keep my thoughts to myself and the dark forces I commune with. But so many people have to force their beliefs about eating fingers on me that I felt it was necessary to put a response out there, declare my thoughts on the matter once and for the elucidation of all.
I mean honestly. I mind my own business. Other people's convictions about eating fingers is really no concern of mine. I just go around eating whatever fingers I like, and I don't have to incessantly tell everyone about it. I don't Instagram myself consuming human fingers. I don't do it for likes and attention; I do it because fingers are delicious and good to eat. Why must it be then that I can't simply enjoy eating fingers in peace for its own sake? No, every time I tear a finger off someone's hand and swallow it someone has to take it as an invitation to deluge me with their insipid point of view. I get it; you vape. You're "woke". You think eating fingers is wrong. Well good for you! You want a medal or something? I don't follow you around and threaten you with blunt objects and call the police because you oh-so-piously don't eat fingers. Is there no room for dissenting beliefs anymore?
What I'm trying to say, despite how obnoxious I find the discourse around the topic, I respect the opinions of others. I really do. You have every right to not eat fingers if you don't want to, but you have to realize that I have the same rights. If I choose to clamp my serrated beak on someone's plump digit and rip it off to sate my flesh hunger, that's my choice and you have to respect it. Show me the same courtesy I show you by not lecturing me about how much you're bleeding and wanting your wedding ring back, blah blah blah. I believe though that one day, this social-media-driven attention culture will wane and we can return to the good old days of rational, tolerant discussion and quiet cowering.
I mean honestly. I mind my own business. Other people's convictions about eating fingers is really no concern of mine. I just go around eating whatever fingers I like, and I don't have to incessantly tell everyone about it. I don't Instagram myself consuming human fingers. I don't do it for likes and attention; I do it because fingers are delicious and good to eat. Why must it be then that I can't simply enjoy eating fingers in peace for its own sake? No, every time I tear a finger off someone's hand and swallow it someone has to take it as an invitation to deluge me with their insipid point of view. I get it; you vape. You're "woke". You think eating fingers is wrong. Well good for you! You want a medal or something? I don't follow you around and threaten you with blunt objects and call the police because you oh-so-piously don't eat fingers. Is there no room for dissenting beliefs anymore?
What I'm trying to say, despite how obnoxious I find the discourse around the topic, I respect the opinions of others. I really do. You have every right to not eat fingers if you don't want to, but you have to realize that I have the same rights. If I choose to clamp my serrated beak on someone's plump digit and rip it off to sate my flesh hunger, that's my choice and you have to respect it. Show me the same courtesy I show you by not lecturing me about how much you're bleeding and wanting your wedding ring back, blah blah blah. I believe though that one day, this social-media-driven attention culture will wane and we can return to the good old days of rational, tolerant discussion and quiet cowering.
FA+
