Daniel Kolesa

Daniel Kolesa

About Daniel Kolesa

Daniel Kolesa has been contributing to open source since 2007 and has worked with a handful open source projects. His work has been primarily on Enlightenment, starting in late 2008 with his main focus being the Enlightenment Foundation Libraries. In January 2014 he moved from the Czech Republic to the UK and joined the Samsung Open Source Group to focus more on the EFL and eventually became a maintainer of several core EFL components including Eolian and Elua. He is also a video game developer, maintaining his own OctaForge 3D engine. FInally, he is also a functional programming fan, having worked with languages such as Rust and OCaml, and having designed his own programming languages and compiler tech.

  • Projects

    EFL, OctaForge
  • Role

    Software Engineer

Posts by Daniel Kolesa

  • March 8, 2016 - Daniel Kolesa

    Embrace C++14 in Your Project

    I recently wrote a series on the benefits of the C++11 spec. However, C++14 is a newer specification that has been out for a while and adds a few more exciting language features. Clang 3.8 was recently released, and this marks a stable implementation of C++14 in my opinion. In the past I’ve encountered some nasty bugs while implementing new features, preventing me from actually using them. This is no longer the case in version 3.8 and it therefore seem to be fairly safe. In terms of other C++ toolchains, the 5.x series of GCC cover C++14 pretty well, and MS Visual Studio offers partial support in their own compiler with full support coming soon through the officially supported Clang compiler. Let’s take a look at some of the new features that make this version great. Variable Templates In my opinion, variable templates are the single most important C++14 feature. […]

    Read More
  • October 13, 2015 - Daniel Kolesa

    Some Final Thoughts on C++11

    This article is part 4 of a 4 part series on the benefits of the C++11 revision of the C++ programming language. The previous three articles in this series introduced readers to C++11 toolchains and some of the biggest features this revision of C++ provides. This article covers a handful of minor features that are still quite valuable for anyone writing software in C++11 including range-based for loops, initializer lists, null pointer constants, strongly typed enumerations, static asserts, user defined literals and more. Finally, this article closes with an introduction to a personal project of mine that makes a handful of things in C++11 easier. Other improvements There are quite a few features of C++11 that are worth mentioning, even if they don’t warrant as detailed an entry as the last two articles in this series. Range-based for Loop There is now a new for loop syntax for iterating over […]

    Read More
  • September 30, 2015 - Daniel Kolesa

    4 More Reasons You Should Use C++11

    This article is part 3 of a 4 part series on the benefits of the C++11 revision of the C++ programming language C++11 is the first update to the standard since 2003 and brings many significant features into the language. This article covers 4 more features that are significant: lambda expressions, expression SFINAE, rvalue references and move semantics, and constexpr. Lambda expressions allow you to use functions in expression contexts. C++ also integrates basic closure functionality to share data between nested lambdas, allowing for cleaner functional style programming. However, as it has no garbage collection, effortless resource management with escaping closures is not possible (there are ways such as reference counting though). Expression SFINAE extends the original SFINAE rule, allowing for much cleaner template metaprogramming. Move semantics allow for more efficient and safer management of resources. Finally, constexpr extends certain parts of the language to compile time, allowing for various […]

    Read More
  • September 22, 2015 - Daniel Kolesa

    3 Reasons You Should Use C++11

    This article is part 2 of a 4 part series on the benefits of the C++11 revision of the C++ programming language C++11 is the first update to the standard since 2003 and brings many significant features into the language. This article covers three of the most valuable features of C++11: variadic templates, type and template aliases, and type inference. Variadic templates provide functionality to handle type packs, allowing you to create templates with a variable number of template parameters as well as true, type safe variadic functions. The new type alias syntax allows for better readability and templating. Type inference lets the language deduce types of expressions, thus reducing verbosity and removing the need to explicitly specify types in many places. Variadic Templates In my opinion variadic templates are the single most useful feature introduced in the new standard. They provide the ability to create type packs, allowing for […]

    Read More
  • August 18, 2015 - Daniel Kolesa

    Introduction to C++11 Toolchains

    This article is part 1 of a 4 part series on the benefits of the C++11 revision of the C++ programming language The C++11 standard has been with us for quite a while, but it hasn’t yet gained traction as significantly as one might expect. It’s a shame as there are many reasons to utilize C++11 features, and the toolchain support is pretty good, especially on Unix-like systems with Windows finally catching up. I decided to write a series of articles to advertise the benefits of C++11 and provide an explanation of some of the new features. I found various resources on the web that are quite misleading, so I feel it is important to clarify some things. This article will focus on three of the popular toolchains used for compiling C++ programs. Toolchain Coverage C++11 toolchain support seems to be pretty good. These are the main three compilers most […]

    Read More