Skip to content

Instantly share code, notes, and snippets.

View mihaiserban's full-sized avatar

Mihai Serban mihaiserban

View GitHub Profile
# Originally created by for ImageMagick
#! /bin/sh
function print_example() {
echo "Example"
echo " icons ios ~/AppIcon.png ~/Icons/"
function print_usage() {
echo "Usage"
mihaiserban /
Created January 20, 2016 15:09 — forked from debashisbarman/
A Twitter bot that can retweet in response to the tweets matching particluar keyword (

#Creating a Twitter bot with Node.js Learn how you can create your own Twitter bot using Node.js and the new Twitter API. The bot will auto retweet in response to tweets with some particular hashtags. (

##Tools we need Here are the tools we’ll be using to create the bot — 

  • Node.js installed in your machine
  • A registered Twitter account

Create a Twitter application

mihaiserban / on-jsx.markdown
Created February 9, 2018 18:17 — forked from chantastic/on-jsx.markdown
JSX, a year in

Hi Nicholas,

I saw you tweet about JSX yesterday. It seemed like the discussion devolved pretty quickly but I wanted to share our experience over the last year. I understand your concerns. I've made similar remarks about JSX. When we started using it Planning Center, I led the charge to write React without it. I don't imagine I'd have much to say that you haven't considered but, if it's helpful, here's a pattern that changed my opinion:

The idea that "React is the V in MVC" is disingenuous. It's a good pitch but, for many of us, it feels like in invitation to repeat our history of coupled views. In practice, React is the V and the C. Dan Abramov describes the division as Smart and Dumb Components. At our office, we call them stateless and container components (view-controllers if we're Flux). The idea is pretty simple: components can't

mihaiserban / gist:686513c632152c4d987aa853026891a9
Created February 11, 2018 17:59
try catch async await express
router.get('/user/:id', async (req, res, next) => {
try {
const user = await getUserFromDb({ id: })
} catch (e) {
//this will eventually be handled by your error handling middleware
var request = require('request');
const MEDIA_URL = ''
function postMedia(token, filename, mediaType, mediaData) {
return new Promise((resolve, reject) => {
var formData = {
custom_file: {
value: new Buffer(mediaData),
options: {
mihaiserban / config.yml
Created March 10, 2018 09:48
now zeit circleci deployment
version: 2
- image: 'circleci/node:9.7.1'
- master
- checkout
mihaiserban /
Created May 10, 2018 20:47 — forked from monicao/
React Lifecycle Cheatsheet

React Component Lifecycle

  • getInitialState
  • getDefaultProps
  • componentWillMount
  • componentDidMount
  • shouldComponentUpdate (Update only)
  • componentWillUpdate (Update only)
  • componentWillReceiveProps (Update only)
  • render
mihaiserban / gist:e48b6a90ff6f07ba53255a2d60d8c194
Created June 15, 2018 14:04
Functional input react component
/* global window */
import React from 'react'
import PropTypes from 'prop-types'
const InputField = ({
label = 'Password',
invalidLabel = 'The password field is required.',
placeholder = 'Enter your password',
mihaiserban / circle.yml
Created October 5, 2018 09:11
Auto deployment to from Circle CI
version: 8
branch: master
owner: my-company
- ./
mihaiserban / encryption.js
Created October 29, 2018 22:01 — forked from vlucas/encryption.js
Stronger Encryption and Decryption in Node.js
'use strict';
const crypto = require('crypto');
const ENCRYPTION_KEY = process.env.ENCRYPTION_KEY; // Must be 256 bytes (32 characters)
const IV_LENGTH = 16; // For AES, this is always 16
function encrypt(text) {
let iv = crypto.randomBytes(IV_LENGTH);
let cipher = crypto.createCipheriv('aes-256-cbc', new Buffer(ENCRYPTION_KEY), iv);