Skip to content

Instantly share code, notes, and snippets.

Mike Bild MikeBild

Block or report user

Report or block MikeBild

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@MikeBild
MikeBild / aws_iot.ino
Created Nov 6, 2019
ESP8622 AWS IoT Client
View aws_iot.ino
#define ESP8622
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <AmazonIOTClient.h>
#include "Esp8266AWSImplementations.h"
#include <Wire.h>
#include <MechaQMC5883.h>
@MikeBild
MikeBild / website-deploy.js
Created Apr 8, 2019
AWS-CDK CloudFront CDN + S3 WebSite deployment with automatic cache invalidation
View website-deploy.js
const { join } = require('path');
const { Stack, RemovalPolicy, ScopedAws, CfnOutput } = require('@aws-cdk/cdk');
const { Bucket } = require('@aws-cdk/aws-s3');
const { BucketDeployment, Source } = require('@aws-cdk/aws-s3-deployment');
const {
CloudFrontWebDistribution,
ViewerProtocolPolicy,
PriceClass,
OriginProtocolPolicy,
} = require('@aws-cdk/aws-cloudfront');
View Demo
import React, { useState } from 'react';
import { render } from 'react-dom';
const todosStore = {
todos: {
'1': {
id: '1',
text: '',
},
},
@MikeBild
MikeBild / async-await-promise-all-error-handling.js
Last active May 10, 2018
Avoid async/await on integration level
View async-await-promise-all-error-handling.js
const defaultFirst = 'A`'
const defaultSecond = 'B`'
const defaultThird = 'C`'
async function doFirst() {
// throw new Error('Error A')
return await 'A'
}
async function doSecond() {
@MikeBild
MikeBild / compose-graphql-queries.js
Last active Sep 12, 2017
API Prototype - compose React components to Higher-Order-Components with GraphQL Fragment / Query composer
View compose-graphql-queries.js
export const Gists = props =>
<div>
{
props.viewer.gists &&
props.viewer.gists.map(x => <p>{x.description}</p>)
}
</div>
export const GistsWithGraphQL = compose(
withGraphQL(variables => Fragment`fragment gists on Gist {
@MikeBild
MikeBild / bank-account-system-poc.js
Last active Apr 10, 2017
Proof of Concept (recompose) - Bank-Account-System composition with higher-order functions (NodeJS6)
View bank-account-system-poc.js
const account = openBankAccount({name: 'Max Muster'})({})
account.deposit(1000)
account.withdraw(800)
account.withdraw(800)
// use compose(...) building block
const { calculateBalance, name, transactions, save} = compose(withBalanceCalculation({}), withStore())(account)
console.log(`${name}: ${calculateBalance()} [${transactions.map(x => x.deposit || 0 - x.withdraw)}]`)
console.log(save())
// same stuff, but use the handy way
@MikeBild
MikeBild / demonstration.js
Created Nov 10, 2016
Q&A - I wanna understand TypeScript - Part TypeScript Union Types as Redux Action Tags
View demonstration.js
// demonstrate
const simulateActions = [
addTodo({text: 'todo 1'}),
addTodo({text: 'todo 2'}),
toggleTodo({index: 0}),
toggleTodo({index: 1}),
];
const actual = simulateActions.reduce(todosReducer, []);
console.log(actual);
@MikeBild
MikeBild / app.js
Last active Oct 30, 2016
Memoize - you never need constructor/property based dependency injection in JavaScript
View app.js
const require1 = require('./require1');
const require2 = require('./require2');
const require3 = require('./require3');
console.log(require1.getValue());
console.log(require2.getValue());
console.log(require3.getValue());
@MikeBild
MikeBild / order-saga.js
Last active Oct 29, 2016
Simple Order-Saga example in RxJS (without Saga-Log)
View order-saga.js
const Rx = require('rx');
// simulate transactions
const bookCar = id => Rx.Observable.return({sagaId: id, 'Car A': true}).delay(1000);
const bookHotel = id => Rx.Observable.return({sagaId: id, 'Hotel B': true}).delay(1000);
const bookFlight = id => Rx.Observable.return({sagaId: id, 'Flight C': true}).delay(1000);
// simulate error
//const bookFlight = id => Rx.Observable.throw({sagaId: id, 'Flight C': true}).delay(1000);
// transaction compensation (idempotence)
@MikeBild
MikeBild / coin-changer.js
Last active Oct 29, 2016
Resource lifetime binding to RxJS stream
View coin-changer.js
const Rx = require('rx');
const coinsStream = Rx.Observable.fromArray([1,2,5,10,20,50,100].reverse());
Rx.Observable
// bind CoinResource lifetime to the stream lifetime
.using(() => new CoinResource(9), resource => coinsStream.map(x => ({ amount: resource.getValue(), coin: x })))
// calculations
.reduce((state, e) => {
const amount = (state.length > 0) ? state[state.length-1].rest : e.amount;
You can’t perform that action at this time.