• Export rigged character from Blender to UE4

    After few trials and errors I've finally found a way to export a fully rigged character from Blender to Unreal Engine 4 and then re-target built-in animation for use within UE4. As there are few hoops to jump through, I'm going to document the workflow step-by-step (with pictures!).

    Read More
  • 5 things I've learned from making a game

    For a little bit more than a year now I've been working on and off on a simple, multiplayer, browser-based game called Archers!. I've deliberately set it out to make a simple multiplayer game as I was afraid anything more complex would be a timesink that I would eventually abandon. I've managed to meet the initial requirements and then even added few features but unfortunately the game I've made is, quite frankly, dull and boring. That being said I believe there are few innovative solutions here so I've open-sourced the game. In this post I summarize few lessons learned from making a multiplayer, web-based game in JavaScript.

    Read More
  • Automate all the Javascript things!

    Automation can save you loads of time whether you apply it to your every day chores or to your development workflow. In this article I'll focus on the latter, describing some of the common technics focusing on development in JavaScript (both Browser and Node).

    Read More
  • Hacking League of Legends HUD

    Whenever I’ve joined my friends for an occasional game of League of Legends I’ve been irritated by the fact that game won’t let me customize my HUD so I can play efficiently on my triple screen Eyefinity setup. LOL will happily render on 5760x1080px resolution, however you’re stuck with map on the far right and character screen on the far left. One night I’ve decided it would be a nice challenge to try and fix this. About 6 hours later the first version of a LOL Hudfixer has been born. I’ve played few games using this hack and have encountered no problems so far. It has been an exciting experience to reverse-engineer some of the logic used in the game, I’ll try to outline my findings/approach in this article.

    Read More
  • Running Linux on 2012 Macbook Pro Retina

    I needed a new laptop so I've decided to check whether I could find one that could fully replace my power-hungry desktop and at the same time get decent mobility. My desktop is a high-spec gaming rig with three full-hd screens dual booting Linux and Windows. Can you pack hardware and battery powerful enough to match that into a small pizza box?

    Read More
  • 10 super powers for your shell

    Still using Bash? It's cool, though you might want to switch to zsh and give your shell some super powers! Give it a shot, you'll love this! This quick tutorial will help you customize your Linux/Mac shell to add impressive set of super powers and consequently enable more productive fun environment.

    Read More
  • Ninja SVG sprites

    Traditional image sprites for web are done using png or jpg files where multiple small (raster) graphics, often icons, are merged into a single image file to save on file size and reduce amount of http round trips required. This works great unless you want to scale your icons. Wouldn't it be great if you could have spritesheet full of scalable vector graphics? Just imagine how you could enhance your responsive design? Sadly you can't do sprites like that. Or can you?

    Read More
  • The quirks of JavaScript

    Developers from my team come up with a rather interesting challenge to produce a small piece of JavaScript code of which output would be impossible to predict for a non-JS developer. Obviously we're talking about human-readable i.e. no obfuscation. Here is what we've came up

    Read More
  • Why can't all software be like Sublime Text?

    Most software sux, but there are exceptions, gems that make me believe that not all is lost. Sublime Text 2 is one great example (and I don’t get paid to say so). There are great many places online where you can learn about its features, this post isn’t one. I want to focus on what makes Sublime Text make me love it when I hate most software.

    Read More
  • wtf happened to software?!

    Gosh I hate what happened to software. I really do. When did it all happen? Let's take windows for an example: Why all of sudden to use windows you need at least 2 firewalls, an anti-virus and a rookit detector. Why every time you start something else than Internet Explorer you have to confirm that you indeed intended to run this application and yes it should be allowed to connect to the internet in both home and office network and yes public network too! Why every single app all of a sudden needs to add something to one of 10 places where windows keeps 'autostart apps'; or sneak in a shitty toolbar plugin to spy on my every action; or at least change my default search engine.

    Read More
  • 10 Advanced JavaScript Interview Questions

    Whether you're looking to prepare for an interview for JavaScript role, you're an interviewer looking for inspiration or you just want to evaluate your JavaScript knowledge here are 10 advanced topics that a software engineer working with JavaScript should be able to answer. Bear in mind that answers here are kept minimal, there are lots of caveats not mentioned.

    Read More
  • Cracking the Google Code

    In this article I'm going to give a step-by-step solution to Google Chromebook logic puzzle describing my exact thought process and hopefully providing few useful pieces of advice regarding cracking puzzles in general. However I encourage you to have a go at the puzzle yourself before reading the solution.

    Read More
  • Mining Bitcoins

    I've experimented with Bitcoin, the p2p, digital crypto-currency, for over a month, made some profit and eventually decided to build a dedicated mining machine. Recently Bitcoin has gained a lots of attraction and has been both praised and criticized. While there are multiple threats to the technology and community, Bitcoin is something definitely worth keeping an eye on.

    Read More
  • Coding while on the plane

    A simple fact that I have figured out while being 12km above the ground: you can do more during a single transatlantic flight than you can do during an entire day in your standard working environment. In this post I'm trying to explain why this might be the case.

    Read More
  • Social Login using OpenID and OAuth

    OpenID can be used as a solution for social login where users can be authenticated on your site without using login/password combination. It seems that folks at Quora don't like the OpenID, Stack Overflow community turns out to be slightly more friendly. In this post I intend to research alternatives to classic user authentication mechanisms.

    Read More
  • Playing with web sockets

    The WebSocket is quite a cool concept that might gradually affect web as we know it. Currently to implement a real-time chat (Facebook and Gmail have one) you need to employ one of the xhr-based hacks aka COMET (i.e. long polling, xhr multipart etc.) and while these techniques will work, there are couple of problems. First of all HTTP protocol has not been designed for sustained client-server connection - keeping the connection open creates a performance penalty on each side. Secondly this is not a true two-way communication protocol, a lag of couple of hundreds of milliseconds in one direction is pretty much unavoidable. I could name couple of more issues related to the use of COMET but that's not the point. Point is Websockets are coming for a rescue! Well more like slowly crawling than coming, but still on the horizon.

    Read More
  • 24861% performance boost in Perl

    Recently as a part of a bigger project we've been working on a piece of software that would need to generate an extensive, complex and nested hash structure, then compare it with another, previously cached version of the same structure and decide whether it's the same or different. The rest of the system has been written in perl thus logically we've selected perl for the implementation. Our hash comparison tool would be executed every 30 seconds and it  had to perform well on a rather busy system. We knew that a brute-force approach of comparing each key and value recursively would definitely cause performance issues. It was time to do some cheating!

    Read More