Skip to content

Instantly share code, notes, and snippets.

This is a template for writing product opportunities. These are documents that illuminate some level of strategic thinking related to a particular product pain point that customers have. Typically they are accompanied by research (data, customer conversations, competitive analysis, etc.). This template helps break down the work so that Product Managers can keep moving quickly.

Product Opportunity Template

The purpose of filling out this document is to provide enough information for your colleagues to understand the opportunity, research (customer conversations and data), and value of tackling this work. It is not intended to provide solutions, scope or anything necessary to start the project or determine the next steps to start the project. This document focuses squarely on the problem space.


Questions

@squarism
squarism / iterm2.md
Last active May 11, 2024 03:41
An iTerm2 Cheatsheet

Tabs and Windows

Function Shortcut
New Tab + T
Close Tab or Window + W (same as many mac apps)
Go to Tab + Number Key (ie: ⌘2 is 2nd tab)
Go to Split Pane by Direction + Option + Arrow Key
Cycle iTerm Windows + backtick (true of all mac apps and works with desktops/mission control)
@jtrain
jtrain / addgens_fromcsv.py
Created October 5, 2011 23:57
Add generators to PSSE case from csv file: Restructured version
"""
Add machines (gens and svcs) to the working case from a CSV file named:
``genslist.csv ``
This csv file **must** exist in the current directory. For
gens we add all to the case with status off. ECDI will take care of status.
For SVCs we only want them to be in service in and after the year specified in
the CSV. (Neither ECDI nor OPF [since fict SVCs control their own bus] will
control status of fict SVCs) NOTE: Script only works correctly IF case name
@jordanlambrecht
jordanlambrecht / autoDeleteGmail.js
Last active May 11, 2024 03:38
Auto Delete / Archive Emails in Gmail
function autoDelete() {
console.log('Started autoDelete run.');
var delayDays = 2;
var maxDate = new Date();
maxDate.setDate(maxDate.getDate()-delayDays);
var label = GmailApp.getUserLabelByName("delete me");
var threads = label.getThreads();
if(threads.length > 0){
console.log('Found ' + threads.length + ' emails marked for deletion.');
@thesamesam
thesamesam / xz-backdoor.md
Last active May 11, 2024 03:33
xz-utils backdoor situation (CVE-2024-3094)

FAQ on the xz-utils backdoor (CVE-2024-3094)

This is a living document. Everything in this document is made in good faith of being accurate, but like I just said; we don't yet know everything about what's going on.

Background

On March 29th, 2024, a backdoor was discovered in xz-utils, a suite of software that

@toryano0820
toryano0820 / wsl2-ubuntu-map-win-localhost.sh
Last active May 11, 2024 03:32
For WSL2: Fixes "Connection Refused" issue when accessing Windows localhost services. Run with "sudo sh wsl2-ubuntu-map-win-localhost.sh" !!! Remember to backup "/etc/hosts" just in case !!!
nameserver=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}') # find nameserver
[ -n "$nameserver" ] || "unable to find nameserver" || exit 1 # exit immediately if nameserver was not found
echo "##### nameserver found: '$nameserver'"
localhost_entry=$(grep -v "127.0.0.1" /etc/hosts | grep "\slocalhost$") # find localhost entry excluding 127.0.0.1
if [ -n "$localhost_entry" ]; then # if localhost entry was found
echo "##### localhost entry found: '$localhost_entry'"
sed -i "s/$localhost_entry/$nameserver localhost/g" /etc/hosts # then update localhost entry with the new $nameserver
else # else if entry was not found
echo "##### localhost entry not found"
echo "$nameserver localhost" >> /etc/hosts # then append $nameserver mapping to localhost
@yiboyang
yiboyang / xclip aliases for startup scripts
Last active May 11, 2024 03:31
A few xclip aliases to simplify copying/pasting
# to simplify life, install xclip and append the following lines to your .bashrc
alias "c=xclip" # copy to X clipboard (register *)
alias "cs=xclip -selection clipboard" # copy to system wide clipboard (register +)
alias "v=xclip -o" # output copied content (paste)
alias "vs=xclip -o -selection clipboard" # paste from system wide clipboard (equivalent to `v -selection clipboard`)
# examples:
# copy to X:
# go to the same directory in terminal 2 as in terminal 1
# Terminal 1:
@Ryonez
Ryonez / (Unofficial) Discord server rules suggestions list.md
Last active May 11, 2024 03:28
(Unofficial) Discord server rules suggestions list

Discord

(Unofficial) Discord server rules suggestions list

Author's Note

I'll start off with letting you know this is a fork from someone else. However, for some bizarre reason, this is the one everyone finds, so I better get round to updating this. Credit to Cristiano#2233 for the original idea.

Also, I've had a lot of people saying the rules are to strict. If you pick all the rules here, you're right, it would be very strict. However the rules below are guidelines! They are there for you to pick the ones you desire, you can ignore ones you don't want. Hopefully they might help with rules you wouldn't have thought of otherwise.

@proudlygeek
proudlygeek / nfs-tunnel.md
Last active May 11, 2024 03:25
Mount NFS Folder via SSH Tunnel

1. Install NFS on Server

Install the required packages (Ubuntu 12.04):

apt-get install nfs-kernel-server portmap

2. Share NFS Folder

Open the exports file:

vim /etc/exports
@sruf
sruf / Country lookup by country code
Last active May 11, 2024 03:24
Country lookup by country code
=IF(ISNA(VLOOKUP(LEFT(A1,8),'Country codes'!A:B,2,FALSE)),
IF(ISNA(VLOOKUP(LEFT(A1,7),'Country codes'!A:B,2,FALSE)),
IF(ISNA(VLOOKUP(LEFT(A1,6),'Country codes'!A:B,2,FALSE)),
IF(ISNA(VLOOKUP(LEFT(A1,5),'Country codes'!A:B,2,FALSE)),
IF(ISNA(VLOOKUP(LEFT(A1,4),'Country codes'!A:B,2,FALSE)),
IF(ISNA(VLOOKUP(LEFT(A1,3),'Country codes'!A:B,2,FALSE)),
IF(ISNA(VLOOKUP(LEFT(A1,2),'Country codes'!A:B,2,FALSE)),,
VLOOKUP(LEFT(A1,2),'Country codes'!A:B,2,FALSE)),
VLOOKUP(LEFT(A1,3),'Country codes'!A:B,2,FALSE)),
VLOOKUP(LEFT(A1,4),'Country codes'!A:B,2,FALSE)),