Skip to content

Instantly share code, notes, and snippets.

Working from home.

Baylee Schmeisser bayleedev

Working from home.
View GitHub Profile
View change-case.js
function snakeToCamel (word, upperCamelCase) {
const sections = word.split('_')
return, i) => {
if (upperCamelCase || i > 0) {
return section[0].toUpperCase() + section.slice(1).toLowerCase()
return section.toLowerCase()
View loop-promise.js
const urls = [
let follower = Promise.resolve()
for (let currentUrl of urls) {
follower = follower.then(() => {
View main.scss.diff
diff --git a/sass/main.scss b/sass/main.scss
index bed1fa2..00bb466 100644
--- a/sass/main.scss
+++ b/sass/main.scss
@@ -74,7 +74,7 @@ section#zazu {
padding: 0;
margin: 0;
max-height: 310px;
- overflow-y: scroll;
+ overflow-y: hidden;
View install_scenarios.feature
Scenario 1: happy path
git clone is successful
npm install is successful
restart zazu
no action - be fast!


Zazu is a fully extensible open source launcher. There are binaries that can be downloaded for Windows, Linux and Mac. I'm going to show you how to get started on a mac, but the steps are almost identical on other operating systems.


To download Zazu, go to '' and click 'download', then select your operating system. Walk through the steps to install it on your computer, then launch the application for the first time. You'll soon be greeted with a notification telling you that your plugins have finished installing.



## Core vision

A fully extensible and open source app launcher for hackers, creators and dabblers. It comes with sane defaults to make it useful out of the box. But everything can be changed to fit your needs. Don't let others tell you the best way to be productive, configure it to be perfect for you.

## How do you compare to alternatives?

Zazu is the first launcher to treat plugins as first class citizens. Even the app finder is built as a plugin which can be replaced (if desired). This means plugins are designed as natural extensions of Zazu and they don't require a special trigger such as '/' or ','. This allows a more intuitive plugin API that doesn't hamper discoverability.



  editor = nvim


Make symlinks to the correct directories:


Open Questions

  • Setup let's encrypt via a script
  • How do we have a consistent salt on the servers?

Types of servers

Servers need to be created in this order:

  • master database
View bind.js
function list() {
function bind(thisArg, arg1) {
return function() {
return thisArg(...[arg1, ...arguments])
View recursive.promise.js
function testApiRecursive (data) {
console.log('calling it', data)
return Promise.resolve().then(() => {
if (Math.round(Math.random() * 10000) % 20 === 0) {
// true 1/20th of the time
return data
} else {
return new Promise((resolve) => {
setTimeout(resolve, 250) // wait 250ms to run again
}).then(testApiRecursive.bind(this, data))