Hello

I'm Johan Lajili

Senior JavaScript Developer

  • Age 27
  • E-mail johan.lajili@gmail.com
  • Phone 07492558533
  • Based in London (Relocating is not an option)
  • Earliest Availability 1 month from now

Download Resume

Hello! I’m Johan Lajili. Senior JavaScript Developer, specialising in highly interactive applications, such as Web Games and Single Page Applications. Experienced with a variety of architecture pattern, libraries, and frameworks. Exclusively looking for contracting positions in London.

Technical Skills

JavaScript (ES5, ES6+, JSX)
Game Related Libraries (PIXI.js, Three, GSAP etc.)
React Ecosystem (React, Redux, React-Redux, React-router, Next.js etc.)
Other Javascript frameworks (Angular, KnockoutJS, jQueryUI ...)
HTML / CSS / SASS
NodeJS (Express, Koa, MongoDB..)
Building Tools (Gulp, Webpack, Browserify, Node Filesystem etc.)

If you are looking for someone to work on your SPA (react, angular, knockout etc.) or web game (PIXI, GSAP Tweenmax, Three etc.), look no further. I can also provide services in helping setting up automation, improve the building process and create specialised tooling.

Portfolio

Jin’s Bouncing Wilds [REDUX + PIXI.js]

Jin’s Bouncing Wilds [REDUX + PIXI.js]

Type
Web Game
Technology
JavaScript ES6, Redux, PIXI, ImmutableJS, Greensock, Gulp, Webpack, Babel
Available
Desktop, Table, Mobile

Jin’s Bouncing wilds, available through multiple ventures worldwide, is a game played by millions of users monthly. It features very nice graphics, relying heavily on spine animations and particles to seem as lively as possible. We developed it using the engine me and a coworker made, which uses REDUX for the state management and PIXI for the rendering, using a virtual DOM implementation similar to React. Thanks to the way it is implement, making different game becomes a breeze instead of the nightmare of maintenance that other teams might face.
It works on a variety of device, from a Samsung S3 mini to the latest MacBook pro.

PlugnCast [KnockoutJS, jQueryUI, IgniteUI]

PlugnCast [KnockoutJS, jQueryUI, IgniteUI]

Type
Application
Technology
JavaScript ES5, KnockoutJS, JQuery, jQueryUI, IgniteUI, fontAwesome
Available on
Desktop only

I took part in the creation of the PlugnCast CMS, for INNES. In particular, I worked in the Calendar part of the application, refactoring a 5000 (!!) lines file into manageable and single responsibility modules. I also pushed throughout the application to use KnockoutJS (a Data-Binding library, similar to Angular 1, but as a library instead of a framework) properly. In particular, the use of pure function when possible, and custom bindings made the whole application not only more readable but also more performant. 

Spine Toolkit [Electron / React / NodeJS]

Spine Toolkit [Electron / React / NodeJS]

Type
Software
Technology
Electron, React, PhotonKit, Sass, Gulp, Babel, NodeJS

Spine is a software made by EsotericSoftware, that allows designers to export complex animations based on translation, rotation, mesh deformation etc. Essentially it allows bringing Flash-like animations in HTML5 and Unity games. 

But the software has a major flaw: There is a big difference between the animation as seen in the editor and the animation as seen in the browser. Sometimes, animation that seems to work in the editor, didn’t work in game because X feature of Spine is not supported by the JavaScript runtime. Or it would work in WebGL but not Canvas. Or it would work but have bugs on animation switch, because of missing keyframes. 

This use to be a big waste of time. Designers would export animation, and in between the first export and the final one, there would be a dozen of back and forth. That’s why in my spare time, I developed the Spine Toolkit. Essentially, it reads the exported spine animation and displays it using the same technology as it would in-game. It is packed with a number of features that allows the designer to identify the potential problem with their animation before they even have to talk to a developer.

Since it has been used, the only back and forth were for creative reasons (oh I need that fire bigger actually) and not for the differences between the game and the editor.

