<?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: Arth Limchiu</title>
    <description>The latest articles on DEV Community by Arth Limchiu (@arthlimchiu).</description>
    <link>https://dev.to/arthlimchiu</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%2F7106%2F11973681.jpeg</url>
      <title>DEV Community: Arth Limchiu</title>
      <link>https://dev.to/arthlimchiu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/arthlimchiu"/>
    <language>en</language>
    <item>
      <title>5 Common Problems When Working Remotely for the First Time</title>
      <dc:creator>Arth Limchiu</dc:creator>
      <pubDate>Fri, 09 Aug 2019 10:14:16 +0000</pubDate>
      <link>https://dev.to/arthlimchiu/5-common-problems-when-working-remotely-for-the-first-time-k67</link>
      <guid>https://dev.to/arthlimchiu/5-common-problems-when-working-remotely-for-the-first-time-k67</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published &lt;a href="https://www.arthlimchiu.com/2019/08/08/5-common-problems-working-remotely.html"&gt;&lt;strong&gt;on my blog&lt;/strong&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In my &lt;a href="https://dev.to/arthlimchiu/5-benefits-of-working-remotely-from-a-first-time-remote-worker-1401"&gt;previous post&lt;/a&gt;, I talked about the 5 benefits when working remotely from a person who used to work at an office job and why it’s wonderful.&lt;/p&gt;

&lt;p&gt;This one will be all about the challenges that I’ve encountered and how I overcame them.&lt;/p&gt;

&lt;h1&gt;
  
  
  Problem #1: Distractions
&lt;/h1&gt;

&lt;p&gt;If you’re working at home, then most likely kids might go near your workspace and do a lot of noises or your parents knocking on your door. It’s quite understandable because most likely, remote working is new to them.&lt;/p&gt;

&lt;p&gt;Solution: &lt;strong&gt;Have a Space for Work&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can renovate or partition your room&lt;/li&gt;
&lt;li&gt;Invest on some good noise-cancelling headphones&lt;/li&gt;
&lt;li&gt;You can rent out&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s best to explain your family, wife, or girlfriend your situation and let them understand that what you do is work and that the only difference is that you're not in the office.&lt;/p&gt;

&lt;h1&gt;
  
  
  Problem #2: Internet Connection
&lt;/h1&gt;

&lt;p&gt;When working remotely, having a stable and fast internet connection is super important because meetings are held in video calls.&lt;/p&gt;

&lt;p&gt;If a lot of people are using your internet at home such as streaming or downloading, it might affect your online meetings. Personally, the only times that I need the internet to be stable are during calls. Other than that, the websites that I frequently go to - StackOverflow, Documentation websites, etc. since I’m a developer, rarely needs a lot of bandwidth to open.&lt;/p&gt;

&lt;p&gt;However, it’s quite different if you’re a designer as the websites that you frequently go to contains a lot of imagery.&lt;/p&gt;

&lt;p&gt;Solution: &lt;strong&gt;Upgrade Your Internet Connection&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ask your parents/brother/sister to share the monthly bill&lt;/li&gt;
&lt;li&gt;If you have a data plan, tether to your phone during calls&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can also tell them 5 minutes before your call to stop streaming and downloading but this can get tiring over time.&lt;/p&gt;

&lt;h1&gt;
  
  
  Problem #3: Procrastination Is Your Enemy
&lt;/h1&gt;

&lt;p&gt;When working remotely, nobody sees what you do. It’s good that you no longer have that pressure but it’s bad at the same time since you can surf the web all you want.&lt;/p&gt;

&lt;p&gt;You open Facebook or Youtube and suddenly time passes by and by the time you’re done it’s been several hours already and you haven’t worked on anything yet.&lt;/p&gt;

&lt;p&gt;Solution: &lt;strong&gt;Set the Deck in Your Favor&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use website blocker apps such as StayFocusd or similar&lt;/li&gt;
&lt;li&gt;Invest on a comfortable office desk and chair&lt;/li&gt;
&lt;li&gt;Everything that you need should be within a hand’s reach (notebook, pen, water, etc.)&lt;/li&gt;
&lt;li&gt;Lessen the amount of steps to start your work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you set the deck in your favor, then your setting yourself up to win. Schedule your website block apps and make sure you’re comfortable with your workspace. Your computer or laptop should be setup already on your desk and you don’t need to arrange stuff or anything so that it takes a lot less friction to start working.&lt;/p&gt;

&lt;p&gt;Procrastination is the enemy of productivity and success and a good way to overcome that is to &lt;strong&gt;start your day with a win&lt;/strong&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Problem #4: Forgetting to Balance Work and Life
&lt;/h1&gt;

