Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
From the creators of devRant, Pipeless lets you power real-time personalized recommendations and activity feeds using a simple APILearn More
Search - "coroutines"
Writing coroutines for io_uring. Submissions aren't working (they go through but the operation never seems to complete). Just fixed a few segfaults because of error cases not destroying coroutine handles correctly. Been on this for two days, finding more and more things I need to do that unrelated to the task at hand. Don't have issue tracking set up yet because haven't had time. Mountain of things that need to get working just for a demo is only growing. Layered maps of data structures and code flow are in my head as I'm trying to mentally debug some of this. I'm focused, completely dead to the outside world.
Then I feel a small scratch on my cheek. Three hours of mental mapping and a deep stack of thought, vanishes into thin air in a single moment.
The trade-off is worth it though.11
Kotlin support on Android:
i never liked Java, not because of the language but for the usual bad design implementations and Android is one of those.
Then Kotlin arrived, it looked very promising but it's when i looked at Coroutines that it simply blew my mind:
you just have to write your code and the Kotlin's compliler "magic" will do most of the boring/complex stuff for you and it's even great performance wise!
I even refactored inter-process calls to simple sync functions with few like of code and for a non-android developer like me it's just love at first sight!2
Started reading this book completed 15 chapter in 21 chapter. Now reading co-routines. Wonderful book, lot of internal stuffs
PS: skipped chapter 4 text vs bytes.
Which book to read next ?9
Cocktail for disaster:
- Averagely well written, testable code
- All tests pass
- One test methods still shows some vague stacktrace in a worker thread ❌ but the test passes ✅
- Run only that test method and no stacktrace.
So I've been pulling my hair for the last two days trying to figure out what was throwing in that test method. Turns out that thanks to the multithreading going on, some other, similar method threw the exception in parallel. And apparently a different test method was already running when the exception was finally caught.
When I discovered that, it was fixed in a minute. 😭1
Not quite a rant, but looking for opinion/advice.
aaaaaghh fucking Handlers man. Android is so fucking full of shit, i wonder why am i still doing it. love is pain.
Why can't there be one mother fucking solution to all lazy ass asynchronous programming? handlers, threadpools, asynctask, executers, Broadcasts, intentService, coroutines, rxjava,.... i don't what new stuff are people snorting these days.
Ok , leave everything. A handler is class- no sorry, Handler, alongside some fucking Looper clss (and maybe some more stuff i don't know) other classes is a way of handling inter thread communication. Handlers can:
-send data to ui thread
-recieve data from ui thread
-send "messages" to ui thread
-recieve "messages" from ui thread.
- can be attached to ui thread
- can be attached to any child thread
- can be accessed anonymosly via any view
- can be present in multiple places, working together
- can kill night king with a dagger
- can do porn better than johnny sins
- can run for president of the whole fucking world
- do some more shits that i have yet to discover
And where do i find this? buried deep insides some medium articles or in some guy's horrible accent video.
Is background processing really this much of a toughnut to crack?
earlier i was all about using asynctask or foreground/background services, because these are the most easy to understand abstraction of a fairly difficult topic.
But as i see more projects, i see underlying apis like handlers, threadpools , executers , being directly used.
Why cant there be a fucking single abstraction, that could be "lightly tweaked" to handle every ugly case.6
ok so i though of clearing my basics regarding concurrency and async behavior in programming. my end goal was to somehow reach rxjava and kotlin coroutines since these are the 2 common frameworks used in professional android dev . AND DAMN! since last 2 days am exploring apis and how stuff works and i have million milesss to cover.
I mean , here is a list of all the ways by which java8 (current version is java 15) achieves concurrency :BlockingQueue,ArrayBlockingQueue,DelayQueue,LinkedBlockingQueue,PriorityBlockingQueue,SynchronousQueue,BlockingDeque,LinkedBlockingDeque,ConcurrentMap,ConcurrentNavigableMap,CountDownLatch, CyclicBarrier,Exchanger,Semaphore,ExecutorService,Callable,Future,ThreadPoolExecutor,ScheduledExecutorService,ForkJoinPool, Lock,ReadWriteLock,AtomicInteger,AtomicLong,AtomicReference,AtomicStampedReference,AtomicIntegerArray,AtomicLongArray,AtomicReferenceArray
I have always just used threads and executors. maybe once or twice a handler/ looper and never a thread pool. these all stuff are so fucking much!7
Any Kotlin fans out here? What's your favourite feature?
To me: coroutines and the flow API. I can't wait for the state flow and shared flow APIs to be released. Goodbye Rx! It'll come probably in the next release, which might come in a week already, because then JetBrains (Kotlin developer) hosts their online alternative to KotlinConf.7
I have been trying to understand kotlin coroutines for a day and I UNDERSTOOD NOTHING!! 😭😭😭 makes me doubt my whole knowledge of concurrency and async programming and that's also probably too much incomplete.
Somebody please help!6
ok this may look like a lazy ass beginner crying out for spoon feeding( which it kinda is), but i want some real industrial training in non documented Android coding.
For last 2 years i have been reading tons of Android articles and documentation on "how to use this library", "how to add this feature", "what this function of this class does", but not much about how to use it efficiently, like the way its used in industry.
When I interned with a startup, all they wanted from me was to push new design changes, fix layout bugs and work as fastly as i could. I had no time to understand their core code, which had so many things that i could have learned : those mvp/mvvm design/architecture patterns, dependency injections, kotlin , coroutines, state management designs, data bindings, eventbuses and handling, and VIPER,RIBS (I mean, not everything was particularly in their code, i picked up a few keywords from here n there)... a lot of stuff that is used by many apps for their codebase.
I can read up these stuff by myself, but i always end up feeling bored coz frankly, i got no big/valuable project to implement it upon and feel excited about it. I feel that open source projects from OSS companies could be my window, but their chat spaces are also mostly empty to discuss/get some guidance.
I want some specific training about these. Can you guys provide any online/offline course/company training/books in this subject, the best practices?1
For interested developers in kotlin:
Kotlin 1.4 Online Event, October 12–15, 2020
Four days of deep diving into the technologies behind Kotlin’s latest release with Q&A sessions and 1-to-1 booths. https://kotlinlang.org/lp/event-14/
Just started a side project, helping a friend make his Android app more stable and add a couple more features. We'll release the sources sometime later.
Gotta say, his code is just terrible. And it runs on top of some code written by someone else, and that's even worse.
But I don't know how I got the motivation to spend the whole Saturday cleaning it up, fixing warnings, making abstractions, extracting features to separate classes, converting some stuff to Kotlin, even adding a couple coroutines. It felt good fixing bad code.
Maybe because I have some coding freedom I kinda miss at work.
Maybe because the project is not that big.
Maybe because I know the guy has many skills, coding is just not one of them.
Maybe because that project has some cool in it I can't even describe.
Maybe because that's entirely within my skills but challenging enough to have fun working on it.
Or maybe is just the mood of the moment, and in a week or so I'll lose all the motivation, as it happened too many times.
It's nice to finally figure out how to solve a complex puzzle in a coding project.
For me, this usually happens at a line in the grocery store or better yet at the lobby of the kindergarden while I'm picking up my kids.1
How do you go about exploring new technologies?I personally feel super confused when i have to make a decision between using and modifying my current tools to solve a problem, vs reading understanding a then using a totally new tool to solve a problem
( or in other words, i am being too lazy to learn about kotlin coroutines and rx java, when we already have threads and executors, which usually solves all my problems)1
Sometimes i feel there are so much gaps in my knowledge... I have been making apps for quite a while, using a lot of apis and system classes/functions , yet there are a lot of things that i haven't explored. what's more there are some things like context, lifecyles, views and recycler adapters, etc that i use in my every app perfectly, but yet i don't completely understand their working in the background.
I feel this backlog is killing me. but again i am already lagging behind the current modern practices. like coroutines are being widely adopted and used now , but i am yet to even understand how they work
Front log and backlog, i am just burdened with so many logs :/1
luasocket decided to provide blocking network primitives to be used in single threaded lua environments. Sure I can overcome it with socket select polling, promises and coroutines. But WTF. It is 2016! Even node.js does it better.