Skip to content

Instantly share code, notes, and snippets.

Intro To React

Today we will walk through the creation of our first React web app!

Why React

Coming Soon

Create your first app

First you'll need node.js and a JavaScript editor like atom.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBA8xNyek5IXUX5ZHu+7edB8gtPWK9TEXMDn63c8n9KWCIOeYNYMBTRZeNpdIbpZjnmoJLe1r/La5VFK+fFNAdVyTL7Lq/nPSD/aPUWa7K+uu8vd4Sf2DbJDdfRk66REEjuuD37rOi/l/SCMHlxTNm3/eUM7a6/48NZwggdItnCHlVX6Tyg3v2bAkWWRocLfVUS+mnPQQ1dkALJ8/6GxX4bCIUxnTXWmbubmBOnkEiiJIH9fb1oQk7wTHI6XKqpaYBD8eaODOlQPjV88XKMx0w7s/V3e6bjq0tRMo74TQx9fLNCqPWCMIupJmDCCbRQsyyfA8BVfCxLN8k5avRr3wL eric@mbp
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDDCFlcFe09b6HOIi5w/JtDEeFHVVCXSyOSjHH3JTOa0P5fZlNkwdO5Jy2SAXaMkNVaVi+wVOHV9y3EzLEMF0iM5+HTYI3Hhky34CcFe2VZzHFXhTREyqe8sBC2vdZCMt1xbUWhMAJpE896P4wz5s5stCBm4iO5KGnwyoEXluD8woeL6+nNXpxwOoY560vKHxj0FDhiLihA6UpO8Rllf8oMeyxu0NoUMH8i1po1UzAOW0i7RjMk3a1gAbVvCGbLPXwxXjtH1gFNL9WmQYw/btBbOfOgb7GICsax8Sbua31cph3/e2LxbQZhBIIm+rTV4b9LsUMxuuhhryjXPtPnXeE9 root@hyperion
#
# Qt5 WebEngine Kiosk Runner
# deps: apt-get install python-pyqt5.qtwebengine
#
import sys, os
from PyQt5.QtCore import QUrl
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QWidget, QBoxLayout, QPushButton
from PyQt5.QtWebEngineWidgets import QWebEngineView
import React, { forwardRef, useRef } from "react";
const Input = forwardRef((props, ref) => (
<input type="text" ref={ref} className="input" {...props} />
));
function doSideEffect() {
alert("hey, focused!");
}
@ericvicenti
ericvicenti / intro.md
Last active March 18, 2019 18:45
Ideas for a non-shitty-social network

Problem 1 - Fake Accounts

To mitigate this, the non-shitty network should require a verified phone number. This is far from a complete solution, but most people have one and only one phone number.

Eventually, authorities could be established who vet the real identity of a user, and provide an additional badge of authenticity. (aka Twitters "blue chekmark")

Problem 2 - Meaning of Karma

It is generally a good idea to keep a rating for every user, so that content produced by assholes can be hidden.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD50UfBsc1TsZF2H2eeJNjEyzUYxJC8ZsCWwSQCOiUUMLVoOESn/wRDO1PYKC/mswRWy5Tgx0hpSIQdgY2HBS5Exnm1rjey8QNbd4Rm0lT+9QeikRoCgsCRwes3YcDsNWltL6XEAKCFlobQrTZMH/zwd44jU5bBW9JMcTs3fJ+ybIzdrM2fqiLPTlr86rIUDTW6lJHJi9X7SgAPj7Ml9Rqo379B2SExALOyrjfB36vis7CkOrkEE79FeJJcvQo7JFM6NoYDLmsbXOuQAn1O8PMWxiCWOHVgFDy/p7pUpGu1gxv7Ra4zXsHAMjzJyifj89bPyyr1Y81AZtcnL6QsIkZb ono@ono-maui-restaurant
import Animated from 'react-native-reanimated';
const defaultApplyValue = (v, dest) => v.setValue(dest);
export default function useAnimatedValue(currentValue, applyValue = defaultApplyValue) {
const [val] = useState(new Animated.Value(currentValue));
useEffect(
() => {
applyValue(val, currentValue);
@ericvicenti
ericvicenti / evv.pub.gpg
Created July 29, 2021 08:41
public key
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQGNBGECaCcBDAC0v1pxNonLk02TAncNgi3QZvqmvvOLzdr2kPSCQM+8O3w9xN8Z
WnO7MdeF7fH9yuUvLI9vrDQrE7qhdLB29nvqiDesfzhVgbijOZjKgYfeyk894/6V
xdkrZXhs2pdkYKXp5aFc/ceMpDk0F9RaWv/8nAkB9vSJSByMujj+BehQKjNRGppI
Aa555S3pv4INluElRFkF9EVKmdzSVNMjVXx+9VwNy7uy1aaMTyAXM/ilcljvxjWS
XEOFO8k50A2Q14KYhtT8/IwDBqXu3SvZGpXFmkgicX0yNobKJ0E1Mc1DPBsh584X
4zt8Gt2rdaXHA1/RWzxdY7lQLzpz47S0VDZcfP1U0Z10lMJN9yj7r6hh3Zn1vj2u
Gl0x8fzJ2rY4csFmD9o7UUsFG+2JA9qbveVTvGmomqLgfqOZwE+6mw06tipHQu3r
DIX+eeK8mEQzUSzEmZHC4FhB3LO1RlCu5ZQIr5mnuqGUc/ZpRwdmp6liHrGHxzUA
@ericvicenti
ericvicenti / startServer.js
Created December 5, 2018 21:08
Start server gracefully on unix socket
const fs = require('fs');
const net = require('net');
async function isSocketInUse(socketPath) {
return new Promise((resolve, reject) => {
const clientSocket = new net.Socket();
clientSocket.on('error', e => {
if (e.code === 'ECONNREFUSED') {
resolve(false);
} else {