Skip to content

Instantly share code, notes, and snippets.

View stowball's full-sized avatar

Matt Stow stowball

View GitHub Profile
@stowball
stowball / plain-text.txt
Created March 28, 2024 10:36
The Psychology Behind a Successful Crowdfunding Campaign - Launchboom https://www.launchboom.com/blog/the-psychology-behind-a-successful-crowdfunding-campaign/
There are so many factors that can impact the result of a crowdfunding campaign. If you’re familiar with LaunchBoom’s strategy for success, you already know some of the marketing methodologies that can help you outperform traditional crowdfunding methods.
However, you might not be aware of the psychology behind successful crowdfunding campaigns — in relation to both creators and backers.
To do this, you need to understand not only the correct creator mindset but the mindset of crowdfunding backers as well. Once you have a firmer grasp of these concepts, it will help to alleviate a lot of the doubt surrounding a major endeavor like a crowdfunding launch.
Let’s start with the creator mindset, and dispelling any myths about success in crowdfunding.
Key takeaways for understanding the psychology behind crowdfunding success
Understanding the measures of successful crowdfunding, ranging from the goals you must hit to the business metrics you must calculate
@stowball
stowball / 1st.md
Last active July 28, 2023 22:46
ChatCPT rules help

The game contains various cards, each containing a flower, such as Red Daisy. The Red Daisy card appears multiple times, but 1 of them has a Bee on it. The aim of the game is for players to draft and arrange flower cards in a 3x3 grid to achieve the highest score.

When players place a flower card with a bee, they score 1 point for each adjacent card that has an identical flower as the one with the bee. I'd like to write this rule succinctly, starting with "Earn 1 point…" ChatGPT


Earn 1 point for each adjacent card that shares the same flower type as the card with the Bee.


