Skip to content

Instantly share code, notes, and snippets.

View jongan69's full-sized avatar
🥀

Jonathan Gan jongan69

🥀
View GitHub Profile
@devnamipress
devnamipress / expo-rules.md
Last active September 2, 2025 04:03
cursor-rules-expo-react-native

Cursor Rules for Expo and React Native Projects

This document outlines the standardized rules and guidelines for developing mobile applications using Expo and React Native. These rules are designed to ensure consistency, maintainability, performance, accessibility, and error-free development across all projects. They apply to all Expo-based React Native apps and are crafted to minimize troubleshooting efforts and enforce best practices.

Cursor Adherence

  • Mandatory Compliance: Cursor must read and strictly follow all rules in this document for every Expo and React Native project.
  • Self-Check: Before generating code or modifying a project, Cursor must verify that its actions align with these guidelines.
  • Error Prevention: If Cursor detects a potential violation of these rules (e.g., creating a new project inside an existing one), it must halt and prompt the user for clarification instead of proceeding.
  • Documentation Reference: Cursor must reference this document (cursor-rules.md) w
@t3dotgg
t3dotgg / try-catch.ts
Last active July 14, 2026 20:54
Theo's preferred way of handling try/catch in TypeScript
// Types for the result object with discriminated union
type Success<T> = {
data: T;
error: null;
};
type Failure<E> = {
data: null;
error: E;
};
{
"version": "0.1.0",
"name": "pump",
"instructions": [
{
"name": "initialize",
"docs": [
"Creates the global state."
],
"accounts": [
@zhe-t
zhe-t / sendTxWithJito.ts
Last active November 17, 2025 21:45
Smart send a transaction using Jito dedicated endpoint
import { Connection, SendOptions } from '@solana/web3.js';
export type JitoRegion = 'mainnet' | 'amsterdam' | 'frankfurt' | 'ny' | 'tokyo';
export const JitoEndpoints = {
mainnet: 'https://mainnet.block-engine.jito.wtf/api/v1/transactions',
amsterdam: 'https://amsterdam.mainnet.block-engine.jito.wtf/api/v1/transactions',
frankfurt: 'https://frankfurt.mainnet.block-engine.jito.wtf/api/v1/transactions',
ny: 'https://ny.mainnet.block-engine.jito.wtf/api/v1/transactions',
tokyo: 'https://tokyo.mainnet.block-engine.jito.wtf/api/v1/transactions',
};
export function getJitoEndpoint(region: JitoRegion) {
@jongan69
jongan69 / Readme.md
Last active January 30, 2023 05:01
A Custom React Hook using Ref Pattern

useTimeout

A custom React Hook that allows you to call a callback after a specified delay.

Usage

import { useTimeout } from './useTimeout';

const callback = () =&gt; {
@jongan69
jongan69 / Blink.js
Last active January 30, 2023 05:57
GPIO Node interfacing
@jongan69
jongan69 / removeYouTubeTranscriptTimestamp.js
Created November 23, 2022 19:02
Console Script for Removing YouTube Video Transcript Timestamps
javascript:document.querySelectorAll('div.segment-start-offset').forEach(r => r.remove())
@Xavier59
Xavier59 / privatekeysolana.js
Created December 28, 2021 14:49
Convert Solana private key from/to base58/uint8array
// exporting from a bs58 private key to an Uint8Array
// == from phantom private key to solana cli id.json key file
// npm install bs58 @solana/web3.js
const web3 = require("@solana/web3.js");
const bs58 = require('bs58');
let secretKey = bs58.decode("[base58 private key here]");
console.log(`[${web3.Keypair.fromSecretKey(secretKey).secretKey}]`);
// exporting back from Uint8Array to bs58 private key
@esprengle
esprengle / urlschemes.json
Created January 28, 2021 23:25
iOS app URL schemes
{
"com.8bit.bitwarden": "bitwarden://",
"com.apple.airport.mobileairportutility": "apmanage://",
"com.apple.appleseed.FeedbackAssistant": "applefeedback://",
"com.apple.AppStore": "itms-apps://itunes.apple.com/",
"com.apple.AppStoreConnect": "shortcuts://run-shortcut?name=Icon%20Themer&input=%7B%22launch%22%3A%22Connect%22%7D",
"com.apple.artistconnect": "shortcuts://run-shortcut?name=Icon%20Themer&input=%7B%22launch%22%3A%22Artists%22%7D",
"com.apple.bnd": "beatsbond://",
"com.apple.Bridge": "com.apple.bridge://x",
"com.apple.calculator": "shortcuts://x-callback-url/run-shortcut?x-error=calc://",
@System-Glitch
System-Glitch / generate_blocks.sh
Last active April 18, 2026 03:10
Tutorial for bitcoin regtest
# Script to generate a new block every minute
# Put this script at the root of your unpacked folder
#!/bin/bash
echo "Generating a block every minute. Press [CTRL+C] to stop.."
address=`./bin/bitcoin-cli getnewaddress`
while :
do