<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>(pixel)desu.blog</title>
    <link>https://desu.blog/</link>
    <description>I wish I was creative enough to figure out a proper description for this blog.</description>
    <pubDate>Sun, 08 Mar 2026 16:43:01 +0000</pubDate>
    <item>
      <title>Reverse Engineering Pangya – File Formats #2: .iff</title>
      <link>https://desu.blog/reverse-engineering-pangya-file-formats-2-iff?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[Another blogpost after...almost a year! So much about that resolve of planning to post stuff frequently!&#xA;&#xA;Even though I talked about a different file format in my first post about reverse engineering Pangya, that actually wasn&#39;t the first format that I took apart, or messed with.!--more--&#xA;&#xA;This one is, .iff.&#xA;&#xA;What is .iff?&#xA;&#xA;Well, .iff is already taken as &#34;Interchangable File Format&#34;, but in regards to Pangya it probably can be watered down to it meaning &#34;Item File Format&#34;. because that&#39;s what it mainly does, even if it&#39;s use diverged over the years.&#xA;&#xA;How does the format inside .iff files look like?&#xA;&#xA;It&#39;s actually pretty simple, aside of some metadata fields at the beginning (the count of entries, a binding identifier, and whats presumed to be a version number), it&#39;s only the records.&#xA;&#xA;Those records are pretty much just sets of struct/class instances of the specific model type and their values serialized, so nothing special.&#xA;&#xA;How did you find out what means what?&#xA;&#xA;Considering we have the basic structure down now, the interesting thing is the structure of each record/data set.&#xA;&#xA;There&#39;s a problem now though. The structure data the game de-serializes has not been present in any of the decompilations or version of the game we got our hands on...so, this pretty much means we need to apply manual labour for the most part.&#xA;&#xA;One thing that was pretty easy to figure out at first was that strings are always of a fixed length, for English regions it was 40 bytes (or 512 bytes for long descriptions).&#xA;&#xA;So, without a functional version of the game running (for the most cases) how can we figure out what the fields mean?&#xA;&#xA;Comparing data with official sources of course!&#xA;&#xA;Back when Pangya was active, the US-based publishers had MediaWiki sites set up for all the information around the game. The sites aren&#39;t online anymore, but that&#39;s nothing the Wayback Machine can&#39;t help us with!&#xA;&#xA;wiki.gamerage.com/pangya - 2014&#xA;&#xA;With this data in our hands, we can cross-reference entries inside the files to the text information in the Wiki. It&#39;s quite a tedious process, but definitely the easiest way to get to know stuff without having the running game at your exposal.&#xA;&#xA;As an example, one of the most successful infos I pulled from the wiki were the card effect flags on cards.&#xA;&#xA;----&#xA;&#xA;So, that&#39;s pretty much it for .iff, a pretty simple file format, but the research surely was some work, and it is far from done.&#xA;&#xA;Data tends to differ between the regions, and to this day people are looking through the files and documenting the fields!_]]&gt;</description>
      <content:encoded><![CDATA[<p><em>Another blogpost after...almost a year! So much about that resolve of planning to post stuff frequently!</em></p>

<p>Even though I talked about a different file format in <a href="https://desu.blog/reverse-engineering-pangya-file-formats-1-dat" rel="nofollow">my first post about reverse engineering Pangya</a>, that actually wasn&#39;t the first format that I took apart, or messed with.</p>

<p>This one is, <code>.iff</code>.</p>

<h2 id="what-is-iff" id="what-is-iff">What is <code>.iff</code>?</h2>

<p>Well, <code>.iff</code> is already taken as “Interchangable File Format”, but in regards to Pangya it probably can be watered down to it meaning “Item File Format”. because that&#39;s what it mainly does, even if it&#39;s use diverged over the years.</p>

<h2 id="how-does-the-format-inside-iff-files-look-like" id="how-does-the-format-inside-iff-files-look-like">How does the format inside <code>.iff</code> files look like?</h2>

<p>It&#39;s actually pretty simple, aside of some metadata fields at the beginning (the count of entries, a binding identifier, and whats presumed to be a version number), it&#39;s only the records.</p>

<p>Those records are pretty much just sets of <code>struct</code>/<code>class</code> instances of the specific model type and their values serialized, so nothing special.</p>

<h2 id="how-did-you-find-out-what-means-what" id="how-did-you-find-out-what-means-what">How did you find out what means what?</h2>

<p>Considering we have the basic structure down now, the interesting thing is the structure of each record/data set.</p>

<p>There&#39;s a problem now though. The structure data the game de-serializes has not been present in any of the decompilations or version of the game we got our hands on...so, this pretty much means we need to apply manual labour for the most part.</p>

<p>One thing that was pretty easy to figure out at first was that strings are always of a fixed length, for English regions it was 40 bytes (or 512 bytes for long descriptions).</p>

<p>So, without a functional version of the game running (for the most cases) how can we figure out what the fields mean?</p>

<p><em>Comparing data with official sources of course!</em></p>

<p>Back when Pangya was active, the US-based publishers had MediaWiki sites set up for all the information around the game. The sites aren&#39;t online anymore, but that&#39;s nothing the Wayback Machine can&#39;t help us with!</p>

<p><a href="https://web.archive.org/web/20141123154403/http://wiki.gamerage.com/pangya/index.php/Main_Page" rel="nofollow">wiki.gamerage.com/pangya – 2014</a></p>

<p>With this data in our hands, we can cross-reference entries inside the files to the text information in the Wiki. It&#39;s quite a tedious process, but definitely the easiest way to get to know stuff without having the running game at your exposal.</p>

<p>As an example, one of the most successful infos I pulled from the wiki were the <a href="https://github.com/retreev/PangLib/blob/master/PangLib.IFF/Models/Flags/CardEffectFlag.cs" rel="nofollow">card effect flags</a> on <a href="https://github.com/retreev/PangLib/blob/master/PangLib.IFF/Models/Data/Card.cs" rel="nofollow">cards</a>.</p>

<hr/>

<p>So, that&#39;s pretty much it for <code>.iff</code>, a pretty simple file format, but the research surely was some work, and it is far from done.</p>

<p><em>Data tends to differ between the regions, and to this day people are looking through the files and documenting the fields!</em></p>
]]></content:encoded>
      <guid>https://desu.blog/reverse-engineering-pangya-file-formats-2-iff</guid>
      <pubDate>Sun, 19 Dec 2021 15:38:58 +0000</pubDate>
    </item>
    <item>
      <title>How I manage my Life and Productivity</title>
      <link>https://desu.blog/how-i-manage-my-life-and-productivity?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[I&#39;ve wanted to write this blogpost for quite a while now, since October I believe. Finally got some time on my hands and feeling like writing after my year-in-review post, so here we go. !--more--&#xA;&#xA;The Problem&#xA;&#xA;Not sure if people know, but I had a huge problem with productivity in general. I&#39;ve been doing programming-related things for around 10 years now and with the improved skill came more ideas, more things I wanted to do and less time to do it. The issue here is that the ideas just pile up, and the more you end up feeling bad because the pile just doesn&#39;t grow smaller.&#xA;&#xA;It got particularly bad over the years, and last year September I finally decided I needed to change something, and went back to my good old friend Todoist. &#xA;&#xA;Even better, after initially setting up tasks again, I actually found their Productivity Methods page, including a quiz that I decided to take, which would eventually lead me to something that would help me manage stuff even better.&#xA;&#xA;And that quiz told me that GTD, short for Gettings Things Done, was the method for me. How fitting!&#xA;&#xA;----&#xA;&#xA;Disclaimer: While I found that GTD works for me, it might not be your fit at all, or you won&#39;t like the planning effort going into it. If you are interested in things like this however, feel free to take the quiz on the aforementioned Productivity Methods page, there are more than a handful of different approaches you can take!&#xA;&#xA;Getting Things Done&#xA;&#xA;To quickly get into it a bit, GTD is a self-management/productivity workflow by David Allen. It consists of following steps:&#xA;&#xA;Capture: Capture everything that crosses your mind. Everything goes on the list.&#xA;Clarify: Turn whatever you captured into clear action steps if they aren&#39;t already. Clear referring to you knowing what to even after a long while of not touching this specific thing.&#xA;Organize: Sort your tasks in a priority fit for you, add due dates, etc.&#xA;Review: Go over your lists and repeat the above points. Smaller reviews daily and larger ones weekly.&#xA;Engage: Do the things!&#xA;&#xA;It sounds like a lot of planning, but probably the hardest thing to initially do is the &#34;great mind sweep&#34;, where you need to get an initial drop of everything your brain holds on. GTD actually provides a trigger list for this, containing keywords that might bring things back to recent memory.&#xA;&#xA;GTD x Todoist - My personalized workflow&#xA;&#xA;Okay, so now I have Todoist and GTD, but how exactly do you cleanly do the above? I&#39;m using Todoist Premium, so added to the general projects, I also have access to labels for my tasks.&#xA;&#xA;Someday/Maybe&#xA;&#xA;For everything that I want to do at some point, I have a label called &#34;Someday/Maybe&#34;. These pretty much are my unplanned tasks, and when I do my daily review and I&#39;m in the mood, and have the time, I might pick a task and put it on my list for the day.&#xA;&#xA;This label is pretty much my brain. As soon as I think of something I want to do, I put it on my list, and if it&#39;s not a task I need to do by a specific time, I slap this label onto it.&#xA;&#xA;a peek into my list&#xA;&#xA;Next&#xA;&#xA;Next up, there is the label &#34;Next&#34;! These are tasks that are in close relation to another one, and I can safely determine that once I planned the other task, I need to do this one as well. As an example, when I start watching an anime and make tasks to watch the episodes, the single tasks don&#39;t become &#34;Someday/Maybe&#34; tasks, but rather &#34;Next&#34; ones. I prioritize these before pulling in something from the &#34;Someday/Maybe&#34; list.&#xA;&#xA;Repeating&#xA;&#xA;I also have a label called &#34;Repeating&#34;. These are fixed tasks that don&#39;t require planning because they always have set dates, or timeframes where I need to do them. This includes things like taking out the trash for garbage disposal on time etc. pp. &#xA;&#xA;This is also not really a GTD-related thing, but something I find personally interesting to look through.&#xA;&#xA;Epic&#xA;&#xA;The final label I have is called &#34;Epic&#34;. This actually isn&#39;t a GTD-specific thing, but something I got to add for myself. Sometimes I have things I want to do that include a lot of smaller subtasks following, so getting to the huge task is an &#34;Epic&#34;. Once that &#34;Epic&#34; has been crossed of, and I started doing that thing, I pretty much create a lot of following &#34;Next&#34; tasks for it.&#xA;&#xA;Daily / Weekly Reviews&#xA;&#xA;These pretty much just consist of me looking at my &#34;Today&#34; view in Todoist, checking what tasks are up for the day. Depending on how much there is or how I&#39;m feeling I then go through &#34;Someday/Maybe&#34; and pick some additional ones, trying not to overload myself of course.&#xA;&#xA;my today view for the day of writing this post&#xA;&#xA;For the Weekly Review on Mondays I do the same, but if possible I try to pick larger tasks like Epics and spread them across the week. The last epic I started was &#34;Starting to watch Gatchaman Crowds insight&#34;, which split into 12 tasks (for 12 episodes), which I spread over the week watching two episodes a day.&#xA;&#xA;----&#xA;&#xA;Verdict / Learnings from it&#xA;&#xA;So, this has been my personal workflow for about 5 months now, and I&#39;m quite satisfied with it so far, there&#39;s a few reasons for it.&#xA;&#xA;The main one being that I got my brain to finally understand productivity_ right, and especially in the full scope for myself. My sense of productivity was for a long time getting the ideas in my brain done, but being able to look at the grand scale of things and seeing that all the time I&#39;ve been working an 8-hour day job and did things there as well.&#xA;&#xA;This also helped me getting back into enjoying entertainment media again. For a long time I actually internally kept myself from watching anime or gaming for too long because I felt like I needed to do something productive. Now somewhat having the days laid out, and more carefully assessing myself over the week I now more often make myself time to do the things I enjoy, aside of the cool programming projects and whatever there is.&#xA;&#xA;----&#xA;&#xA;As said earlier already, this might not be for everyone. I&#39;m a person that you could regard as overthinking/overplanning, so the workflow I adopted kinda fits that as well.&#xA;&#xA;In the end the thing that matters is that you find a workflow for yourself and that you try keeping at it. If stuff doesn&#39;t work out, adjust it, reiterate and talk about it!&#xA;&#xA;----&#xA;&#xA;How do you manage your life, if at all? You can always get into a conversation with me on Twitter or Mastodon, so feel free to chat with me about it, or give feedback about mine!&#xA;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p>I&#39;ve wanted to write this blogpost for quite a while now, since October I believe. Finally got some time on my hands and feeling like writing after my year-in-review post, so here we go. </p>

