<?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: Sumit Gupta</title>
    <description>The latest articles on DEV Community by Sumit Gupta (@sumitgpt).</description>
    <link>https://dev.to/sumitgpt</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%2F78316%2Fc46027ad-45ea-4e9a-b5d5-66d63cc67a89.jpeg</url>
      <title>DEV Community: Sumit Gupta</title>
      <link>https://dev.to/sumitgpt</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sumitgpt"/>
    <language>en</language>
    <item>
      <title>What if we do daily scrum/stand up over Slack?</title>
      <dc:creator>Sumit Gupta</dc:creator>
      <pubDate>Sun, 01 Jul 2018 18:30:00 +0000</pubDate>
      <link>https://dev.to/sumitgpt/what-if-we-do-daily-scrumstand-up-overslack-40hf</link>
      <guid>https://dev.to/sumitgpt/what-if-we-do-daily-scrumstand-up-overslack-40hf</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.plightofbyte.com%2Fassets%2Fimages%2Fstandup-over-slack%2FheroImage.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.plightofbyte.com%2Fassets%2Fimages%2Fstandup-over-slack%2FheroImage.jpg" alt="Slack"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’ve been practising agile methodologies for some time now. The most common ceremony that I’ve seen agile teams do is stand-up also known as daily scrum meeting.&lt;/p&gt;

&lt;p&gt;I’ll not go into what stand up or daily scrum is and what value does it bring. I appreciate the value it brings and would encourage teams to follow this ceremony religiously.&lt;/p&gt;

&lt;p&gt;Every team that I’ve seen having this meeting does it in a similar fashion. They stand around in a circle and everyone gives their updates. This method sounds good but when practised, has a lot of problems.&lt;/p&gt;

&lt;p&gt;I’ve listed some of the problems that I’ve seen.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Stand-up is a meeting. Everyone joins in-person or on-call regardless of convenience. Someone might prefer a meeting later but everyone else might want it at 9 am. Pushing that meeting to later time can be a challenge. Why? Read the next problem.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Stand-ups tend to become the start of a day. Every team that I’ve worked with had this problem. Most of the team members came to the office just before the meeting or mid-way. Even if they came early, they don’t start work as they know there is a meeting in another 15mins or so.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;People might forget important updates as they showed up at last minute or late and aren’t prepared.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Anyone who doesn’t show up will miss everyone’s updates. And everyone misses their updates.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Stand-ups take a lot of time. They are intended to be short but generally go beyond the time limit. I’ve seen small teams dwelling on updates and large teams having too many people with vague updates.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Not everyone is interested in everyone’s update. This is especially true for larger teams.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;People start solving problems or spark discussions in stand up meetings. Someone might know a solution to a blocker and they feel compelled to explain it. Someone might use it to discuss new ideas. An issue can cause people to replan things in the middle of the meeting.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One can argue that all these can be solved by one or the other way. But all those methods are difficult to implement and requires everyone to be on their toes.&lt;/p&gt;

&lt;p&gt;One other way to fix all these problems is to use an instant messaging application like &lt;a href="https://slack.com/" rel="noopener noreferrer"&gt;Slack&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Create a group or channel where everyone will post their updates as bullet points or checklist.&lt;/p&gt;

&lt;p&gt;Some benefits that I see.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The biggest, one less meeting to attend.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The flexibility of when to share/read updates. One might want to share update at the end of the day, easier to remember what you did. Or while taking a morning dump.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No start of day ritual. Those extra minutes of everyone add up to a lot.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;People don’t forget updates when writing down, they get time to think.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No one would miss anyone’s update.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Members who were on leave can also read older updates and get on speed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;One can skim through irrelevant updates.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No one’s time is wasted with long meetings and untimely discussion.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Members can use Slack for discussion over updates. Also, sometimes those updates and discussions are important and now you have a place to look back.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are Slack bots as well to streamline this process. You can explore them as well. Or you can post updates as messages.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.plightofbyte.com%2Fassets%2Fimages%2Fstandup-over-slack%2Fslack-thread.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.plightofbyte.com%2Fassets%2Fimages%2Fstandup-over-slack%2Fslack-thread.jpg" alt="Thread in Slack"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is how a thread in Slack looks like. People can reply and discussions can happen.&lt;/p&gt;

