<?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: geyuqiu</title>
    <description>The latest articles on DEV Community by geyuqiu (@geyuqiu).</description>
    <link>https://dev.to/geyuqiu</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%2F200075%2F0532241e-a5a5-4fe5-bf58-370b78d099e0.jpg</url>
      <title>DEV Community: geyuqiu</title>
      <link>https://dev.to/geyuqiu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/geyuqiu"/>
    <language>en</language>
    <item>
      <title>TypeScript vs JavaScript</title>
      <dc:creator>geyuqiu</dc:creator>
      <pubDate>Sun, 10 Jan 2021 11:52:16 +0000</pubDate>
      <link>https://dev.to/geyuqiu/typescript-vs-javescript-4jmi</link>
      <guid>https://dev.to/geyuqiu/typescript-vs-javescript-4jmi</guid>
      <description>&lt;h1&gt;
  
  
  Go with TS if:
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;high fluctuation&lt;/li&gt;
&lt;li&gt;using cypress to do UI-Tests&lt;/li&gt;
&lt;li&gt;doing agile software development:

&lt;ul&gt;
&lt;li&gt;pair programming&lt;/li&gt;
&lt;li&gt;TDD&lt;/li&gt;
&lt;li&gt;agile methodologies according to agile manifest: DoD, DoR, etc.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;following clean code principles&lt;/li&gt;
&lt;li&gt;doing Angular (opinionated framework)&lt;/li&gt;
&lt;li&gt;doing React / Vue&lt;/li&gt;
&lt;li&gt;caring about code quality&lt;/li&gt;
&lt;li&gt;writing tests in Jest/Jasmine&lt;/li&gt;
&lt;li&gt;utilizing IDE features to autocomplete, refactor, especially in IntelliJ&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Go with JS if
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;creating a POC app in 1 hour&lt;/li&gt;
&lt;li&gt;creating a mock server for local development&lt;/li&gt;
&lt;li&gt;creating a quick script in &lt;code&gt;Fastify&lt;/code&gt; to host a SPA application&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>javascript</category>
      <category>typescript</category>
    </item>
    <item>
      <title>List of great Trainings for a Java/Typescript Developer</title>
      <dc:creator>geyuqiu</dc:creator>
      <pubDate>Sun, 10 Jan 2021 11:44:56 +0000</pubDate>
      <link>https://dev.to/geyuqiu/list-of-great-trainings-for-a-java-typescript-developer-2gk2</link>
      <guid>https://dev.to/geyuqiu/list-of-great-trainings-for-a-java-typescript-developer-2gk2</guid>
      <description>&lt;ol&gt;
&lt;li&gt;Certified Scrum Master&lt;/li&gt;
&lt;li&gt;AWS CDA&lt;/li&gt;
&lt;li&gt;Oracle Java Developer&lt;/li&gt;
&lt;li&gt;iSAQB Architecture Foundation Level&lt;/li&gt;
&lt;li&gt;1 TDD based Framework Training, e.g. Angular, React, Spring Boot&lt;/li&gt;
&lt;li&gt;Soft skills Training: communication, conflict management, presentation skills etc.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;P.S.: try JHipster&lt;/p&gt;

</description>
      <category>java</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Nice Experience with a Freelancing Ionic/Angular project</title>
      <dc:creator>geyuqiu</dc:creator>
      <pubDate>Fri, 08 Jan 2021 14:56:20 +0000</pubDate>
      <link>https://dev.to/geyuqiu/nice-experience-with-a-freelancing-ionic-angular-project-1pd7</link>
      <guid>https://dev.to/geyuqiu/nice-experience-with-a-freelancing-ionic-angular-project-1pd7</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rIKNdLeT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.pinimg.com/564x/7c/6b/bf/7c6bbf73f430a9c2f176484e44a61ef1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rIKNdLeT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.pinimg.com/564x/7c/6b/bf/7c6bbf73f430a9c2f176484e44a61ef1.jpg" alt="99bugs"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I have an &lt;code&gt;Angular&lt;/code&gt; freelancer developer friend, he once joined a freelancer &lt;code&gt;ionic&lt;/code&gt; project.&lt;/li&gt;
