I'm Joel Shinness

Front-End Web Developer

Burnaby, BC
Follow me!

About me

Hello! I’m Joel Shinness, a full-stack web developer with a passion for creating friendly user experiences with HTML, CSS, and JavaScript. I've built all sorts of web apps and mobile web app with ASP.NET, jQuery, Bootstrap and Angular.js, but I've also created applications with WebGL, Processing, OpenGL, React, RxJS, and more. I'm looking for a challenge and a good team where I can teach, learn, and collaborate.

My Skills *

Languages Tools & Libraries

JavaScript / ES6
Ruby on Rails

* Percentages are my non-scientific assessments of the question: “What percentage of the problems I'm given with this language, library, or tool will I be able to solve?”

Education & Jobs

02.2017 - present

Web Development Instructor

Lighthouse Labs, Vancouver, BC
  • Created and delivered lectures in all aspects of full-stack web development
  • Mentored students one-on-one on dev practices, specific technologies, and career prep
  • Built demo HTTP and WebSocket server applications in Node and Rails
  • Built demo JS client applications with jQuery, React, and Redux
  • Built demo data-driven applications with PostgreSQL and MongoDB
  • Coached project teams through the application development lifecycle
  • Coached students and alumni on current technologies, deployment, and career prep
JavaScript / ES6 Ruby HTML5 CSS3 SASS SQL Node Express React Rails Redux Bulma Bootstrap socket.io PostgreSQL MongoDB Mocha git
03.2014 - 08.2016

Full-Stack Developer

3AG Systems, Burnaby, BC
  • Developed front-end applications with Bootstrap, Angular, and jQuery
  • Developed templates with ASP.NET MVC and Razor
  • Developed Web services with ASP.NET Web Api
  • Developed Android mobile client with Bootstrap, Angular and Cordova
  • Prototyped user experience concepts with Bootstrap & Angular
  • Wrote, maintained, and set standards for Bootstrap themes
  • Integrated existing web applications into new HTML themes and templates to match client branding
  • Wrote CSS with Sass & Compass
  • Created Databases with SQL
  • Optimized data retrieval in SQL with indexed views and recursive CTE queries
  • Created Microsoft Office plugins with Visual Studio Tools for Office
  • Wrote and presented training materials on CSS, functional programming, client-server and Single Page App architecture, Angular.js, asynchronous programming, best practices in JavaScript and C#, and more
  • Mentored and managed co-op students in web development
  • Wrote OLAP queries in MDX
  • Wrote technical competency tests and evaluated outsource contractors
  • Created work packages for outside contractors that made sure their work matched our product and would integrate easily without exposing the particulars of our product
  • Wrote software design documents that included user interfaces, high level algorithms, communication flows between different systems, and relationship diagrams
JavaScript C# HTML5 CSS3 SASS SQL MDX Angular.js Bootstrap jQuery ASP.NET VSTO Cordova WebSockets D3
09.2012 - 06.2014

Bachelor of Technology

BCIT, Burnaby, BC
  • Wrote 3D and 2D games in XNA for C#
  • Simulated physics in Processing
  • Prototyped 3D in Processing
  • Built 3D games in C++ with OpenGL, as well as with OpenFrameworks
  • Built 3D experiences in iOS with Objective-C and OpenGL ES
  • Built 3D experiences with WebGL and JavaScript
  • Wrote JavaScript library for linear algebra
  • Wrote C++ application for audio manipulation
C# C/C++ Objective-C GLSL HLSL XML Java JavaScript XNA Processing OpenFrameworks OpenGL WebGL Cocos2D
06.2013 - 08.2013

Web / Mobile Developer

Heritage Christian Online School, Kelowna, BC
  • Created assignment scheduling app with jQuery and Moodle
  • Developed Adobe AIR Mobile app with Flex and ActionScript 3 to run educational Flash content on mobile devices.
PHP JavaScript XML ActionScript 3 jQuery UI Moodle Apache Flex
03.2012 - 01.2013

Web Developer

Wundr, Vancouver, BC
  • Developed content templates for ePub that utilized HTML5 semantic elements, and cutting edge CSS3
  • Created web site
  • Created children’s book with CSS3 animations
JavaScript CSS3 HTML5
03.2011 - 02.2012

ASP.NET and Web Developer

Opacity Design Group, Richmond, BC
  • Converted Photoshop files to HTML / CSS
  • Created web apps with ASP.NET
  • Built mobile app with jQuery and PhoneGap (now Cordova)
JavaScript CSS3 HTML5 C# SQL PhotoShop jQuery Cordova

Latest Posts

Promises, Promises Pt. 5

You know, there’s this one thing that has always driven me crazy about blogs.

You see, too often, whenever they explain how to do something, they’ll give you the basics. They step through “Hello, World”, and that’s it. But you find yourself wanting to do something more complicated, and you find yourself flitting through twenty “Hello, World” tutorials hoping to find more insight. As a musician, I can say that it’s one thing to learn musical scales, but it’s quite another thing to know songs in those scales or when it’s the right time to use them. With this post, I want to go a couple steps further. Promises are a great tool, but their purpose is to solve problems, not just get you past interviews (or provide cheap blog post fodder).

Promises, Promises Pt. 4

Okay, this’ll be quick. This article is just for those using Angular, especially those versions before Angular 2. I figure that even if the entire world stopped writing new apps in Angular, there would still be a metric pantload of legacy apps to maintain. This article assumes enough familiarity with Angular to create controllers and services. The reason I’m writing this article is that Angular has one particular quirk about timing: dirty-checking. You can’t just change data; you gotta tell Angular you did it so that it can go through the laborious task of updating the view.

Promises, Promises Pt. 3

I don’t know what your familiarity level is with functional programming, and I’m not planning to go too far into it. I’m currently taking a specialization on the subject on Coursera, but if you’re totally new to the concept, I would really recommend the YouTube channel Fun Fun Function by Mattias Petter Johansson (a.k.a. mpj). He breaks down the basics of functional programming reeeeeeaally well. For now we’re going to do what functional programming does best: compose.

Promises, Promises Pt. 2

In a previous post, I introduced the idea of promises and the purpose they serve, while also delivering an ode to nachos, a paean on a pan, as it were. This time, I actually want to get to the nitty gritty, and demonstrate how to create, transform, and combine promises in the new ES6 syntax. I’ll follow up with the same article in the syntax more common to Angular.JS, since that’s where most of my work has been.

Promises, Promises Pt. 1

It has been said of history that it’s “just one damned thing after another.” (By the way, that’s the title of a fantastic book about time travel by Jodi Taylor, and I can’t recommend it enough). The way we tell the story of history is often very sequential. An archduke is shot in Sarajevo, the Central Powers start a war, yada, yada, yada. But this telling hides a very complicated web of events that encapsulates trade agreements, royal marriages, personal affronts, and a regressive genetic defect called the “Hapsburg Jaw”.

How I Made This Very Website

Yes, I know writing a blog post about making the blog on with post is hosted is maybe a little bit too meta. But how we do anything that we would associate with ourselves should merit some reflection, and I have to blog about something, right?