Skip to content

Instantly share code, notes, and snippets.

Justin Meyer justinbmeyer

Block or report user

Report or block justinbmeyer

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


CanJS 5.0 ( is out and it makes building CRUD apps easier than should be possible. In this talk, we'll learn the basics of CanJS and show how to build an app that Creates, Reads, Updates, and Deletes (CRUD) data. The app will handle all the things folks normally forget too. Things like server errors, slow loading, and disabling buttons to prevent repeat form submissions. Getting in the CRUD will never feel so good.

CRUD is all around us

The CodePen we are building. It has:

  • The ability to Create, Read, Update, and Delete data.
  • Most of the important mechanics work.


  • Evangelist ... meetups, write, write, write (Brian)
  • Community Manager ... talk talk talk
  • Kevin & Matthew
  • Nils? Manuel?


  • CEO - ME ... only doing people related things
View each-to-for.js
var canViewParse = require("can-view-parser");
var someSortOfEach = /\{\{#\s*each\(/
var eachMatch = /\{\{#\s*each\(\s*([\w\.\(\)]+)\s*\)\s*\}\}/;
function processStache(source) {
canViewParse(source, {
start: function(){},
end: function(){},
close: function(){},
View Why you might want to work at

Hello potential Bitovian!

I'm writing this blog post to organize my thoughts on working at Bitovi. I'm going to attempt to:

  • Answer the most common questions I get during the recruiting process
  • Help you determine if Bitovi is the right fit for you

I am extremely biased. Bitovi is largely a result of my ideals about what a consulting company can be tempered a bit by cold hard reality of needing to generate a profit.

What is Bitovi about?

View scope.js
// var keyInfo = Scope.keyInfo(key),
// parent,
// propName;
// if(keyInfo.remainingKey === "this") {
// // this prevents reading of observables
// options.readCompute = false;
// parent = this.readKeyInfo(keyInfo, options).value;
// return { parent: parent, how: "setValue" };
// }
View canjs-post.html
<p>In this guide, you will learn how to create a custom video player using the <code>&lt;video&gt;</code> element and <a href="">CanJS</a>. The
custom video player will:</p>
<li>Have custom play and pause buttons.</li>
<li>Show the current time and duration of the video.</li>
<li>Have a <code>&lt;input type="range"&gt;</code> slider that can adjust the position of the video.</li>
<p>The final player looks like:</p>
<div class="cp_embed_wrapper"><iframe id="cp_embed_qyRqMx" src="//;theme-id=dark&amp;slug-hash=qyRqMx&amp;default-tab=js%2Cresult&amp;user=justinbmeyer&amp;embed-version=2&amp;pen-title=CanJS%205.0%20Video%20Player%20-%20Final" scrolling="no" frameborder="0" height="350" allowtransparency="true" allowfullscreen="true" allowpaymentrequest="true" name="CodePen Embed" title="CanJS 5.0 Video Player - Final" class="cp_embed_iframe " style="width: 100%; overflow: hidden;"></iframe></div>
<p>The following sections are broken dow
justinbmeyer /
Last active Jul 22, 2018
JS Developers, do you need set algebra?

Dear JavaScript Developers,

I'm writing this letter to you as a message in a bottle, in the hope that I can find developers across different technologies (frontend and backend, react, vue, angular, etc) who might see the value of a new project (can-query-logic) and help find ways to fulfill its potential.

So what is this project and why should I care?

Great question! Here's the tldr:

  • WHAT - can-query-logic is a set algebra implementation for the most common logic operators (>, <=, etc).
  • WHY - can-query-logic can simplify common frontend and backend data-layer problems like caching and real-time. But as more of an implementation of ... er ... math, there's likely uses that I've not thought of, like dead code elimination.

In this guide, you will learn how to create a custom video player using the <video> element. The custom video player will:

  • Have custom play / pause buttons.
  • Show the current time and duration of the video.
  • Have a <input type="range"> slider that can adjust the position of the video.

The final widget looks like:

You can’t perform that action at this time.