<h2 id="the-problem" id="the-problem">The Problem</h2>

<p>Not sure if people know, but I had a huge problem with <em>productivity</em> in general. I&#39;ve been doing programming-related things for around 10 years now and with the improved skill came more ideas, more things I wanted to do and less time to do it. The issue here is that the ideas just pile up, and the more you end up feeling bad because the pile just doesn&#39;t grow smaller.</p>

<p>It got particularly bad over the years, and last year September I finally decided I needed to change something, and went back to my good old friend <a href="https://todoist.com/" rel="nofollow">Todoist</a>.</p>

<p>Even better, after initially setting up tasks again, I actually found their <a href="https://todoist.com/productivity-methods" rel="nofollow">Productivity Methods page</a>, including a quiz that I decided to take, which would eventually lead me to something that would help me manage stuff even better.</p>

<p>And that quiz told me that GTD, short for Gettings Things Done, was the method for me. <em>How fitting!</em></p>

<hr/>

<p><strong>Disclaimer:</strong> While I found that GTD works for me, it might not be your fit at all, or you won&#39;t like the planning effort going into it. If you are interested in things like this however, feel free to take the quiz on the aforementioned Productivity Methods page, there are more than a handful of different approaches you can take!</p>

<h2 id="getting-things-done" id="getting-things-done">Getting Things Done</h2>

<p>To quickly get into it a bit, GTD is a self-management/productivity workflow by David Allen. It consists of following steps:</p>
<ul><li><strong>Capture:</strong> Capture everything that crosses your mind. Everything goes on the list.</li>
<li><strong>Clarify:</strong> Turn whatever you captured into clear action steps if they aren&#39;t already. <em>Clear</em> referring to you knowing what to even after a long while of not touching this specific thing.</li>
<li><strong>Organize:</strong> Sort your tasks in a priority fit for you, add due dates, etc.</li>
<li><strong>Review:</strong> Go over your lists and repeat the above points. Smaller reviews daily and larger ones weekly.</li>
<li><strong>Engage:</strong> Do the things!</li></ul>

<p>It sounds like a lot of planning, but probably the hardest thing to initially do is the “great mind sweep”, where you need to get an initial drop of everything your brain holds on. GTD actually provides a <a href="https://gettingthingsdone.com/wp-content/uploads/2014/10/Mind_Sweep_Trigger_List.pdf" rel="nofollow">trigger list</a> for this, containing keywords that might bring things back to recent memory.</p>

<h2 id="gtd-x-todoist-my-personalized-workflow" id="gtd-x-todoist-my-personalized-workflow">GTD x Todoist – My personalized workflow</h2>

<p>Okay, so now I have Todoist and GTD, but how exactly do you cleanly do the above? I&#39;m using Todoist Premium, so added to the general projects, I also have access to labels for my tasks.</p>

<h3 id="someday-maybe" id="someday-maybe">Someday/Maybe</h3>

<p>For everything that I want to do at some point, I have a label called “Someday/Maybe”. These pretty much are my unplanned tasks, and when I do my daily review and I&#39;m in the mood, and have the time, I might pick a task and put it on my list for the day.</p>

<p>This label is pretty much my brain. As soon as I think of something I want to do, I put it on my list, and if it&#39;s not a task I need to do by a specific time, I slap this label onto it.</p>

<p><img src="https://desu.pictures/BucolicLimeHornet9.png" alt="a peek into my list"/></p>

<h3 id="next" id="next">Next</h3>

<p>Next up, there is the label “Next”! These are tasks that are in close relation to another one, and I can safely determine that once I planned the other task, I need to do this one as well. As an example, when I start watching an anime and make tasks to watch the episodes, the single tasks don&#39;t become “Someday/Maybe” tasks, but rather “Next” ones. I prioritize these before pulling in something from the “Someday/Maybe” list.</p>

<h3 id="repeating" id="repeating">Repeating</h3>

<p>I also have a label called “Repeating”. These are fixed tasks that don&#39;t require planning because they always have set dates, or timeframes where I need to do them. This includes things like taking out the trash for garbage disposal on time etc. pp.</p>

<p>This is also not really a GTD-related thing, but something I find personally interesting to look through.</p>

<h3 id="epic" id="epic">Epic</h3>

<p>The final label I have is called “Epic”. This actually isn&#39;t a GTD-specific thing, but something I got to add for myself. Sometimes I have things I want to do that include a lot of smaller subtasks following, so getting to the huge task is an “Epic”. Once that “Epic” has been crossed of, and I started doing that thing, I pretty much create a lot of following “Next” tasks for it.</p>

<h3 id="daily-weekly-reviews" id="daily-weekly-reviews">Daily / Weekly Reviews</h3>

<p>These pretty much just consist of me looking at my “Today” view in Todoist, checking what tasks are up for the day. Depending on how much there is or how I&#39;m feeling I then go through “Someday/Maybe” and pick some additional ones, trying not to overload myself of course.</p>

<p><img src="https://desu.pictures/HystericalSilverHummingbird7.png" alt="my today view for the day of writing this post"/></p>

<p>For the Weekly Review on Mondays I do the same, but if possible I try to pick larger tasks like Epics and spread them across the week. The last epic I started was “Starting to watch Gatchaman Crowds insight”, which split into 12 tasks (for 12 episodes), which I spread over the week watching two episodes a day.</p>

<hr/>

<h2 id="verdict-learnings-from-it" id="verdict-learnings-from-it">Verdict / Learnings from it</h2>

<p>So, this has been my personal workflow for about 5 months now, and I&#39;m quite satisfied with it so far, there&#39;s a few reasons for it.</p>

<p>The main one being that I got my brain to finally understand <em>productivity</em> right, and especially in the full scope for myself. My sense of productivity was for a long time getting the ideas in my brain done, but being able to look at the grand scale of things and seeing that all the time I&#39;ve been working an 8-hour day job and did things there as well.</p>

<p>This also helped me getting back into enjoying entertainment media again. For a long time I actually internally kept myself from watching anime or gaming for too long because I felt like I needed to do something productive. Now somewhat having the days laid out, and more carefully assessing myself over the week I now more often make myself time to do the things I enjoy, aside of the cool programming projects and whatever there is.</p>

<hr/>

<p>As said earlier already, this might not be for everyone. I&#39;m a person that you could regard as overthinking/overplanning, so the workflow I adopted kinda fits that as well.</p>

<p>In the end the thing that matters is that you find a workflow for yourself and that you try keeping at it. If stuff doesn&#39;t work out, adjust it, reiterate and talk about it!</p>

<hr/>

