<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Code on Panji Gautama</title><link>https://panjigautama.com/categories/code/</link><description>Recent content in Code on Panji Gautama</description><generator>Hugo</generator><language>en</language><copyright>Copyright © Panji Gautama</copyright><lastBuildDate>Tue, 12 Mar 2024 15:08:08 +0000</lastBuildDate><atom:link href="https://panjigautama.com/categories/code/index.xml" rel="self" type="application/rss+xml"/><item><title>Software Estimation</title><link>https://panjigautama.com/software-estimation/</link><pubDate>Tue, 12 Mar 2024 15:07:25 +0000</pubDate><guid>https://panjigautama.com/software-estimation/</guid><description>&lt;p&gt;&lt;img src="https://panjigautama.com/images/0ec368d72828dc9509c66b7600a86ed7-1.gif" alt=""&gt;&lt;/p&gt;
&lt;p&gt;You may be surprised that we are not able to give an estimation as well as we think, and you may be more surprised that not all of the software engineers are able to estimate (properly), most just guesstimate with rough intuition. Though it&amp;rsquo;s not completely wrong, we can actually learn how to estimate properly. If you are graduated from Computer Science major like me, you will remember that software estimation technique is one of the courses by itself.&lt;/p&gt;</description></item><item><title>Redis use-cases aside from Cache</title><link>https://panjigautama.com/redis-use-cases-aside-from-cache/</link><pubDate>Fri, 29 Dec 2023 13:46:50 +0000</pubDate><guid>https://panjigautama.com/redis-use-cases-aside-from-cache/</guid><description>&lt;p&gt;&lt;img src="https://panjigautama.com/images/Pixel-Art.gif" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Redis can be more impactful aside from caching. Here are a few other use cases :&lt;br&gt;
1️⃣ As a persistent storage for use cases like shopping carts, user profiles, and social-media-related posts/newsfeeds. Easily sorted set simply by ZRANGE&lt;br&gt;
2️⃣ Tracking state with Bitmaps, easily track and get states with boolean logic with SETBIT and GETBIT&lt;br&gt;
3️⃣ Location Based with Redis geospatial, easily search and add geospatial data with GEOADD &amp;amp; GEOSEARCH. AFAIK it&amp;rsquo;s quite tricky to do this with Postgre&lt;br&gt;
4️⃣ Distributed Lock, i.e., updating inventory stock to handle flash sale traffic&lt;br&gt;
5️⃣ Analytics Funnel with Probabilistic easily store event and or merge with the HyperLogLog&lt;br&gt;
6️⃣ Simple event-driven architecture with Redis Stream or as a Pub/Sub with SUBSCRIBE/PUBLISH commands, which can be seen as a message queue even with LIST&lt;/p&gt;</description></item><item><title>Turning Elephant into Colony of Ants - XYZ</title><link>https://panjigautama.com/turning-elephant-into-colony-of-ants-xyz/</link><pubDate>Fri, 18 Nov 2022 10:49:18 +0000</pubDate><guid>https://panjigautama.com/turning-elephant-into-colony-of-ants-xyz/</guid><description>&lt;p&gt;XYZ is fictional product inspired by personal experience, that happen went into the journey of monolith to microservices.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://panjigautama.com/images/giphy.gif" alt=""&gt;&lt;/p&gt;
&lt;h2 id="1-context"&gt;#1 Context&lt;/h2&gt;
&lt;h3 id="problem-statement"&gt;Problem Statement&lt;/h3&gt;
&lt;p&gt;XYZ Codebase has tech debt where the monolith majestically hosts mobile API and Web Backend at the same time. This Big system is highly susceptible to a changing environment. They&amp;rsquo;re big and slow and unwieldy, tricky to scale horizontally (x-axis scale), costly to scale vertically (y-axis scale), and challenging to scale on the z-axis (e.g. serve multitenancy)&lt;/p&gt;</description></item><item><title>Video &amp; Audio Codec Primer</title><link>https://panjigautama.com/video-audio-codec-primer/</link><pubDate>Thu, 22 Sep 2022 07:01:37 +0000</pubDate><guid>https://panjigautama.com/video-audio-codec-primer/</guid><description>&lt;p&gt;&lt;img src="https://panjigautama.com/images/original.gif" alt=""&gt;&lt;/p&gt;
&lt;p&gt;This post is not intended to explain the video in a comprehensive manner but rather to distill important pieces of knowledge that are relevant to TipTip needs.&lt;/p&gt;
&lt;h2 id="compression"&gt;Compression&lt;/h2&gt;
&lt;p&gt;Compression is a lossy process to shrink the size of the media, video in this case, to ensure the video can be streamed appropriately according to the user device&amp;rsquo;s requirements. This process removes information; in a simple example, If two frames are basically identical, we can get rid of the data for one frame and replace it with a reference to the previous frame. Video compression has a lot of techniques; encoding is one of them.&lt;/p&gt;</description></item><item><title>Tech Debt Management</title><link>https://panjigautama.com/tech-debt-management/</link><pubDate>Tue, 08 Mar 2022 20:25:54 +0000</pubDate><guid>https://panjigautama.com/tech-debt-management/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=n9BUA96ymC0"&gt;https://www.youtube.com/watch?v=n9BUA96ymC0&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;🔗 &lt;a href="https://www.slideshare.net/panjigautama/taming-technical-debt"&gt;https://www.slideshare.net/panjigautama/taming-technical-debt&lt;/a&gt;&lt;/p&gt;</description></item><item><title>On Observability</title><link>https://panjigautama.com/on-observability/</link><pubDate>Sun, 12 Sep 2021 19:46:30 +0000</pubDate><guid>https://panjigautama.com/on-observability/</guid><description>&lt;p&gt;&lt;img src="https://panjigautama.com/images/sniper.gif" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Running an application without having a proper monitoring is akin to driving without a dashboard. You don’t really know if you still have enough gas, or if you are within the speed limit, or how far are you till your next oil change. There are many uncertainties involved in running an application. Monitoring is instrumental in getting first hand awareness on possible incident or help predict that an incident is about to happen so we can prevent it.&lt;/p&gt;</description></item><item><title>Software Fragmentation - The Golden Path</title><link>https://panjigautama.com/software-fragmentation-the-golden-path/</link><pubDate>Wed, 25 Aug 2021 09:29:07 +0000</pubDate><guid>https://panjigautama.com/software-fragmentation-the-golden-path/</guid><description>&lt;p&gt;&lt;img src="https://panjigautama.com/images/32f8ee1f68495231452451a2edfe9b7b.gif" alt=""&gt;&lt;/p&gt;
&lt;p&gt;There is a direct correlation between teams that give their engineers autonomy to own their technical decisions and the team&amp;rsquo;s ability to hire and retain A-class or Senior talent. There is a tradeoff, but an acceptable level of chaos in exchange for a stronger sense of individual/team ownership is usually the right one and leads to higher performing teams in the long run - at least this is what I&amp;rsquo;ve been seeing if a couple of companies in Indonesia.&lt;/p&gt;</description></item><item><title>Engineering North Star Metrics</title><link>https://panjigautama.com/engineering-north-star-metrics/</link><pubDate>Sat, 09 Jan 2021 12:11:10 +0000</pubDate><guid>https://panjigautama.com/engineering-north-star-metrics/</guid><description>&lt;p&gt;In the world where all of the metrics are available to be fetch and tracked, we end up on too many things being measured or worst, too little things that are being measured. It is impractical to make smart decisions based upon all available data and impossible to make any decision without data, and virtually impossible to make every metric as a priority worthy of improvement. The first challenge is deciding on what to measure, this article is intended to propose following metrics as the de jure metrics that being tracked and constantly improved going forward within tech team that I led so far.&lt;/p&gt;</description></item><item><title>API Key Best Practices</title><link>https://panjigautama.com/api-key-best-practices/</link><pubDate>Sat, 02 Jan 2021 09:49:20 +0000</pubDate><guid>https://panjigautama.com/api-key-best-practices/</guid><description>&lt;p&gt;API keys are required for apps and projects that being used across Mekari platforms, either GCP/AWS/Logging Tools or other third-party services. This document identifies the intended use of API keys, how to protect them as you would other credentials, and which restrictions are appropriate for your projects.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;em&gt;Always try to adhere Principle of least privilege&lt;/em&gt;.&lt;/em&gt;*&lt;/p&gt;
&lt;p&gt;&lt;em&gt;*The principle of least privilege states that only the minimum access necessary to perform an operation should be granted, and that access should be granted only for the minimum amount of time necessary.&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>