Skip to content

Instantly share code, notes, and snippets.


Rodney Rehm rodneyrehm

View GitHub Profile
rodneyrehm /
Created Feb 23, 2021
OpenShift Secrets

Phoenix Cloud Shared Secrets

Creating Secrets

See OpenShift: Providing sensitive data to pods

oc -n "${NAMESPACE}" delete secret "${SECRET_NAME}"
oc -n "${NAMESPACE}" create secret generic "${SECRET_NAME}" --from-env-file="secrets/${SECRET_NAME}.env"
rodneyrehm /
Created Dec 23, 2020
Patching expo for expo-constants, expo-linking and expo-font to work in Bare Workflow

Patching Expo to work in all workflows (Bare and Managed)

  "expo": {
    "entryPoint": "index.js"
rodneyrehm / AppDelegate.h
Created Nov 19, 2020
AppDelegate - expo-screen-orientation
View AppDelegate.h
#import <Foundation/Foundation.h>
#import <EXUpdates/EXUpdatesAppController.h>
#import <React/RCTBridgeDelegate.h>
#import <UIKit/UIKit.h>
#import <UMCore/UMAppDelegateWrapper.h>
@interface AppDelegate : UMAppDelegateWrapper <RCTBridgeDelegate, EXUpdatesAppControllerDelegate>
rodneyrehm /
Last active Jan 6, 2020
ExpoKit: building non-OTA standalones

ExpoKit: building non-OTA standalones

This gist is based on Hosting An App on Your Servers in order to create standalone applications that contain all bundles and assets (that have not been expo published) and do not download over-the-air updates (OTA).

We needed APKs and IPAs for integration/end-to-end testing that would not pull the latest OTA updates, but rather run the code they were built with. We didn't want to expo publish countless intermediate versions. We needed the ability to build different versions concurrently without one build interfering with the other.


change the values of manifestBaseUrl and releaseChannel in post-expo-export.ts to suit your needs

rodneyrehm / gradlew-output.txt
Created Dec 3, 2019
ExpoKit @sentry/react-native not uploading Debug Information Files
View gradlew-output.txt
➜ ./gradlew bundleRelease --console plain +? ✗ [git:build/daedalus]
Parallel execution with configuration on demand is an incubating feature.
> Configure project :@sentry_react-native
WARNING: The specified Android SDK Build Tools version (28.0.0) is ignored, as it is below the minimum supported version (28.0.3) for Android Gradle Plugin 3.3.2.
Android SDK Build Tools 28.0.3 will be used.
To suppress this warning, remove "buildToolsVersion '28.0.0'" from your build.gradle file, as each version of the Android Gradle Plugin now has a default version of the build tools.
> Configure project :app
AWS Device Farm Plugin version 1.3
rodneyrehm / sentry-clean-debug-information-files.js
Created Jul 17, 2019
Sentry Cleanup: Debug Information Files
View sentry-clean-debug-information-files.js
const axios = require('axios')
const LinkHeader = require('http-link-header')
const nextPage = (header) => {
const link = LinkHeader.parse(header)
const [ next ] = link.get('rel', 'next')
return next && next.results === 'true' ? next.uri : null
rodneyrehm /
Last active Jan 30, 2019
execute batches of HTTP requests in parallel

Parallel HTTP request execution

  • Takes values from a text file and converts them into HTTP requests (against an echo service with a request execution time of 150ms - 200ms).
  • splits the text file into chunks of $CHUNKS number of items which get executed in sequence by a single curl invocation that reuses the connection (reducing TCP and TLS overhead)
  • $PARALLEL number of chunks are executed concurrently by sem (of GNU parallel)


The demo generates 100 requests. Each request's response is stored to disk (because why not).

rodneyrehm / browser.js
Last active Aug 14, 2018
Looking to find low powered devices to disable animations and stuff
View browser.js
import platform from 'platform'
export const OS = ( || '').toLowerCase()
export const ANDROID = OS === 'android'
export const IOS = OS === 'ios'
export const VERSION = parseFloat(platform.version)
export const MAJOR_VERSION = Math.floor(VERSION)

How best to encapsulate data retrieval and conversion stuff as shown in the gustav.mixin.js demo, so that it can be easily used in multiple components like gustav.vue?

The problem here is that from the component's perspective we're only interested in providing ottoId and receiving gustav. All other properties from data, computed, methods are at best irrelevant to the component - at worst may cause conflicts.

Is there any sane way I can stay in the "how a mixin would do it" kind of code, but achieve only the export of computed.gustav, watch.ottoId and created?

rodneyrehm / polyfill-intl.js
Created Aug 21, 2017
Webpack: load Intl polyfill with languages
View polyfill-intl.js
const needsPolyfill = !window.Intl
/* eslint-disable import/no-webpack-loader-syntax */
const intl = require('bundle-loader?lazy&name=intl!intl')
/* eslint-enable import/no-webpack-loader-syntax */
const polyfilled = needsPolyfill && new Promise(resolve => {