&lt;p&gt;Creating threads for discussions clears the clutter and make reading the updates a breeze.&lt;/p&gt;

&lt;p&gt;I haven’t tried using Slack for stand up. But I’ve fantasized whenever a discussion kicks-off during stand up meetings.&lt;/p&gt;

&lt;p&gt;Do you face similar challenges during your stand up meetings?&lt;/p&gt;

&lt;p&gt;Would love to hear what’s working for you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you enjoyed this article, please share to help others find it! Feel free to leave a comment below.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>productivity</category>
      <category>culture</category>
    </item>
    <item>
      <title>Genymotion vs Android Emulator</title>
      <dc:creator>Sumit Gupta</dc:creator>
      <pubDate>Sat, 02 Sep 2017 18:30:00 +0000</pubDate>
      <link>https://dev.to/sumitgpt/genymotion-vs-android-emulator-2i6o</link>
      <guid>https://dev.to/sumitgpt/genymotion-vs-android-emulator-2i6o</guid>
      <description>&lt;p&gt;There has always been a debate about which android emulator to choose or to go with Genymotion, I've seen most of the discussion ending in favor of Genymotion.&lt;br&gt;&lt;br&gt;
I've gathered some data around the most common use case according to me, based on this I'll be evaluating all the android emulators along with Genymotion.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TL;DR: Android emulator is faster than Genymotion when configured right.&lt;br&gt;&lt;br&gt;
Use x86 (32 bit) image with Google APIs, 3GB ram, quad-core CPU.&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Pheww, glad we're past that&lt;br&gt;&lt;br&gt;
Now, let's dive deep&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Disclaimer&lt;/strong&gt;: I've tested my use case which to me looks the general use case i.e. running tests.&lt;br&gt;
All benchmarks were done on a mid-2015 MacBook Pro.&lt;br&gt;&lt;br&gt;
Wherever I say Genymotion I mean &lt;strong&gt;Genymotion Desktop&lt;/strong&gt;. They have other products like Genymotion on Cloud &amp;amp; Genymotion on Demand which are not being considered here.&lt;br&gt;&lt;br&gt;
I'm not saying Genymotion is inadequate but is slower when running tests compared to certain Android emulators.&lt;/p&gt;

&lt;p&gt;A little background on the subject and then we'll jump to the good stuff.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Psst: I have some benchmarks down the line, stick around.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Long ago Android emulator was the only way to go. But they were too slow to use, the reason being a &lt;strong&gt;change of architecture&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
What can you expect out of an ARM emulator running on an x86 machine? Every instruction had to be converted from ARM to x86 architecture which makes it really slow.&lt;/p&gt;

&lt;p&gt;Then came along the x86 images of Android which are way faster as they get rid of the ARM to x86 platform change.&lt;br&gt;&lt;br&gt;
Now you can run x86 Android emulator on an x86 machine.  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Problem solved!!!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NO!&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Android emulators were still slow from what people wanted.&lt;br&gt;&lt;br&gt;
Then came along Genymotion, which is just an Android VM running in a virtual box. But it is quite stable &amp;amp; fast compared to plain old android emulators which run on qemu.&lt;/p&gt;

&lt;p&gt;Let's jump to how the situation is today.&lt;/p&gt;

&lt;p&gt;I'm using Genymotion in CI infrastructure and on my machine.&lt;br&gt;
The task at hand was to &lt;strong&gt;get rid of Genymotion&lt;/strong&gt; used in CI infrastructure and machine.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You ask why?&lt;br&gt;&lt;br&gt;
Licenses cost money. Duh...&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;At a quick glance it seems like a stupid move as Android emulators are slow and buggy, they seem counterproductive, but when you get into the nitty-gritty of the situation you'll actually find Android emulator to be superior.&lt;/p&gt;

&lt;p&gt;My use case is to run integration tests on them (mostly espresso), just over 1100 tests. Genymotion takes ~23 minutes to run all the tests.&lt;/p&gt;

