<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>memdump</title>
    <link>https://philippegroarke.com/</link>
    <description>Recent content on memdump</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 15 Apr 2022 11:23:11 -0500</lastBuildDate>
    <atom:link href="https://philippegroarke.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Data-Driven, Descriptor Based Generative C&#43;&#43;</title>
      <link>https://philippegroarke.com/posts/2022/data_driven_descriptor_based_generative_cpp/</link>
      <pubDate>Fri, 15 Apr 2022 11:23:11 -0500</pubDate>
      <guid>https://philippegroarke.com/posts/2022/data_driven_descriptor_based_generative_cpp/</guid>
      <description>&lt;p&gt;Today I&amp;rsquo;d like to share with you an idiom I&amp;rsquo;ve been enjoying more and more. I doubt it is novel, but I haven&amp;rsquo;t heard about it before. It all started while authoring a new domain-specific scripting language and its compiler/data-generator. I was fighting with google flatbuffers limitations when a virus (aka idea) entered my mind. &lt;em&gt;Why use a separate schema notation and schema compiler to generate C++ serialization code, when we can do it all in C++ directly?&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>C&#43;&#43; UI Libraries</title>
      <link>https://philippegroarke.com/posts/2018/c&#43;&#43;_ui_solutions/</link>
      <pubDate>Sun, 13 Mar 2022 11:50:15 -0400</pubDate>
      <guid>https://philippegroarke.com/posts/2018/c&#43;&#43;_ui_solutions/</guid>
      <description>&lt;p&gt;A list of free, cross-platform GUI solutions for C++. If you don&amp;rsquo;t like Qt, or other major GUI frameworks like wxWidgets or GTK, the choices available to you are a bit overwhelming.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Enforcing Signatures On Templated Callbacks</title>
      <link>https://philippegroarke.com/posts/2021/enforcing_signatures_on_templated_callbacks/</link>
      <pubDate>Sun, 07 Mar 2021 12:10:10 -0500</pubDate>
      <guid>https://philippegroarke.com/posts/2021/enforcing_signatures_on_templated_callbacks/</guid>
      <description>&lt;p&gt;A lot of times, I find myself using &lt;code&gt;std::function&lt;/code&gt; to document APIs and prescribe specific callback signatures. The problem with &lt;code&gt;std::function&lt;/code&gt; is its type-erasure, which makes it quite slow compared to other callback techniques. If you need ABI stability, say you are exporting a function for a DLL, you cannot use standard types anyways. They do not ascribe to any ABI standard. So in that case, you&amp;rsquo;d probably use a good old raw function pointer.&lt;/p&gt;</description>
    </item>
    <item>
      <title>I Accidentaly Wrote A Compile-Time Executable State Machine</title>
      <link>https://philippegroarke.com/posts/2020/constexpr_fsm/</link>
      <pubDate>Thu, 09 Apr 2020 16:53:22 -0400</pubDate>
      <guid>https://philippegroarke.com/posts/2020/constexpr_fsm/</guid>
      <description>&lt;p&gt;Yes, you read that title right. While working on a new way to create finite state machines (fsm), I inadvertently designed a state machine you can execute at compile-time. With branching and everything. Today, allow me to pull you down my rabbit hole. It&amp;rsquo;s always nicer with company down here.&lt;/p&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s go, Alice!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Funky CMake</title>
      <link>https://philippegroarke.com/posts/2019/funky_cmake/</link>
      <pubDate>Sat, 05 Oct 2019 09:31:30 -0400</pubDate>
      <guid>https://philippegroarke.com/posts/2019/funky_cmake/</guid>
      <description>&lt;p&gt;A long long time ago, after years and years of fighting with software that doesn&amp;rsquo;t build, I made a life changing decision. Any and every software I write must download, install and setup its dependencies without requiring user interaction. All of them. Allways. When combined with other build best-practices, not pasting dependencies in your source tree and locally installing your dependencies, the rule has led to some interesting CMake usage.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Games</title>
      <link>https://philippegroarke.com/games/</link>
      <pubDate>Thu, 01 Aug 2019 16:33:24 -0400</pubDate>
      <guid>https://philippegroarke.com/games/</guid>
      <description>&lt;h1 id=&#34;professional-capacity&#34;&gt;Professional Capacity&lt;/h1&gt;&#xA;&lt;h2 id=&#34;ancestors-the-humankind-odysseyhttpswwwepicgamescomstoreen-usproductancestorshome&#34;&gt;&lt;a href=&#34;https://www.epicgames.com/store/en-US/product/ancestors/home&#34;&gt;Ancestors: The Humankind Odyssey&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;img src=&#39;https://philippegroarke.com/img/games/Ancestors_Logo.jpg&#39; class=&#34;img-fluid float-center w-75 py-3 &#34;/&gt;&#xA;&lt;h2 id=&#34;rollercoaster-tycoon-worldhttpsstoresteampoweredcomapp282560rollercoaster_tycoon_world&#34;&gt;&lt;a href=&#34;https://store.steampowered.com/app/282560/RollerCoaster_Tycoon_World/&#34;&gt;RollerCoaster Tycoon World&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;img src=&#39;https://philippegroarke.com/img/games/Roller-Coaster-Tycoon-World.jpg&#39; class=&#34;img-fluid float-center w-75 py-3 &#34;/&gt;&#xA;&lt;h2 id=&#34;blocks-quizhttpswwwpearfictioncomgamesblocks-quiz&#34;&gt;&lt;a href=&#34;https://www.pearfiction.com/games/blocks-quiz/&#34;&gt;Blocks Quiz&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;img src=&#39;https://philippegroarke.com/img/games/blocks_quiz_ipad.jpg&#39; class=&#34;img-fluid float-center w-50 py-3 &#34;/&gt;&#xA;&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;&lt;h1 id=&#34;game-jams&#34;&gt;Game Jams&lt;/h1&gt;&#xA;&lt;h2 id=&#34;mtl-jam-nations---amour-ou-patriehttpssimonstreitchioamour-ou-patrie&#34;&gt;&lt;a href=&#34;https://simonstre.itch.io/amour-ou-patrie&#34;&gt;Mtl Jam Nations - Amour ou Patrie&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;img src=&#39;https://philippegroarke.com/img/games/mjvg3w.png&#39; class=&#34;img-fluid float-center w-75 py-3 &#34;/&gt;&#xA;&lt;h2 id=&#34;ludum-dare-34---power-disney-princess-simulator-5000httpstarfmagougouitchiopower-disney-princess-simulator-5000&#34;&gt;&lt;a href=&#34;https://tarfmagougou.itch.io/power-disney-princess-simulator-5000&#34;&gt;Ludum Dare 34 - Power Disney Princess Simulator 5000&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;img src=&#39;https://philippegroarke.com/img/2015/good.png&#39; class=&#34;img-fluid float-center w-75 py-3 &#34;/&gt;&#xA;&lt;h2 id=&#34;onehourgamejam---maymaymator-2006httpstarfmagougouitchiomaymaymator-2006&#34;&gt;&lt;a href=&#34;https://tarfmagougou.itch.io/maymaymator-2006&#34;&gt;OneHourGameJam - MayMayMator 2006&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;img src=&#39;https://philippegroarke.com/img/games/maymaymator2006.png&#39; class=&#34;img-fluid float-center w-75 py-3 &#34;/&gt;&#xA;&lt;h2 id=&#34;onehourgamejam---no-scope-shopperhttpstarfmagougouitchionoscopeshopper&#34;&gt;&lt;a href=&#34;https://tarfmagougou.itch.io/noscopeshopper&#34;&gt;OneHourGameJam - No Scope Shopper&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;img src=&#39;https://philippegroarke.com/img/games/screenshot.png&#39; class=&#34;img-fluid float-center w-75 py-3 &#34;/&gt;&#xA;&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;&lt;h1 id=&#34;open-source&#34;&gt;Open Source&lt;/h1&gt;&#xA;&lt;h2 id=&#34;valyria-tearhttpvalyriatearblogspotcom&#34;&gt;&lt;a href=&#34;http://valyriatear.blogspot.com/&#34;&gt;Valyria Tear&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;img src=&#39;https://philippegroarke.com/img/games/valyria_tear.png&#39; class=&#34;img-fluid float-center w-75 py-3 &#34;/&gt;&#xA;&lt;h2 id=&#34;evol-onlinehttpevolonlineorg&#34;&gt;&lt;a href=&#34;http://evolonline.org/&#34;&gt;Evol Online&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;img src=&#39;https://philippegroarke.com/img/games/evol_online.png&#39; class=&#34;img-fluid float-center w-75 py-3 &#34;/&gt;</description>
    </item>
    <item>
      <title>Using SG14 Libraries - A Simple and Performant Event Stack</title>
      <link>https://philippegroarke.com/posts/2018/sg14_library_introduction-creating_a_simple_event_system/</link>
      <pubDate>Thu, 17 Jan 2019 12:43:04 -0500</pubDate>
      <guid>https://philippegroarke.com/posts/2018/sg14_library_introduction-creating_a_simple_event_system/</guid>
      <description>&lt;p&gt;There&amp;rsquo;s recently been some outcry from the gaming industry regarding C++&amp;rsquo;s direction. I share &lt;em&gt;some&lt;/em&gt; of the views expressed, but since I mostly write functional code for my engine, my expectations are somewhat different. I have certainly drunk the Kool-Aid.&lt;/p&gt;&#xA;&lt;p&gt;To me, &lt;code&gt;if constexpr&lt;/code&gt; and aligned &lt;code&gt;new&lt;/code&gt; are real demonstrations the standard committee understands our woes. Once we get static reflection, hopefully before I retire, the need for template metaprogramming should be greatly dimished. One way the committee wishes to improve the language for gaming is through SG14.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Chrono For Humans</title>
      <link>https://philippegroarke.com/posts/2018/chrono_for_humans/</link>
      <pubDate>Sun, 02 Dec 2018 17:28:16 -0500</pubDate>
      <guid>https://philippegroarke.com/posts/2018/chrono_for_humans/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ll be honest with you right off the bat, I hold a particular grudge for &lt;code&gt;std::chrono&lt;/code&gt;. In fact, it&amp;rsquo;s safe to say one of my favorite hobbies over the past few years has been ranting about &lt;code&gt;std::chrono&lt;/code&gt; to whomever will listen. And so, assuming I was wrong about the library, I&amp;rsquo;ve forced myself to use it every single time I need to work with duration values for the past year or so. I know the library was written by highly talented individuals, so I believed it &lt;em&gt;had to have&lt;/em&gt; some sort of reasoning behind it. I am happy to say I&amp;rsquo;ve reached enlightenment.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Easy Defensive Programming - Up To Eleven</title>
      <link>https://philippegroarke.com/posts/2018/easy_defensive_programming_2/</link>
      <pubDate>Sat, 20 Oct 2018 10:20:25 -0400</pubDate>
      <guid>https://philippegroarke.com/posts/2018/easy_defensive_programming_2/</guid>
      <description>&lt;p&gt;I recently posted about defensive programming, and how you can create an easy to use, low friction library of high level defensive rules. These rules prevent &amp;ldquo;silent&amp;rdquo; modification of your class constructors and help enforce a class design by declaring compile-time validation rules. The idea was well received, but some astute readers correctly pointed out the rule of 5 implementation was lacking. Today, we fix that.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Easy Defensive Programming</title>
      <link>https://philippegroarke.com/posts/2018/easy_defensive_programming/</link>
      <pubDate>Sat, 22 Sep 2018 15:28:20 -0400</pubDate>
      <guid>https://philippegroarke.com/posts/2018/easy_defensive_programming/</guid>
      <description>&lt;p&gt;A few months back, I learned about defensive programming at a local C++ meetup. The idea took a little while to sink in. I now rarely write any code without using defensive programming in some way or another. However, it does become tedious to write, especially if you write good error messages. Before delving too deep into the subject, lets discuss the basics.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Software</title>
      <link>https://philippegroarke.com/software/</link>
      <pubDate>Wed, 01 Aug 2018 16:33:24 -0400</pubDate>
      <guid>https://philippegroarke.com/software/</guid>
      <description>&lt;h1 id=&#34;professional-capacity&#34;&gt;Professional Capacity&lt;/h1&gt;&#xA;&lt;h2 id=&#34;3ds-maxhttpswwwautodeskcomproducts3ds-maxoverview&#34;&gt;&lt;a href=&#34;https://www.autodesk.com/products/3ds-max/overview&#34;&gt;3ds Max&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;img src=&#39;https://philippegroarke.com/img/software/3dsmax_splash.png&#39; class=&#34;img-fluid float-center w-75 py-3 &#34;/&gt;&#xA;&lt;p&gt;Work revolves mostly around performance.&lt;/p&gt;&#xA;&lt;h2 id=&#34;stingrayhttpswwwautodeskcomproductsstingrayoverview&#34;&gt;&lt;a href=&#34;https://www.autodesk.com/products/stingray/overview&#34;&gt;Stingray&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;img src=&#39;https://philippegroarke.com/img/software/stingray_splash.jpg&#39; class=&#34;img-fluid float-center w-75 py-3 &#34;/&gt;&#xA;&lt;p&gt;Point Cloud research &amp;amp; development.&lt;/p&gt;&#xA;&lt;h2 id=&#34;sflphonehttpssflphoneorg&#34;&gt;&lt;a href=&#34;https://sflphone.org&#34;&gt;SFLPhone&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;img src=&#39;https://philippegroarke.com/img/software/jami_splash.jpg&#39; class=&#34;img-fluid float-center w-50 py-3 &#34;/&gt;&#xA;&lt;p&gt;Research &amp;amp; Development.&lt;/p&gt;&#xA;&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;&lt;h1 id=&#34;personal-projects&#34;&gt;Personal Projects&lt;/h1&gt;&#xA;&lt;h2 id=&#34;wsayhttpsgithubcomp-groarkewsay&#34;&gt;&lt;a href=&#34;https://github.com/p-groarke/wsay&#34;&gt;wsay&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Windows equivalent of macOS say. Simple command line text-to-speech with easy file output, voice selection and more.&lt;/p&gt;&#xA;&lt;h2 id=&#34;bench_utilhttpsgithubcomp-groarkebench_util&#34;&gt;&lt;a href=&#34;https://github.com/p-groarke/bench_util&#34;&gt;bench_util&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;A small C++ benchmarking framework.&lt;/p&gt;&#xA;&lt;h2 id=&#34;fea_getopthttpsgithubcomp-groarkefea_getopt&#34;&gt;&lt;a href=&#34;https://github.com/p-groarke/fea_getopt&#34;&gt;fea_getopt&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;C++17 utf-8 functional argument parsing.&lt;/p&gt;&#xA;&lt;h2 id=&#34;fea_state_machineshttpsgithubcomp-groarkefea_state_machines&#34;&gt;&lt;a href=&#34;https://github.com/p-groarke/fea_state_machines&#34;&gt;fea_state_machines&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;A buffet of C++17 state machines. Includes a very fast small fsm, a full hierarchical fsm (statechart) and experimental designs.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Declarative Functional APIs - A.K.A. Abusing Lambda Parameters</title>
      <link>https://philippegroarke.com/blog/2018/05/19/declarative-functional-apis-a-k-a-abusing-lambda-parameters/</link>
      <pubDate>Sat, 19 May 2018 18:06:07 +0000</pubDate>
      <guid>https://philippegroarke.com/blog/2018/05/19/declarative-functional-apis-a-k-a-abusing-lambda-parameters/</guid>
      <description>&lt;p&gt;Functional APIs are a joy to work with. Not only do they help eliminate certain bug categories, but they tend to be very flexible and reusable. Today I present a technique that has emerged while I was simplifying some lambda based APIs. C++17 makes template meta-programming much more palatable, I dare not imagine what this would look like in C++11.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Simplifying Compile-Time Options With if constexpr</title>
      <link>https://philippegroarke.com/blog/2017/11/20/simplifying-compile-time-options-with-if-constexpr/</link>
      <pubDate>Mon, 20 Nov 2017 01:12:53 +0000</pubDate>
      <guid>https://philippegroarke.com/blog/2017/11/20/simplifying-compile-time-options-with-if-constexpr/</guid>
      <description>&lt;p&gt;My latest little experiment relates to compile-time options and eliminating preprocessor checks in user code. I&amp;rsquo;m not a big fan of MACROs, especially when they are simply used to make compile-time branches. I am also not a fan of other techniques used to minimize this problem. With C++17, we now have a beautiful and simple tool that can help remove all these preprocessor checks, &lt;code&gt;if constexpr&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Friendly Data-Oriented Entity-Component Managers</title>
      <link>https://philippegroarke.com/blog/2017/09/30/friendly-data-oriented-entity-component-managers/</link>
      <pubDate>Sat, 30 Sep 2017 06:50:34 +0000</pubDate>
      <guid>https://philippegroarke.com/blog/2017/09/30/friendly-data-oriented-entity-component-managers/</guid>
      <description>&lt;p&gt;In the past months, I&amp;rsquo;ve rewritten the entity-component system of my engine pet project about three times. Finally, something that ticks all the boxes has emerged. Today, I&amp;rsquo;d like to present this architecture. So far it has worked wonders for me, though I wouldn&amp;rsquo;t guarantee this to scale up to AAA sized projects. I still have much testing to do.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Static Duck Typing in C&#43;&#43;</title>
      <link>https://philippegroarke.com/blog/2017/05/09/static-duck-typing-in-c/</link>
      <pubDate>Tue, 09 May 2017 18:46:07 +0000</pubDate>
      <guid>https://philippegroarke.com/blog/2017/05/09/static-duck-typing-in-c/</guid>
      <description>&lt;p&gt;&lt;em&gt;Update : Walter Brown has come up with a much much more elegant way to do this. You can find the updated technique at the bottom of this post, or read more about it on &lt;a href=&#34;https://en.cppreference.com/w/cpp/experimental/is_detected&#34;&gt;cppreference&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;A little while ago, I watched Jason Turner&amp;rsquo;s great cppcon talk, where he uses C++17 to write a commodore game. At that point, I decided it was quite time I confirm my (now proven false) beliefs on templates. If you ever want to convince a game programmer that templates are fine, show him that talk, and some assembly ;)&lt;/p&gt;</description>
    </item>
    <item>
      <title>SIMD Quicktip: Understanding 16 Byte Memory Alignment Detection</title>
      <link>https://philippegroarke.com/blog/2017/02/19/quicktip-understanding-16-byte-memory-alignment-detection/</link>
      <pubDate>Sun, 19 Feb 2017 05:04:11 +0000</pubDate>
      <guid>https://philippegroarke.com/blog/2017/02/19/quicktip-understanding-16-byte-memory-alignment-detection/</guid>
      <description>&lt;p&gt;When working with SIMD intrinsics, it helps to have a thorough understanding of computer memory. In this post, I hope to shed some light on a really simple but essential operation to figure out if memory is aligned at a 16 byte boundary.&lt;/p&gt;</description>
    </item>
    <item>
      <title>OpenGL Model, View, Projection Matrices Reference</title>
      <link>https://philippegroarke.com/blog/2017/02/11/reference-opengl-model-view-projection-matrices/</link>
      <pubDate>Sat, 11 Feb 2017 16:29:29 +0000</pubDate>
      <guid>https://philippegroarke.com/blog/2017/02/11/reference-opengl-model-view-projection-matrices/</guid>
      <description>&lt;p&gt;An inclusive reference of transformation matrices for basic OpenGL work. It is intended as a quick reference while coding OpenGL without libraries.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Not Impossible : Storing C&#43;&#43; Virtual Method Pointers in C Callbacks.</title>
      <link>https://philippegroarke.com/blog/2017/02/05/not-impossible-storing-c-virtual-method-pointers-in-c-callbacks/</link>
      <pubDate>Sun, 05 Feb 2017 21:18:17 +0000</pubDate>
      <guid>https://philippegroarke.com/blog/2017/02/05/not-impossible-storing-c-virtual-method-pointers-in-c-callbacks/</guid>
      <description>&lt;p&gt;A good friend challenged me while we where investigating vtables and various ways to create a reflection system without macros. He stated, &amp;ldquo;It is impossible to store a virtual method pointer in a C callback&amp;rdquo;. I decided to prove him wrong. Here, I present the result of this investigation.&lt;/p&gt;</description>
    </item>
    <item>
      <title>GLSL Quicktip: Stringify Macro</title>
      <link>https://philippegroarke.com/blog/2017/02/05/glsl-stringify-macro/</link>
      <pubDate>Sun, 05 Feb 2017 16:39:39 +0000</pubDate>
      <guid>https://philippegroarke.com/blog/2017/02/05/glsl-stringify-macro/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve seen a lot of examples, tutorials and open-source code that use quotes to assign their shader programs to a &lt;code&gt;const char*&lt;/code&gt;. Fully fledged engines would have a way to parse text-files, but if you are doing quick and dirty tests like me, you can use this macro to make editing easier.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Game Design Memory Lane - Legacy of Kain: Soul Reaver</title>
      <link>https://philippegroarke.com/blog/2016/10/10/game-design-memory-lane-legacy-of-kain-soul-reaver/</link>
      <pubDate>Mon, 10 Oct 2016 20:51:50 +0000</pubDate>
      <guid>https://philippegroarke.com/blog/2016/10/10/game-design-memory-lane-legacy-of-kain-soul-reaver/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve recently started playing old gems, classics, in an effort to further my game design knowledge, ideas and culture. The games I have chosen are completely new to me. It is truly interesting to delve into very old titles, especially when you remove the nostalgia factor. Here I write my thoughts, impressions and lessons learned from some of these games.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Eve Online - Dual monitor window on OS X</title>
      <link>https://philippegroarke.com/blog/2016/04/17/eve-online-dual-monitor-window-on-os-x/</link>
      <pubDate>Sun, 17 Apr 2016 03:58:03 +0000</pubDate>
      <guid>https://philippegroarke.com/blog/2016/04/17/eve-online-dual-monitor-window-on-os-x/</guid>
      <description>&lt;p&gt;&lt;em&gt;This simple guide doesn&amp;rsquo;t require any third-party tools or apps.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;A quick guide to help you get the most out of your monitors and Eve. Once you&amp;rsquo;ve played the game in all its dual screen glory, you will never go back. Lets get started!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Downloading Twitch replays is easy</title>
      <link>https://philippegroarke.com/blog/2016/03/10/downloading-twitch-replays-is-easy/</link>
      <pubDate>Thu, 10 Mar 2016 05:04:03 +0000</pubDate>
      <guid>https://philippegroarke.com/blog/2016/03/10/downloading-twitch-replays-is-easy/</guid>
      <description>&lt;p&gt;Somehow, due to either miss-information or a change it twitch&amp;rsquo;s apis, the web is filled with false information about livestreamer and downloading twitch replays. Lets fix that.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Crispy text in Unity3D</title>
      <link>https://philippegroarke.com/blog/2015/12/05/crispy-text-in-unity3d/</link>
      <pubDate>Sat, 05 Dec 2015 18:14:19 +0000</pubDate>
      <guid>https://philippegroarke.com/blog/2015/12/05/crispy-text-in-unity3d/</guid>
      <description>&lt;p&gt;We&amp;rsquo;ve all been there; you import a font into Unity3D, write some UI text and&amp;hellip; its blurry [sadface]. Here is a quick reference on how to get buutiful crispy text in the engine.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Capturing Desktop Audio on El Capitan</title>
      <link>https://philippegroarke.com/blog/2015/11/29/capturing-desktop-audio-on-el-capitan/</link>
      <pubDate>Sun, 29 Nov 2015 01:42:17 +0000</pubDate>
      <guid>https://philippegroarke.com/blog/2015/11/29/capturing-desktop-audio-on-el-capitan/</guid>
      <description>&lt;p&gt;N.B. &lt;em&gt;This solution is completely free and only requires iShowU Audio Capture.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;So I recently upgraded to El Capitan and I need desktop audio capture for Open Broadcaster Software. The new OS X release only authorizes signed kext, which is a good thing. Unfortunately that breaks Soundflower or WavTap.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Eve Online isn&#39;t hard, it is annoying</title>
      <link>https://philippegroarke.com/blog/2015/09/26/eve-online-isnt-hard-it-is-annoying/</link>
      <pubDate>Sat, 26 Sep 2015 03:45:02 +0000</pubDate>
      <guid>https://philippegroarke.com/blog/2015/09/26/eve-online-isnt-hard-it-is-annoying/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve recently subscribed for another month of &lt;a href=&#34;https://www.eveonline.com/&#34;&gt;Eve Online&lt;/a&gt;. I played a long time ago, and quit after space life got extremely boring and lonely. Last time I logged in, I did so with 4 friends during a discount period. What I write here are my personal thoughts, and some echoes of these long gone pilots. Once my gaming friends left Eve, everything changed. Why the game didn&amp;rsquo;t appeal to them could fuel a discussion on its&amp;rsquo; own.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fun with std::threads!</title>
      <link>https://philippegroarke.com/blog/2015/08/21/fun-with-stdthreads/</link>
      <pubDate>Fri, 21 Aug 2015 18:01:52 +0000</pubDate>
      <guid>https://philippegroarke.com/blog/2015/08/21/fun-with-stdthreads/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve recently gotten more and more involved with the &lt;a href=&#34;https://winehq.org&#34;&gt;Wine&lt;/a&gt; project. I am a gamer, after all, and having only a Mac laptop and OS X makes it somewhat hard to play games. While debugging wine logs, I&amp;rsquo;ve encountered a problem many face when using +relay. You can&amp;rsquo;t just ignore those 4 GB logs, as they often contain the exact reason, or more precisely, the exact location your game/software crashed. I use &lt;a href=&#34;https://www.sublimetext.com&#34;&gt;Sublime Text&lt;/a&gt; to read those, it is so far the most performant editor when handling huge text files, quickly and easily dealing with gigabytes of logs. Consider me impressed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Adding a huge image gallery to wordpress.com</title>
      <link>https://philippegroarke.com/blog/2015/07/23/adding-a-huge-image-gallery-to-wordpress-com/</link>
      <pubDate>Thu, 23 Jul 2015 21:32:35 +0000</pubDate>
      <guid>https://philippegroarke.com/blog/2015/07/23/adding-a-huge-image-gallery-to-wordpress-com/</guid>
      <description>&lt;p&gt;I am hitting many of the imposed limits on my free blog. I recently wanted to share a ton of textures, but since they were to big for the free space allowed, I resorted to a little &amp;ldquo;trick&amp;rdquo; if you will. I ended up creating a script to generate a huge html thumbnail gallery, using a table. It seemed like the best of the available options.&lt;/p&gt;</description>
    </item>
    <item>
      <title>LibAV, libAO and QT5 audio player tutorial.</title>
      <link>https://philippegroarke.com/blog/2015/04/11/libav-libao-and-qt5-audio-player-tutorial/</link>
      <pubDate>Sat, 11 Apr 2015 20:44:02 +0000</pubDate>
      <guid>https://philippegroarke.com/blog/2015/04/11/libav-libao-and-qt5-audio-player-tutorial/</guid>
      <description>&lt;p&gt;A while back I was working on some audio prototyping. I made a simple audio player prototype and was experiencing with different audio plugin APIs. I decided to use libAV (not libavcodec from ffmpeg) for the simple reason that its&amp;rsquo; documentation is much much better than ffmpeg. I highly recommend to take advantage of that. There are many examples, code snippets and explanations &lt;a href=&#34;https://libav.org/doxygen/master/index.html&#34;&gt;here&lt;/a&gt;. Of course, API documentation is a bit dry when you first start using a library, so here is a tutorial and a good base you can use to build upon.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Thoughts on releasing music under CC licenses.</title>
      <link>https://philippegroarke.com/blog/2015/03/20/thoughts_on_music_and_cc_licenses/</link>
      <pubDate>Fri, 20 Mar 2015 22:13:31 +0000</pubDate>
      <guid>https://philippegroarke.com/blog/2015/03/20/thoughts_on_music_and_cc_licenses/</guid>
      <description>&lt;p&gt;A few years back, I released 2 tracks on &lt;a href=&#34;https://opengameart.org&#34;&gt;OpenGameArt&lt;/a&gt;. I hadn&amp;rsquo;t composed any musical pieces in many years, and I took the opportunity to try something new. Not only dip my toes into musical composition again, but also share my work with the world. All my previous songs had never been heard by anyone other than close friends. The experience was nerve-racking but very satisfying.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
