<?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: Sezgin Ege</title>
    <description>The latest articles on DEV Community by Sezgin Ege (@sezginege).</description>
    <link>https://dev.to/sezginege</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%2F375699%2F7387966c-b9f2-4e18-a3c5-20eb4d485371.jpeg</url>
      <title>DEV Community: Sezgin Ege</title>
      <link>https://dev.to/sezginege</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sezginege"/>
    <language>en</language>
    <item>
      <title>Transient Errors: Retry Wisely</title>
      <dc:creator>Sezgin Ege</dc:creator>
      <pubDate>Sun, 31 May 2020 00:00:00 +0000</pubDate>
      <link>https://dev.to/sezginege/transient-errors-retry-wisely-43fk</link>
      <guid>https://dev.to/sezginege/transient-errors-retry-wisely-43fk</guid>
      <description>&lt;p&gt;Each remote service that we call eventually going to fail. No matter how reliable they are, it is inevitable.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Everything fails all the time” — Werner Vogels&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;These failures can come from a variety of factors; network issues, hardware problems, temporarily unavailable services, exceeded response times, etc.&lt;/p&gt;

&lt;p&gt;Some of these failures might have been resolved automatically and in a short period, if the remote service is invoked again, it immediately responds successfully. We call these kinds of errors as transient errors.&lt;/p&gt;

&lt;p&gt;When we encounter a transient error, there are a few things we can do. The simplest option would be to log an error and give up. Since transient errors most likely to be resolved when you retry, you may guess that this is not the wisest option. So, the correct strategy would be the retry the failed operation.&lt;/p&gt;

&lt;p&gt;Retry the failed operation without having a clear strategy most likely will create extra load on remote service and therefore it probably will make the situation worst.&lt;/p&gt;

&lt;p&gt;Some questions that should be answered before applying retry strategy are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How would client determine if error transient or not?&lt;/li&gt;
&lt;li&gt;How often client should retry?&lt;/li&gt;
&lt;li&gt;How long client should keep retrying?&lt;/li&gt;
&lt;li&gt;When client should give up?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  So, when to retry?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;You can identify that it is a transient error&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If the remote service returns TransientErrorException, it is great. However, this is not always likely. In those situations, we need to be smart while interpreting the errors.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Client Errors:&lt;/strong&gt; These are the errors caused by client itself. Examples are badly formed requests, causing conflict, or doing too many requests. In those cases, remote service returns 4xx error. The only way to handle client errors is to fix either client or request itself by human intervention. _ &lt;strong&gt;There is no point to retry these requests.&lt;/strong&gt; _&lt;/li&gt;
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Server Errors:&lt;/strong&gt; These are the 5xx errors that indicate something went wrong on the server side. In those cases, it is &lt;strong&gt;usually&lt;/strong&gt; safe to retry since every 5xx error is not as transient error.&lt;/li&gt;
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Network Errors:&lt;/strong&gt; These are the errors due to network issues. Examples are package loss, router/switches etc hardware issue, etc. Safe to retry if you can identify those.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The service is idempotent&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Idempotence means, when making multiple identical requests has the same effect as making a single request &lt;sup id="fnref:1"&gt;1&lt;/sup&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;According to the definition of the spec of HTTP&lt;sup id="fnref:2"&gt;2&lt;/sup&gt;, GET, HEAD, PUT, and DELETE are idempotent operations. So, you are fine to retry those requests unless advised by a remote service owner. On the other hand, POST &amp;amp; PATCH are not idempotent and if idempotency not applied, it is not safe to retry since it might cause side effects such as charging a customer multiple times.&lt;/p&gt;

&lt;h2&gt;
  
  
  Retry strategies
&lt;/h2&gt;

&lt;p&gt;Several strategies that can be applied as retry mechanism. Choosing the right strategy depends on the use case.&lt;/p&gt;

&lt;p&gt;We can &lt;strong&gt;retry immediately&lt;/strong&gt; right after the operation failed. This is the simplest retry strategy that we can implement. It is a good idea to give up or fallback a better strategy after the first failed retry operation since continuously retrying will create too much load on remote service.&lt;/p&gt;

&lt;p&gt;We can &lt;strong&gt;retry at fixed intervals&lt;/strong&gt; right after the operation failed. This strategy gives more time to remote service for recovery.&lt;/p&gt;