&lt;li&gt;Now he is not with them anymore, he regrets that he could not help them anymore. And he also made some mistakes that every new developer to a new project will likely make. But let me tell you the whole story ;) &lt;/li&gt;
&lt;li&gt;The project lead/manager (was a developer), well that could be an advantage if he was a good developer/leader, but unfortunately, he knows nothing about being a good leader and nothing about automatic testing. "uh, yeah, tests sound like cool, but we don't need that, that will just slow us down ...You can check in some unit tests, but I don't understand them anyway XD. I have my developers all over the world, you have your tickets and finish them!"&lt;/li&gt;
&lt;li&gt;The manager hoped that you will test your feature/bugfix manually in every way possible. If something was not working, he would be on your tails, even if you are just new to this project.&lt;/li&gt;
&lt;li&gt;The manager was anal about so-called code conventions, like tabs over spaces (those spaces cannot be checked/handled by &lt;code&gt;ts-lint&lt;/code&gt; btw.). But if you are not writing any tests, it is absolutely perfect. There was not even 1 automatic test case, not even 1% really 0%, nothing, nada, there wasn't even a test config in &lt;code&gt;angular.json&lt;/code&gt; or &lt;code&gt;jasmine&lt;/code&gt;/&lt;code&gt;karma&lt;/code&gt; config like any angular developers are familiar with when starting over with &lt;code&gt;ng new&lt;/code&gt;. How were you able to create the project, did you create it with your bare 10 finger typing techniques? So you basically have to go through the app and test on your own, oh yeah, don't forget to MANUALLY create and test with this newly created test user! &lt;/li&gt;
&lt;li&gt;code review: oh yeah, there were some, not from the developer's team who developed that app, but they were done from a paid &lt;code&gt;GitHub&lt;/code&gt; network. "Yeah, that will only cost more money and time right, if we do them by ourselves. " You can request a code review by the manager, but he will find it unprofessional if you disable any &lt;code&gt;ts-lint&lt;/code&gt; rules in your &lt;code&gt;jasmine&lt;/code&gt; tests.&lt;/li&gt;
&lt;li&gt;There are continuous integration and continuous deployment, but there is no continuous delivery, "Yeah, we don't need that, because we do not have any tests yet ;) ".&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Over 50% percent of all tickets were bugs. Once, he solved a bug ticket, but while going through it, he had to solve 3 other bugs along the way, to satisfy the manager, because they are related and intertwined full stop. &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cjXWpzIJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/770/1%2ARQRfhtpZNgauNsWFCZTUBg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cjXWpzIJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/770/1%2ARQRfhtpZNgauNsWFCZTUBg.png" alt="bug"&gt;&lt;/a&gt;&lt;br&gt;
But of course, if you ask the manager, they are all features, right? &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The application supported multi-language functionalities of over 10 languages including Chinese, Russian, but most translations in &lt;code&gt;ch-zh.json&lt;/code&gt; and &lt;code&gt;ru.json&lt;/code&gt; were in English. Seriously, if you cannot cover it, you may want to speak with the customer, can we only support English and German, please?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Average rating in android- (2.8) and ios (2.6) - store, that says everything.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;There are some &lt;code&gt;ts-lint&lt;/code&gt;-rules integrated like &lt;code&gt;complete-docs&lt;/code&gt; that were not clean code conform. Every developer is fixing the comment when he is refactoring the method below it right. The comments will not live like carcasses.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Does it looks like fun to you ;) no no absolutely no&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Approach: more waterfall-like, all remote, in most async way that is possible, that he has ever experienced. Because sure, his developers are in different time zones. Always talking about adapting to agile, but you will never know if he's ever read the scrum guide ;) &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But he did develop some sympathy with them. Because developing a hybrid Ionic/Angular app is hard. You have all those bugs in your &lt;code&gt;Angular&lt;/code&gt; app, you have all those unresolved bugs in open source &lt;code&gt;GitHub Cordova&lt;/code&gt; and &lt;code&gt;ionic-native&lt;/code&gt; plugins. Life is hard for hybrid mobile apps.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Leetcode 102 best practices</title>
      <dc:creator>geyuqiu</dc:creator>
      <pubDate>Sun, 06 Dec 2020 11:14:26 +0000</pubDate>
      <link>https://dev.to/geyuqiu/leetcode-102-best-practices-37io</link>
      <guid>https://dev.to/geyuqiu/leetcode-102-best-practices-37io</guid>
      <description>&lt;p&gt;Hashtag how to solve a Leetcode problem. &lt;br&gt;