<p>How do you manage your life, if at all? You can always get into a conversation with me on <a href="https://twitter.com/pixeldesu" rel="nofollow">Twitter</a> or <a href="https://desu.social/@pixel" rel="nofollow">Mastodon</a>, so feel free to chat with me about it, or give feedback about mine!</p>
]]></content:encoded>
      <guid>https://desu.blog/how-i-manage-my-life-and-productivity</guid>
      <pubDate>Sat, 16 Jan 2021 14:42:42 +0000</pubDate>
    </item>
    <item>
      <title>Year in Review - 2020</title>
      <link>https://desu.blog/year-in-review-2020?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[So...the year is over, huh? Guess it&#39;s time for a recap of the longest/shortest year.!--more--&#xA;&#xA;Well, first and foremost I&#39;m not going to delve into too much detail about COVID and all that People are mostly sick hearing about it, and aside of a few personal experiences that changed over the year, I don&#39;t have much to add to the discussion anyway. I worked 3 full months in home office, which was a seamless transition due to our company already mandating a VPN setup for every employee into our local company network.&#xA;&#xA;----&#xA;&#xA;So, what exactly happened in 2020?&#xA;&#xA;Trip to Obergurgl&#xA;&#xA;The very first thing that happened in 2020 was pretty much in the beginning of January, our company had a trip to Obergurgl in Austria for its 10th anniversary. &#xA;&#xA;For people not knowing, Obergurgl is a rather expensive/chique ski resort, so we pretty much had an &#34;all out&#34; weeklong trip, and I&#39;m pretty sure most of us won&#39;t forget that for quite a while. I personally didn&#39;t really ski there, but went tobogganing (sledding) instead, the destined area for that was a hell of a ride and I ended up being lucky not being bruised all over. The definitive highlight of the week was a seated VR Flight Simulator setup (using XPlane 11) that was up for one day. &#xA;&#xA;One of the apprentices at our company actually cut together a short impression video, you can watch here.&#xA;&#xA;Online Demoparties&#xA;&#xA;I&#39;ve been attending demoparties since 2018 (Revision 2018 was my first one!) and since I tried to at least attend Revision (Saarbrücken, Easter weekend) and Evoke (Cologne, in Summer) every year. This year was a bit different though, but instead of the event being cancelled, it was moved online using streams. Additionally, everything was made a bit more lively-er and fun with Sofa World, which pretty much is an virtual demo party space in which the creators rebuild the actual location in which players then can watch the streams on actual bigscreens!&#xA;&#xA;Picture of the E-Werk in Saarbrücken, inside Sofa World, courtesy of https://www.sofaworld.net/&#xA;&#xA;I also attended both Outline and Nova, but really mostly spent my time in Sofa World finding easter eggs on the new maps.&#xA;&#xA;Retrospring&#xA;&#xA;Remember Retrospring? Me neither. Considering it ended in 2016, and we decided to bring it back on April Fools 2017 without any further support, after 3 years of doing nothing, we actually started working on things again a bit, at least slowly. Main issue is that we need to refactor our sins from 6 years ago, and that takes quite a while. The main achievements this year definitely were the addition of Two Factor Authentication and the whole frontend refactor.&#xA;&#xA;Some before/after pictures I posted in tweets below:&#xA;&#xA;blockquote class=&#34;twitter-tweet&#34;p lang=&#34;en&#34; dir=&#34;ltr&#34;profile page glowup a href=&#34;https://t.co/uF1BNHcElR&#34;pic.twitter.com/uF1BNHcElR/a/p&amp;mdash; Andy (@pixeldesu) a href=&#34;https://twitter.com/pixeldesu/status/1256248994839302147?refsrc=twsrc%5Etfw&#34;May 1, 2020/a/blockquote&#xA;&#xA;blockquote class=&#34;twitter-tweet&#34;p lang=&#34;en&#34; dir=&#34;ltr&#34;Reworking the navigation for the Home Timeline, Public Timeline and Groups.brbractually making Groups visible with some help text because there&amp;#39;s surely some people that don&amp;#39;t know Retrospring actually had groups all those years. a href=&#34;https://t.co/TiMwOm0uk3&#34;pic.twitter.com/TiMwOm0uk3/a/p&amp;mdash; Andy (@pixeldesu) a href=&#34;https://twitter.com/pixeldesu/status/1257491717592416257?refsrc=twsrc%5Etfw&#34;May 5, 2020/a/blockquote&#xA;&#xA;I Deleted My Google Account&#xA;&#xA;Why? Because I can.&#xA;&#xA;I&#39;m not that super strong on &#34;keeping my personal data safe&#34;, but it&#39;s definitely something I&#39;ve been thinking more about recently. So, at the end of last year I evaluated how much I actually use my Google account and...I barely used it at all.&#xA;&#xA;So I decided to delete it. I&#39;m now approaching one year without any personal Google account, and I absolutely don&#39;t miss it. My email always was managed externally, first on a server that I partially paid for and now I&#39;m running a plan on Fastmail. &#xA;&#xA;The really only thing I use on the regular from Google is YouTube, and aside of the videos that are marked as not suitable for young audiences, I still can watch everything on there just fine. For managing subscriptions, I even built a custom webapp that utilizes ancient YouTube RSS feeds!&#xA;&#xA;Shortly after that, I also deleted my Facebook account, that indeed was lying barren for like 5 years.&#xA;&#xA;Handling Productivity&#xA;&#xA;One of my largest personal issues in the past few years has been productivity, or at least my perceived one. A lot of people probably know the feeling that they want to get stuff done and then just end up staring into their screens for the rest of the day/evening/etc. and I wanted to overcome that.&#xA;&#xA;For that to work I started to use Todoist and fittingly enough found a productivity guide and quiz that led me into trying out a methodology fitting for myself: Getting Things Done (or GTD for short). I started shaping my Todoist to work that way and I&#39;ve done so since September. It definitely has worked out for myself.&#xA;&#xA;But another huge part in getting over this was figuring out that even if I perceived that I was unproductive, by the time I thought that I already did loads of things, and to-do lists helped to visualize that to me.&#xA;&#xA;I want to talk more about this, but I will go more in-depth into how I&#39;m handling all that stuff in a separate blog post in the future!&#xA;&#xA;I Read Umineko...&#xA;&#xA;...Finally. I started it in 2018, and due to...probably just the paragraph above and me not managing my time properly, I lost track of it. So, in my 2 week vacation in September I finally got myself to finish it. I read the remaining 5 (out of 8) episodes in a span of 5 days, one episode per day, where the average reading length is at least 8-10 hours.&#xA;&#xA;I was absolutely floored at the end of it, not just because these were super long nights, but also emotionally. I don&#39;t often want to claim something is &#34;perfect&#34;, but Umineko is so close to that, it&#39;s an experience I won&#39;t ever forget.&#xA;&#xA;Additionally, a few months after finishing the VN/soundnovel, I also read the manga, which I finished just yesterday. It includes a bit more details in a few aspects and it visualizes a few scenes better due to the manga panels of course showing more than the few (but still numerous) CGs in the VN.&#xA;&#xA;For the next year it&#39;s onwards to more 07th Expansion (most likely Higurashi) and other VNs!&#xA;&#xA;I Organized an Online (Un)Conference&#xA;&#xA;I did not just attend several online events and conferences this year, I actually helped out organizing one! TYPO3Camp Munich, which I usually attend to in person.&#xA;&#xA;Over the course of two months I helped with several things, but my personal focus was finding the setup for the conference itself, considering the sheer amount of tools available nowadays. We opted for a conference room tool and Jitsi rooms at the side for more personal interactions. And it seemed people were getting used to it quite quickly. When the actual event happened at the end of September I also did moderation of some talks.&#xA;&#xA;Being on the other side of conferences once was quite nice and I&#39;ll definitely help out the following years as well!&#xA;&#xA;I Started Streaming (Again)&#xA;&#xA;Did you know I have a Twitch channel? Now you do! In November my urge to go back to streaming finally grew big enough to actually do it, and so I did! I prepared some fancy new visuals, finally set up my Stream Deck among other things and I&#39;m now streaming with a weekly schedule. &#xA;&#xA;Currently streams are on hold until &#34;the next year&#34; because December turned out quite stressful at work and I couldn&#39;t get myself to stream much. But they&#39;ll be coming back in January for sure!&#xA;&#xA;----&#xA;&#xA;This probably summarizes most of the &#34;larger &#34;events&#34;&#34; this year...but wait, I&#39;m not done yet!&#xA;&#xA;Art Spotlight&#xA;&#xA;I have an OC, and I love commissioning art of her, so that of course also happened this year, the only two art pieces coming forth this year were absolutely stunning though, check out the artists from the linked tweets!&#xA;&#xA;blockquote class=&#34;twitter-tweet&#34;p lang=&#34;ca&#34; dir=&#34;ltr&#34;Drew a href=&#34;https://twitter.com/pixeldesu?refsrc=twsrc%5Etfw&#34;@pixeldesu/a&amp;#39;s character for a commission ( ˘ω˘ ) a href=&#34;https://t.co/Aez3difKX3&#34;pic.twitter.com/Aez3difKX3/a/p&amp;mdash; Guy (@guykun) a href=&#34;https://twitter.com/guykun/status/1224119797962682368?refsrc=twsrc%5Etfw&#34;February 2, 2020/a/blockquote&#xA;&#xA;blockquote class=&#34;twitter-tweet&#34;p lang=&#34;en&#34; dir=&#34;ltr&#34;aaaand first commission is done! brbrthe adorable Poly for a href=&#34;https://twitter.com/pixeldesu?refsrc=twsrc%5Etfw&#34;@pixeldesu/a 💖 Thank you very much!! 👏 a href=&#34;https://t.co/f70KaCJu7r&#34;pic.twitter.com/f70KaCJu7r/a/p&amp;mdash; mel (@Melonenbrot) a href=&#34;https://twitter.com/Melonenbrot/status/1340670383389896704?refsrc=twsrc%5Etfw&#34;December 20, 2020/a/blockquote&#xA;&#xA;Not just art in the traditional sense, but due to me going back to streaming and being an affiliate, I finally got myself emotes too!&#xA;&#xA;blockquote class=&#34;twitter-tweet&#34;p lang=&#34;en&#34; dir=&#34;ltr&#34;PSA 👀brbrAfter roughly a year of being affiliate I finally decided on emotes for my stream, that are available...now! These were drawn by the amazing a href=&#34;https://twitter.com/KageSatsuki?refsrc=twsrc%5Etfw&#34;@KageSatsuki/a!a href=&#34;https://t.co/XBranYUb5A&#34;https://t.co/XBranYUb5A/a a href=&#34;https://t.co/W6RhN0acN2&#34;pic.twitter.com/W6RhN0acN2/a/p&amp;mdash; Andy (@pixeldesu) a href=&#34;https://twitter.com/pixeldesu/status/1331666054557392897?refsrc=twsrc%5Etfw&#34;November 25, 2020/a/blockquote&#xA;&#xA;----&#xA;&#xA;Media Spotlight&#xA;&#xA;There just were some things I enjoyed that I&#39;ll share with you, in a quick rundown:&#xA;&#xA;My favorite games this year were Umineko, Hades and TrackMania (2020)&#xA;In terms of music:&#xA;  The album I probably listened to the most this year was VIOLET by MAYA AKAI&#xA;  My favorite album release this year was HALCYONDAZE (caution: linked video is very flashy)&#xA;&#xA;There&#39;s probably a bunch of more stuff that I enjoyed throughout the year, but I&#39;m pretty sure I must have posted about most of these things on Twitter/Mastodon anyway.&#xA;&#xA;----&#xA;&#xA;Okay, now...I&#39;m finally done with the whole recap thing.&#xA;&#xA;To end the whole post, I want to thank all the people that I talked to this year, my friends in general, and all the new friends I made! Sometime soon we&#39;ll be able to meet again in person, until then, chatting and talking will have to suffice!&#xA;&#xA;Even if my year was pretty positive throughout, I&#39;m sure it wasn&#39;t that good for many of you, remember that you have friends to reach out to that love you!&#xA;&#xA;We&#39;ll see each other again in 2021!&#xA;&#xA;💙&#xA;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p><em>So...the year is over, huh?</em> Guess it&#39;s time for a recap of the longest/shortest year.</p>

