<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Dominik Ágh</title>
    <description>The latest articles on DEV Community by Dominik Ágh (@aghdom).</description>
    <link>https://dev.to/aghdom</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F181404%2F9aac2e6f-d745-40bb-a093-55da4f25dd4e.jpg</url>
      <title>DEV Community: Dominik Ágh</title>
      <link>https://dev.to/aghdom</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aghdom"/>
    <language>en</language>
    <item>
      <title>Chess Engine Journey Ch. 0: Let's build a Chess AI!</title>
      <dc:creator>Dominik Ágh</dc:creator>
      <pubDate>Sun, 26 Sep 2021 20:43:16 +0000</pubDate>
      <link>https://dev.to/aghdom/chess-engine-journey-ch-0-let-s-build-a-chess-ai-4mp8</link>
      <guid>https://dev.to/aghdom/chess-engine-journey-ch-0-let-s-build-a-chess-ai-4mp8</guid>
      <description>&lt;p&gt;So at the end of last year, I started getting more interested in chess.&lt;/p&gt; &lt;p&gt;I began playing online, studying puzzles, watching videos, and generally getting engaged in the chess space. Because of this, my recommendations on YouTube started to feature quite a lot of chess related content. That’s how I stumbled upon &lt;a href="https://www.youtube.com/watch?v=U4ogK0MIzqk"&gt;a video&lt;/a&gt; by &lt;em&gt;Sebastian Lague&lt;/em&gt;, in which he tries to make a “Chess AI” to play against.&lt;/p&gt; &lt;p&gt;I thought that it looked like a fun thing to try, and since I was looking for a coding side-project for a while now, I decided to give it a shot. And while I was at it, I also decided to document my journey!&lt;/p&gt; &lt;h2 id="surveying-the-landscape"&gt;Surveying the Landscape&lt;/h2&gt; &lt;p&gt;Right, so we want to build a chess engine. But how does one actually go about doing it?&lt;/p&gt; &lt;p&gt;I began by searching for resources that already exist on the topic of chess programs. Early on, I found the &lt;a href="https://www.chessprogramming.org/Main_Page"&gt;Chess Programming Wiki&lt;/a&gt; which proved to be a great source of information, as it covered all the important principal topics, a lot of the different ways of optimizing Chess algorithms, as well as provided a great &lt;a href="https://www.chessprogramming.org/Getting_Started"&gt;Getting Started&lt;/a&gt; jump-off point for anyone hoping to dive into chess programming. It also has a very extensive &lt;a href="https://www.chessprogramming.org/Recommended_Reading"&gt;Recommended Reading&lt;/a&gt; section, which saved me a lot of time during this phase.&lt;/p&gt; &lt;h3 id="chess-program-vs-chess-engine"&gt;Chess Program vs. Chess Engine&lt;/h3&gt; &lt;p&gt;The first practical hurdle I faced was when deciding how to go about actually implementing the program itself. My first naive approach was that I had to obviously make the whole thing from scratch as a standalone program. I contemplated what game engine or framework would be best, but I was a bit unsatisfied since none of the better maintained frameworks and engines supported any of the languages close to my heart, like Go, or at least Python.&lt;/p&gt; &lt;p&gt;Wanting to develop in my preferred language of choice, I came to the idea of decoupling the graphical interface and the engine which would be calculating the best moves, essentially splitting the single program into frontend and backend. I would write the interface in something like Unity (I still might do that in the future as a separate project) and the engine in Go.&lt;/p&gt; &lt;p&gt;Luckily (and probably obviously) I wasn’t the first person to come up with this idea.&lt;/p&gt; &lt;h3 id="protocols--interfaces"&gt;Protocols &amp;amp; Interfaces&lt;/h3&gt; &lt;p&gt;So turns out, people (as is more often than not the case) have already dealt with a similar issue and found a solution. There are already numerous options when it comes to Chess programs (or GUIs for our purposes) which support custom chess engines. (A nice &lt;a href="https://www.chessprogramming.org/GUI"&gt;list&lt;/a&gt; can be found on the &lt;a href="https://www.chessprogramming.org/Main_Page"&gt;wiki&lt;/a&gt;) They do so by utilizing a couple of standardized protocols to communicate with the engine code.&lt;/p&gt; &lt;p&gt;The two most commonly used protocols I found were &lt;em&gt;Chess Engine Communication Protocol&lt;/em&gt; (CECP), often simply dubbed &lt;em&gt;xboard&lt;/em&gt; after the program which introduced it, and the &lt;em&gt;Universal Chess Interface&lt;/em&gt; (UCI).&lt;/p&gt; &lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt; &lt;p&gt;After some time pondering this topic, I finally decided to only implement a &lt;em&gt;chess engine&lt;/em&gt; for now, as opposed to a complete chess program (Which gives me the opportunity for a second project in the future maybe…), as it will likely be faster and will allow me to further my coding skills with my language of choice, Go.&lt;/p&gt; &lt;p&gt;I also decided to go with UCI as the communication protocol for this project, as it seemed like the more straight-forward to implement (smaller number of individual commands, using &lt;code&gt;stdin&lt;/code&gt; and &lt;code&gt;stdout&lt;/code&gt; as its communication channels), as well as the better supported by a wider number of graphical interfaces (CECP slightly lacking in this regard).&lt;/p&gt; &lt;h2 id="next-steps"&gt;Next Steps&lt;/h2&gt; &lt;p&gt;So, after getting all of this “boring” pre-production out of the way, I feel confident getting to work on this project. By the time I will write up another chapter in this series, I would like to have the following done:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Think of a name for the engine&lt;/li&gt; &lt;li&gt;Setup a repository for the project&lt;/li&gt; &lt;li&gt;Prepare (at least stub) handlers for all the UCI commands&lt;/li&gt; &lt;li&gt;Implement the Board Representation part of the chess engine&lt;/li&gt; &lt;/ul&gt; &lt;p&gt;Seems like I have my work cut out for me, and I can’t wait to roll up my sleeves and getting my hands dirty by actually starting to implement this project. Hopefully I’ll have something worth sharing again soon.&lt;/p&gt; &lt;p&gt;In the meantime, thank you for reading the first part in this series! I hope that you enjoyed it, or that it at least gave you a brief look into the problem space of chess programs and provided you with enough information and further reading to be able to start a similar project of your own!&lt;/p&gt; &lt;p&gt;Until the next chapter, thank you again for your time and take care!&lt;/p&gt;