You may see a lot of YouTubers that are excellent Leetcode problem solvers. They just type away and you are wondering how you get there, well following are the best practices that I gathered from years of experience ;)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;(!) start with a piece of paper and a pen.
This is the most important one. How are you able to implement an algorithm, if you cannot go through it with a simple example on the paper?

&lt;ul&gt;
&lt;li&gt;if you cannot think of a solution, can you think of a partial solution that gets you halfway to the goal? Example: &lt;a href="https://leetcode.com/problems/rotate-image/"&gt;https://leetcode.com/problems/rotate-image/&lt;/a&gt;, did you think about transposing the matrix first?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;go through your idea with a simple example. Did you cover all edge cases?&lt;/li&gt;
&lt;li&gt;calculate the complexity. If it is a hard problem, is the complexity of your algorithm under O(n * log n)?&lt;/li&gt;
&lt;li&gt;write down your algorithm as a list of steps as comments in your code, maybe in pseudo-code.&lt;/li&gt;
&lt;li&gt;feel free to use an ide (e.g. IntelliJ for Java Developer) and use parameterized tests to implement your algorithm &lt;a href="https://www.youtube.com/watch?v=GvAzrC6-spQ"&gt;tdd&lt;/a&gt;. Also feel free to set some debug points to one of your failing tests. &lt;/li&gt;
&lt;li&gt;paste your code to Leetcode and submit, if it fails, go back to step 1 to check everything again
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for () {
  // 1: 

  // 2: 

  // 3: 

  // ...

  // feel free to print out some important variables :)  
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Happy coding ;) &lt;/p&gt;

</description>
      <category>algorithms</category>
      <category>computerscience</category>
    </item>
    <item>
      <title>Leetcode 101</title>
      <dc:creator>geyuqiu</dc:creator>
      <pubDate>Sun, 06 Dec 2020 10:16:45 +0000</pubDate>
      <link>https://dev.to/geyuqiu/leetcode-101-4c0j</link>
      <guid>https://dev.to/geyuqiu/leetcode-101-4c0j</guid>
      <description>&lt;p&gt;Hi, there are 5 different results that you will get while submitting a solution to &lt;a href="https://leetcode.com/problemset/all/?difficulty=Easy"&gt;Leetcode&lt;/a&gt;: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;compilation error: syntax error in your code because your code does not compile&lt;/li&gt;
&lt;li&gt;runtime Exception: e.g. ArrayOutOfBoundsException, NullPointerException&lt;/li&gt;
&lt;li&gt;wrong answer: your code may work for some unit test, but no for all test cases&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/geyuqiu/leetcode-tle-explained-2eah"&gt;time limit exceeded (TLE)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;accepted&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>computerscience</category>
      <category>algorithms</category>
    </item>
    <item>
      <title>Leetcode TLE explained</title>
      <dc:creator>geyuqiu</dc:creator>
      <pubDate>Sun, 06 Dec 2020 10:15:40 +0000</pubDate>
      <link>https://dev.to/geyuqiu/leetcode-tle-explained-2eah</link>
      <guid>https://dev.to/geyuqiu/leetcode-tle-explained-2eah</guid>
      <description>&lt;p&gt;Time limit exceeded (TLE) can be one of the most frustrating results when working on &lt;a href="https://leetcode.com/problemset/all/?difficulty=Hard"&gt;hard problems on Leetcode&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Most of the easy and medium problems on Leetcode do not have any time constraints regarding how complex your algorithm should be, as long as you get all of the test cases right. However, you should make sure that your solution time complexity is somewhere between O(n^2) and O(n).&lt;/p&gt;