<p>Well, first and foremost I&#39;m not going to delve into too much detail about COVID and all that People are mostly <em>sick</em> hearing about it, and aside of a few personal experiences that changed over the year, I don&#39;t have much to add to the discussion anyway. I worked 3 full months in home office, which was a seamless transition due to our company already mandating a VPN setup for every employee into our local company network.</p>

<hr/>

<h2 id="so-what-exactly-happened-in-2020" id="so-what-exactly-happened-in-2020">So, what exactly happened in 2020?</h2>

<h3 id="trip-to-obergurgl" id="trip-to-obergurgl">Trip to Obergurgl</h3>

<p>The very first thing that happened in 2020 was pretty much in the beginning of January, our company had a trip to Obergurgl in Austria for its 10th anniversary.</p>

<p>For people not knowing, Obergurgl is a rather expensive/chique ski resort, so we pretty much had an “all out” weeklong trip, and I&#39;m pretty sure most of us won&#39;t forget that for quite a while. I personally didn&#39;t really ski there, but went tobogganing (sledding) instead, the destined area for that was a hell of a ride and I ended up being lucky not being bruised all over. The definitive highlight of the week was a seated VR Flight Simulator setup (using XPlane 11) that was up for one day.</p>

<p>One of the apprentices at our company actually cut together a short impression video, you can <a href="https://twitter.com/in2code_de/status/1219282262556127232" rel="nofollow">watch here</a>.</p>

<h3 id="online-demoparties" id="online-demoparties">Online Demoparties</h3>

<p>I&#39;ve been attending demoparties since 2018 (Revision 2018 was my first one!) and since I tried to at least attend Revision (Saarbrücken, Easter weekend) and Evoke (Cologne, in Summer) every year. This year was a bit different though, but instead of the event being cancelled, it was moved online using streams. Additionally, everything was made a bit more lively-er and fun with <a href="https://www.sofaworld.net/" rel="nofollow">Sofa World</a>, which pretty much is an virtual demo party space in which the creators rebuild the actual location in which players then can watch the streams on actual bigscreens!</p>

<p><img src="https://desu.pictures/GentleSilverBoar0.jpg" alt=""/>
<em>Picture of the E-Werk in Saarbrücken, inside Sofa World, courtesy of <a href="https://www.sofaworld.net/" rel="nofollow">https://www.sofaworld.net/</a></em></p>

<p><em>I also attended both Outline and Nova, but really mostly spent my time in Sofa World finding easter eggs on the new maps.</em></p>

<h3 id="retrospring" id="retrospring">Retrospring</h3>

<p>Remember <a href="https://retrospring.net/" rel="nofollow">Retrospring</a>? <em>Me neither.</em> Considering it ended in 2016, and we decided to bring it back on April Fools 2017 without any further support, after 3 years of doing nothing, we actually started working on things again a bit, at least slowly. Main issue is that we need to refactor our sins from 6 years ago, and that takes quite a while. The main achievements this year definitely were the addition of Two Factor Authentication and the whole frontend refactor.</p>

<p>Some before/after pictures I posted in tweets below:</p>

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">profile page glowup <a href="https://t.co/uF1BNHcElR" rel="nofollow">pic.twitter.com/uF1BNHcElR</a></p>— Andy (@pixeldesu) <a href="https://twitter.com/pixeldesu/status/1256248994839302147?ref_src=twsrc%5Etfw" rel="nofollow">May 1, 2020</a></blockquote>

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">Reworking the navigation for the Home Timeline, Public Timeline and Groups.<br><br>actually making Groups visible with some help text because there&#39;s surely some people that don&#39;t know Retrospring actually had groups all those years. <a href="https://t.co/TiMwOm0uk3" rel="nofollow">pic.twitter.com/TiMwOm0uk3</a></p>— Andy (@pixeldesu) <a href="https://twitter.com/pixeldesu/status/1257491717592416257?ref_src=twsrc%5Etfw" rel="nofollow">May 5, 2020</a></blockquote>

<h3 id="i-deleted-my-google-account" id="i-deleted-my-google-account">I Deleted My Google Account</h3>

<p>Why? <em>Because I can.</em></p>

<p>I&#39;m not that super strong on “keeping my personal data safe”, but it&#39;s definitely something I&#39;ve been thinking more about recently. So, at the end of last year I evaluated how much I actually use my Google account and...I barely used it at all.</p>

<p>So I decided to delete it. I&#39;m now approaching one year without any personal Google account, and I absolutely don&#39;t miss it. My email always was managed externally, first on a server that I partially paid for and now I&#39;m running a plan on Fastmail.</p>

<p>The really only thing I use on the regular from Google is YouTube, and aside of the videos that are marked as not suitable for young audiences, I still can watch everything on there just fine. For managing subscriptions, I even built <a href="https://videoline.app/" rel="nofollow">a custom webapp</a> that utilizes ancient YouTube RSS feeds!</p>

<p><em>Shortly after that, I also deleted my Facebook account, that indeed was lying barren for like 5 years.</em></p>

<h3 id="handling-productivity" id="handling-productivity">Handling Productivity</h3>

<p>One of my largest personal issues in the past few years has been productivity, or at least my <em>perceived</em> one. A lot of people probably know the feeling that they want to get stuff done and then just end up staring into their screens for the rest of the day/evening/etc. and I wanted to overcome that.</p>

<p>For that to work I started to use <a href="https://todoist.com/" rel="nofollow">Todoist</a> and fittingly enough found <a href="https://todoist.com/de/productivity-methods" rel="nofollow">a productivity guide and quiz</a> that led me into trying out a methodology fitting for myself: <strong>Getting Things Done</strong> (or GTD for short). I started shaping my Todoist to work that way and I&#39;ve done so since September. It definitely has worked out for myself.</p>

<p>But another huge part in getting over this was figuring out that even if I perceived that I was unproductive, by the time I thought that I already did loads of things, and to-do lists helped to visualize that to me.</p>

<p>I want to talk more about this, but I will go more in-depth into how I&#39;m handling all that stuff in a separate blog post in the future!</p>

<h3 id="i-read-umineko" id="i-read-umineko">I Read Umineko...</h3>

<p><em>...Finally.</em> I started it in 2018, and due to...probably just the paragraph above and me not managing my time properly, I lost track of it. So, in my 2 week vacation in September I finally got myself to finish it. I read the remaining 5 (out of 8) episodes in a span of 5 days, one episode per day, where the average reading length is <strong>at least</strong> 8-10 hours.</p>

<p>I was absolutely floored at the end of it, not just because these were super long nights, but also emotionally. I don&#39;t often want to claim something is “perfect”, but Umineko is so close to that, it&#39;s an experience I won&#39;t ever forget.</p>

<p>Additionally, a few months after finishing the VN/soundnovel, I also read the manga, which I finished just yesterday. It includes a bit more details in a few aspects and it visualizes a few scenes better due to the manga panels of course showing more than the few (but still numerous) CGs in the VN.</p>

<p>For the next year it&#39;s onwards to more 07th Expansion (most likely Higurashi) and other VNs!</p>

<h3 id="i-organized-an-online-un-conference" id="i-organized-an-online-un-conference">I Organized an Online (Un)Conference</h3>

<p>I did not just attend several online events and conferences this year, I actually helped out organizing one! <a href="https://www.typo3camp-munich.de/" rel="nofollow">TYPO3Camp Munich</a>, which I usually attend to in person.</p>

<p>Over the course of two months I helped with several things, but my personal focus was finding the setup for the conference itself, considering the sheer amount of tools available nowadays. We opted for a conference room tool and Jitsi rooms at the side for more personal interactions. And it seemed people were getting used to it quite quickly. When the actual event happened at the end of September I also did moderation of some talks.</p>

<p>Being on the other side of conferences once was quite nice and I&#39;ll definitely help out the following years as well!</p>

<h3 id="i-started-streaming-again" id="i-started-streaming-again">I Started Streaming (Again)</h3>

<p>Did you know I have a <a href="https://www.twitch.tv/pixeldesu" rel="nofollow">Twitch channel</a>? Now you do! In November my urge to go back to streaming finally grew big enough to actually do it, and so I did! I prepared some fancy new visuals, finally set up my Stream Deck among other things and I&#39;m now streaming with a weekly schedule.</p>

<p>Currently streams are on hold until “the next year” because December turned out quite stressful at work and I couldn&#39;t get myself to stream much. But they&#39;ll be coming back in January for sure!</p>

<hr/>

<p>This probably summarizes most of the “larger “events”” this year...but wait, I&#39;m not done yet!</p>

<h2 id="art-spotlight" id="art-spotlight">Art Spotlight</h2>

<p>I have an OC, and I love commissioning art of her, so that of course also happened this year, the only two art pieces coming forth this year were absolutely stunning though, check out the artists from the linked tweets!</p>

<blockquote class="twitter-tweet"><p lang="ca" dir="ltr">Drew <a href="https://twitter.com/pixeldesu?ref_src=twsrc%5Etfw" rel="nofollow">@pixeldesu</a>&#39;s character for a commission ( ˘ω˘ ) <a href="https://t.co/Aez3difKX3" rel="nofollow">pic.twitter.com/Aez3difKX3</a></p>— Guy (@guy_kun) <a href="https://twitter.com/guy_kun/status/1224119797962682368?ref_src=twsrc%5Etfw" rel="nofollow">February 2, 2020</a></blockquote>

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">aaaand first commission is done! <br><br>the adorable Poly for <a href="https://twitter.com/pixeldesu?ref_src=twsrc%5Etfw" rel="nofollow">@pixeldesu</a> 💖 Thank you very much!! 👏 <a href="https://t.co/f70KaCJu7r" rel="nofollow">pic.twitter.com/f70KaCJu7r</a></p>— mel (@Melonenbrot) <a href="https://twitter.com/Melonenbrot/status/1340670383389896704?ref_src=twsrc%5Etfw" rel="nofollow">December 20, 2020</a></blockquote>

<p>Not just art in the traditional sense, but due to me going back to streaming and being an affiliate, I finally got myself emotes too!</p>

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">PSA 👀<br><br>After roughly a year of being affiliate I finally decided on emotes for my stream, that are available...now! These were drawn by the amazing <a href="https://twitter.com/KageSatsuki?ref_src=twsrc%5Etfw" rel="nofollow">@KageSatsuki</a>!<a href="https://t.co/XBranYUb5A" rel="nofollow">https://t.co/XBranYUb5A</a> <a href="https://t.co/W6RhN0acN2" rel="nofollow">pic.twitter.com/W6RhN0acN2</a></p>— Andy (@pixeldesu) <a href="https://twitter.com/pixeldesu/status/1331666054557392897?ref_src=twsrc%5Etfw" rel="nofollow">November 25, 2020</a></blockquote>

