Hello and welcome! My name is Filip Stoklas, aka fips or 4fips - the founder and maintainer of 4fips.com. I am a software engineer, interactive computer technology enthusiast, photographer, videographer and occasional hardware hacker, living and working in Prague, The Czech Republic. This website reflects my long-standing interests that lie in the intersection between computer technology and human being. I am mostly interested in computer graphics, virtual reality and human-computer interaction. I enjoy doing some research in this area, designing experimental systems and publishing the results.
Professionally, I work as a Senior R&D Programmer at Disney Mobile currently working on an in-house game engine and content pipeline for mobile games (mostly iOS & Android), the technology has been used in a number of titles so far (THOR: Son of Asgard, Pirates of the Caribbean: Master of the Seas, Nemo's Reef, Lone Ranger, and more). I also worked on a couple of PC and console video games (Team Factor, Light Force 2 Game Engine, Rapid Gunner, Loco Mania, Top Spin 4), did a few J2ME games (Space Rebels, Crazy Worms) and also spent a few years working for a company dealing with biometrics as a low-level software engineer (biometric APIs, hardware virtualization and drivers). Before I got into video games I used to work as a freelance software developer (DynastViewer, Pulse, Setra, Setra R2, BarCodeMagic, Feutron, BarCodeMagic R2, Becherovka Game 2001, Retro Classix, Amiga Classix 5, pfQuizzz).
I am very picky in terms of technology I use,
here is some I find especially pleasant to work with:
C, C++98/03, C++0x/11, STL, Boost, Python, OpenGL, ES 1.1, ES 2.0, GLSL, Lua, JSON, a bit of XML
I also use these occasionally, mostly for web hacking:
HTML, CSS, JavaScript, PHP, MySQL, WebGL
+ a ton of stuff that I use on a daily basis,
but do not enjoy that much...
You can reach me at:
filip.stoklas(at)gmail(dot)com
Forums
LinkedIn
Twitter
Reddit
Instagram
Shutterstock
/2017\
Aliasing structs with pointers for const transitivity (C)
Exploring the Rust programming language
/2016\
A simple circular buffer with reverse iterator (Lua)
Simple declarative UI layout engine in Python
/2013\
A simple hex/dec binary data dumper (Python)
Yet another way to design binary protocols (Python/C++)
Vector font rasterization using MSAA (C++/OpenGL)
Hello Triangle! using Emscripten & CMake (C++/WebGL)
/2013\
Polymorphism involving objects with value semantics (C++)
Render/update thread synchronization (C++11)
Designing a flexible GPU abstraction (C++/OpenGL)
Designing portable PODs & BLOBs (C++)
A fixed-size string buffer, String_buf (C++)
Memory-mapped BLOBs in action (C++/Python)
Memory-mapped game resources (C++/Python)
Explicit template instantiation (C++)
Using the std::weak_ptr as a handle (C++)
/2012\
Yet another glOrtho, glFrustum & gluPerspective (OpenGL)
Blender 3D, Protocol Buffers, Python 2.x/3.x & PyCollada
Passing data using the Array_ref wrapper (C++)
Yet another string Tokenizer (C++)
Google Protocol Buffers in action (C++)
Record_pool - Sharing with explicit ownership (C++)
Exposing object sequences via public data interfaces (C++)
Don't set, just swap! (C++)
C++ reflection - The simplest way
PIMPL using std::unique_ptr with incomplete types (C++)
Non-copyable, movable types in C++11
C++0x / C++11 - Online resources
Embedding LUA to executables using LuaJIT/FFI
Data-oriented design & programming - A simple benchmark
Reading time from the high-resolution performance counter
Qt 4.8 / Visual Studio 2010 integration
/2006-2011\
FipS' C++ coding style
Recursive C header guard generator in Python
OpenGL ES 2.0 shader setup
Simple visualization using pyglet & pyeuclid (Python)
How to copy files to the MSVC 2010 output directory
My first real lambda expression in C++0x
Instance creation in the FSHUB Engine (DevLog #1)
Shared pointers, memory management & allocators
Stackless Python - A first look
Statically typed scenegraph based on recursive Boost.Variant
Implementation of the ASSERT macro (C++)
Rigid body test, using the Bullet physics library (C++)
Static polymorphism, interfaces & CRTP
Pragmatic UML - The class diagram
Pragmatic UML - Introduction
/2010-2018\
TTGO ESP32 (OLED + 18650) running MicroPython
Using rotary encoders for keyboard emulation (RPi)
Controlling the TP-Link HS110 smart plug with Domoticz
A portable Raspberry Pi Zero W companion computer
Home automation with Domoticz, ESP8266 and BME280
Interactive Arduino menu system over serial line
Arduino kitchen timer using Nokia 5110 LCD and Pro Mini
Connecting Nokia 5110 LCD (Philips PCD8544) to Arduino Nano
Programming ATtiny85 using Arduino Nano as ISP
Biped Arduino project (FIPS-BOT-1), part 5 of n
Biped Arduino project (FIPS-BOT-1), part 4 of n
Biped Arduino project (FIPS-BOT-1), part 3 of n
Biped Arduino project (FIPS-BOT-1), part 2 of n
Biped Arduino project (FIPS-BOT-1), part 1 of n
Evolution of the ultimate time-lapse machine
Nikon D7000 JPEG fine vs. JPEG basic evaluation
Fixing a sticky Kindle's power switch
(Last updated: Dec, 2017)