&lt;p&gt;Both of these strategies are useful for applications that user interact with it since these strategies retry the failed operation and if operation not successful, most likely to give up. So that, the user does not have to wait for a long time.&lt;/p&gt;

&lt;p&gt;If your service/application does not directly interact with a user and/or you have a luxury to wait more (e.g. background operations), &lt;strong&gt;exponential backoff&lt;/strong&gt; is a strategy that you should try. This strategy is based on increasing the wait time exponentially between subsequent retries. This is a pretty useful technique since it gives remote service more time to recover and create less load than previous both strategy in a given period.&lt;/p&gt;

&lt;h2&gt;
  
  
  So, what exponential backoff strategy looks like?
&lt;/h2&gt;

&lt;p&gt;Here is a &lt;em&gt;simplified&lt;/em&gt; pseudo code for exponential backoff strategy algorithm in a simple way:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;retries = 0;
retry = true;
do {
    wait for Math.MIN((2^retries * 1000) milliseconds, MAX_WAIT_INTERVAL)
    status = fn(); // retry function
    set retry true if operation status failed
    retries++;
} while(retry &amp;amp;&amp;amp; retries &amp;lt; MAX_RETRY_COUNT)

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h3&gt;
  
  
  Distribute load by adding some jitter
&lt;/h3&gt;

&lt;p&gt;Most likely that there will be multiple instance of client and therefore, if all the requests from those clients fail at exactly the same time, we don’t want these retries to be overlapped. Adding jitter will distribute load more evenly. With jiter, our algorithm would be;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;retries = 0;
retry = true;
do {
    waitTime = Math.MIN((2^retries * 100) milliseconds, MAX_WAIT_INTERVAL)
    waitTime += random(0...3000)
    status = fn(); // retry function
    set retry true if operation status failed
    retries++;
} while(retry &amp;amp;&amp;amp; retries &amp;lt; MAX_RETRY_COUNT)

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;Retry is a powerful technique that allows the client to offer higher availability than its dependencies if applied correctly. Retrying the failed operation without having a clear retry strategy most likely will create extra load on service and will make the situation worst.&lt;/p&gt;

&lt;p&gt;So, use wisely!&lt;/p&gt;




&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;&lt;a href="https://restfulapi.net/idempotent-rest-apis/"&gt;Idempotent rest APIs&lt;/a&gt; ↩︎&lt;/p&gt;
&lt;/li&gt;
&lt;li id="fn:2"&gt;
&lt;p&gt;&lt;a href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html"&gt;Idempotency on HTTP methods&lt;/a&gt; ↩︎&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>distributedsystem</category>
      <category>retrymechanims</category>
      <category>transienterrors</category>
      <category>software</category>
    </item>
    <item>
      <title>The Analysis of Turkey’s Big Plan: Train 1 Million Software Developers</title>
      <dc:creator>Sezgin Ege</dc:creator>
      <pubDate>Fri, 01 May 2020 22:00:00 +0000</pubDate>
      <link>https://dev.to/sezginege/the-analysis-of-turkey-s-big-plan-train-1-million-software-developers-1709</link>
      <guid>https://dev.to/sezginege/the-analysis-of-turkey-s-big-plan-train-1-million-software-developers-1709</guid>
      <description>&lt;p&gt;The Treasury and Finance Ministry of Turkey has kick-started a campaign on 21st April which aims to train at least 1 million software developers.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;It has been announced on &lt;a href="https://twitter.com/BeratAlbayrak/status/1252500903803981825"&gt;Twitter&lt;/a&gt;:&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We put into practice today the revolutionary ‘1 million software developer’ program, which will make our country one of the leading countries in the world in software development. A historic step is being taken for Turkey today.&lt;/p&gt;

&lt;p&gt;Turkey has scarce human resources in software development with about 140,000 employees. Since their number is limited in Turkey, software developers have to take responsibilities of a system analyst, system testing expert, project supervisor, database expert, designer, and security expert at the same time. Firms always complain about having difficulty in hiring in these positions.&lt;/p&gt;

&lt;p&gt;We aim to solve this problem with the “1 million software developer” program. Software developers will work much more efficiently since they will only work on the areas they are experts.&lt;/p&gt;