<hr/>

<h2 id="media-spotlight" id="media-spotlight">Media Spotlight</h2>

<p>There just were some things I enjoyed that I&#39;ll share with you, in a quick rundown:</p>
<ul><li>My favorite games this year were <strong>Umineko</strong>, <strong>Hades</strong> and <strong>TrackMania (2020)</strong></li>
<li>In terms of music:
<ul><li>The album I probably listened to the most this year was <a href="https://diversesystem.bandcamp.com/album/violet" rel="nofollow">VIOLET by MAYA AKAI</a></li>
<li>My favorite album release this year was <a href="https://www.youtube.com/watch?v=b_3VdvTibCI" rel="nofollow">HALCYONDAZE</a> (caution: linked video is very flashy)</li></ul></li></ul>

<p>There&#39;s probably a bunch of more stuff that I enjoyed throughout the year, but I&#39;m pretty sure I must have posted about most of these things on Twitter/Mastodon anyway.</p>

<hr/>

<p>Okay, now...I&#39;m finally done with the whole recap thing.</p>

<p>To end the whole post, I want to thank all the people that I talked to this year, my friends in general, and all the new friends I made! Sometime soon we&#39;ll be able to meet again in person, until then, chatting and talking will have to suffice!</p>

<p>Even if my year was pretty positive throughout, I&#39;m sure it wasn&#39;t that good for many of you, remember that you have friends to reach out to that love you!</p>

<p><strong>We&#39;ll see each other again in 2021!</strong></p>

<p>💙</p>
]]></content:encoded>
      <guid>https://desu.blog/year-in-review-2020</guid>
      <pubDate>Thu, 31 Dec 2020 14:33:15 +0000</pubDate>
    </item>
    <item>
      <title>How to improve your Twitter experience</title>
      <link>https://desu.blog/how-to-improve-your-twitter-experience?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[So, I&#39;ve been a Twitter user for around 10 years now, in most of that timespan I&#39;ve been rather active, if not by posting it is by reading basically most of the time.&#xA;&#xA;In the past few months/last year however, I actually reduced the activity to be rather low and only recently came back to Twitter again.&#xA;&#xA;The main reason I was staying off was the feeling of dread I actually got from reading my timeline quite a few times. Negativity, currently spread topics and many more contents of my timeline just drove me off the site.&#xA;&#xA;Now that I&#39;m a bit more active again I&#39;d like to share some of the tips that I used to get my experience up to something enjoyable again. I&#39;ll also include a lot of tips for TweetDeck, which is my main way of using Twitter.&#xA;&#xA;!--more--&#xA;&#xA;Technical&#xA;&#xA;Clean up your Home timeline&#xA;&#xA;Your Home timeline is the first thing you&#39;ll see logging on to Twitter or opening your client, so it&#39;s also one of the first things to be addressed so it doesn&#39;t drive you directly to closing the app.&#xA;&#xA;First and foremost, unfollow people. If you can&#39;t identify with people and their content anymore after having followed them for a specific reason, it&#39;s fine to unfollow them again, even if they follow you. There&#39;s no obligation to keep a follow-relationship going. I personally went and reduced my followings from 360 to around 190.&#xA;&#xA;Utilize Twitter features to clean up your feeds, like muting and disabling retweets. These can quickly rid your feeds of topics you don&#39;t want to hear about, whatever your personal reasoning is. Disabling retweets is also something a lot of people either don&#39;t know about or don&#39;t use, but in the official apps and website (and on TweetDeck with BetterTweetDeck) you can disable the retweets of a user, which can be especially handy if you like the content of someone, but the things they share are either too much or not up your alley.&#xA;&#xA;In general, if you follow people for their content without interacting with them too much, you could also consider setting up Lists and group people into them, in the official apps you can then pin these lists so that they are visible as tabs in your Home feed! On TweetDeck, you can just create additional columns for your lists!&#xA;&#xA;Reduce further noise&#xA;&#xA;First off: Literal noise. Limit notifications to as few as possible. Especially Twitter tends to send many for stuff that doesn&#39;t personally involve you, so try to cap on as many as these as possible. Disable sounds and don&#39;t let Twitter distract you, keep it at notifying for what&#39;s important to you.&#xA;&#xA;Review your notification settings in the Twitter app, and disable stuff like &#34;Popular in your network&#34; to not get notifications on random tweets from people you don&#39;t even follow.&#xA;&#xA;In TweetDeck, I&#39;m employing even more of a reduction for this, I&#39;ve set up a filter in my Notifications column that disables any of the &#34;Actions on your likes/retweets&#34; notifications. These have nothing to do with my own posts, and so only create clutter, and more notifications.&#xA;&#xA;Personal&#xA;&#xA;There&#39;s pretty much only one tip here, but it&#39;s key regardless:&#xA;&#xA;Evaluate your replies and, if you are not sure, don&#39;t reply&#xA;&#xA;If you see something on your timeline, an already heated discussion, an opinion someone has you deem wrong, etc. really think about if you want to reply or not. Jumping on someone who already is aggreviated will not end up in a &#34;clear&#34; discussion and you&#39;ll just get angry yourself, or a person is really set on their point, you&#39;ll just grow frustrated.&#xA;&#xA;If it&#39;s something you need to let steam off over, consider posting on a private account, and if you don&#39;t have one, consult one of your friends and talk/write with them about it.&#xA;&#xA;Managing to steer clear of (usually) pointless arguments will keep your mood way up higher than you might initially expect.&#xA;&#xA;----&#xA;&#xA;These few things already greatly improved my experience with Twitter.&#xA;&#xA;And, don&#39;t forget, these are my personal tips I decided to share. Everyone&#39;s experience and consumption of Twitter is different, so you might not deem these tips useful for yourself. If you have any other feedback or things you do yourself to keep your experience up, feel free to share them with me!&#xA;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p>So, I&#39;ve been a Twitter user for around 10 years now, in most of that timespan I&#39;ve been rather active, if not by posting it is by reading basically most of the time.</p>

<p>In the past few months/last year however, I actually reduced the activity to be rather low and only recently came back to Twitter again.</p>

<p>The main reason I was staying off was the feeling of dread I actually got from reading my timeline quite a few times. Negativity, currently spread topics and many more contents of my timeline just drove me off the site.</p>

<p>Now that I&#39;m a bit more active again I&#39;d like to share some of the tips that I used to get my experience up to something enjoyable again. I&#39;ll also include a lot of tips for <a href="https://tweetdeck.twitter.com" rel="nofollow">TweetDeck</a>, which is my main way of using Twitter.</p>



<h2 id="technical" id="technical">Technical</h2>

<h3 id="clean-up-your-home-timeline" id="clean-up-your-home-timeline">Clean up your Home timeline</h3>

<p>Your Home timeline is the first thing you&#39;ll see logging on to Twitter or opening your client, so it&#39;s also one of the first things to be addressed so it doesn&#39;t drive you directly to closing the app.</p>

<p>First and foremost, <strong>unfollow people</strong>. If you can&#39;t identify with people and their content anymore after having followed them for a specific reason, it&#39;s fine to unfollow them again, even if they follow you. There&#39;s no obligation to keep a follow-relationship going. I personally went and reduced my followings from 360 to around 190.</p>

<p>Utilize Twitter features to clean up your feeds, like <strong>muting</strong> and <strong>disabling retweets</strong>. These can quickly rid your feeds of topics you don&#39;t want to hear about, whatever your personal reasoning is. Disabling retweets is also something a lot of people either don&#39;t know about or don&#39;t use, but in the official apps and website (and on TweetDeck with <a href="https://better.tw" rel="nofollow">BetterTweetDeck</a>) you can disable the retweets of a user, which can be especially handy if you like the content of someone, but the things they share are either <em>too much</em> or not up your alley.</p>

<p>In general, if you follow people for their content without interacting with them too much, you could also consider setting up Lists and group people into them, in the official apps you can then pin these lists so that they are visible as tabs in your Home feed! On TweetDeck, you can just create additional columns for your lists!</p>

<h3 id="reduce-further-noise" id="reduce-further-noise">Reduce further noise</h3>

<p>First off: <em>Literal noise</em>. Limit notifications to as few as possible. Especially Twitter tends to send many for stuff that doesn&#39;t personally involve you, so try to cap on as many as these as possible. Disable sounds and don&#39;t let Twitter distract you, keep it at <em>notifying</em> for what&#39;s important to you.</p>

<p>Review your notification settings in the Twitter app, and disable stuff like “Popular in your network” to not get notifications on random tweets from people you don&#39;t even follow.</p>

<p>In TweetDeck, I&#39;m employing even more of a reduction for this, I&#39;ve set up a filter in my Notifications column that disables any of the “Actions on your likes/retweets” notifications. These have nothing to do with my own posts, and so only create clutter, and more notifications.</p>

<h2 id="personal" id="personal">Personal</h2>

<p>There&#39;s pretty much only one tip here, but it&#39;s key regardless:</p>

<h3 id="evaluate-your-replies-and-if-you-are-not-sure-don-t-reply" id="evaluate-your-replies-and-if-you-are-not-sure-don-t-reply">Evaluate your replies and, if you are not sure, don&#39;t reply</h3>

<p>If you see something on your timeline, an already heated discussion, an opinion someone has you deem wrong, etc. really think about if you want to reply or not. Jumping on someone who already is aggreviated will not end up in a “clear” discussion and you&#39;ll just get angry yourself, or a person is really set on their point, you&#39;ll just grow frustrated.</p>

<p>If it&#39;s something you need to let steam off over, consider posting on a private account, and if you don&#39;t have one, consult one of your friends and talk/write with them about it.</p>

<p>Managing to steer clear of (usually) pointless arguments will keep your mood way up higher than you might initially expect.</p>

<hr/>

<p>These few things already greatly improved my experience with Twitter.</p>