&lt;p&gt;A few other problems being faced with Genymotion.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Limited command line tools (&lt;a href="https://docs.genymotion.com/Content/04_Tools/GMTool/GMTool.htm"&gt;GMTool&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;They needed periodic restart because of memory issues. This was a manual task, imagine doing it on a CI infrastructure with lots of machines.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Enter Android Emulator&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The first time you try to set-up one of these it gives you so many options that you'll feel like you are in Subway restaurant.&lt;br&gt;&lt;br&gt;
The biggest question of all is x86 or x86_64 and with Google APIs or without them.&lt;/p&gt;

&lt;p&gt;I did some research and benchmarking with these combinations and this is what we came up with.&lt;/p&gt;

&lt;p&gt;Drum Roll...&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The winner of the competition is &lt;strong&gt;x86 with Google APIs&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
But how? why?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Well, I'll tell you the problem with every one of them.  &lt;/p&gt;

&lt;p&gt;x86_64 is slower compared to x86&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;By how much you ask.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;28.2%&lt;/strong&gt; much !!!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Emulator with Google APIs is more stable, things tend to crash without them.&lt;/p&gt;

&lt;p&gt;This brings us to the conclusion that the best one is &lt;strong&gt;x86 with Google APIs&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Before we pit our winning emulator against Genymotion. There are few more details that are of great importance.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I've used Nexus 5 system image with Google APIs.&lt;/li&gt;
&lt;li&gt;I noticed that giving emulator less ram caused a lot of Google API crashes. So I've settled for 3GB of ram for an emulator.&lt;/li&gt;
&lt;li&gt;The emulator has a quad-core.&lt;/li&gt;
&lt;li&gt;HAXM was installed on the host machine.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Time for few benchmark&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0edaQ_jQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.plightofbyte.com/assets/images/genymotion-vs-android-emulator/EspressoBenchmark.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0edaQ_jQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.plightofbyte.com/assets/images/genymotion-vs-android-emulator/EspressoBenchmark.png" alt="Genymotion and Android Emulator Espresso Benchmark"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IdGVDfgZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.plightofbyte.com/assets/images/genymotion-vs-android-emulator/Linpack.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IdGVDfgZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.plightofbyte.com/assets/images/genymotion-vs-android-emulator/Linpack.png" alt="Linpack"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MHN89yk5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.plightofbyte.com/assets/images/genymotion-vs-android-emulator/Geekbench4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MHN89yk5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://www.plightofbyte.com/assets/images/genymotion-vs-android-emulator/Geekbench4.png" alt="Geekbench 4"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From the benchmarks, you can see that Android emulator beats Genymotion expect for in Geekbench4 which to me feels more of a virtual box beating qemu thing. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;All hail the King of the Emulators&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We are now having a faster test execution time, better command line tools.&lt;br&gt;
Also with the latest &lt;a href="https://developer.android.com/studio/releases/emulator.html"&gt;Android Emulator&lt;/a&gt;, things have gone a notch up. Faster boot time and what not.&lt;/p&gt;

&lt;p&gt;Google has been working very hard to&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Make Android Emulator great again&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you haven't been using android emulator from some time. I'd suggest you revisit and save some money.&lt;/p&gt;

&lt;p&gt;One other solution which I was trying but couldn't really get it to work was running an &lt;a href="http://www.android-x86.org"&gt;Android-x86&lt;/a&gt; image on AWS.&lt;br&gt;&lt;br&gt;
I was able to run it on a vSphere ESXi Hypervisor but not on AWS or any other cloud platform. If someone knows anything about it do comment below.&lt;/p&gt;

&lt;p&gt;PS: &lt;a href="https://aws.amazon.com/vmware/"&gt;VMWare is now available on AWS&lt;/a&gt;, &lt;a href="http://www.android-x86.org"&gt;Android-x86&lt;/a&gt; on AWS might be possible after all.&lt;/p&gt;

&lt;p&gt;What do you think about Genymotion desktop and Android emulator? Comment below.&lt;/p&gt;

&lt;p&gt;Share this article if you like it.&lt;/p&gt;

</description>
      <category>android</category>
      <category>devops</category>
      <category>testing</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