&lt;p&gt;31 courses of nearly 47.000 minutes are already uploaded on the training portal. The number of courses will increase to 100 until the end of the year.&lt;/p&gt;

&lt;p&gt;Each exam score of completion of these courses will automatically be added to their CVs. Companies will be given access to the CV pool.&lt;/p&gt;

&lt;p&gt;Courses will be free of charge and everyone can access it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After the “1 million software developer” program has been announced, of course, people started the criticize it. While veteran software developers support the idea that the “1 million software developer” program will affect the businesses in a bad way &lt;em&gt;( &lt;strong&gt;Quality vs Quantity&lt;/strong&gt; )&lt;/em&gt;, students/hobbyists, etc. believe that this program will help them to learn how to code and get a job way easier.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this program is promising?
&lt;/h2&gt;

&lt;p&gt;We are living in a world which constantly transforming. It is getting more connected, more digital every day. We need to understand today’s world, use the tools that exist and leverage them to improve our productivity. These free courses are giving people a chance to do it exactly.&lt;/p&gt;

&lt;p&gt;Let me tell you a story. Once I have met with someone. Their team was responsible to download product images everyday from several websites and upload their internal systems. Can you believe that how much time they could save if any of their team members would now basic scripting? They could automate all the processes.&lt;/p&gt;

&lt;p&gt;It does not have to be all examples about coding. Imagine someone, who has a local shop, manually keep track of inventory. This is an error-prone process. It takes a lot of time. Knowing how to use office programs would help to save time and could make their life more productive.&lt;/p&gt;

&lt;h2&gt;
  
  
  Some Early Concerns
&lt;/h2&gt;

&lt;h3&gt;
  
  
  There is limited soft skill trainings
&lt;/h3&gt;

&lt;p&gt;Software development is not just about coding from morning to evening. It would be really easy if it was.&lt;/p&gt;

&lt;p&gt;As a software developer, you need to be part of several meetings &lt;em&gt;-planning, grooming, design, mentorship-&lt;/em&gt; with different stakeholders &lt;em&gt;-managers, UI/UX designers-&lt;/em&gt;. During each meeting, you might have to mimic a different role. You cannot build the right product without understand customer problem. You cannot deliver a product on time if you don’t estimate well or have a good judgment about tradeoffs between decisions. Most importantly, different stakeholders use different mediums to share information. While some of them use planning boards, others might use design documents. Having success as a software developer not just depends on coding skills, but most importantly it requires to have good soft skills.&lt;/p&gt;

&lt;h3&gt;
  
  
  It is all about online courses
&lt;/h3&gt;

&lt;p&gt;Nowadays, it is possible to find a course anything you might be curious about. Are you curious about machine learning? Sure. Tons of ML course available today. Wanna be a web developer? Here is the React training. However we still have too many open positions today and companies are having a hard time hiring highly qualified people. Making online courses definitely will increase the number of people work in this field. However this will not improve the “quality”. Software development is not just about doing working software but also well-crafted software. I have been professionally doing software development for the last 6 years, following several programming blogs, Youtube channels, people on twitter. Even though I learn a lot from exposing myself to all the information what others share, I must say that doing a bad decision on real product teaches you way more than anything. I hope, they somehow find a way to support these courses with real-life practice.&lt;/p&gt;

&lt;h3&gt;
  
  
  Trainings needs to be more focused
&lt;/h3&gt;

&lt;p&gt;I enrolled in the program to give it a try &lt;em&gt;-requires Turkish citizenship id-&lt;/em&gt;. I must say that I am shocked when I see there are 695 trainings on Javascript course. It is all about pure, vanilla Javascript. This might sound amazing but I can assure you that it is not. There are hundreds of videos that explain each DOM event, each function that Date object has. Who needs to know each DOM event? All the efforts that spend to create these videos could have been used to prepare more structured, detailed videos.&lt;/p&gt;

&lt;h3&gt;
  
  
  There is no “guidance”
&lt;/h3&gt;

