Skip to content

Instantly share code, notes, and snippets.

View justinbmeyer's full-sized avatar

Justin Meyer justinbmeyer

View GitHub Profile

Intro

CanJS 5.0 (https://www.bitovi.com/blog/canjs-5) 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.

OS

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

Leadership

  • CEO - ME ... only doing people related things
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(){},

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?

// 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" };
// }
<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="http://canjs.com">CanJS</a>. The
custom video player will:</p>
<ul>
<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>
</ul>
<p>The final player looks like:</p>
<div class="cp_embed_wrapper"><iframe id="cp_embed_qyRqMx" src="//codepen.io/justinbmeyer/embed/qyRqMx?height=350&amp;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
justinbmeyer / hello-world-im-set-algebra.md
Last active July 22, 2018 20:03
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: