Jon Packer

Web Developer

Hi! Here's some quick facts about me.

Education

Work Experience

2008 - Frontend Developer Intern at Creative Audio (now BIAMP)
2010-2011 - Web & iOS App Developer at Creative Intersection
(Moved to Norway 01/01/2012)
2012-2018 - Full Stack Developer & Partner @ BRIK
2018-2021 - Senior Developer @ Vibbio

Technology Experience

My philosophy on technological experience is that attitude is the most important. Web technologies are a dime a dozen and change from year to year. Eagerness to adapt and learn new things, and an ability not become complacent is more important than anything else. I feel this is where my experience mostly lies: in the ability to learn new things, learn how they work, and become confident and comfortable working with them.

This is some brief highlights of some technologies I've worked with, it is by no means exhaustive. If you're wondering about something specific we should have a chat!

Web Frontend

The last few of years I've been working with React (and Redux). In the olden days, I could work with or without jQuery, but these days I generally don't use it. I used Backbone in production for almost 5 years, and had a love/hate relationship with it.

Web Backend

Like many people, I started early on (again, in ye olden days) with PHP. In 2011 I discovered node.js and was a bit smitten. I've been using node on the backend for pretty much everything since then. Sometimes jobs call for other tools, and I've maintained my familiarity with PHP, working every now and then with Craft and WordPress. I have some passing experience with ASP.NET and Ruby on Rails, but that experience is fast becoming outdated.

Within node, I've used koa, express and hapi a whole lot (in descending order of how much I enjoy them). I've used a lot of browserify and webpack.

I've played a bit with next.js, making a few small projects like VPList and like what I've done so far. I think their philosophy of going back to SSR is a positive for almost everyone involved.

I've used WebSockets both with socket.io and without for various real time projects, such as a leaderboard which live-updated from user input, a video processing pipeline which showed progress in real time,

Databases

SQL-based databases are a fact of life, I'm comfortable working with them and do so on a reasonably common basis (mostly MySQL).

I've spent a whole lot of time working with a Graph Database named Neo4j - I wrote and driver for it a few years ago for node (seraph - still used in production, but not actively maintained).

I have had frequent experience working with Redis and MongoDB, and some passing experience with CouchDB.

Ops

I work with docker, nginx, varnish regularly, and I'm used to working with AWS and GCS. I have seen Kubernetes, and I'd prefer not to do so again :P. I'm comfortable in Unix-based systems.

Native

I wrote and published a few apps for iOS in Objective-C as a part of my first job. In the last few years I've written a couple of native iOS apps using Swift, and a tvOS app using Apple's JavaScript-based TVMLKit. I would not call myself experienced here, just familiar.

I've spend a passing amount of time working on a hobby project in React Native, but this project has begun gathering dust. Again, familiar but not experienced.

Other

I'm proficient in using much of the Adobe suite, including Photoshop, Illustrator, Premiere, After Effects and Lightroom. I would say that I'm "very proficient" at Photoshop, After Effects (including expressions) and Lightroom. I know how to use camera to shoot good quality video, and edit it using Premiere and AE.

Communication Experience

Working Independently

I have spent large swathes of my career working independently, so I am confident designing, building, polishing and releasing projects alone. I frequently work on my own personal projects outside of work hours to keep this skill honed.

Working In Teams

I have also worked in teams early on at BRIK and for the last couple of years while working at Vibbio. In my opinion good team work and communication is (rather than naming) the hardest problem in Computer Science. I am constantly striving to be better at communication, and recognize I have a long way to go.

Working Remotely

My time at Vibbio has been 100% remote. Every year I worked at BRIK I had one remote month working in Australia around late-December/January. For one reason or another these often ended up being some of the most productive months of the year (at Vibbio too). Probably mostly because the 10 hour time difference does a great job of facilitating distraction-free "deep work".

Working remote is a enormous challenge, particularly for good communication. I think it can work, but all involved parties have to put in the effort to make it work well.

Case Studies

Cottontails Bergen (source)


2014: - I designed and implemented the website for The Cottontails, a Swing-dancing club in Bergen. The site was written using node (express) on the backend, pug and stylus. I also experimented with having a databaseless website that used Contentful for static content that changes 1-2 times per year, and reads from Facebook's API in order to display events and news.

Seraph (source) & Seraph-Model (source)

2012-2016: - Drivers I wrote and maintain for Node.js for the Neo4j database. This has been a long-running project that is widespread use at BRIK. Some pain-points have been tracking breaking updates to Neo4j, and the ever-changing landscape of node.js idioms (for example, migrating from callbacks to promises).

Norges Toppidrettsgymnas

ntg.no
2017: - Working at BRIK, I implemented NTG's new website, implementing a design from Sommerseth Design. The site was written using Craft (a PHP-based CMS), a small amount of JavaScript, and Stylus. As a part of the project, I wrote a custom Craft-plugin in order fetch social data using Facebook and Twitter's APIs.

Olympiatoppen

olympiatoppen.no
2012: - Also at BRIK, I designed and retrofitted a responsive design for Olympiatoppen. The challenge here was to create a design that worked with the very large amount of content and existing design. As a part of this project, I wrote jquery.tap.

MBCC Beer List (source)


2016-2021: I created a progressive web-app for a beer festival I was visiting in 2016, and spent a lot of time expanding it for the same festival in 2017. In 2018 and 2019 I converted it to React. It works as an offline beer list, or an app that shows real-time average ratings of other festival-goers and has background integration with social networks - depending on your level of internet access. I gave a small talk about the browser-based full text indexing featured in this app here.

VinmonopoletDiff (source)

2017-2021: A small website that reads Vinmonopolet's API and diffs beer product lists for individual stores from hour to hour. I wrote this in late 2017 when Vinmonopolet started doing frequent silent beer releases at their beer-focused stores. It was upgraded and made public in 2018.

VPList

2021: An expansion of the VPDiff concept to show more expansive information about Vinmonopolet's beer releases. Based on next.js, react and redux.

Makibot (source)


2013: A fun side project to automate ordering sushi from a local sushi chain on slack. Runs on node.js.

Design: Cottontails Danseklubb

2013-2015: I have made a few different logos, done some photography, created a hand-lettered wordmark and a few posters for The Cottontails in Bergen (where I'm an active member and instructor). Here are a few examples:

Cottontails Poster Image (wordmark hand lettering, photograph):

(Image hidden in print version)

Poster, Swingin' in the Rain 2017 (vector art and reference photography) :

(Image hidden in print version)

Poster, Learn to Dance Lindy Hop 2015 (art and photography):

(Image hidden in print version)

Video Work: Olympiatoppen & BRIK

I've done some video work for BRIK and Olympiatoppen (through BRIK). This involved some reusable titles and interstitial titles for Olympiatoppen, and some promotional video production for BRIK.

Demoreel, titles for Olympiatoppen (titles design, animation and expressions in After Effects):

(Vimeo video hidden in print version)

Promotional video for BRIK (lightning, audio, camerawork, editing and grading in Premiere):

(Vimeo video hidden in print version)

Talks

I've done a few talks at our small shared-office conference that we organise twice a year, Revolverconf. You can see them here:

Full Text Indexing in the Browser

CSS Units

CSS Grid

Service Worker

Neo4j

(YouTube videos hidden in print version)

Other

If you're after any other specifics, please don't hesitate to get in touch