The application is made using React, PhotonKit (to make it look native), Electron (to package it as a binary application, making it easier to use for designers) and a node backend for the auto-update server. I have done it in its entirety.

Variety of Slots games [REDUX + PIXI]

Variety of Slots games [REDUX + PIXI]

Type
Games
Technology
Redux, PIXI, ImmutableJS, Gulp, Webpack, Mocha, Babel, Json5 and more.
Available on
All platforms.

 Those are four examples of Slot games made with our custom game engine, using Redux and PIXI at its core, and working similarly to React. Thanks to a detailed analysis of what is different between each game, and grouping games by family, we were able to put the big majority of the code in the engine. The games only contain json5 files describing how they look and placing components. This means that whenever a new feature is requested, instead of updating 5 games  (or worse, updating only one and ending up with different level of legacy code), we just update the engine. All the games support:

Local play (no need for a backend to develop the front end)
Automation (QA now write automation scripts using a simple proprietary scripting language)
Live Reload (as soon as you save your file, the game is updated. If your change is cosmetic, the game doesn’t even reload, the change appears immediately. If you are changing code (including in the engine), the page refreshes on its own.
Unit testing: All our components are written using TDD with mocha. 

CiniView + games [Vanilla JavaScript + Greensock]

CiniView + games [Vanilla JavaScript + Greensock]

Type
Application and Games
Technology
JavaScript (ES6), GSAP Tweenmax, gulp, browserify
Available on
Mobile Phones (in a webview in a unity application)

This is a series of games made for Cinime (see the work experience section). Without going into details, users would open the games in the cinema as the same time as specific advertisements. Audio watermarking technology would sync up the game with the big screen, and users would have to

How can I help you?

New Projects

Start from scratch properly


I can help in building your Single Page Application or web game from scratch. I will apply good practices from the ground up, making sure that code will be usable for years.

Refactor

Improve your existing codebase


If you have a spaghetti codebase because of some previous developer, I can refactor it into something manageable, readable and that is following good standards.

Add Features

Build on what you have


I can create new components or functionalities in your codebase, following the standards your team set. Thanks to years of experience in very different environments, I will be able to blend in immediately.

Fix bugs

From off center image to memory leaks


The number of bugs can quickly creep up due to a lot of factors. I can help you tackle them quickly and efficiently, whether they are simple graphical issues or deeply complicated performance issues.

Prototyping

Iterate fast to try out your business


If you are a startup or trying out a new product, chances are you are following the Lean Startup method. I can help by quickly creating prototypes to test out your hypothesis.

Assessment

Understand the quality of your codebase


If you inherited a codebase and want to know its quality, I can assess it for you. I will tell you how DRY, clean, modern, coherent and ultimately reusable that codebase is. I can also write documentation to help your developers use it.

Building process

Faster, stronger, smaller builds


The build is often considered an afterthought but it shouldn't be. There is a big difference between a 40 second building time every time you want to try out something, and virtually instantaneous live reload. I can make life easier for your developers, as well as reduce the charge for your users.

Automation

Make robots QA your app


Functional Automation is a great way to give more meaningful work to your QAs, instead of having them testing the same thing over and over again. I can set it up for your project.

Create custom tools

Deployment script, level editor...


A business often has needs no software can meet. Think about all meaningless tasks that need to be repeated. I can help build custom tools that will make your life easier, and I don't need specs. Just explain your problem, and I will come up with an effective solution.

Work Experience

UI & W

[Contractor] Javascript Consultancy

Provided my skills to migrate a trading platform application from angular to react, as well as creating new features.

06/2016 - current

Senior Games Developer

Worked over a dozen of JavaScript Slot and Cascade games. They all share a common game engine, made by our team, using Redux for the state, PIXI for the rendering, and a custom "virtual DOM" akin to React for games. I also created a desktop React application using Electron.
More details on my resume.

01/2016 - 06/2016

Games Developer

I worked on a now released Live Roulette program. In particular, I created a responsive system inside of the Canvas, developed a Mocked NodeJS backend (using websocket) to remove the dependency of a working backend for the front-end team. (Before I joined, in case of server downtimes, the front-end devs where often incapable of continue working, resulting on dozens of lost man-days for the project)

02/2015 - 12/2015

HTML Developer

The cinime app was made in Unity, but would load game made in HTML5 inside a webview. As the sole JavaScript developer, it was my responsibility to create all of the games from start to finish. As an added difficulty, most of them needed to sync with an advertisement using audio watermarking technology.

02/2014 - 02/2015

JavaScript Engineer

At Innes, I created a CMS (Content Management System) that allow users to display audiovisual content over time. Think Advertisement screens in the tube or screens inside buses indicating the itinerary and other information. I particularly work on a calendar view, similar to Google Calendar, using jQueryUI and KnockoutJS.
I also worked on the JavaScript backend, using XQuery.

08/2013 - 02/2014

Web Game Developer

My work at Toxicode was shared between the R&D activities and the services for clients. Among other things, I have worked on diverse game developments (Canvas and NodeJS with some sugar from the GamePad API and ThreeJS), applications and websites.

11/2010 - 08/2013

Project Manager / Programmer / Game Designer

Learnscaper being a very small startup ( 3 employees when I joined, 12 when I left), I had to do a lot. This involved creating applications in JavaScript, outsourcing projects and managing them, creating serious games and more. More details on my resume.

Education

2010 - 2013

Master in Game Design and Programming

They said about me

  • Johan worked as a Games Developer and HTML/JS Expert at Cinime. He is one of the most brilliant resources I have worked with and has amazing talent, passion and enthusiasm when it comes to web front-end development. His skills and resulting outputs are among the best in the industry. If I were a gaming or web development company, I would ensure I have him on-board creating great products for us that will delight users.

    Rajiv Goel Director Of Agile Development and Delivery at Cinime
  • Johan spent three years in our team. His contribution was outstanding, both as a Game Designer and HTML5 Developer. His intelligence and reaction speed have allowed the creation of innovative products -- in the serious game business -- He is one in a million, capable of efficiently communicate with clients, manage production teams and work with our teams spanned across three continents (US, India/Bangladesh, France, UK).

    Peter Isackson CEO / founder at Learnscaper
  • In the time Johan has been at Gamesys he has proven time and again to be a highly experienced and valued developer. We worked closely together on developing a proprietary game engine that is now used by his team to rapidly develop games and enable the team to maximise productivity throughout the entire process from design right through to QA. His pragmatic approach to technical problem solving has given the company many new tools and processes that benefit others as much as his immediate team. He's an incredibly talented developer with a passion for what he does and would make an excellent addition to any team lucky enough to have him.

    Simon Jameson Technical Lead at Gamesys

My Interests

I am not (just) a code monkey! On my spare time, I have a number of hobbies. I am currently learning the piano, being taught by Ljubica Stojanovic, and hope to achieve a decent level in a few years. I also enjoy 3D printing, whether it’s premade designs found on the internet or my own. I equally love to travel, having recently been to Iceland and Japan, Canada and Italy.  I’m also half a decent cook!

  • Piano
  • 3D Printing
  • Traveling
  • Watching TV Shows
  • Food (Eating & Cooking)

FAQ

  • Are you available right now

    Please refer to the availability date given at the top of this page, which might change over time 
    • You barely mention NodeJS, can you do backend?

      It’s important to acknowledge one’s shortcomings. While I made a few backends in NodeJS in my life, usually for development purposes, I never contributed to a professional NodeJS backend. As such, I will not accept any opportunities where my role would be to create the backend. On the other hand, if you have an existing backend, and are looking for a new full stack developer to contribute to it, I offer a discounted rate.
      • What is your daily rate?

        This is dependant on a number of factors (the type of project, role, libraries used etc.) and I cannot give a number without knowing the details of your project. Please contact me for a quote.
      • Availability Calendar

        Sorry. I'm not available on those days

        Contact Me

        Feel free to contact me