Skip to content

Instantly share code, notes, and snippets.

View jdowning's full-sized avatar
😇

Justin Downing jdowning

😇
View GitHub Profile
@jdowning
jdowning / value.md
Created October 21, 2024 21:15
Value creation by moving up the stack

Why is it so tough to hire a designer?

Value is moving up the stack

As happens in most industries, value creation is moving up the stack. That is, companies make money in new technology-driven arenas at first by differentiating on performance, engineering, cost, etc. As industries evolve, core infrastructure gets built and commoditized, and differentiation moves up the hierarchy of needs from basic functionality to non-basic functionality, to design, and even to fashion.

For example, there was a time when chief buying concerns included how well a watch might tell time and how durable a pair of jeans was. There is still plenty of core technology to be built for the Internet, but the fact that you can now be a fairly sizable Internet company without ever needing to own (or even look at) your server hardware means a much bigger proportion of what companies do is add value on top what’s here. And one of the most powerful ways to add value is through design.

-- Evan Williams (@ev)
https://ev.mediu

@jdowning
jdowning / gist:90e4da884b240d324a284a9d28d6b093
Created May 10, 2024 21:57
Create a Postgres dump and transfer to your local workstation
# Bonus: you could use jq and save the value in env vars to be passed into later commands
❯ heroku api post /sources
POST api.heroku.com/sources... 201
{
"source_blob": {
"get_url": "presigned_s3_GET_url",
"put_url": "presigned_s3_PUT_url"
}
}
@jdowning
jdowning / ami-clean.sh
Last active December 26, 2023 20:09
Script to clean up Ubuntu EC2 instance before packaging as an AMI
#!/bin/bash
# This script cleans up your EC2 instance before baking a new AMI.
# Run the following command in a root shell:
#
# bash <(curl -s https://gist.github.com/justindowning/5921369/raw/ami-clean.sh)
function print_green {
echo -e "\e[32m${1}\e[0m"
}

Make it real

Ideas are cheap. Make a prototype, sketch a CLI session, draw a wireframe. Discuss around concrete examples, not hand-waving abstractions. Don't say you did something, provide a URL that proves it.

Ship it

Nothing is real until it's being used by a real user. This doesn't mean you make a prototype in the morning and blog about it in the evening. It means you find one person you believe your product will help and try to get them to use it.

Do it with style

@jdowning
jdowning / venu.xml
Created December 26, 2021 08:55
Garmin Venu Device Info
<Creator>
<Name>Venu</Name>
<UnitId>3322992137</UnitId>
<ProductID>3226</ProductID>
<Version>
<VersionMajor>6</VersionMajor>
<VersionMinor>50</VersionMinor>
<BuildMajor>0</BuildMajor>
<BuildMinor>0</BuildMinor>
</Version>
@jdowning
jdowning / vagrant-clean.sh
Last active December 13, 2021 06:59
Script to clean up Ubuntu Vagrant box before packaging
#!/bin/bash
# This script zeroes out any space not needed for packaging a new Ubuntu Vagrant base box.
# Run the following command in a root shell:
#
# bash <(curl -s https://gist.github.com/justindowning/5670884/raw/vagrant-clean.sh)
function print_green {
echo -e "\e[32m${1}\e[0m"
}
@jdowning
jdowning / check-kafka-private-link.sh
Created June 23, 2020 19:13
Check Heroku Kafka PrivateLink ports
@jdowning
jdowning / README.md
Created January 15, 2020 17:15
Parameterized KMS Key Policy

Set variables to use in template:

# note: these are example values
export AWS_ACCOUNT_ID=012345678901         
export HEROKU_DATA_ACCOUNT_ID=098765432109

Use the key policy with the variables:

envsubst &lt; key_policy.json
@jdowning
jdowning / kms-iam-policy.json
Created January 9, 2020 19:24
KMS IAM Policy for a shared Customer Master Key
{
"Id": "KMS-policy",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Enable IAM User Permissions",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<your_aws_account_id>:root"
},
@jdowning
jdowning / minimal.txt
Created November 12, 2019 18:25
Package list for Ubuntu Minimal and Standard AMI
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-============================-===================-===================-=============================================================
ii acl 2.2.52-3 amd64 Access control list utilities
ii acpid 1:2.0.26-1ubuntu2 amd64 Advanced Configuration and Power Interface event daemon
ii adduser 3.113+nmu3ubuntu4 all add and remove users and groups
ii apparmor 2.10.95-0ubuntu2.11 amd64 user-space parser utility for AppArmor
ii apport 2.20.1-0ubuntu2.20 all automatically generate crash reports for debugging