Office Hours — Today, August 1

Thursday, July 30

Aug 1
3:55 PM
Mark M.
has entered the room
Mark M.
turned on guest access
4:00 PM
Dominic
has entered the room
Mark M.
hello, Dominic!
how can I help you today?
Dominic
Hello!
4:05 PM
Mark M.
if you have a question, I can try to answer it!
Dominic
I have recently finished the certain android course on udemy, so I know the basics and I have been wondering what to do. I have been thinking about starting writing my own app and experimenting and learn new things on the way
and search for things I need on stack and in commonsware books
or would it be better for example to "do" exploring android book and kind of refresh everything
Tad F.
has entered the room
Mark M.
I can't really answer that -- it all depends on how you feel it is best for you to learn
(BTW, hello Tad -- I will be with you shortly!)
Dominic
Hello!
Mark M.
also, whatever choice you make is not permanent
Dominic
I think I will "try" doing the book and then decide :) Thank you! By the way, I love your writing style.
Mark M.
if you go through *Exploring Android* and get bored, you can always put it down
4:10 PM
Mark M.
thanks for the kind words!
Dominic
True!
Mark M.
let me take a question from Tad, and I will come back to you shortly
Tad: hi! how can I help you today?
Dominic
Thank you very much and bye, I think I will be coming here often with more android oriented questions!
Mark M.
(Dominic: sounds good!)
Dominic
Bye Tad
Bye Mark
Mark M.
bye!
Tad F.
Hi Mark - just thought I'd touch base, I've been doing more thinking about that SAF issue we chatted about a couple days ago.
I created an enhancement request in Buganizer: https://issuetracker.google.com/162569130
I think a fairly straight forward way for them to accommodate "pagination" is on the DocumentsProvider side to provide a new flag in cursor.getExtras(), where the provider could indicate they are wanting to do pagination for the same parentDocumentId,
then the file chooser UI could provide a mechanism for the user to indicate "next"/"previous" page, which would be sent back to the provider int he queryChildDocuments() API call as a new optional parameter (indicating user wanted to do next or previous)
4:15 PM
Mark M.
since this is all in the framework, the best-case scenario is it showing up in Android 12
IOW, it's not exactly a near-term solution :-)
Tad F.
Very similar to what they provider now with cursor.getExtras().putString(DocumentsContract.EXTRA_INFO)
and EXTRA_LOADING
Yeah, I figured.
But you gotta start somewhere.
Mark M.
oh, no doubt
Tad F.
Given that there has been absolutely no movement on the other request I made to increase the permissions taken from 128 to something higher, even to document that limitation per your suggestion, I doubt this will get any traction but I had to try.
I also found a work-around to that RingtonePreference issue I brought up.
Mark M.
cool!
Tad F.
It seems I can change it from a RingtonePreference to just a Preference, then check the key inside the my fragment to determine if it is ringtone or not, and if so launch the RingtoneManager to have them make a choice, then grab that in onActivityResult
Of course, now I see that onActivityResult et al is getting deprecated also, so will need to update that bit as well I guess.
These frameworks certainly do move quickly...
Mark M.
by "so launch the RingtoneManager to have them make a choice", do you mean ACTION_RINGTONE_PICKER?
Tad F.
View paste (8 more lines)
        @Override
        public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
            if (preference.getKey().equals(getString(R.string.pref_new_sharing_notification_ringtone_key))) {
                Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
                intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION);
                intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true);
                intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, true);
                intent.putExtra(RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI, Settings.System.DEFAULT_NOTIFICATION_URI);

                String existingValue = sharedPrefs.getString(getString(R.string.pref_new_sharing_notification_ringtone_key),"");
                if (existingValue.length() == 0) {
                    // Select "Silent"
                    intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, (Uri) null);
                } else {
                    intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, Uri.parse(existingValue));