<p>And, don&#39;t forget, these are my personal tips I decided to share. Everyone&#39;s experience and consumption of Twitter is different, so you might not deem these tips useful for yourself. If you have any other feedback or things you do yourself to keep your experience up, feel free to share them with me!</p>
]]></content:encoded>
      <guid>https://desu.blog/how-to-improve-your-twitter-experience</guid>
      <pubDate>Sat, 16 May 2020 08:39:06 +0000</pubDate>
    </item>
    <item>
      <title>Reverse Engineering Pangya - File Formats #1: .dat</title>
      <link>https://desu.blog/reverse-engineering-pangya-file-formats-1-dat?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[Welcome to the first post in my series of reverse engineering Pangya, a MMO golf game that ceased active development in 2016.&#xA;&#xA;As I pretty much started out with barely any knowledge in reverse engineering in mid-2018, when this whole endeavor started, I also picked one of the simpler formats of Pangya to write a tool for first.&#xA;&#xA;!--more--&#xA;&#xA;.dat&#xA;&#xA;From the naming already, one of the probably most used file extensions for &#34;data&#34; generally. The data in Pangya&#39;s case is translations.&#xA;&#xA;For every distribution of the game, there are several .dat files, at least 2. One of the files always is korea.dat. As the game is Korean and so the origin language, this makes sense. The other file(s) depend on the released region, so there are files like english.dat, thailand.dat or more.&#xA;&#xA;So, how does the format inside .dat files look like?&#xA;&#xA;It&#39;s pretty simple. It&#39;s basically just a list of strings separated by null (0x00) bytes. To get all the strings, simply skim through it and split at null, tada. One thing to note however is, that you should respect the origin language encoding, otherwise you might get into issues with saving the data.&#xA;&#xA;Okay, so that was pretty straight-forward, but how about we now take a look how translations with those files actually work?&#xA;&#xA;Considering we have no indices or keys with which translations can be identified with, general i18n solutions from nowadays can be ruled out. But...hey, we have multiple files, and the origin language is always supplied as well, so if we take a string from korea.dat and take the same index from english.dat we should get the same text, right?&#xA;&#xA;And we do! So, the .dat backed translation system is gettext-alike, where the game searches for the index of a korean string inside the korea.dat file and then takes the index to read a translation from english.dat!&#xA;&#xA;One format and it&#39;s functionality down, many more to go! I think, next time we will handle all the game data that is there!]]&gt;</description>
      <content:encoded><![CDATA[<p><em>Welcome to the first post in my series of reverse engineering Pangya, a MMO golf game that ceased active development in 2016.</em></p>

<p>As I pretty much started out with barely any knowledge in reverse engineering in mid-2018, when this whole endeavor started, I also picked one of the simpler formats of Pangya to write a tool for first.</p>



<h3 id="dat" id="dat">.dat</h3>

<p>From the naming already, one of the probably most used file extensions for “data” generally. The data in Pangya&#39;s case is translations.</p>

<p>For every distribution of the game, there are several <code>.dat</code> files, at least 2. One of the files always is <code>korea.dat</code>. As the game is Korean and so the origin language, this makes sense. The other file(s) depend on the released region, so there are files like <code>english.dat</code>, <code>thailand.dat</code> or more.</p>

<h3 id="so-how-does-the-format-inside-dat-files-look-like" id="so-how-does-the-format-inside-dat-files-look-like">So, how does the format inside <code>.dat</code> files look like?</h3>

<p>It&#39;s pretty simple. It&#39;s basically just a list of strings separated by null (<code>0x00</code>) bytes. To get all the strings, simply skim through it and split at null, tada. One thing to note however is, that you should respect the origin language encoding, otherwise you might get into issues with saving the data.</p>

<h3 id="okay-so-that-was-pretty-straight-forward-but-how-about-we-now-take-a-look-how-translations-with-those-files-actually-work" id="okay-so-that-was-pretty-straight-forward-but-how-about-we-now-take-a-look-how-translations-with-those-files-actually-work">Okay, so that was pretty straight-forward, but how about we now take a look how translations with those files actually work?</h3>

<p>Considering we have no indices or keys with which translations can be identified with, general i18n solutions from nowadays can be ruled out. But...hey, we have multiple files, and the origin language is always supplied as well, so if we take a string from <code>korea.dat</code> and take the same index from <code>english.dat</code> we should get the same text, right?</p>

<p>And we do! So, the <code>.dat</code> backed translation system is gettext-alike, where the game searches for the index of a korean string inside the <code>korea.dat</code> file and then takes the index to read a translation from <code>english.dat</code>!</p>

<p>One format and it&#39;s functionality down, many more to go! <em>I think, next time we will handle all the game data that is there!</em></p>
]]></content:encoded>
      <guid>https://desu.blog/reverse-engineering-pangya-file-formats-1-dat</guid>
      <pubDate>Tue, 14 Jan 2020 13:52:54 +0000</pubDate>
    </item>
    <item>
      <title>Reversing a Mobile Anime Golf Game</title>
      <link>https://desu.blog/reversing-a-mobile-anime-golf-game?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[I don&#39;t think I mentioned it in my introductory-post for my Pangya reverse engineering series, but as the efforts on the PC MMO version of the game were ceased, there already was a mobile game in cooperation with NCsoft in the making. It was announced in 2014, there was a long silence until a release in 2017, one year after the development of PC was stopped.&#xA;&#xA;Now, just before New Years, I see a message popping up in a Discord server centered around Pangya, which was...&#xA;&#xA;Pangya Mobile is shutting down 7th February 2020&#xA;&#xA;Well, oops. &#xA;&#xA;!--more--&#xA;&#xA;Attached to the message they posted to their Facebook page was a timeline on how the shutdown proceedings would follow. Including one crucial part that download of the game from the app stores wouldn&#39;t be possible after January 10th 2020.&#xA;&#xA;I never played the Mobile version, because I heard how watered down the mechanics were and how much it was focused on pulling money out of users wallets with cosmetic outfits that cost upwards of $41, so now was the time to actually create an account.&#xA;&#xA;I couldn&#39;t be bothered setting up a VPN for Thailand, the only region the game was distributed in, so I grabbed a APK off of APKPure, verified it was the latest version of the game, pre-patches of course, launched it on my Android phone, logged in and downloaded all patches, a whopping 1.6GB of them. As soon as that was done, I closed it again. Connected the phone up to my PC and proceeded to move all local assets to my PC. I also downloaded a fresh APK onto my PC to take apart, so now we&#39;re good to go.&#xA;&#xA;Taking apart a mobile game&#xA;&#xA;So, contrary to the first post, Pangya Mobile is not using the inhouse-developed WangReal engine and made it portable, no...they actually use Unity, which makes everything far, far easier to take apart.&#xA;&#xA;The APK&#xA;&#xA;Taking apart an APK is pretty easy, since it&#39;s pretty much just a ZIP archive with some extra metadata to it.&#xA;&#xA;But to really get everything out of it, I opted to use Apktool which is specifically made to reverse apps. With that I&#39;d also be able to repackage an APK if I wanted to.&#xA;&#xA;This resulted in following output:&#xA;&#xA;Folder layout inside Pangya Mobile APK&#xA;&#xA;assets/: Some dependency version information and the base game Unity assets&#xA;lib/: Libraries used by the APK, in Pangya&#39;s case in x86 and armeabi-v7a&#xA;original/: The APKs META-INF files&#xA;res/: Typical APK resources, like layouts, icons and strings&#xA;smali/: Disassembly from the APKs Dalvik bytecode, ordered into library-structured folders&#xA;unknown/: Files Apktool can&#39;t put into a proper place. In Pangya&#39;s case mainly LINE specific files&#xA;&#xA;The Assets (Part 1 - From the base APK)&#xA;&#xA;So now that we have all the .assets and .resource files from the assets/ folder, let&#39;s peak into them and extract the assets.&#xA;&#xA;Those files are bare assets and using tools like Asset/UnityStudio looking into them is as easy as selecting the folder they are in. Once that&#39;s done we&#39;re greated by following view:&#xA;&#xA;UnityStudio showing the Pangya Mobile logo&#xA;&#xA;Using the Export option given by the tool, we just dump all the assets in their proper formats. Done!&#xA;&#xA;The Assets (Part 2 - From the patches)&#xA;&#xA;But wait, there&#39;s more! I downloaded 1.6GB of patches for Pangya Mobile, and they all are .ab/.assetbundle files, which are basically just a lot of .assets compressed together in a Unity-specific format.&#xA;&#xA;And of course there are tools for it we can utilize to take them apart for us!&#xA;&#xA;My main tool of trade for this was utinyRipper which exports .asset files from the asset bundles. There also are tools like UABE that work just as well for this!&#xA;&#xA;It looks like some of the newer assets are encrypted, or at least the tools don&#39;t seem to fare well with them, which I still have to look into.&#xA;&#xA;As this requires a lot of manual labor I haven&#39;t fully extracted all assets yet, but as times comes I&#39;ll definitely do that. Having them backed up already gives us indefinite time for it anyway.&#xA;&#xA;The Code (Part 1 - Smali)&#xA;&#xA;Now that we have the assets, it&#39;d be really interesting to see what the game actually does under the hood, right?&#xA;&#xA;Apktool already gave us a headstart with the smali/ directory, containing a disassembly of the Dalvik bytecode. Using the proper syntax highlighting, we already have something to look at!&#xA;&#xA;VSCode with a .smali file open&#xA;&#xA;The Code (Part 2 - Unity/il2cpp)&#xA;&#xA;The Dalvik bytecode in this case isn&#39;t really related to the Unity game contained in it, though. The really interesting bits are found in the libil2cpp.so file found in the lib/{arch} subdirectory.&#xA;&#xA;IL2CPP (Intermediate Language To C++) is an alternative Unity scripting backend which converts the IL code to C++ before making a binary, to increase performance, security and compatibility of games.&#xA;&#xA;It indeed amps up the security compared to regular Unity-built assemblies, but it&#39;s not impossible.&#xA;&#xA;Combined with the file global-metadata.dat found in the assets/ directory, which contains a map of symbols and classes, we can actually map the metadata back to the libil2cpp.so file.&#xA;&#xA;A tool aiding us with this endeavor is Il2CppDumper, which gives us several output files, including a script.py file we can run with IDAPython to place functions. After quite a while of waiting with a 42 MB source file being analyzed and having the script place everything, we&#39;re now at this:&#xA;&#xA;IDA open with the il2cpp.so file and named functions&#xA;&#xA;Now we have a disassembly and pseudocode of both the APK and the Unity binary to look through!&#xA;&#xA;Extra: Internal Game Data&#xA;&#xA;So, we basically have everything ready to go through the game in it&#39;s entirity, but while exporting assets and checking the disassembly, I found references to something interesting. There were files called cremadata, which by filenaming seemed to contain strings of game data...but what format were they, it just seemed like binary data.&#xA;&#xA;Well, as every developer, the first thing to do is a quick DuckDuckGo/Google search and...what&#39;s that?&#xA;&#xA;DuckDuckGo search of &#34;ntreev crema&#34;&#xA;&#xA;Their format and toolchain is actually open-source! Unexpected from my dealings with MMO developers before, but hey, means less work for us!&#xA;&#xA;So I went ahead, downloaded a Crema release and found the proper tool to import the files I found in the games assets, and...&#xA;&#xA;Voilà!&#xA;&#xA;Crema Development open with Pangya Mobile Crema files&#xA;&#xA;That marks most of the assets open to us. Either from the asset bundles to the code, now to the string/game data in Ntreev&#39;s specific format, we all have it.&#xA;&#xA;It definitely was quite the journey, because I did this in a single night on a whim, so I&#39;m finished before the deadline of being able to download the game and assets rushes by. But I also learned a lot of new stuff about Unity, which I already dabbled with in the past!&#xA;&#xA;Now Pangya Mobile can shut down, the data is safe! :P&#xA;&#xA;----&#xA;&#xA;This wouldn&#39;t have been possible with all the research and tools provided by many, way more knowledgable people, here&#39;s a full list of them again:&#xA;&#xA;Apktool&#xA;Asset/UnityStudio&#xA;utinyRipper&#xA;UABE&#xA;Il2CppDumper&#xA;Crema&#xA;&#xA;----&#xA;&#xA;This post was more of a quick side track of the main reverse engineering series around Pangya, but as it still covers the same game series I felt like writing a blogpost about it. I&#39;ll resume the regular series soon again with posts on how I took apart the PC version and my journey on that!]]&gt;</description>
      <content:encoded><![CDATA[<p>I don&#39;t think I mentioned it in my introductory-post for my Pangya reverse engineering series, but as the efforts on the PC MMO version of the game were ceased, there already was a mobile game in cooperation with NCsoft in the making. It was announced in 2014, there was a long silence until a release in 2017, one year after the development of PC was stopped.</p>

<p>Now, just before New Years, I see a message popping up in a Discord server centered around Pangya, which was...</p>

<p><strong>Pangya Mobile is shutting down 7th February 2020</strong></p>

<p><em>Well, oops.</em></p>



<p>Attached to the message they posted to their Facebook page was a timeline on how the shutdown proceedings would follow. Including one crucial part that download of the game from the app stores wouldn&#39;t be possible after <strong>January 10th 2020</strong>.</p>

<p>I never played the Mobile version, because I heard how watered down the mechanics were and how much it was focused on pulling money out of users wallets with cosmetic outfits that cost upwards of $41, so now was the time to actually create an account.</p>

<p>I couldn&#39;t be bothered setting up a VPN for Thailand, the only region the game was distributed in, so I grabbed a APK off of APKPure, verified it was the latest version of the game, pre-patches of course, launched it on my Android phone, logged in and downloaded all patches, a whopping 1.6GB of them. As soon as that was done, I closed it again. Connected the phone up to my PC and proceeded to move all local assets to my PC. I also downloaded a fresh APK onto my PC to take apart, so now we&#39;re good to go.</p>

<h2 id="taking-apart-a-mobile-game" id="taking-apart-a-mobile-game">Taking apart a mobile game</h2>

<p>So, contrary to the first post, Pangya Mobile is not using the inhouse-developed WangReal engine and made it portable, no...they actually use Unity, which makes everything far, far easier to take apart.</p>

<h3 id="the-apk" id="the-apk">The APK</h3>

<p>Taking apart an APK is pretty easy, since it&#39;s pretty much just a ZIP archive with some extra metadata to it.</p>

<p>But to really get everything out of it, I opted to use <a href="https://ibotpeaches.github.io/Apktool/" rel="nofollow">Apktool</a> which is specifically made to reverse apps. With that I&#39;d also be able to repackage an APK if I wanted to.</p>

<p>This resulted in following output:</p>

<p><img src="https://desu.pictures/HystericalWhiteGoldfinch9.png" alt="Folder layout inside Pangya Mobile APK"/></p>
<ul><li><code>assets/</code>: Some dependency version information and the base game Unity assets</li>
<li><code>lib/</code>: Libraries used by the APK, in Pangya&#39;s case in x86 and armeabi-v7a</li>
<li><code>original/</code>: The APKs META-INF files</li>
<li><code>res/</code>: Typical APK resources, like layouts, icons and strings</li>
<li><code>smali/</code>: Disassembly from the APKs Dalvik bytecode, ordered into library-structured folders</li>
<li><code>unknown/</code>: Files Apktool can&#39;t put into a proper place. In Pangya&#39;s case mainly LINE specific files</li></ul>

<h3 id="the-assets-part-1-from-the-base-apk" id="the-assets-part-1-from-the-base-apk">The Assets (Part 1 – From the base APK)</h3>

<p>So now that we have all the <code>.assets</code> and <code>.resource</code> files from the <code>assets/</code> folder, let&#39;s peak into them and extract the assets.</p>

<p>Those files are bare assets and using tools like <a href="https://github.com/Perfare/AssetStudio" rel="nofollow">Asset/UnityStudio</a> looking into them is as easy as selecting the folder they are in. Once that&#39;s done we&#39;re greated by following view:</p>

<p><img src="https://desu.pictures/EvilPurpleSealion6.png" alt="UnityStudio showing the Pangya Mobile logo"/></p>

<p>Using the <strong>Export</strong> option given by the tool, we just dump all the assets in their proper formats. Done!</p>

<h3 id="the-assets-part-2-from-the-patches" id="the-assets-part-2-from-the-patches">The Assets (Part 2 – From the patches)</h3>

<p><em>But wait, there&#39;s more!</em> I downloaded 1.6GB of patches for Pangya Mobile, and they all are <code>.ab/.assetbundle</code> files, which are basically just a lot of <code>.assets</code> compressed together in a Unity-specific format.</p>

<p>And of course there are tools for it we can utilize to take them apart for us!</p>

<p>My main tool of trade for this was <a href="https://github.com/mafaca/UtinyRipper" rel="nofollow">utinyRipper</a> which exports <code>.asset</code> files from the asset bundles. There also are tools like <a href="https://github.com/DerPopo/UABE" rel="nofollow">UABE</a> that work just as well for this!</p>

<p>It looks like some of the newer assets are encrypted, or at least the tools don&#39;t seem to fare well with them, which I still have to look into.</p>

<p>As this requires a lot of manual labor I haven&#39;t fully extracted all assets yet, but as times comes I&#39;ll definitely do that. Having them backed up already gives us indefinite time for it anyway.</p>

<h3 id="the-code-part-1-smali" id="the-code-part-1-smali">The Code (Part 1 – Smali)</h3>

<p>Now that we have the assets, it&#39;d be really interesting to see what the game actually does under the hood, right?</p>

<p>Apktool already gave us a headstart with the <code>smali/</code> directory, containing a disassembly of the Dalvik bytecode. Using the proper syntax highlighting, we already have something to look at!</p>

<p><img src="https://desu.pictures/BewilderingBlueBat3.png" alt="VSCode with a .smali file open"/></p>

<h3 id="the-code-part-2-unity-il2cpp" id="the-code-part-2-unity-il2cpp">The Code (Part 2 – Unity/il2cpp)</h3>

<p>The Dalvik bytecode in this case isn&#39;t really related to the Unity game contained in it, though. The really interesting bits are found in the <code>libil2cpp.so</code> file found in the <code>lib/{arch}</code> subdirectory.</p>

<p><a href="https://docs.unity3d.com/Manual/IL2CPP.html" rel="nofollow">IL2CPP</a> (Intermediate Language To C++) is an alternative Unity scripting backend which converts the IL code to C++ before making a binary, to increase performance, security and compatibility of games.</p>

<p>It indeed amps up the security compared to regular Unity-built assemblies, but it&#39;s not impossible.</p>

<p>Combined with the file <code>global-metadata.dat</code> found in the <code>assets/</code> directory, which contains a map of symbols and classes, we can actually map the metadata back to the <code>libil2cpp.so</code> file.</p>

<p>A tool aiding us with this endeavor is <a href="https://github.com/Perfare/Il2CppDumper" rel="nofollow">Il2CppDumper</a>, which gives us several output files, including a <code>script.py</code> file we can run with IDAPython to place functions. After quite a while of waiting with a 42 MB source file being analyzed and having the script place everything, we&#39;re now at this:</p>

<p><img src="https://desu.pictures/AstonishingWhiteHorse3.png" alt="IDA open with the il2cpp.so file and named functions"/></p>

<p>Now we have a disassembly and pseudocode of both the APK and the Unity binary to look through!</p>

<h3 id="extra-internal-game-data" id="extra-internal-game-data">Extra: Internal Game Data</h3>

<p>So, we basically have everything ready to go through the game in it&#39;s entirity, but while exporting assets and checking the disassembly, I found references to something interesting. There were files called <code>cremadata</code>, which by filenaming seemed to contain strings of game data...but what format were they, it just seemed like binary data.</p>

<p>Well, as every developer, the first thing to do is a quick DuckDuckGo/Google search and...what&#39;s that?</p>

<p><img src="https://desu.pictures/ArrogantBlueLemur7.png" alt="DuckDuckGo search of &#34;ntreev crema&#34;"/></p>

<p><a href="https://github.com/NtreevSoft/Crema" rel="nofollow">Their format and toolchain is actually open-source!</a> Unexpected from my dealings with MMO developers before, but hey, means less work for us!</p>

<p>So I went ahead, downloaded a Crema release and found the proper tool to import the files I found in the games assets, and...</p>

<p><em>Voilà!</em></p>

<p><img src="https://desu.pictures/MiniatureGreenGiant5.png" alt="Crema Development open with Pangya Mobile Crema files"/></p>

<p>That marks most of the assets open to us. Either from the asset bundles to the code, now to the string/game data in Ntreev&#39;s specific format, we all have it.</p>

<p>It definitely was quite the journey, because I did this in a single night on a whim, so I&#39;m finished before the deadline of being able to download the game and assets rushes by. But I also learned a lot of new stuff about Unity, which I already dabbled with in the past!</p>

<p>Now Pangya Mobile can shut down, the data is safe! :P</p>

<hr/>

<p>This wouldn&#39;t have been possible with all the research and tools provided by many, way more knowledgable people, here&#39;s a full list of them again:</p>
<ul><li><a href="https://ibotpeaches.github.io/Apktool/" rel="nofollow">Apktool</a></li>
<li><a href="https://github.com/Perfare/AssetStudio" rel="nofollow">Asset/UnityStudio</a></li>
<li><a href="https://github.com/mafaca/UtinyRipper" rel="nofollow">utinyRipper</a></li>
<li><a href="https://github.com/DerPopo/UABE" rel="nofollow">UABE</a></li>
<li><a href="https://github.com/Perfare/Il2CppDumper" rel="nofollow">Il2CppDumper</a></li>
<li><a href="https://github.com/NtreevSoft/Crema" rel="nofollow">Crema</a></li></ul>

<hr/>

<p><em>This post was more of a quick side track of the main reverse engineering series around Pangya, but as it still covers the same game series I felt like writing a blogpost about it. I&#39;ll resume the regular series soon again with posts on how I took apart the PC version and my journey on that!</em></p>
]]></content:encoded>
      <guid>https://desu.blog/reversing-a-mobile-anime-golf-game</guid>
      <pubDate>Mon, 06 Jan 2020 22:56:54 +0000</pubDate>
    </item>
    <item>
      <title>Why I&#39;m Reverse Engineering a Anime Golf Game</title>
      <link>https://desu.blog/why-im-reverse-engineering-a-anime-golf-game?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[This is going to be the first entry of a series of blog posts detailing my ongoing journey of reverse engineering parts of the video game &#34;PangYa!&#34; by Ntreev Soft.&#xA;&#xA;The first post mainly is going to be an explanation of the core game and my motivation on why I&#39;m doing all of this in the first place.&#xA;&#xA;!--more--&#xA;&#xA;PangYa!&#xA;&#xA;Okay, so onto what PangYa! actually is. Coming from the title, the base genre is already somewhat clear, it&#39;s a golf game in anime-style. While I personally wouldn&#39;t call it a real-life accurate simulation, with systems like wind, slopes and different terrain types in place it&#39;s also not fairly easy.&#xA;&#xA;The game&#39;s development started somewhere around 2003, by a small company called Ntreev Soft, which was founded the same year, coming from a split off a previous company called Plenus Inc., Ntreev&#39;s focus was more on delivering MMO experiences, while another company, Sonnori, developed single player games.&#xA;&#xA;PangYa! was not using any of the bigger commercial available game engines, or toolkits that have been available at the time, but rather used an inhouse developed engine called WangReal, which in itself is a pun to another engine, as wang as a prefix means &#34;very&#34; in Korean, so it&#39;s the &#34;very real engine&#34;. The same engine was used in previous titles by Sonnori like &#34;White Day&#34;. After that, the engine mainly got developed further and extended over PangYa!&#39;s lifetime.&#xA;&#xA;Now, as a final bit to the game itself, a trailer to one of the courses of the game, just to show the general style. If there was a proper trailer that would show off gameplay and it actually being a game centered around golfing, I&#39;d surely put that here instead.&#xA;&#xA;iframe width=&#34;640&#34; height=&#34;480&#34; src=&#34;https://www.youtube-nocookie.com/embed/caogK7f8Djw&#34; frameborder=&#34;0&#34; allow=&#34;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&#34; allowfullscreen/iframe&#xA;&#xA;So, why and how did the whole journey of reverse engineering this game even start?&#xA;&#xA;Well, I have some history with this game, considering I already know of it, I also have played it, but that has been almost 10 years back. I actively played PangYa! around 2009 and 2010 on the European servers that were operated by GOA (a gaming now-defunct subdivision of the french ISP/carrier Orange).&#xA;&#xA;I actually forgot about the game for a while, other stuff came up, especially school and work took up most of my time then. So, one day I posted about it on Twitter, and shortly after, Babbe, of who I didn&#39;t knew he also played the game in the past, wrote me a message, basically going &#34;Hey, let&#39;s make a PangYa! server together&#34;. While that was not my first goal, it definitely got things running, and my desire to take apart the game got even stronger.&#xA;&#xA;So I basically dug a bit into the game and it&#39;s history, especially the developer, and then I basically realized...&#xA;&#xA;...the game is (basically) dead&#xA;&#xA;All officially licensed servers aside of one (PangYa! Thailand hosted by ini3/MyGame) are gone, I already was a bit sceptical on how &#34;active&#34; the game was, but checking a job listing for Ntreev on a korean job hunting site basically confirmed it, as it stated that PangYa! PC development ceased in 2016.&#xA;&#xA;Being a game that was and is very dear to me, having had one of the most kind communities back in the day, I felt that with my over the years learned programming experience I wanted to give back to that and make it possible for the game to be run without official support. And that is what started my journey.&#xA;&#xA;Of course, as with anything that is available to the public, reverse engineering of the game has been going on since the game was first released, and the peak of communities specifically focusing on taking apart the game has been around 2010-ish I was pretty late in the game and by now most efforts have stagnated, but I wanted to do something others haven&#39;t done at the time: Publicly documenting my findings and research for people to work with.&#xA;&#xA;And with that I was setting on my journey of reverse engineering PangYa! in mid-2018!&#xA;&#xA;This was the introductory post to my series on my journey of reverse engineering PangYa!. While this post didn&#39;t have many technical details about reversing specifically, I wanted to set an even ground delivering base information first! I plan to bring more technical details, my learnings and findings up in follow up posts.&#xA;&#xA;----&#xA;&#xA;If you have any questions, feel free to ask me on the Fediverse or on Twitter!&#xA;&#xA;And if you don&#39;t want to miss any following posts, you can:&#xA;Follow me on the above listed social media&#xA;Use the email subscription feature on this blog&#xA;Subscribe to the blogs RSS feed&#xA;Follow the account pixel@desu.blog on the Fediverse to get newest posts straight to your feed&#xA;&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p>This is going to be the first entry of a series of blog posts detailing my ongoing journey of reverse engineering parts of the video game “PangYa!” by Ntreev Soft.</p>