&lt;p&gt;When working remotely, you tend to forget that what you do is work and that the only difference is where you’re working at. Now that it’s easier to start working, you keep on working and working the whole day and you forget that there’s also life outside of work.&lt;/p&gt;

&lt;p&gt;Solution: &lt;strong&gt;Set to Default or Reset&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Close EVERYTHING&lt;/li&gt;
&lt;li&gt;Don’t eat at your desk&lt;/li&gt;
&lt;li&gt;Breaks are important&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If I’m done with work, I literally close everything - Google Chrome, Slack, IDE, etc. I close my laptop as well. It signals my brain that “I’m done for the day”. If you leave them on, you’re tempted to look at it.&lt;/p&gt;

&lt;p&gt;It’s also good to take a break from time to time. Tend to your loved ones when you’re on break. I’m still struggling with eating at my desk but I always make the effort not to. The problem with eating at your desk is you're telling yourself that even eating is part of work.&lt;/p&gt;

&lt;h1&gt;
  
  
  Problem #5: If You’re Stuck, You’re Most Likely on Your Own
&lt;/h1&gt;

&lt;p&gt;When working remotely, you have the flexibility of your time and your colleagues as well. Your work schedules might not divulge so it might be hard to ask for help when you’re stuck. Unlike in an office, you can just go to them in person and ask for their help.&lt;/p&gt;

&lt;p&gt;Solution: &lt;strong&gt;Important Tasks First, Less Important Tasks After&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Work on hard problems when your brain is fresh&lt;/li&gt;
&lt;li&gt;Move on to the next task if you’ve done everything that you could and leave a message in Slack or whatever communication tool that you use within your company&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’re stuck, you need your brain to be fresh to process all the information that you found to solve the problem. That’s why it’s important to work on the hard problems first so that by the time you’re done, remaining tasks require less effort to do and you’ll be able to finish your work for the day.&lt;/p&gt;

&lt;h1&gt;
  
  
  Final Thoughts
&lt;/h1&gt;

&lt;p&gt;Working remotely is a wonderful experience but we need to know that it’s not all sunshine and rainbows. That’s just how life is. However, if you encounter these problems you now have an idea what to do and how to overcome them and it’s not that hard to do as well.&lt;/p&gt;

&lt;p&gt;These are all my personal experience and I hope that it will be valuable for you later on when you start working remotely.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If you think remote working is up for you or you want to give it a try, we do just exactly that at &lt;a href="https://appetiser.com.au/"&gt;Appetiser App Development&lt;/a&gt;. You can check out our openings below.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We’re looking for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Senior Mobile &amp;amp; Web Developers (Cebu/Davao/Manila)&lt;/li&gt;
&lt;li&gt;Digital Marketing Channel Specialists x 2 (Manila)

&lt;ul&gt;
&lt;li&gt;SEO&lt;/li&gt;
&lt;li&gt;CRM/E-mail&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Content Marketers  (Manila)&lt;/li&gt;
&lt;li&gt;Marketing Human Resources (Manila)&lt;/li&gt;
&lt;li&gt;Marketing Assistant (Manila)&lt;/li&gt;
&lt;li&gt;HubSpot &amp;amp; Landing Page Developer: APIs/Integrations (Manila)&lt;/li&gt;
&lt;li&gt;Web Designers: UX/UI (Manila)&lt;/li&gt;
&lt;li&gt;CRO (Manila)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're interested, you can send your CV at &lt;a href="//mailto:recruitment@appetiser.com.au"&gt;joinus@appetiser.com.au&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>career</category>
      <category>productivity</category>
      <category>hiring</category>
    </item>
    <item>
      <title>5 Benefits of Working Remotely from a First Time Remote Worker</title>
      <dc:creator>Arth Limchiu</dc:creator>
      <pubDate>Fri, 09 Aug 2019 10:14:06 +0000</pubDate>
      <link>https://dev.to/arthlimchiu/5-benefits-of-working-remotely-from-a-first-time-remote-worker-1401</link>
      <guid>https://dev.to/arthlimchiu/5-benefits-of-working-remotely-from-a-first-time-remote-worker-1401</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published &lt;a href="https://www.arthlimchiu.com/2019/08/08/5-benefits-of-working-remotely.html"&gt;&lt;strong&gt;on my blog&lt;/strong&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Before I was working with &lt;a href="https://appetiser.com.au/"&gt;Appetiser App Development&lt;/a&gt;, I used to work at an office. It’s your typical 9-6 job with a 1 hour lunch break. Back then, I have no idea what it’s like working remotely full-time.&lt;/p&gt;

&lt;p&gt;I’d like to share with you my personal experience on working remotely from a person who used to work at an office. Here's why I think it's wonderful.&lt;/p&gt;

