# Mindorks - Medium

Our community publishes stories worth reading on Android Development - Medium

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## You Don't Need to Build It to Design It

DevFeed: [You Don't Need to Build It to Design It](<https://devfeed.tech/articles/you-don-t-need-to-build-it-to-design-it-22878.md>)

Original publisher: [Read original article](<https://medium.com/mindorks/you-dont-need-to-build-it-to-design-it-effbe5b72c93?source=rss----f1a763fc7443---4>)

Author: Humayun Tanwar

Published: 2026-07-06T11:05:34Z

Content type: tutorial

Language: en

Sources: [Mindorks - Medium](<https://devfeed.tech/sources/mindorks-medium.md>)

Topics: [systems](<https://devfeed.tech/topics/systems.md>), [data-architecture](<https://devfeed.tech/topics/data-architecture.md>), [Latency](<https://devfeed.tech/topics/latency.md>), [Requirements](<https://devfeed.tech/topics/requirements.md>)

Tags: [business](<https://devfeed.tech/tags/business.md>), [code](<https://devfeed.tech/tags/code.md>), [compliance](<https://devfeed.tech/tags/compliance.md>), [data-architecture](<https://devfeed.tech/tags/data-architecture.md>), [design](<https://devfeed.tech/tags/design.md>), [latency](<https://devfeed.tech/tags/latency.md>), [machine-learning](<https://devfeed.tech/tags/machine-learning.md>), [patterns](<https://devfeed.tech/tags/patterns.md>), [requirements](<https://devfeed.tech/tags/requirements.md>), [software-engineering](<https://devfeed.tech/tags/software-engineering.md>), [systems](<https://devfeed.tech/tags/systems.md>), [tech-stack](<https://devfeed.tech/tags/tech-stack.md>), [technology](<https://devfeed.tech/tags/technology.md>)

### AI overview

This article explains why solutions engineers can contribute meaningfully to system design without writing the implementation. It connects integration scoping, data ownership, real-time communication choices, and failure handling to core design concepts, then presents five questions about scale, constraints, dependencies, failure tolerance, and success criteria.

### Source excerpt

System design is one of those topics that feels like it belongs exclusively to engineers who write the code. The diagrams, the architecture reviews, the database choices , it all looks like backend territory from the outside. You're Already Doing This Solutions engineers sit at an interesting intersection. You're deep enough in the technical conversation to understand how systems connect, and close enough to the customer to understand what they actually need from those systems. That combination gives you a view that's genuinely useful in design conversations, and one that's worth developing deliberately. When you scope an integration and map which system owns which data, that's data architecture. When you recommend a webhook approach over polling because the customer needs real-time updates, that's a latency and reliability trade-off. When you ask a customer how they handle failures before a build starts, that's systems thinking. The formal vocabulary of system design is mostly a structured way of describing what you're already doing in the field. Building that vocabulary, and understanding the patterns underneath it, makes it easier to contribute in technical conversations, ask the right questions earlier, and connect your field experience to the broader design decisions being made around you. The Five Questions That Structure Any Design Good design conversations don't start with a diagram. They start with these. Scale. What volume are you designing for, not today but at the ceiling that changes the architecture? A thousand requests a day is a different system from a thousand per second. That number changes your database choice, whether you need a queue, and how retries need to behave. Constraints. What's already fixed? Existing tech stack, compliance requirements, vendor contracts. Every real system gets built inside constraints. Name them before drawing anything. Dependencies. What does this system talk to, and what talks to it? Systems that look simple in a conv

## Why Learning Scala Gave Me Déjà Vu of Kotlin: A Developer's Journey

DevFeed: [Why Learning Scala Gave Me Déjà Vu of Kotlin: A Developer's Journey](<https://devfeed.tech/articles/why-learning-scala-gave-me-deja-vu-of-kotlin-a-developer-s-journey-22877.md>)

Original publisher: [Read original article](<https://medium.com/mindorks/why-learning-scala-gave-me-d%C3%A9j%C3%A0-vu-of-kotlin-a-developers-journey-3126b0e80272?source=rss----f1a763fc7443---4>)

Author: Kavya P S

Published: 2024-10-16T06:49:14Z

Content type: opinion

Language: en

Sources: [Mindorks - Medium](<https://devfeed.tech/sources/mindorks-medium.md>)

Topics: [Scala](<https://devfeed.tech/topics/scala.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [beginners-guide](<https://devfeed.tech/tags/beginners-guide.md>), [developer](<https://devfeed.tech/tags/developer.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [journey](<https://devfeed.tech/tags/journey.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [learning](<https://devfeed.tech/tags/learning.md>), [programming](<https://devfeed.tech/tags/programming.md>), [scala](<https://devfeed.tech/tags/scala.md>)

### AI overview

A Kotlin Android developer reflects on beginning to learn Scala for backend development and finding familiar concepts in its syntax and features. The article compares the languages through examples including conciseness, type inference, functional programming, null safety, extension functions, pattern matching, and operator overloading. The author notes that the comparison is based on only a few hours of Scala study.

### Source excerpt

Imagine you're 2 years deep into creating cool stuff with Kotlin for Android and you decide to venture into an unfamiliar territory -- Backend development with Scala. You are all prepared to start from zero. But as you go on, it feels strangely familiar, like meeting an old friend. Let me take you through my journey -- exploring Scala was a bit like déjà vu, reminding me of Kotlin in unexpected ways. Come along as I share this story of two coding worlds that seemed oddly similar to me! Disclaimer: Before I begin, I am only one day deep into Scala learning -- okay 2-5 hours deep thanks to this RockTheJVM tutorial! So, this article is not a consolidated list, but a spoiler before you learn the basics of Scala as a Kotlin developer (or vice versa). Before we begin, here's a "textbook" answer for similarities between Kotlin and Scala (thanks to ChatGPT) -- feel free to skip it! Kotlin and Scala, while having their unique features, share some similarities in their syntax. Here are a few key similarities between Kotlin and Scala:1. Conciseness: Both Kotlin and Scala are designed to reduce boilerplate code, allowing developers to write more with less. They provide concise syntax for common operations, making the code cleaner and easier to read. 2. Type Inference: Both languages support type inference, allowing developers to omit explicit type declarations in many cases. The compiler can often deduce the types based on the context, reducing verbosity in code. 3. Functional Programming Features: Both languages incorporate functional programming concepts. They support higher-order functions, immutable data structures, lambda expressions, and various functional programming paradigms. 4. Null Safety: Kotlin and Scala provide features to handle null references safely. Kotlin has a robust system with nullable and non-nullable types, while Scala includes options like `Option` or `Some` to deal with null values. 5. Extension Functions/Methods: Both languages support extension functions

## Building a Scalable Job Consumer System in Go

DevFeed: [Building a Scalable Job Consumer System in Go](<https://devfeed.tech/articles/building-a-scalable-job-consumer-system-in-go-22870.md>)

Original publisher: [Read original article](<https://medium.com/mindorks/building-a-scalable-job-consumer-system-in-go-e513a7ae1d39?source=rss----f1a763fc7443---4>)

Author: ansu jain

Published: 2024-10-16T06:48:50Z

Content type: tutorial

Language: en

Sources: [Mindorks - Medium](<https://devfeed.tech/sources/mindorks-medium.md>)

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [Amazon Simple Queue Service (SQS)](<https://devfeed.tech/topics/amazon-simple-queue-service-sqs.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [Orchestration](<https://devfeed.tech/topics/orchestration.md>)

Tags: [consumer](<https://devfeed.tech/tags/consumer.md>), [go](<https://devfeed.tech/tags/go.md>), [goroutines](<https://devfeed.tech/tags/goroutines.md>), [message-queue](<https://devfeed.tech/tags/message-queue.md>), [orchestration](<https://devfeed.tech/tags/orchestration.md>), [parallel](<https://devfeed.tech/tags/parallel.md>), [sqs](<https://devfeed.tech/tags/sqs.md>), [workers](<https://devfeed.tech/tags/workers.md>)

### AI overview

This tutorial presents a scalable job consumer system in Go. It describes interfaces for queue consumption, job management, job handling, and configuration, with parallel workers processing messages from queues such as AWS SQS.

### Source excerpt

In this article, I will walk through the design of a scalable and extensible job consumer system using Go. This system allows the flexible registration of different jobs and the parallel consumption of messages from a message queue. I'll focus on how this system can be used to handle real-world scenarios like payment processing, order proccesing etc where different jobs consume messages from a queue (e.g., AWS SQS) and execute business logic based on the type of message received. Key Components of the Design IMessageConsumer - A generic interface for interacting with message queues (e.g., SQS). IJobManager - An interface that coordinates jobs and workers, responsible for consuming messages and distributing them to registered jobs. IJobHandler - An interface representing individual jobs. Each job implements specific business logic. IQueueConfig - Provides configurations for the queue (e.g., queue name, region, broker type). IJobConfig - Provides job-level configurations (e.g., number of consumers, timeouts). Core Concepts1. IMessageConsumer This interface abstracts queue operations, exposing methods for dequeuing and deleting messages. It's implemented by specific brokers (such as SQS in this case). Here's a basic structure: type IMessageConsumer interface { Dequeue(noOfMessages int64) ([]Message, error) Delete(messageIdentifier string) error } Dequeue: Fetches messages from the queue. Delete: Deletes a message after it has been successfully processed. 2. IJobManager This is where the system's core orchestration happens. The JobManager manages a pool of registered jobs and starts multiple workers to process messages concurrently. It uses a Consume method to begin processing and a RegisterJob method to register jobs into the system. type IJobManager interface { Consume(ctx context.Context) RegisterJob(job IJobHandler) } RegisterJob: Adds a job to the manager's job list. Consume: Starts the workers that process messages from the queue in parallel for each registered jo

## Coroutines and Dispatchers

DevFeed: [Coroutines and Dispatchers](<https://devfeed.tech/articles/coroutines-and-dispatchers-22871.md>)

Original publisher: [Read original article](<https://medium.com/mindorks/coroutines-and-dispatchers-b559094b828e?source=rss----f1a763fc7443---4>)

Author: Bigyan Thapa

Published: 2024-10-16T06:48:00Z

Content type: tutorial

Language: en

Sources: [Mindorks - Medium](<https://devfeed.tech/sources/mindorks-medium.md>)

Topics: [Coroutines](<https://devfeed.tech/topics/coroutines.md>), [android-development](<https://devfeed.tech/topics/android-development.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-development](<https://devfeed.tech/tags/android-development.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [best-practices](<https://devfeed.tech/tags/best-practices.md>), [code-quality](<https://devfeed.tech/tags/code-quality.md>), [coroutine](<https://devfeed.tech/tags/coroutine.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [dispatcher](<https://devfeed.tech/tags/dispatcher.md>), [extension](<https://devfeed.tech/tags/extension.md>), [extension-function](<https://devfeed.tech/tags/extension-function.md>), [io](<https://devfeed.tech/tags/io.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [main-thread](<https://devfeed.tech/tags/main-thread.md>)

### AI overview

This tutorial explains how Android ViewModel coroutines use viewModelScope and how to select Dispatchers.IO, Dispatchers.Default, or Dispatchers.Main for I/O, CPU-intensive, and UI work. It also presents ViewModel extension functions and an overloaded function to standardize coroutine launching.

### Source excerpt

In Android development, coroutines are commonly launched from ViewModel classes using viewModelScope. The typical usage looks like this: viewModelScope.launch { // ... implementation } In Android development, coroutines are commonly launched from ViewModel classes using viewModelScope. The typical usage looks like this: viewModelScope.launch { // ... implementation } By default, if a dispatcher is not specified, any coroutine launched in viewModelScope will run on the main thread. However, in most use cases, we launch these coroutines to perform background tasks, such as -- making API calls, or database operations. To ensure these tasks run in the background thread, it is essential to specify an appropriate dispatcher: I/O tasks should use Dispatchers.IO CPU-intensive tasks should use Dispatchers.Default UI updates should use Dispatchers.Main For example, to run an I/O task, we can specify the dispatcher like this: viewModelScope.launch(Dispatchers.IO) { // ...implementation }Optimizing Coroutine Launching To streamline coroutine launching, we can create extension functions on ViewModel that automatically use the specified dispatcher by default. Step 1: Create Extension Functions We can define extension functions for different dispatchers: kotlin fun ViewModel.launchIO(block: suspend CoroutineScope.() -> Unit) { viewModelScope.launch(Dispatchers.IO, block = block) } fun ViewModel.launchDefault(block: suspend CoroutineScope.() -> Unit) { viewModelScope.launch(Dispatchers.Default, block = block) } fun ViewModel.launchMain(block: suspend CoroutineScope.() -> Unit) { viewModelScope.launch(Dispatchers.Main, block = block) }Step 2: Use the Extension Functions You can now use these extension functions in your ViewModel as follows: class MyViewModel : ViewModel() { fun fetchData() { launchIO { // ... implementation } } } Benefits Consistency: These extension functions maintain consistent coroutine usage for specific tasks. Readability: The function names clearly indicate their p

## MindOrks and AfterAcademy Announce Their Closure

DevFeed: [MindOrks and AfterAcademy Announce Their Closure](<https://devfeed.tech/articles/saying-good-bye-22876.md>)

Original publisher: [Read original article](<https://medium.com/mindorks/saying-good-bye-e223948f9d66?source=rss----f1a763fc7443---4>)

Author: Janishar Ali

Published: 2022-12-11T06:07:56Z

Content type: news

Language: en

Sources: [Mindorks - Medium](<https://devfeed.tech/sources/mindorks-medium.md>)

Topics: [Development](<https://devfeed.tech/topics/development.md>), [coding](<https://devfeed.tech/topics/coding.md>), [android-development](<https://devfeed.tech/topics/android-development.md>)

Tags: [2017](<https://devfeed.tech/tags/2017.md>), [coding](<https://devfeed.tech/tags/coding.md>), [community](<https://devfeed.tech/tags/community.md>), [developers](<https://devfeed.tech/tags/developers.md>), [development](<https://devfeed.tech/tags/development.md>), [updates](<https://devfeed.tech/tags/updates.md>)

### AI overview

MindOrks announces that it is closing MindOrks and AfterAcademy. The founders say they have tried to preserve the platforms' learning resources and will keep paid services available for as long as needed.

### Source excerpt

Dear Readers and Writers, Janishar Ali and Amit Shekhar started MindOrks in 2017 to share their love of coding with the community. It evolved from an Android development learning platform to a full-fledged company serving 3 million developers worldwide. Our learning resources helped students and developers get better at work. The love we received as part of the journey is overwhelming. Life moves on and so do we. Today we announce the closing of the MindOrks and AfterAcademy. We have tried to preserve the learning resources that benefitted the community. You can find the learning resources now at these places: https://janisharali.com https://amitshekhar.me https://www.youtube.com/@janisharali https://www.youtube.com/@amitshekhar https://blog.mindorks.com https://afteracademy.com The paid services will be available for the time it is needed. Please follow our founders for more updates: Janishar Ali: https://twitter.com/janisharali Amit Shekhar: https://twitter.com/amitiitbhu Thank You Saying Good Bye! was originally published in MindOrks on Medium, where people are continuing the conversation by highlighting and responding to this story.

## Learn Jetpack Compose for Android by Examples

DevFeed: [Learn Jetpack Compose for Android by Examples](<https://devfeed.tech/articles/learn-jetpack-compose-for-android-by-examples-22874.md>)

Original publisher: [Read original article](<https://medium.com/mindorks/learn-jetpack-compose-for-android-by-examples-a1461f6388a?source=rss----f1a763fc7443---4>)

Author: Amit Shekhar

Published: 2020-11-02T05:02:09Z

Content type: tutorial

Language: en

Sources: [Mindorks - Medium](<https://devfeed.tech/sources/mindorks-medium.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Tutorial](<https://devfeed.tech/topics/tutorial.md>), [Android](<https://devfeed.tech/topics/android.md>), [Jetpack](<https://devfeed.tech/topics/jetpack.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [Material Design](<https://devfeed.tech/topics/material-design.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [animation](<https://devfeed.tech/tags/animation.md>), [compose](<https://devfeed.tech/tags/compose.md>), [constraintlayout](<https://devfeed.tech/tags/constraintlayout.md>), [jetpack](<https://devfeed.tech/tags/jetpack.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [material-design](<https://devfeed.tech/tags/material-design.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This tutorial introduces an open-source project for learning Jetpack Compose for Android through examples. It covers building native UI, styling text and text fields, using previews and layouts, handling interactions, adding common Material Design components, creating custom views, and applying animations.

### Source excerpt

Hi, We just open-sourced a project to learn Jetpack Compose for Android by Examples. Jetpack Compose is Android's modern toolkit for building native UI. Project Link: Jetpack-Compose-Android-Examples You will be learning: How to build UI using Jetpack Compose in Android? How to display a Text and apply various styles to a Text? How to display a TextField(EditText) and apply various styles on it? How to use the Preview and PreviewParameter feature offered by Android Studio? Learn how to use various layouts such as Column, ScrollableColumn, LazyColumn, Row, ScrollableRow, Box, Stack, and ConstraintLayout in Jetpack Compose? Learn the usage of Clickable in Jetpack Compose with the help of examples. How to use Buttons, Card, Images, AlertDialog in Jetpack Compose? Through the Jetpack Compose tutorial, you will learn various Material Design UI elements such as BottomAppBar, TopAppBar, BottomNavigation, Checkbox, CircularProgressIndicator, LinearProgressIndicator, RadioButton, Slider, Snackbar, and Switch. Learn how to make Custom Views in Jetpack Compose? How to add animation such as Crossfade and Shape Rotation in Jetpack Compose? Project Link: Jetpack-Compose-Android-Examples Thanks Team MindOrks Learn Jetpack Compose for Android by Examples was originally published in MindOrks on Medium, where people are continuing the conversation by highlighting and responding to this story.