<?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: Galuh Utama</title>
    <description>The latest articles on DEV Community by Galuh Utama (@gwutama).</description>
    <link>https://dev.to/gwutama</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%2F384191%2F01322d38-243e-42ad-ac1b-71e4e0d2f964.jpeg</url>
      <title>DEV Community: Galuh Utama</title>
      <link>https://dev.to/gwutama</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gwutama"/>
    <language>en</language>
    <item>
      <title>Which wireframing tools do you use?</title>
      <dc:creator>Galuh Utama</dc:creator>
      <pubDate>Fri, 07 Aug 2020 11:44:04 +0000</pubDate>
      <link>https://dev.to/gwutama/which-wireframing-tools-do-you-use-40md</link>
      <guid>https://dev.to/gwutama/which-wireframing-tools-do-you-use-40md</guid>
      <description>&lt;p&gt;Hello guys, I'm looking for a good wireframing tool with the following criteria:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Preferably a stand-alone desktop application (non-cloud app)&lt;/li&gt;
&lt;li&gt;Preferably open-source, or free, or one-time cost with a perpetual license (no subscription)&lt;/li&gt;
&lt;li&gt;Has lots of stencils (predefined UI components)&lt;/li&gt;
&lt;li&gt;Easy to add new types of stencils (UI components) that I can reuse for different projects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Which tools would you recommend?&lt;/p&gt;

&lt;p&gt;Thanks!&lt;/p&gt;

</description>
      <category>help</category>
      <category>ux</category>
    </item>
    <item>
      <title>What's your approach to reduce loading time of a web app?</title>
      <dc:creator>Galuh Utama</dc:creator>
      <pubDate>Mon, 27 Jul 2020 09:57:35 +0000</pubDate>
      <link>https://dev.to/gwutama/what-s-your-approach-to-reduce-loading-time-of-a-web-app-4kkp</link>
      <guid>https://dev.to/gwutama/what-s-your-approach-to-reduce-loading-time-of-a-web-app-4kkp</guid>
      <description>&lt;p&gt;We all know that it depends on internet bandwidth. However, we often don't have control over it. What I'm asking is more about things that we can control, such as reducing image size or using CDNs.&lt;/p&gt;

&lt;p&gt;What are your steps and techniques to reduce loading time? Which steps do you take first and why?&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>90/10 rule of code optimization</title>
      <dc:creator>Galuh Utama</dc:creator>
      <pubDate>Mon, 20 Jul 2020 08:56:20 +0000</pubDate>
      <link>https://dev.to/gwutama/90-10-rule-of-code-optimization-5c32</link>
      <guid>https://dev.to/gwutama/90-10-rule-of-code-optimization-5c32</guid>
      <description>&lt;p&gt;So I read a &lt;a href="https://en.wikipedia.org/wiki/Program_optimization#Bottlenecks"&gt;Wikipedia page&lt;/a&gt; about program optimization.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In computer science, resource consumption often follows a form of power law distribution, and the Pareto principle can be applied to resource optimization by observing that 80% of the resources are typically used by 20% of the operations. In software engineering, it is often a better approximation that 90% of the execution time of a computer program is spent executing 10% of the code (known as the 90/10 law in this context). &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  What exactly does this mean?
&lt;/h1&gt;

&lt;p&gt;Ignore the figures as they come with different names and ratios such as 90/10, 80/20, and Pareto principle. These are all essentially the same and for me more of philosophical rules.&lt;/p&gt;

&lt;p&gt;What these general rules say is that 10 (or 20) percent of what we’re doing accounts for 90 (or 80) percent of everything. Throughout my life experience, these are generally OK rules. The figures are just to illustrate how often we overlook or underestimate the impact of seemingly small yet important aspects of life. &lt;/p&gt;

&lt;h1&gt;
  
  
  How can 90% of the execution time be spent only executing 10% of the code?
&lt;/h1&gt;

&lt;p&gt;When we apply the rule to software optimization context, it just means that &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Most of the program execution time is done in the small portion of the code&lt;/li&gt;
&lt;li&gt;Most of the performance issues are usually in the small portion of the code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(See how I omit the figures there?)&lt;/p&gt;

&lt;p&gt;I'm using Firefox right now. The most work it's doing right now is probably rendering texts and images to display my open tabs to render websites. I bet the rendering code is complex; but to put things in perspective, it might be only a small portion of the whole Firefox codebase.&lt;/p&gt;