&lt;h1&gt;
  
  
  5 Benefits
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1. Save a LOT of Time
&lt;/h2&gt;

&lt;p&gt;Commute alone is the biggest time waster that you’ve encountered everyday when working for an office job. Not only that, it feels like it takes a lot of your energy. When you arrive at the office, you somehow just let out that big *sigh.&lt;/p&gt;

&lt;p&gt;With working remotely, you can substitute the time that you spent commuting for - a fresh bath, cooking a healthy breakfast, and things that you’ve always wanted to do before you start your work if you weren’t in a rush.&lt;/p&gt;

&lt;p&gt;Personally, I take my time in the bath so that when I come out I feel refreshed and ready to start my day. What do you like to do before you start your work?&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Flexibility of Your Time
&lt;/h2&gt;

&lt;p&gt;Just take a moment and ask yourself - within a day, when am I the most productive?&lt;/p&gt;

&lt;p&gt;The answer is either you’re a morning bird or a night owl. Have you experienced those times when you’re so productive that you get lost in time? That feeling of satisfaction with the work that you put out and you’re just simply happy because you finished everything that you’ve planned to do for the day.&lt;/p&gt;

&lt;p&gt;I’m a morning bird myself so I wake up early and start my day in the morning. I find myself super productive in the morning and I take advantage of that. Same goes for night owls, if you’re productive during the night to dawn, you now have the option to take advantage of that.&lt;/p&gt;

&lt;p&gt;You can also do - work in the morning, run some errands in the afternoon, and continue working at night.&lt;/p&gt;

&lt;p&gt;With working remotely, you now have control of your own time.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Save a LOT of Money
&lt;/h2&gt;

&lt;p&gt;Transportation fees or gas costs money. With commuting out of the way, you no longer have to pay for those. Just imagine how much money you can save.&lt;/p&gt;

&lt;p&gt;For food, you can now cook your meals at home which is much cheaper than eating out. You can even do meal preps so you can also save time.&lt;/p&gt;

&lt;p&gt;Take a piece of paper and write down all those expenses for a day. Multiply it by 30 days and you can see how much money you can save when working remotely.&lt;/p&gt;

&lt;p&gt;With the money that you’ve saved, you can spend it for a goal that you’ve always wanted or you can invest it.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Increased Productivity
&lt;/h2&gt;

&lt;p&gt;Did you know that it takes an average of about 25 minutes to return to the original task after an interruption?&lt;/p&gt;

&lt;p&gt;That’s how much time is wasted when a co-worker suddenly taps you in the back while you’re focused on your work.&lt;/p&gt;

&lt;p&gt;I always find this funny and annoying at the same time - when you’re staring at your monitor and suddenly a person passes by and unconsciously you look at the person who passed by. It’s always distracting when that happens.&lt;/p&gt;

&lt;p&gt;Or, this usually happens when your work setup is facing the wall and you feel this “fake” pressure that somebody is looking at what you’re working on and you keep yourself busy because this person might think you’re wasting time.&lt;/p&gt;

&lt;p&gt;There are a lot of things going in your head that you just can’t focus on your work or it takes a lot of energy and willpower to do it.&lt;/p&gt;

&lt;p&gt;Fortunately, I no longer experience those when I started working remotely. Now that it’s a lot quieter in my head, I can give my full attention and focus on my work.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Happier Work Life
&lt;/h2&gt;

&lt;p&gt;This one is something personal to me. When I add all the previous benefits, it led to this one.&lt;/p&gt;

&lt;p&gt;I noticed that the work that I put out is much better than before. Most of the time, I’m no longer stressed out. Even when I’m done with work, I still have the energy to focus on my personal goals.&lt;/p&gt;

&lt;p&gt;I feel motivated to get up knowing that I’m in control of my time. I feel happier and and satisfied with my work because I gave my full attention and focus. With the money that I’ve saved, I can reward myself more.&lt;/p&gt;

&lt;p&gt;Overall, not only did my work life improved but my life in general.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;I encourage you to give remote working a try and see if it works for you. As with life, if there are upsides, there are some downsides as well. Head over to &lt;a href="https://dev.to/arthlimchiu/5-common-problems-when-working-remotely-for-the-first-time-k67"&gt;part two&lt;/a&gt;, where we learn how to overcome the 5 common problems when working remotely for the first time.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If you’re looking for a company that does remote working, we do just exactly that at &lt;a href="https://appetiser.com.au/"&gt;Appetiser App Development&lt;/a&gt;. You can check out our openings below.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We’re looking for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Senior Mobile &amp;amp; Web Developers (Cebu/Davao/Manila)&lt;/li&gt;
&lt;li&gt;Digital Marketing Channel Specialists x 2 (Manila)