</description>
      <category>go</category>
      <category>chess</category>
    </item>
    <item>
      <title>Dealing with Burnout, or How I found motivation once again.</title>
      <dc:creator>Dominik Ágh</dc:creator>
      <pubDate>Thu, 08 Oct 2020 18:00:00 +0000</pubDate>
      <link>https://dev.to/aghdom/dealing-with-burnout-or-how-i-found-motivation-once-again-6j6</link>
      <guid>https://dev.to/aghdom/dealing-with-burnout-or-how-i-found-motivation-once-again-6j6</guid>
      <description>&lt;p&gt;&lt;em&gt;(this turned out a bit long - TL;DR at the end.)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;During these last few months (Summer/Fall 2020), I found myself in an emotional, (and motivational) slump.&lt;br&gt;
Considering the state the world is in, it probably comes as no surprise, but combined with a few developments at work,&lt;br&gt;
it resulted in me having next to no drive to solve issues and feeling more and more depressed about the whole situation.&lt;/p&gt;

&lt;p&gt;In this post I'd like to go through to the things which helped me get out of said slump, got me into a better mind-set&lt;br&gt;
about the whole thing and enjoying coding again. Hopefully, if you find yourself in a similar situation, you'll be able to&lt;br&gt;
find something in here to help you, or at least avoid the same pitfalls I've fallen into.&lt;/p&gt;

&lt;h2&gt;
  
  
  You are NOT alone
&lt;/h2&gt;

&lt;p&gt;With the whole COVID-19 and lock-down, we, as I suspect many others, have transitioned to working exclusively from home.&lt;br&gt;
This had one rather unpleasant side-effect, which only became apparent to me after a few months. Even though I didn't really&lt;br&gt;
miss human contact, as many people, getting to communicate with teammates almost exclusively via Zoom meetings regarding projects&lt;br&gt;
and daily syncs meant loosing the casual office banter and the option to just turn to your colleague and talk through a problem&lt;br&gt;
or ask for help. This led to me feeling isolated and as if I had to deal with every problem on my own. &lt;/p&gt;

&lt;p&gt;Luckily, it turned out that I was not the only one in our company feeling that way. A couple of colleagues have felt the same way,&lt;br&gt;
and have started a few initiatives to help with these problems. We started weekly sessions, where we talk about things we are unhappy&lt;br&gt;
about, or which we'd like to change, and discuss ways we could make them better. We also started a few Slack channels where people can&lt;br&gt;
talk about their issues and get feedback and help from other, as well as one where we share cool or interesting articles regarding&lt;br&gt;
Software Development.&lt;/p&gt;

