Skip to content

Instantly share code, notes, and snippets.

View eonist's full-sized avatar
🎯
Focusing

André J eonist

🎯
Focusing
View GitHub Profile
@eonist
eonist / product hunt 2023
Created April 13, 2023 13:22
product hunt launch advice 2023
#1 Your friends/family upvote plan can flag the PH Algo as unethical, you need to ensure these folks already have a PH profile + warmed up with PH activities. Or else, you may either notice other products with lesser upvotes going ahead of you, or X upvotes getting removed from your listing on the day of launch!
#2 Sending large volume (500-1000+ visitors) via say cold emails straight to your PH page can flag the Algo. We got an external traffic of 500+ relevant visitors over a 1hr period & saw 30 upvotes vanish!
#3 "Notify Me" on coming soon page is your biggest asset! A 500+ notify me list can get you 200+ upvotes of regular PH folks! Setup a 4-6 week pre launch warmup activity - find products in your niche, see regular PH folks who upvoted, find them on Ln/email/slack communities & see if they'd like to support you with upvotes/feedback. Team of 6-10 ppl can easily warm up 600-800 folks.
#4 Get a hunter with ur product niche ICP, that helps get a good 100-150 votes. Really expensive hunters who c
@eonist
eonist / places to launch
Created April 13, 2023 12:21
places to launch
BetaPage https://betapage.co/
Better Business Bureau https://www.bbb.org/
Big Startups https://biqstartups.co/overview/sub
Bing https://www.bingplaces.com/
Bloombuzz https://bloombuzz.in/joinus/
Boing Boing https://boingboing.net
Bootstrappers bootstrappers.io
Built In https://builtin.com/expert-contributors
Business Insider https://www.businessinsider.in/contributors
Business Software https://www.business-software.com/add-
@eonist
eonist / investor_CRM_markdown.md
Last active September 24, 2022 11:34
Investor CRM in markdown

Investor CRM in markdown

investor type priority relation intro path status Notes
Sequoia mega-vc low cold as ice gates of hell reconnect Sequoia.com
Rahul Vohra angle medium cold Ollie Forsyth reconnect superhuman.com / Antler.com

Status types:

  • dilligence 🧐
@eonist
eonist / ThreadSafeBox.swift
Created May 27, 2022 00:53
Thread safe value
/// `ThreadSafeBox` is a helper class that allows use of resource (value) in a thread safe manner.
/// All read and write calls are wrapped in concurrent `DispatchQueue` which protects writing to
/// resource from more than 1 thread at a time.
class ThreadSafeBox<T>: CustomDebugStringConvertible {
private let queue = DispatchQueue(label: "com.someurl.ThreadSafeBox")
fileprivate var value: T
init(value: T) {
self.value = value
}
@eonist
eonist / UIApp+Ext.swift
Last active February 24, 2022 15:43
Colorize status menu iOS 15
/**
* Window and statusbar (iOS 15 etc)
*/
extension UIApplication {
/**
* - Note: Key Scene can be found by doing keyWin.windowScene
*/
public var keyWin: UIWindow? {
UIApplication
.shared
@eonist
eonist / UIFont+Ext.swift
Created June 26, 2021 14:38
bold notion for UIFont
import UIKit.UIFont
/**
* Example: let titleLabel = UILabel()
* titleLabel.font = titleLabel.font.bold //no need to include size!
*/
var bold: UIFont {
return withTraits(traits: .traitBold)
}
func withTraits(traits: UIFontDescriptorSymbolicTraits...) -> UIFont {
let descriptor = self.fontDescriptor
@eonist
eonist / UILabel+Padding.swift
Created June 26, 2021 13:47
Makes it possible to add padding to UILabel.
/**
* Makes it possible to add padding to UILabel.
* EXAMPLE: $0.padding = UIEdgeInsets(top: -10, left: 0, bottom: -10, right: 0)
*/
extension UILabel {
private struct AssociatedKeys {
static var padding = UIEdgeInsets()
}
public var padding: UIEdgeInsets? {
@eonist
eonist / Optional+Ext.swift
Created May 26, 2021 09:49
Print optionals ✨
/**
* ## Example:
* let optionatVatue1: Int? = 32 // String interpolation produces a debug description for an optional
* let optionalVatue2: Int? = nil
* Swift print("value is \(optionatVatue1)")// did you mean to make this explicit?, Optional (32)
* print("\(optionalVatue1)") // Value is 32
* print("\(optionalVatue2)") // Value is nil
*/
extension String: StringInterpolation {
mutating func appendInterpotation<T: CustomStringConvertib1e>(value: T?) {
.text-transparent color: transparent; Aa
.text-current color: currentColor; Aa
.text-black color: #000; Aa
.text-white color: #fff; Aa
.text-gray-100 color: #f7fafc; Aa
.text-gray-200 color: #edf2f7; Aa
.text-gray-300 color: #e2e8f0; Aa
.text-gray-400 color: #cbd5e0; Aa
.text-gray-500 color: #a0aec0; Aa
.text-gray-600 color: #718096; Aa
Pink
#ff2d55
Purple
#5856d6
Orange
#ff9500
Yellow