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’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.
Continue readingPost Category → Code
Redis use-cases aside from Cache
Redis can be more impactful aside from caching. Here are a few other use cases :
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
2️⃣ Tracking state with Bitmaps, easily track and get states with boolean logic with SETBIT and GETBIT
3️⃣ Location Based with Redis geospatial, easily search and add geospatial data with GEOADD & GEOSEARCH. AFAIK it’s quite tricky to do this with Postgre
4️⃣ Distributed Lock, i.e., updating inventory stock to handle flash sale traffic
5️⃣ Analytics Funnel with Probabilistic easily store event and or merge with the HyperLogLog
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
reference: https://blog.bytebytego.com/p/redis-can-do-more-than-caching
Turning Elephant into Colony of Ants – XYZ
XYZ is fictional product inspired by personal experience, that happen went into the journey of monolith to microservices.
Video & Audio Codec Primer
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.
Compression
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’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.
wait, we can do lossless right? yes – but the file high likely is still too large for TipTip use case (and might not make sense anyway).
Continue readingTech Debt Management
Defect/Bug Management
who doesn’t love bugs? they are small yet beautiful…ly ruining our life 🙂. Bug is inevitable, choosing 0 Bug as your OKR/KPI is an insane choice, it’s not impossible but it will astronomically hit your productivity & cost, your best bet is to manage it properly. So how are you organizing and managing these bugs? Assigning the right priority(by assessing its severity) is the key, inspired by a couple of references, here is how I typically categorize them.
Continue readingOn Observability
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.
This post outlines some observables that we can monitor and setup alert for along with some recommended practice.
Continue readingSoftware Fragmentation – The Golden Path
There is a direct correlation between teams that give their engineers autonomy to own their technical decisions and the team’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’ve been seeing if a couple of companies in Indonesia.
So, how to make sure these “chaotic” things are manageable and actually give the benefit to the team?
Continue readingManager Manifesto
Manifesto
- Giving critical feedback or having difficult conversations
- Assessing whether a product is ready for launch
- Designing and executing a realistic roadmap
- Setting good goals with accountability
- Building viable new products
- Managing a team during “war time” versus “peace time”
- Defining quality
- Determining who to hire
- Understanding people’s skills, strengths, and growth trajectories
Engineering Initiative, where to start?
Performance improvement we must do, but where to identify it? Sometimes this kind of things might not obvious as they are, as experience and frame of reference from each of the individual engineer within your team might vary.
This post intended to share questions and framework that I’ve been using (and pushing) to my team to give cue and where to start on finding room for engineering improvements.
Continue reading