&lt;p&gt;This is a long way of saying that even though we might feel isolated, or that we have to deal with our problems alone, that's rarely&lt;br&gt;
the case. Even if you don't work for a company, or don't have any immediate friends interested in Software Development, there are some&lt;br&gt;
amazing developer communities out there, including (but not limited to) &lt;a href="https://dev.to"&gt;dev.to&lt;/a&gt;, &lt;a href="https://stackoverflow.com"&gt;StackOverflow&lt;/a&gt;, &lt;a href="https://news.ycombinator.com/"&gt;HackerNews&lt;/a&gt;&lt;br&gt;
and countless of other groups, forums, and sub-reddits where you can ask for help or feedback and where other people share their cool &lt;br&gt;
projects, talk about development or share their programming experience. Hell, if you have somehow stumbled upon this article, I think &lt;br&gt;
you already are in the right place.&lt;/p&gt;

&lt;h2&gt;
  
  
  Don't try to change the whole world
&lt;/h2&gt;

&lt;p&gt;Another issue keeping me down I ran into, both with the global situation and the situation at work, was the fact that I saw too many&lt;br&gt;
things which desperately needed addressing, and problems which seemed couldn't be fixed by any other way than by starting from scratch with&lt;br&gt;
a completely new solution, which we couldn't afford. (Which is a completely valid reason not to do something. The company has a limited &lt;br&gt;
amount of resources and must use them in the most efficient way possible.)&lt;/p&gt;

&lt;p&gt;It's easy (for me at least) to see a challenge or an obstacle from birdseye view, see all the things which would need to change, all the ways&lt;br&gt;
it can fail, get overwhelmed by this feeling, and believe the problem to be unsolvable. The same could probably also be said for the state the&lt;br&gt;
world is currently in. But as a wise man once said "Rome wasn't built in a day". We shouldn't expect it from ourselves to rework the whole app&lt;br&gt;
or feature, redesign the entire process, or change everything about ourselves in one Big Bang change. Sooner or later you'd probably hit a &lt;br&gt;
brick wall, get swamped by all the possible issues, lose your motivation, and quit.&lt;/p&gt;

&lt;p&gt;Here it's probably best to borrow a bit from the Stoic philosophy - don't get discouraged by the things which are out of your control, accept &lt;br&gt;
them for what they are, and move on. Focus, instead, on the things which you CAN change or influence. You most likely won't be able to rewrite&lt;br&gt;
the entire service from scratch, but there most likely is that one small issue, that has been driving you nuts for couple of weeks or months&lt;br&gt;
already. So go and fix it! Find these low-hanging fruits, these small victories, these &lt;em&gt;incremental improvements&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;This is very much in line wit the japanese concept of &lt;em&gt;Kaizen&lt;/em&gt; - the process of continuous improvement via small changes (something I will likely&lt;br&gt;
write about more in the future.) The point I'm trying to get at is that you should try and improve - wether it's the software you are working on,&lt;br&gt;
your management processes in your, or yourself - little by little and not all at once. Start with small, but steady steps and you'll be surprised&lt;br&gt;
how quickly they will accumulate and you will &lt;em&gt;hopefully&lt;/em&gt; start feeling the impact they're having. &lt;/p&gt;

&lt;h2&gt;
  
  
  People are making amazing things!
&lt;/h2&gt;

&lt;p&gt;I have already touched on this briefly in the first section, but one of the few things that really helped me get my&lt;br&gt;
motivation levels up, was to get back into reading articles, blog posts and watching videos about cool projects or tools people were building or&lt;br&gt;
ingenious solutions to some irritating problem they came up with. This reminded me how amazing and fun software development can be! &lt;/p&gt;

&lt;p&gt;Here's just a few posts that caught my eye and which might be a good starting point for you as well:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/jeroendk/building-a-simple-chat-application-with-websockets-in-go-and-vue-js-gao"&gt;Building a simple Chat application with Websockets in Go and Vue.js&lt;/a&gt; by &lt;a href="https://dev.to/jeroendk"&gt;Jeroen de Kok&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/vtrpldn/how-to-estimate-your-work-like-you-know-what-you-re-doing-oc8"&gt;How to estimate your work like you know what you are doing&lt;/a&gt; by &lt;a href="https://dev.to/vtrpldn"&gt;Vitor Paladini&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://youtu.be/GRr4xeMn1uU"&gt;Stop Over-Engineering&lt;/a&gt; by Greg Young (video)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Rediscovering the Joy of Coding
&lt;/h2&gt;