&lt;ul&gt;
&lt;li&gt;SEO&lt;/li&gt;
&lt;li&gt;CRM/E-mail&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Content Marketers  (Manila)&lt;/li&gt;
&lt;li&gt;Marketing Human Resources (Manila)&lt;/li&gt;
&lt;li&gt;Marketing Assistant (Manila)&lt;/li&gt;
&lt;li&gt;HubSpot &amp;amp; Landing Page Developer: APIs/Integrations (Manila)&lt;/li&gt;
&lt;li&gt;Web Designers: UX/UI (Manila)&lt;/li&gt;
&lt;li&gt;CRO (Manila)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're interested, you can send your CV at &lt;a href="//mailto:recruitment@appetiser.com.au"&gt;joinus@appetiser.com.au&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>career</category>
      <category>productivity</category>
      <category>hiring</category>
    </item>
    <item>
      <title>How to Unit Test LiveData and ViewModel</title>
      <dc:creator>Arth Limchiu</dc:creator>
      <pubDate>Thu, 04 Jul 2019 03:27:35 +0000</pubDate>
      <link>https://dev.to/arthlimchiu/how-to-unit-test-livedata-and-viewmodel-5h7f</link>
      <guid>https://dev.to/arthlimchiu/how-to-unit-test-livedata-and-viewmodel-5h7f</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published &lt;a href="https://www.arthlimchiu.com/2019/07/03/how-to-unit-test-live-data-and-view-model.html"&gt;&lt;strong&gt;on my blog&lt;/strong&gt;&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/arthlimchiu/unit-test-live-data"&gt;Source code&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Import dependencies
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'
testImplementation 'androidx.arch.core:core-testing:2.0.1'
testImplementation 'org.mockito:mockito-core:2.28.2'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Check the &lt;a href="https://developer.android.com/jetpack/androidx/versions"&gt;official Android documentation&lt;/a&gt; for the latest version of these Android packages.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;For Mockito, check out their &lt;a href="https://github.com/mockito/mockito"&gt;Github repository&lt;/a&gt; for the latest version.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Create a simple User class
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;data class User(val id: Int)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Create a ViewModel
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class MainViewModel : ViewModel() {

    private val _user = MutableLiveData&amp;lt;User&amp;gt;()

    val user: LiveData&amp;lt;User&amp;gt;
        get() = _user

    fun fetchUser(id: Int) {
        val user = User(id)

        _user.value = user
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Create a helper function to mock classes with types (generics)
&lt;/h3&gt;

&lt;p&gt;Create a kotlin file - MockitoUtils.kt inside your test folder.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;inline fun &amp;lt;reified T&amp;gt; mock(): T = Mockito.mock(T::class.java)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Creating the unit test
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class MainViewModelTest {

    @get:Rule
    val rule = InstantTaskExecutorRule()

    private lateinit var viewModel: MainViewModel

    private val observer: Observer&amp;lt;User&amp;gt; = mock()

    @Before
    fun before() {
        viewModel = MainViewModel()
        viewModel.user.observeForever(observer)
    }

    @Test
    fun fetchUser_ShouldReturnUser() {
        val expectedUser = User(1)

        viewModel.fetchUser(expectedUser.id)

        val captor = ArgumentCaptor.forClass(User::class.java)
        captor.run {
            verify(observer, times(1)).onChanged(capture())
            assertEquals(expectedUser, value)
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;








&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@get:Rule
val rule = InstantTaskExecutorRule()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What this rule basically does is allow us to run LiveData synchronously. This rule is from the core-testing package that was imported earlier.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;private val observer: Observer&amp;lt;User&amp;gt; = mock()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The helper function that we made will help us be able to mock our Observer. Try mocking it the standard way and you'll see what I mean - &lt;code&gt;mock(Observer&amp;lt;User&amp;gt;::class.java)&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;val captor = ArgumentCaptor.forClass(User::class.java)
captor.run {
    verify(observer, times(1)).onChanged(capture())
    assertEquals(expectedUser, value)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;ArgumentCaptor&lt;/strong&gt; does what the class name is called - capture argument(s). We &lt;code&gt;capture()&lt;/code&gt; the argument when the &lt;code&gt;onChanged(...)&lt;/code&gt; method of our Observer is called.&lt;/p&gt;

&lt;p&gt;Adding &lt;code&gt;verify(observer, times(1)).onChanged(capture())&lt;/code&gt; allows you to capture instances where the LiveData is called multiple times when you expect it to be called only once.&lt;/p&gt;

&lt;p&gt;Assert that the &lt;strong&gt;expectedUser&lt;/strong&gt; that we've created is equal to the emitted user of our LiveData.&lt;/p&gt;

&lt;p&gt;Lastly, run the goddamn test.&lt;/p&gt;

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