Skip to content

Instantly share code, notes, and snippets.

View MikeBild's full-sized avatar
🏠
Working from home

Mike Bild MikeBild

🏠
Working from home
View GitHub Profile
@MikeBild
MikeBild / dynamodb-single-table.ts
Created September 29, 2022 08:09
DynamoDB single table helper
import { DynamoDB } from 'aws-sdk';
export interface Entity {
id: string;
}
export default (tableName: string) => {
const ddb = new DynamoDB();
return (dataType: string) => {
@MikeBild
MikeBild / aws_iot.ino
Created November 6, 2019 16:51
ESP8622 AWS IoT Client
#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 April 8, 2019 08:39
AWS-CDK CloudFront CDN + S3 WebSite deployment with automatic cache invalidation
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');
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 23:07
Avoid async/await on integration level
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 September 12, 2017 20:28
API Prototype - compose React components to Higher-Order-Components with GraphQL Fragment / Query composer
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 April 10, 2017 12:40
Proof of Concept (recompose) - Bank-Account-System composition with higher-order functions (NodeJS6)
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 November 10, 2016 10:26
Q&A - I wanna understand TypeScript - Part TypeScript Union Types as Redux Action Tags
// 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 October 30, 2016 06:22
Memoize - you never need constructor/property based dependency injection in JavaScript
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 October 29, 2016 17:27
Simple Order-Saga example in RxJS (without Saga-Log)
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)