&lt;p&gt;Feeling once again motivated by all these incredible articles, I decided to start my first personal project in months! And it did wonders for me! &lt;br&gt;
I realise that this is most likely a more personal thing, but since at work I was stuck mostly just fixing bugs and making small tweaks to existing &lt;br&gt;
functionality, the blank slate that a new Git repository offered was a much needed breath of fresh air for me. Dusting off the basics I haven't used&lt;br&gt;
in ages by building the foundation for the project, but also utilizing the experience I've gathered while maintaining a rather large piece of software &lt;br&gt;
at work.&lt;/p&gt;

&lt;p&gt;After a very long time, I've felt empowered, and much better prepared than the first time I've started developing something. It helped me realise how much &lt;br&gt;
I've grown since then, but also brought with itself the nostalgia of the struggle of getting my first ever project to work. I remembered how magical the &lt;br&gt;
feeling of making a small script which automated something was, and it reminded me why I wanted to pursue this career in the first place, how much I actually&lt;br&gt;
enjoy coding.&lt;/p&gt;

&lt;h2&gt;
  
  
  Writing about it
&lt;/h2&gt;

&lt;p&gt;Last, but certainly not least, the process of writing this article has helped me greatly. It allowed me to properly formulate the emotions I was feeling,&lt;br&gt;
come to terms with them, and put them behind me, for the time being. It also forced me to dwell on each aspect of the problem I was dealing with and properly&lt;br&gt;
analyze it, so that I could write about &lt;em&gt;my&lt;/em&gt; solution to said problem. &lt;/p&gt;

&lt;p&gt;And here I would, once again, like to repeat that by no means is this article meant to be a "silver bullet" to dealing with burnout. To be honest, I'm not &lt;br&gt;
convinced such a thing could ever exist, as burnout is often caused by very personal reasons and might be brought about by completely opposite reasons&lt;br&gt;
for two different people. Everyone's life experience is unique and regarding emotional and psychological issues there rarely is a one-size-fits-all solution.&lt;/p&gt;

&lt;h2&gt;
  
  
  In Summary - TL;DR
&lt;/h2&gt;

&lt;p&gt;To summarize (and offer a TL;DR for those who saw a wall of text and got scared), I'll briefly go over the things which helped &lt;em&gt;me&lt;/em&gt; deal with burnout:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Even if you feel like you are all alone and that no one can help you with your problems, this is rarely the case. If you reach out to your colleagues,
or engage with online developer communities (like &lt;a href="https://dev.to"&gt;dev.to&lt;/a&gt; or &lt;a href="https://stackoverflow.com"&gt;StackOverflow&lt;/a&gt;), you will most likely &lt;strong&gt;find someone willing to help you&lt;/strong&gt; out.&lt;/li&gt;
&lt;li&gt;Don't try and solve all the issues at once. If you are under a lot of pressure at work, this might be hard, but try and &lt;strong&gt;divide your work into manageable
portions and tackle them one at a time&lt;/strong&gt;. Strive for small, but continuous improvements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Read articles and posts&lt;/strong&gt; by people who make awesome stuff, or struggle with similar issues as you to see, how they approached them! Get inspired to try
things out, learn new skills or just distract yourself from the daily routine.&lt;/li&gt;
&lt;li&gt;If your time allows, &lt;strong&gt;find a small personal project to work on&lt;/strong&gt; in your spare time. For me, this was a pet coding project which reminded me why I enjoy 
coding, but it can be anything for you. The main point is to find something which you will enjoy and which will pull you out of the worries you might be 
facing throughout the day.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Putting things on paper&lt;/strong&gt; (or at least into a written form). This allowed me to verbalize what I was dealing with, get a clearer picture of the reasons 
for it, which in turn helped me find solutions for those specific reasons.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Well, this turned out longer than I initially expected, but this being my first article, it's probably no surprise, as I've yet to develop an eye for these &lt;br&gt;
things. Hopefully you found something this article which might be helpful to you, or at the very least found it a bit interesting. In the future, I'll probably try and keep things shorter, and more to the point.&lt;/p&gt;

&lt;p&gt;If you've read this far, first of all thank you, but I'd also like to hear from you! As I mentioned, I'm just starting out, so any feedback is welcome!&lt;/p&gt;

</description>
      <category>personal</category>
      <category>motivation</category>
    </item>
  </channel>
</rss>