&lt;p&gt;The general take of these rules is that, when you're optimizing your code, identify the top 10 bottlenecks of the program; e.g. by profiling it. From my experience, solving the first 1-2 bottlenecks will have a huge impact on the overall performance. Many software engineers often overlook this , instead they try to optimize small things in the code that bring insignificant performance gains.&lt;/p&gt;

&lt;p&gt;To quote another &lt;a href="https://en.wikipedia.org/wiki/Pareto_principle"&gt;Wikipedia page&lt;/a&gt; about Pareto principle&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In computer science the Pareto principle can be applied to optimization efforts. For example, Microsoft noted that by fixing the top 20% of the most-reported bugs, 80% of the related errors and crashes in a given system would be eliminated. Lowell Arthur expressed that "20 percent of the code has 80 percent of the errors. Find them, fix them!" It was also discovered that in general the 80% of a certain piece of software can be written in 20% of the total allocated time. Conversely, the hardest 20% of the code takes 80% of the time. This factor is usually a part of COCOMO estimating for software coding. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  What about the other 90% of the code then? How can they be executed in just 10% of the time?
&lt;/h1&gt;

&lt;p&gt;The biggest portion of the code does not have to be necessarily executed in a small amount of time. It might only be executed rarely or occasionally as well.&lt;/p&gt;

&lt;p&gt;Think about my Firefox. The rendering code is probably the most important thing when I'm running it. However, I only occasionally use other features, such as bookmarks, history, synchronization, etc. That doesn't necessarily mean that the code for bookmarking is executed quickly in comparison to the rendering. It just means that it is executed in a small amount of time (relative to my whole usage time of Firefox) because I only use these features occasionally.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>management</category>
    </item>
    <item>
      <title>Can you guys please recommend books that made you cry?</title>
      <dc:creator>Galuh Utama</dc:creator>
      <pubDate>Tue, 07 Jul 2020 11:23:36 +0000</pubDate>
      <link>https://dev.to/gwutama/can-you-guys-please-recommend-books-that-made-you-cry-59i6</link>
      <guid>https://dev.to/gwutama/can-you-guys-please-recommend-books-that-made-you-cry-59i6</guid>
      <description>&lt;p&gt;Mine would be: &lt;br&gt;
Compilers: Principles, Techniques, and Tools by Aho, Alfred V., Lam, Monica S., Sethi, Ravi, Ullman, Jeffrey&lt;/p&gt;

&lt;p&gt;I dropped the class while in uni because I couldn‘t wrap my head around it.&lt;/p&gt;

</description>
      <category>jokes</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>Which modules do you think are missing from node.js?</title>
      <dc:creator>Galuh Utama</dc:creator>
      <pubDate>Wed, 01 Jul 2020 21:49:11 +0000</pubDate>
      <link>https://dev.to/gwutama/which-modules-do-you-think-are-missing-from-node-js-pjk</link>
      <guid>https://dev.to/gwutama/which-modules-do-you-think-are-missing-from-node-js-pjk</guid>
      <description>&lt;p&gt;I’ve been coding in javascript/node.js on and off for a couple of years now. I use it mostly for  writing backend for small websites. So far I can find all modules I need, be it from the built-in library or by installing them separately using npm.&lt;/p&gt;

&lt;p&gt;Which modules do you think are missing from node.js?&lt;/p&gt;

&lt;p&gt;I can think of wild unusual ones such as image processing, sound processing, serial communications. However I'm sure that these modules exist already if I try to find them.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>webdev</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Which libraries do you think are missing from python?</title>
      <dc:creator>Galuh Utama</dc:creator>
      <pubDate>Tue, 30 Jun 2020 19:37:26 +0000</pubDate>
      <link>https://dev.to/gwutama/which-libraries-do-you-think-are-missing-from-python-7i8</link>
      <guid>https://dev.to/gwutama/which-libraries-do-you-think-are-missing-from-python-7i8</guid>
      <description>&lt;p&gt;I’ve been coding in python professionally for a couple of years now. I use it mostly for prototyping, small command line programs and occasionally small websites. So far I can find any libraries I need, be it from the standard library or by installing them using pip.&lt;/p&gt;

&lt;p&gt;Which libraries do you think are missing from python?&lt;/p&gt;

</description>
      <category>python</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Where do you host your code? Cloud vs on-premise git services</title>
      <dc:creator>Galuh Utama</dc:creator>
      <pubDate>Sun, 28 Jun 2020 21:00:10 +0000</pubDate>
      <link>https://dev.to/gwutama/where-do-you-host-your-code-cloud-vs-on-premise-git-services-48g6</link>
      <guid>https://dev.to/gwutama/where-do-you-host-your-code-cloud-vs-on-premise-git-services-48g6</guid>
      <description>&lt;p&gt;We all know GitHub, GitLab, BitBucket, Azure DevOps, and the good old SourceForge. These are some of cloud Git hosting service providers that offer an array of features for private coders and teams, even on their free tiers.&lt;/p&gt;