&lt;p&gt;This platform mostly will be used by people who have little or no knowledge about programming. They need guidance to achieve their goals. Today, courses have been grouped such as software development, cybersecurity… It is easy to get distracted and jump one course to another or struggle to find out what to learn next if you have little experience. It would be great if they can add roadmap functionality (e.g. &lt;a href="https://roadmap.sh/"&gt;roadmap.sh&lt;/a&gt;)&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;There is nothing wrong with encouraging people to learn to code. This program may help people to do headstart. Also I believe that it will get better over time.&lt;/p&gt;

&lt;p&gt;On the other hand, this program should not be announced as a “hope” to find a job (complete course, get the job). Companies are looking for people who do more than complete courses. People must be aware of that.&lt;/p&gt;

</description>
      <category>softwaredevelopment</category>
      <category>culture</category>
    </item>
    <item>
      <title>Weekend Project: Building Augmented Reality App With Javascript/HTML</title>
      <dc:creator>Sezgin Ege</dc:creator>
      <pubDate>Sat, 04 May 2019 00:00:00 +0000</pubDate>
      <link>https://dev.to/sezginege/weekend-project-building-augmented-reality-app-with-javascript-html-k35</link>
      <guid>https://dev.to/sezginege/weekend-project-building-augmented-reality-app-with-javascript-html-k35</guid>
      <description>&lt;p&gt;Augmented Reality (AR) got my attention after I have seen few interesting projects on my twitter feed and I wanted to do small AR demo with using basic web development skills, just to experiment AR stuff.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Here is the result:&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Doing some AR experiment 🕺 I will publish details on my blog later &lt;a href="https://twitter.com/hashtag/AugmentedReality?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#AugmentedReality&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/groot?src=hash&amp;amp;ref_src=twsrc%5Etfw"&gt;#groot&lt;/a&gt; &lt;a href="https://t.co/WPTALpZGj9"&gt;pic.twitter.com/WPTALpZGj9&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;— Sezgin Ege (&lt;a class="comment-mentioned-user" href="https://dev.to/sezginege"&gt;@sezginege&lt;/a&gt;
) &lt;a href="https://twitter.com/SezginEge/status/1122202410229825537?ref_src=twsrc%5Etfw"&gt;27 Nisan 2019&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I have only used &lt;a href="https://aframe.io/"&gt;a-frame&lt;/a&gt; framework and &lt;a href="https://github.com/jeromeetienne/AR.js/"&gt;AR.js&lt;/a&gt; during development.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://aframe.io"&gt;a-frame&lt;/a&gt;&lt;/strong&gt;: is a web framework for building virtual reality experiences.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/jeromeetienne/AR.js"&gt;AR.js&lt;/a&gt;&lt;/strong&gt;: is a javascript framework that enabling AR features directly on web browsers without sacrificing performance. It works on any phone that supports webgl and webrtc.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Let`s see the code
&lt;/h2&gt;

&lt;p&gt;I have added comments to the code. It is pretty straightforward. Basically, we define our scene, initialize arjs, add camera and marker for origin point. Also we define the entity that we would like to show on origin point. I have used 3D groot model but you may want to show static image/box etc. In that case, you need to use a-box or a-image components.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we can test this?
&lt;/h2&gt;

&lt;p&gt;If you open index.html file directly on your browser and check developer console, you may see CORS issue:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;br&gt;
Access to XMLHttpRequest at 'file:///&amp;lt;workplace&amp;gt;/AR/test/scene.gltf' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Please have a look CORS wiki page to understand what CORS means: &lt;a href="https://en.wikipedia.org/wiki/Cross-origin_resource_sharing"&gt;https://en.wikipedia.org/wiki/Cross-origin_resource_sharing&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In order to get rid of this issue, we need to run http-server. Node.js has a simple HTTP server package. To install, you need to run:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install http-server -g&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;After successfully command executed, we need to go to the folder that index.html exists and then start http server;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;http-server&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;We should see an output like this on our terminal:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Starting up http-server, serving ./&lt;br&gt;
Available on:&lt;br&gt;
http://127.0.0.1:8080&lt;br&gt;
http://192.168.1.36:8080&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;So, server is up and running. We can click any of those addresses and open in our browser. However we will face with two issues.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Testing AR with our browser´s webcam is not comfortable at all.&lt;/li&gt;
&lt;li&gt;We need to create SSL certificate for our server. Otherwise, we will see “Webcam Error NotSupportedError Only secure origins are allowed” error: &lt;a href="https://github.com/jeromeetienne/AR.js/issues/399"&gt;https://github.com/jeromeetienne/AR.js/issues/399&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To simplify this process, we can use &lt;a href="https://ngrok.com/"&gt;ngrok&lt;/a&gt; which is reverse proxy software that establishes secure tunnels from a public endpoint such as internet to a locally running network service. We need to download and run ngrok.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;./ngrok http &amp;lt;port that your local server listening&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;We should see an output like this on our terminal:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Forwarding http://e2db416e.ngrok.io -&amp;gt; localhost:8080&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Forwarding https://e2db416e.ngrok.io -&amp;gt; localhost:808&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now, We should be able to reach our demo with using https endpoint with any device that has internet connection.&lt;/p&gt;