@stowball
stowball / placeholder-image.js
Last active June 20, 2023 06:13
Placeholder React Components
function PlaceholderImage({
height,
width,
...consumerProps
}) {
return (
<img
{...consumerProps}
alt=""
src={`https://placehold.co/${width}x${height}.png`}
@stowball
stowball / inheritance-core-rules.md
Created December 24, 2022 14:40
Inheritance Core Rules Re-write suggestions

Wedding bells are ringing! The successor to the most powerful family in the Kingdom is without a partner. Win the favour of the Successor and keep other Admirers at bay to secure a piece of the Inheritance. If you start your turn with the Ring of Favour, you win!

Using this Rulebook

This rulebook contains the core rules for Inheritance. These rules can be used with no changes for three or four players; all other player counts require slight variations of this core ruleset. While these rules can be used for the four-player game, the team variant in the ‘Variants & Expansions’ Rulebook is strongly recommended.

Read this rulebook first, then refer to the ‘Variants & Expansions’ Rulebook to learn how to apply the rules at different player counts.

Overview

@stowball
stowball / anti-adblocker-notifications.css
Last active July 23, 2023 11:29
Stylus user stylesheets
metering-modal,
.fc-ab-root.fc-ab-root.fc-ab-root,
[class*="sp_veil"][class*="sp_veil"][class*="sp_veil"],
[class*="sp_message_container"][class*="sp_message_container"][class*="sp_message_container"],
[id*="__vliadb"][id*="__vliadb"][id*="__vliadb"],
.ml-webforms-popup-overlay,
webpushrpromptconatiner,
[class*="popupally"],
#onesignal-slidedown-container,
.pushowl-optin,
@stowball
stowball / resolveAfter2Seconds.js
Created July 12, 2021 01:02
Dummy async function to resolve after 2 seconds
function resolveAfter2Seconds(data) {
return new Promise(resolve => {
setTimeout(() => {
resolve(`resolved, ${data}`);
}, 2000);
});
}
@stowball
stowball / convertObjectToCustomProperties.js
Created March 31, 2021 01:21
Convert an object to custom properties with refs
// Adapted from https://stackoverflow.com/a/53620876/1390770
const convertObjectToCustomProperties = obj => {
const isLeaf = val => typeof val === 'string';
const addDelimiter = (head, key) => (head ? `${head}-${key}` : key);
const paths = (pathObj = {}, head = '') => {
return Object.entries(pathObj).reduce((product, [key, value]) => {
const path = addDelimiter(head, key);
return isLeaf(value)
<!----><div data-v-d671142e="" class="body"><h1 data-v-d671142e="" class="title">The new v-model</h1><!----><div data-v-d671142e="" class="lesson-body"><p>As you probably know,<code>v-model</code> allows us to very quickly and easily capture an input’s value into the state of our application. Every time the user types or interacts with an input, <code>v-model</code> will let the parent know so that it can update our state.</p>
<p>In Vue 3, <code>v-model</code> has gone through a redesign that gives us more power and flexibility when defining how this double binding should be done.</p>
<hr>
<h2>Kicking it off with Native inputs</h2>
<p>Let’s start by looking at a native input element.</p>
<pre><code class="hljs language-html"><span class="hljs-tag">&lt;<span class="hljs-name">template</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text"</span> /&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">templ
javascript:(function()%7Bconsole.log(%0A%20%20Array.from(document.querySelectorAll('a%2C%20button')).reduce((str%2C%20action%2C%20index%2C%20arr)%20%3D%3E%20%7B%0A%20%20%20%20const%20ariaHiddenEls%20%3D%20Array.from(action.querySelectorAll('%5Baria-hidden%5D'))%3B%0A%20%20%20%20const%20visuallyHiddenEls%20%3D%20Array.from(action.querySelectorAll('.visually-hidden'))%3B%0A%20%20%20%20const%20visuallyHiddenText%20%3D%20%5B%5D%3B%0A%20%20%20%20const%20ariaLabel%20%3D%20action.getAttribute('aria-label')%20%7C%7C%20''%3B%0A%20%20%20%20const%20isHashLink%20%3D%20action.getAttribute('href')%20%26%26%20action.getAttribute('href').startsWith('%23')%3B%0A%20%20%20%20const%20hashLink%20%3D%20isHashLink%20%26%26%20action.getAttribute('href').startsWith('%23%2F')%20%3F%20'%23%2F%20'%20%3A%20'%23%20'%3B%0A%20%20%20%20let%20addendum%20%3D%20''%3B%0A%0A%20%20%20%20let%20textContent%20%3D%20action.textContent%3B%0A%20%20%20%20if%20((action.querySelector('svg')%20%26%26%20!textContent)%20%7C%7C%20action.classList.contains('Ico
javascript:(function()%7Bconsole.log(%0A%20%20Array.from(document.querySelectorAll('h1%2C%20h2%2C%20h3%2C%20h4%2C%20h5%2C%20h6')).reduce((str%2C%20heading%2C%20index%2C%20arr)%20%3D%3E%20%7B%0A%20%20%20%20const%20level%20%3D%20Number(heading.tagName.slice(1))%3B%0A%0A%20%20%20%20if%20(level%20%3D%3D%3D%201%20%26%26%20heading.textContent%20%3D%3D%3D%20'No%20Preview')%20%7B%0A%20%20%20%20%20%20return%20str%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20const%20previousLevel%20%3D%20index%20%3D%3D%3D%200%20%3F%20level%20%3A%20Number(arr%5Bindex%20-%201%5D.tagName.slice(1))%3B%0A%20%20%20%20const%20indentation%20%3D%20(level%20-%20previousLevel%20%3E%201%20%3F%20'*'%20%3A%20'-').repeat(level)%3B%0A%20%20%20%20const%20isAriaHidden%20%3D%20heading.getAttribute('aria-hidden')%20%3D%3D%3D%20'true'%3B%0A%20%20%20%20const%20isDisplayNone%20%3D%20getComputedStyle(heading).display%20%3D%3D%3D%20'none'%3B%0A%20%20%20%20const%20isVisibilityHidden%20%3D%20getComputedStyle(heading).visibility%20%3D%3D%3D%20'hidden'%3B%0A%20%20%20%20c