<p>The first post mainly is going to be an explanation of the core game and my motivation on why I&#39;m doing all of this in the first place.</p>



<h2 id="pangya" id="pangya">PangYa!</h2>

<p>Okay, so onto what <em>PangYa!</em> actually is. Coming from the title, the base genre is already somewhat clear, it&#39;s a golf game in anime-style. While I personally wouldn&#39;t call it a real-life accurate simulation, with systems like wind, slopes and different terrain types in place it&#39;s also not fairly easy.</p>

<p>The game&#39;s development started somewhere around 2003, by a small company called Ntreev Soft, which was founded the same year, coming from a split off a previous company called Plenus Inc., Ntreev&#39;s focus was more on delivering MMO experiences, while another company, Sonnori, developed single player games.</p>

<p>PangYa! was not using any of the bigger commercial available game engines, or toolkits that have been available at the time, but rather used an inhouse developed engine called WangReal, which in itself is a pun to another engine, as <em>wang</em> as a prefix means “very” in Korean, so it&#39;s the “very real engine”. The same engine was used in previous titles by Sonnori like “White Day”. After that, the engine mainly got developed further and extended over PangYa!&#39;s lifetime.</p>

<p>Now, as a final bit to the game itself, a trailer to one of the courses of the game, just to show the general style. If there was a proper trailer that would show off gameplay and it actually being a game centered around golfing, I&#39;d surely put that here instead.</p>

