Layers of Fear is in the same vein as Amnesia, which I consider as a kind of reference in the field of barebone survival-horror games. You impersonate a painter willing to achieve his masterpiece, but his schizophrenia will quickly get in the way. The game is about exploring the artist house and discovering his past, as we gather elements to complete the painting.
In terms of gameplay, the game is minimal but effective as you can only move around and interact with some objects. Still, interactions with doors, drawers, etc, are well-designed as you have to actually perform the actual movements with your mouse/gamepad stick in order to move the object. This is really interesting as you can actually decide how much you want to open a door, slam it open or open it slowly just a little bit to peek in the corridor behind.
Unfortunately, as you go further in the game, I got the feeling that you are just running from one scary effect to another, which unfortunately breaks the immersion a little bit.
Still the game offers multiple endings without making it clear from the beginning, and without explaining the factors influencing the outcome of the story.
In the end, I’d highly recommend trying this game, at least to experience the incredible ambiance of madness surrounding the story. And of course, play it in the dark!
Recently, my girlfriend forgot her Windows 10 password, locking her out of her almost-brand-new laptop. I took it as a personal challenge to break into the Windows security layer and extract her password. Resetting the password was not an option!
With Windows 10 Anniversary Update, things got tougher when it comes to cracking Windows password but after trying different approaches, I managed to do it. Here’s a guide to show you the steps to follow.
TLDR; We’ll be cracking Windows 10 password without admin access, and this method works with Windows 10 Anniversary Update!
Requirement: a password-locked computer, a not-password-locked computer, one (or two) USB keys.
- Retrieve the encrypted Windows 10 password database: SAM and SYSTEM files
- Extract Windows 10 password hash from those files using mimikatz
- Crack the hash quickly using hashcat
As the project I was working on is getting to an end, I thought it might be the right moment to take some time and write down my impressions of those first 8 months of Graduate Program in Ubisoft Montpellier.
Let me introduce this Graduate Program survival guide! I’ll first talk about how I experienced the recruitment process, then some insights about the job of Gameplay Programmer and I’ll close this guide with more details about the Ubisoft Graduate Program itself. Continue reading
I’ve just spent way to much time debugging a node program that was crashing because of a database call wrapped in ES6 promise. After looking all around in my code for an abusive try/catch silencing the error, I stumbled upon an article explaining error handling behavior with ES6 promises, that are just basically “swallowing” all errors thrown during their resolution. While arguable, this behavior is expected as per the specifications.
The following article describes this behavior quite well and provide a workaround: http://jamesknelson.com/are-es6-promises-swallowing-your-errors/
or “Why the ther team will make your job with Docker harder”
During my internship, I got to play with Docker, which is quite impressive in terms of ease of use, but also in terms of performances. The technology behind it feels rock solid (but maybe that’s just marketing! 😉 ).
Please check out this post if you don’t know Docker already.
There are some Docker images containerizing OS’s (Ubuntu, Debian) but also for software, like MySQL or OpenVPN. Users can use any of these images as a base for their own custom images. It means that the user will be able to add stuff to an existing environment to create their own microservice.
Docker is a containerization technology that gained in popularity lately. It allows developers to ship their software with all its dependencies in a VM-like environment with a controlled configuration.
The main difference with VMs is that Docker uses the host machine kernel, instead of emulating one for each VM. It allows to instantiate multiple Docker images in containers on the same host without requiring gigantic amounts of resources.
Let’s see how Docker simplifies the development of on-demand services.
As TypeScript is implementing a great number of the ES6 (ECMAScript6) standards, it is important to stay up-to-date with the latest specification updates.
In particular, the module feature is getting central for all framework and libraries developers (me included), who need to be able to package properly their code. and thus how to correctly use them in TypeScript.
If you are using Travis CI to automate the build of a TypeScript, that’s a problem you probably encountered. As Travis CI can allow you to automatically build in various environment, TSD is hitting hard on the GitHub API, which can cause the “GitHub rate limit reached” message to appear.
The solution is quite simple, you’ll have to create a GitHub token and add it in Travis as an environment variable. This tutorial will also work with any build automation system that support environment variables.
The challenge is to properly package the typing information from your TypeScript code, that may get lost in the process if you don’t do it the right way.
That’s why I decided to put together the information I gathered while addressing the issue.
In this tutorial, I will explain the easiest way to package some TypeScript code into a node module, preserving all the typing information from the source code, without using any third-party tool.
You can download the full sample project on my GitHub repo. It is a working example of a TypeScript package.
I recently had to work with Storm and Kafka, which are respectively : a framework for near real-time data processing ; a real-time pub/sub system. Both can be heavily distributed across multiple machines on a cluster.
Even if the promise of Storm combined with Kafka sounds great, things began to get more complex when I wanted to transfer non-primitive data inside and between the two systems. Continue reading