&lt;p&gt;To see our entity on screen, we should show the hiro marker to the camera. Marker can be found here: &lt;a href="https://jeromeetienne.github.io/AR.js/data/images/HIRO.jpg"&gt;https://jeromeetienne.github.io/AR.js/data/images/HIRO.jpg&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The demo is pretty simple. However if we consider that we did this demo with few lines of html code and few JS libraries, there is a huge potential here to build greater things.&lt;/p&gt;

&lt;p&gt;I am finishing the article with one of my favorite AR application. Enjoy!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>📣 Career Talk at Yildiz Technical University</title>
      <dc:creator>Sezgin Ege</dc:creator>
      <pubDate>Tue, 01 Jan 2019 00:00:00 +0000</pubDate>
      <link>https://dev.to/sezginege/career-talk-at-yildiz-technical-university-4blk</link>
      <guid>https://dev.to/sezginege/career-talk-at-yildiz-technical-university-4blk</guid>
      <description>&lt;p&gt;Few months ago, I had the chance to talk as a former student at Yildiz Technical University about how I built my career after graduation and a few things I wish to learn a few years ago. Huge thanks to &lt;a href="https://www.ce.yildiz.edu.tr/personal/banud"&gt;Prof.Dr.Banu Diri&lt;/a&gt; and &lt;a href="https://www.facebook.com/ytuskylab"&gt;Skylab&lt;/a&gt; team to organize this fantastic event!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VS89M8SO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.sezginege.com/assets/2019-01-01-Career-Talk-Yildiz-Technical-University/img/attendees.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VS89M8SO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://blog.sezginege.com/assets/2019-01-01-Career-Talk-Yildiz-Technical-University/img/attendees.jpg" alt="Attendees"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I really enjoyed to be there and try to answer people´s questions as much as I can ✌️ I hope, we can do these kinds of organizations more often. &lt;em&gt;It seems that we should, after all those &lt;a href="https://blog.sezginege.com/assets/2019-01-01-Career-Talk-Yildiz-Technical-University/doc/Feedback.pdf"&gt;great feedbacks.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Few things to emphasize from talk
&lt;/h2&gt;

&lt;p&gt;It would be great to share a record of the talk instead of giving a really short summary but we could not arrange a camera.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;em&gt;Experience is what we get from life, not the what we expect&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;There is no guarantee that your dream will be always come true. You need to work hard to make them real but sometimes, it is not enough. Also, you should not forget that decisions are not good or bad on its own. We, as decision makers, make them good or bad, depending on our actions after the decision. Whatever you do or you decide, do it wholeheartedly, and it will be a good decision.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;em&gt;Have a plan&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;Having a plan will keep you oriented and focused to reach your end goals. Do not let having a plan to create pressure on you. You cannot have a plan for everything but thinking on your career or your health is a good thing to worry about.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;em&gt;Work on things that you enjoy&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;I know It sounds like a cliche and I agree that. It is nearly impossible to enjoy all the time from the things that we are working on. Everything that we do has positive or negative sides. The important thing here is that how do you feel the end of the day. Are you happy? If yes, go ahead and if not, it might be a good idea to think about it.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Which blogs do you follow?