...
4:20 PM
Tad F.
Something along those lines
Mark M.
you should be able to register a click listener on the Preference, if you prefer that to overriding onPreferenceTreeClick() and doing the key-based lookup
but otherwise, if this works for you, great!
Tad F.
ok
Mark M.
I saw that Ian Lake responded to one of your SAF questions on Stack Overflow
4:25 PM
Tad F.
Yes, I just used it as an excuse to have him look at my enhancement request as long as I was able to grab his attention :)
to ask him to look at it, I should say
4:30 PM
ndrocchietto_ivano
has entered the room
Dominic
has left the room
Mark M.
hello, Ivano!
Tad: let me take a question from Ivano, and I'll return to you in a bit
Ivano: how can I help you today?
ndrocchietto_ivano
hello Mark! Please go ahead I am just in coding on mindset, this evening, no specific questions
Mark M.
OK, if you come up with a question, let me know!
ndrocchietto_ivano
cool, thanks
Mark M.
Tad: back to you!
sudokai
has entered the room
sudokai
Wow, lots of people here tonight
Mark M.
my reaction too! :-)
ndrocchietto_ivano
Hello sudokai
4:35 PM
Mark M.
Tad: did you have another question, or should I turn it over to sudokai?
Tad: I'm come back to you in a bit
sudokai: hi! how can I help you today?
sudokai
I can't think of a question :D
Mark M.
we have more people than questions right now...
well, if anyone comes up with a question, go right ahead!
sudokai
I actually wanted to ask you where I can hire good Android developers
ndrocchietto_ivano
OK
sudokai
Like, do you know anyone who's looking for a job Mark?
Haha
Mark M.
sudokai: that seems to be a popular question -- finding candidates seems to be a bit rough
sudokai
I'm finding it very difficult to hire people
Mark M.
is your project Java or Kotlin? if it Kotlin, the #hiring channel on Kotlinlang Slack is one spot to advertise
ndrocchietto_ivano
we are looking as well for an expert candidate
sudokai
A mix of Java and Kotlin
New code is written in Kotlin
That's a great idea
Mark M.
then promoting your open position there is reasonable -- I wouldn't do it for a pure-Java project
sudokai
We are looking for someone self-managed with integrity and grit
4:40 PM
Mark M.
I don't know... grit tends to leave scratches in the code base :-)
sudokai
I'm okay with that. We are all duct tape programmers over here.
:)
ndrocchietto_ivano
over where?
sudokai
My team
ndrocchietto_ivano
I mean where are you located, if I can ask?
sudokai
Spain
We are remote friendly though
ndrocchietto_ivano
cool, I am in the Netherlands
this is an interesting topic actually, because of the remote job I expect more and more company to hire for full time no free lance jobs even people in other nations
sudokai
Yeah, exactly
Before we limited our search in Spain
ndrocchietto_ivano
because of the current times, I am seeing litteraly growing my daughter
sudokai
But now, as long as we can afford the salary
ndrocchietto_ivano
working from home is fantastic
sudokai
It is convenient
ndrocchietto_ivano
I have a tip for you, I am really business person, I suggest you portugal
is quite cheap and t
4:45 PM
sudokai
How large is your company?
ndrocchietto_ivano
there are a bunch of good coders
my company is part of Visma
is called Proactive
sudokai
Any Portuguese job boards?
ndrocchietto_ivano
and offers financial services.
sudokai
We are a B2C.
ndrocchietto_ivano
we are sixty at the moment as Proactive
and more than 2k as Visma
sudokai
Millions of users, a dozen employees, Android team of 2.
ndrocchietto_ivano
I do not know any board but looks to me a great option, even because would be easier to pay a trip so nearby for important live meetings
sudokai
That's why I'm looking for someone with grit, haha.
ndrocchietto_ivano
which technologies do you use?
sudokai
Kotlin, RxJava, Realm, a bunch of AndroidX libs
ndrocchietto_ivano
we are php/kotlin for android with attention to rxjava
we have all of that
and even firebase
sudokai
Yeah same
Our backend is Java
ndrocchietto_ivano
cool
sudokai
And python and node.js
Haha
ndrocchietto_ivano
what are your thoughts about rxjava
sudokai
We even had perl for a while, luckily I got rid of that personally
Pretty awesome library, horrible names
ndrocchietto_ivano
I find really strange that you have asyncTask, then RxJava then Coroutine, then flow
is like growing horizontaly to me
sudokai
It's all noise
RxJava is all you need
4:50 PM
ndrocchietto_ivano
live data
sudokai
There's nothing you can do with coroutines that you can't with RxJava
ndrocchietto_ivano
true but you know the test can be a pain
with schedulers trampoline issues
more junior can use subjects everywhere
and mingle imperative and functional in all the interfaces
sudokai
I mean that's the problem of Android, they keep changing stuff
Well, our codebase is terrible, so
Mark M.
hey, now! changing stuff is what keeps balding authors writing books!
sudokai
Haha
ndrocchietto_ivano
i thought that
sudokai
In a way, the beauty of PHP for example is that nobody is proud of being a PHP programmer
They just get things done and voila
ndrocchietto_ivano
well laravel is not super bad imo
sudokai
I love that philosophy
ndrocchietto_ivano
i do not like this philosophy in the lt
sudokai
If your language is too beautiful, you might lose sight of what's important
ndrocchietto_ivano
in the short is perfect
sudokai
Which is to make a fantastic software for the user
Never fall in love with your technology
4:55 PM
ndrocchietto_ivano
complex topic
sudokai
I just have this startup mindset
Because we are two people working on the Android app
ndrocchietto_ivano
we were two people also
my colleague is going away
he is really precise you know what
Tad F.
Sudokai - I have a lot of experience in Realm, Java.
Just not Kotlin
sudokai
Tad you looking for a job?
Tad F.
Am quickly coming up to speed in RxJava
ndrocchietto_ivano
why did you choice Realm?
Tad F.
I'm looking to freelance
Realm is small, fast as lightning, and has some great benefits in terms of auto-updates
ndrocchietto_ivano
I start to dislike Kotlin to be honest
true
Tad F.
I know Mark had some issues with it in a project he did some time back
sudokai
No freelance sorry
Tad F.
But I've had a very positive experience with it
sudokai
I don't like Realm, but I did not make that decision
The previous developer who left did
Tad F.
Why not Sudokai?
sudokai
Because it's quirky
ndrocchietto_ivano
you know guys all that idiomatic quest for perfection in the review, is not business friendly to me
Tad F.
how so?
ndrocchietto_ivano
a db is an interface to plug
Tad F.
The only issue I have run into, is you have to be very careful to do proper thread management - i.e. realm objects have to be updated on the same thread that they were instanced.
sudokai
Tad exactly
Tad F.
But if you do things in the proper architectural way, you don't run into this
sudokai
If you commit in a looper thread and then launch a background thread and fail to refresh, you could see data before the commit
5:00 PM
ndrocchietto_ivano
and here comes rxjava eheh
Tad F.
At the suggestion of the Realm guys, early on I built an interface to all DB activity, through which everything flows
That handles all of that stuff
sudokai
That's just one example
Memory leaks with version pinning
Crashes and corruption
Tad F.
You shouldn't have to "refresh" anything with Realm.
It does that for you
sudokai
For the next project I'll use sqldelight
it's multiplatform too unlike Room
No it doesn't unless it's a looper thread
Tad F.
Wow, sounds like you have been through the ringer with it.
I haven't experienced any of that
sudokai
But I'm not gonna change my database now
Tad F.
You mean the main looper thread?
sudokai
Haha
Yep
ndrocchietto_ivano
well time is away ahah
we have a concurrent problem with the chat
sudokai
Anyway, thanks for the advice guys
ndrocchietto_ivano
wish you a nice evening guys and hope to see you again
sudokai
I'll visit the kotlinlang slack
ndrocchietto_ivano
cool place
sudokai
and look for devs in Portugal
ndrocchietto_ivano
thanks
Tad F.
If you want some contract work to help you resolve Realm issues, give me a shout.
sudokai
Sure okay
ndrocchietto_ivano
have a nice day guys
sudokai
same
Tad F.
same
Mark M.
OK, that's a wrap for today's chat -- next one is Tuesday at 7:30pm US Eastern
ndrocchietto_ivano
bye Mark
Mark M.
have a pleasant evening!
sudokai
you too!
ndrocchietto_ivano
you too
Tad F.
has left the room
ndrocchietto_ivano
has left the room
sudokai
has left the room
Mark M.
turned off guest access

Thursday, July 30

 

Office Hours

People in this transcript

  • Dominic
  • Mark Murphy
  • ndrocchietto_ivano
  • sudokai
  • Tad Frysinger