&lt;p&gt;In my experience, we have a time constraint on hard problems that is between O(nlogn) and O(n). If you get a TLE, look at your algorithm and calculate the complexity. This means your algorithm should be at least faster than &lt;a href="https://www.bigocheatsheet.com/"&gt;merge sort&lt;/a&gt;. If you have any problems there, please take a look at these 2 books: &lt;a href="https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850"&gt;cracking the coding interview&lt;/a&gt; and &lt;a href="https://www.amazon.de/-/en/Adnan-Aziz/dp/1479274836"&gt;elements of programming interviews&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have any questions, write me something :) &lt;br&gt;
And keep updated on my channel!&lt;/p&gt;

</description>
      <category>computerscience</category>
      <category>algorithms</category>
    </item>
    <item>
      <title>How I passed AWS Certified Developer Associate (AWS CDA) mostly using open source and free materials</title>
      <dc:creator>geyuqiu</dc:creator>
      <pubDate>Tue, 13 Oct 2020 20:04:03 +0000</pubDate>
      <link>https://dev.to/geyuqiu/how-pass-aws-certified-developer-associate-aws-cda-4n6p</link>
      <guid>https://dev.to/geyuqiu/how-pass-aws-certified-developer-associate-aws-cda-4n6p</guid>
      <description>&lt;p&gt;Disclaimer: The following is just a list of useful points that I did while preparing for my exam for AWS Certified Developer. I am just sharing my experience as sharing is caring :) If you don't like some points, so what ;) &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;for book readers:

&lt;ul&gt;
&lt;li&gt;900+ pages: certified developer aws book dva-c01&lt;/li&gt;
&lt;li&gt;mock exams in Wiley test bank and exam questions after each chapter&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;if you like interactive sessions

&lt;ul&gt;
&lt;li&gt;udemy course: &lt;a href="https://www.udemy.com/course/aws-certified-developer-associate/"&gt;https://www.udemy.com/course/aws-certified-developer-associate/&lt;/a&gt; personally, I did not do that, but colleagues had great experience there&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;what always helps: Google for

&lt;ul&gt;
&lt;li&gt;"mock exams for CDA": may come up with free sites offering CDA, SAA and sysops questionnaires, because a lot of the question are interchangeable. &lt;/li&gt;
&lt;li&gt;"AWS certified developer github cheatsheet": make a summary on your own &lt;/li&gt;
&lt;li&gt;"how to pass aws certified developer": people talk about their exam experience e.g. at Pearson/VUE or remote from home&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;practice appropriate strategies with discipline during the exams

&lt;ul&gt;
&lt;li&gt;do the shortest questions first&lt;/li&gt;
&lt;li&gt;draw architecture diagram if a question involve 3 different AWS services and if you have time ;) &lt;/li&gt;
&lt;li&gt;flagging and exclusion techniques (PearsonVUE exam program did support those features, comment function available, but did not use that)&lt;/li&gt;
&lt;li&gt;take your time (130 minutes, in average 2 minutes for each question)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;learn techniques

&lt;ul&gt;
&lt;li&gt;do not try to remember hard numbers (e.g. max allowed lambda memory, because it changed a lot during the years: 128MB → 1024MB → 3008MB), not 1 of 65 exam questions were about remembering hard numbers&lt;/li&gt;
&lt;li&gt;but dig deeper regarding concept, practical architecture pictures, interaction/combination between AWS Services, e.g. encryption, use cloudFront as caching for S3, use ElastiCache as caching for RDS etc., most of the questions involve at least AWS 2 services&lt;/li&gt;
&lt;/ul&gt;


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

</description>
      <category>aws</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