&lt;ul&gt;
&lt;li&gt;Most of the time, discussions happening on Twitter. However, I believe that blog is still a thing and there are good authors/companies to follow. I cannot list all of them but those are at least my favourite ones.
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://blog.codinghorror.com/"&gt;http://blog.codinghorror.com/&lt;/a&gt; by Jeff Atwood&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://martinfowler.com/"&gt;https://martinfowler.com/&lt;/a&gt; by Martin Fowler&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://medium.com/netflix-techblog"&gt;https://medium.com/netflix-techblog&lt;/a&gt; by Netflix&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://medium.com/airbnb-engineering"&gt;https://medium.com/airbnb-engineering&lt;/a&gt; by Airbnb&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.tedinski.com/"&gt;https://www.tedinski.com/&lt;/a&gt; by Ted Kaminski&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.hanselman.com/"&gt;https://www.hanselman.com/&lt;/a&gt; by Scott Hanselman&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ahmet.im/blog/"&gt;https://ahmet.im/blog/&lt;/a&gt; by Ahmet Alp Balkan&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Which talks do you suggest?

&lt;ul&gt;
&lt;li&gt;Please have a look at this repo: &lt;a href="https://github.com/hellerve/programming-talks"&gt;https://github.com/hellerve/programming-talks&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Which resources we should look to improve our technical skills?

&lt;ul&gt;
&lt;li&gt;There are different ways to solve the same issues. It is good to look for If someone already invented the wheel. So, I strongly suggest looking for design patterns which are &lt;code&gt;"simply a generalized, reusable solution to a commonly occurring problem."&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kamranahmedse/design-patterns-for-humans"&gt;Design patterns for humans&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Try to understand how large scale systems work:
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/donnemartin/system-design-primer/blob/master/README.md"&gt;The System Design Primer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;What I cannot create, I do not understand - Richard Feynman&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/danistefanovic/build-your-own-x/blob/master/README.md"&gt;Build your own x&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;What was your English level when you join Amazon and what is now?

&lt;ul&gt;
&lt;li&gt;When I joined Amazon, I believe that it was B1. I was able to understand people easily. But my problem was to talk fluently. So, I was too afraid to go into the conversation with people. I still make quite a lot of grammar mistakes but at least now, I can communicate without much difficulty.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Do you suggest to live abroad?

&lt;ul&gt;
&lt;li&gt;Definitely. I am so happy to meet and work with the people all around the world, listen their stories and learn from them.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;I am really grateful for the invite and I really enjoyed to be there! Thank you so much everyone!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Let´s Try Again: New Blog</title>
      <dc:creator>Sezgin Ege</dc:creator>
      <pubDate>Sat, 29 Dec 2018 00:00:00 +0000</pubDate>
      <link>https://dev.to/sezginege/let-s-try-again-new-blog-58gg</link>
      <guid>https://dev.to/sezginege/let-s-try-again-new-blog-58gg</guid>
      <description>&lt;p&gt;I really wanted to stop giving status updates like this on my blog. I believe that Twitter is a good platform to share those updates but let´s make an exception and I hope, this will be the last.&lt;/p&gt;

&lt;h2&gt;
  
  
  What happened to the old blog(s)?
&lt;/h2&gt;

&lt;p&gt;I had a few blogging experiences with different platforms (Blogger/Wordpress). I was blogging about technical stuff and I was happy with the traffic I have. However at some point, I just lost my motivation and I thought, blog posts I shared were not good enough from a technical perspective. So, I stopped blogging.&lt;/p&gt;

&lt;h2&gt;
  
  
  What has changed?
&lt;/h2&gt;

&lt;p&gt;I believe that I have more interesting stuff to share now. Years past after my last blogging experience. During those years, I found a chance to work with different teams on different interesting projects and had to solve too many issues. I started to live abroad far away from my home country. I travelled a lot and met interesting people. So, I have changed 😋&lt;/p&gt;

&lt;h2&gt;
  
  
  The Motivation behind this blog
&lt;/h2&gt;

&lt;p&gt;We all face different problems in our daily routine and the first thing we do is that check other people´s blog posts/wiki pages/news etc. It is great to see that there are too many people outside ready to help other´s but I believe that this process should be mutual.&lt;/p&gt;

&lt;h2&gt;
  
  
  What kind of blog posts you should expect?
&lt;/h2&gt;

&lt;p&gt;This blog will be a place for me to share my experiences/ideas on a variety of topic. But probably, the main content will be about technical stuff.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;I am really happy to blog again and I hope, I can keep this blog alive for years!&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