&lt;p&gt;The less obvious choice nowadays is to host your repositories on-premise, which usually involves setting up a server, either physical or renting one on the cloud. Of course, you can also host the repositories on your machine.&lt;/p&gt;

&lt;h1&gt;
  
  
  Considerations
&lt;/h1&gt;

&lt;p&gt;Now there are several arguments for hosting your code on the cloud and on-premise. I would like to list some of the considerations for private and company projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Costs
&lt;/h2&gt;

&lt;p&gt;For a lone coder, hosting your code on the cloud for free is probably the most obvious choice. You can start within minutes. I have seen start-ups and established companies with small to medium-sized development teams host their repositories on the cloud, due to cost considerations.&lt;/p&gt;

&lt;p&gt;Cloud Git repositories start mostly free but there are some storage and access limitations (I remember when GitHub private repositories were a paid feature). These limitations should not be a problem for private coders and small teams. However, for larger teams, monthly price per account can incur higher expenses.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security
&lt;/h2&gt;

&lt;p&gt;I have not read any hacking incidents on cloud-based repository services, maybe I missed some of the news though. For sure, it is their core business to protect vital data of their customers. Nevertheless, to what extent do you trust your service providers? How transparent are they regarding this issue?&lt;/p&gt;

&lt;p&gt;In some EU countries, hacking incidents on online services, by law, must be reported to authorities and disclosed to their customers. This sets the lowest standard of transparency regarding this matter.&lt;/p&gt;

&lt;p&gt;On-premise repositories can be secured as simple or as complicated as possible. Not exposing repositories to the public internet would be the easiest one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reliability
&lt;/h2&gt;

&lt;p&gt;I have experienced some downtime with GitHub services. The reliability of on-premise repositories depends on how well you manage it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Privacy
&lt;/h2&gt;

&lt;p&gt;Hosting your code (or generally, any data) on a foreign server or data center may not adhere to local regulations such as GDPR. I have seen IT departments (in EU-based companies) strongly reject the ideas of storing data in a non GDPR compliant data center.&lt;/p&gt;

&lt;h2&gt;
  
  
  Maintenance
&lt;/h2&gt;

&lt;p&gt;Hosting a Git service on-premise causes maintenance costs, be it for setting up basic security, regular updates, regular backups and restore, etc. If hosting on company infrastructure, there are also fix costs for electricity, hardware, personal, etc.&lt;/p&gt;

&lt;p&gt;There is a negligible amount of maintenance when hosting a git repository on the cloud, for example, maintaining access to team repositories.&lt;/p&gt;

&lt;h2&gt;
  
  
  Integration with other services
&lt;/h2&gt;

&lt;p&gt;The most cloud-based repository hosting services offer integration with third-party services, such as Slack, Jira, some CI/CD services, and so on. These features are also often offered as parts of the service as well.&lt;/p&gt;

&lt;p&gt;Integrating other services with on-premise Git repository service can be straightforward or complicated. I have seen companies integrating their LDAP and ActiveDirectory authentication with their Git repositories.&lt;/p&gt;

&lt;h2&gt;
  
  
  Community collaboration
&lt;/h2&gt;

&lt;p&gt;It's probably best to host open-source projects on a public repository services such as GitHub. That way you can get more traction and publicity.&lt;/p&gt;

&lt;h1&gt;
  
  
  How I do it
&lt;/h1&gt;

&lt;p&gt;I have some really old public repositories on GitHub that I haven't used for years. I am planning to use it more in the future for my open source projects.&lt;/p&gt;

&lt;p&gt;I host other important private projects and personal business prototypes on my home server. Although setting up a plain Git server is simple enough, I use Gogs as a frontend, which is pretty much similar to GitHub UI. Although the repositories are not accessible from the public internet, I can access my home server anytime through a VPN.&lt;/p&gt;

&lt;p&gt;The company I am working for hosts some of the repositories on a popular cloud-based Git service, which - last time we checked - is GDPR compliant. Some of the repositories are still hosted on-premise due to several reasons.&lt;/p&gt;

&lt;h1&gt;
  
  
  How do you do it?
&lt;/h1&gt;

&lt;p&gt;Where are your Git repositories? What are your considerations for private and business use-cases?&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>devops</category>
      <category>git</category>
      <category>github</category>
    </item>
  </channel>
</rss>