<iframe width="640" height="480" src="https://www.youtube-nocookie.com/embed/caogK7f8Djw" frameborder="0" allowfullscreen=""></iframe>

<h2 id="so-why-and-how-did-the-whole-journey-of-reverse-engineering-this-game-even-start" id="so-why-and-how-did-the-whole-journey-of-reverse-engineering-this-game-even-start">So, why and how did the whole journey of reverse engineering this game even start?</h2>

<p>Well, I have some history with this game, considering I already know of it, I also have played it, but that has been almost 10 years back. I actively played PangYa! around 2009 and 2010 on the European servers that were operated by GOA (a gaming now-defunct subdivision of the french ISP/carrier Orange).</p>

<p>I actually forgot about the game for a while, other stuff came up, especially school and work took up most of my time then. So, one day I posted about it on Twitter, and shortly after, <a href="https://twitter.com/babbe0" rel="nofollow">Babbe</a>, of who I didn&#39;t knew he also played the game in the past, wrote me a message, basically going <em>“Hey, let&#39;s make a PangYa! server together”</em>. While that was not my first goal, it definitely got things running, and my desire to take apart the game got even stronger.</p>

<p>So I basically dug a bit into the game and it&#39;s history, especially the developer, and then I basically realized...</p>

<h3 id="the-game-is-basically-dead" id="the-game-is-basically-dead">...the game is (basically) dead</h3>

<p>All officially licensed servers aside of one (PangYa! Thailand hosted by ini3/MyGame) are gone, I already was a bit sceptical on how “active” the game was, but checking a job listing for Ntreev on a korean job hunting site basically confirmed it, as it stated that PangYa! PC development ceased in 2016.</p>

<p>Being a game that was and is very dear to me, having had one of the most kind communities back in the day, I felt that with my over the years learned programming experience I wanted to give back to that and make it possible for the game to be run without official support. And that is what started my journey.</p>

<p>Of course, as with anything that is available to the public, reverse engineering of the game has been going on since the game was first released, and the peak of communities specifically focusing on taking apart the game has been around 2010-ish I was pretty late in the game and by now most efforts have stagnated, but I wanted to do something others haven&#39;t done at the time: Publicly documenting my findings and research for people to work with.</p>

<p>And with that I was setting on my journey of reverse engineering PangYa! in mid-2018!</p>

<p><em>This was the introductory post to my series on my journey of reverse engineering PangYa!. While this post didn&#39;t have many technical details about reversing specifically, I wanted to set an even ground delivering base information first! I plan to bring more technical details, my learnings and findings up in follow up posts.</em></p>

<hr/>

<p>If you have any questions, feel free to ask me on the <a href="https://desu.social/@pixel" rel="nofollow">Fediverse</a> or on <a href="https://twitter.com/pixeldesu" rel="nofollow">Twitter</a>!</p>

<p>And if you don&#39;t want to miss any following posts, you can:
– Follow me on the above listed social media
– Use the email subscription feature on this blog
– Subscribe to the blogs <a href="https://desu.blog/feed/" rel="nofollow">RSS feed</a>
– Follow the account <code>pixel@desu.blog</code> on the Fediverse to get newest posts straight to your feed</p>
]]></content:encoded>
      <guid>https://desu.blog/why-im-reverse-engineering-a-anime-golf-game</guid>
      <pubDate>Tue, 29 Oct 2019 07:58:20 +0000</pubDate>
    </item>
  </channel>
</rss>