Profile cover photo
Profile photo
George G.
Make today matter
Make today matter


Post has shared content
This sucks :/

Google should make testing of LVL/production environment much easier that it seems to be right now.
Here's how I literally shoot myself in the foot after turning my app, 5217, from a purchase in the Play Store to a free trial + in-app purchase. Seriously take the time and read below, it's going to be interesting (and slightly sad)

So here we fucking go (I swear, it's the only curse I'll write in the whole post). Today was supposed to be a very happy day for me. I've been testing 5217 this whole past week, ran it through a zillion different tests, to make sure the transition from a single purchase through the Play Store into a free app with a 10 work cycle trial (and then prompting to upgrade) could go on smoothly. Lots of people tested it and everything was fine. The apk I was testing in was always in draft mode on the Play Store so by all means it was pushed (otherwise the in-app purchase wouldn't work because of mismatched versionCode).

News flash. This went south as soon as I hit "GO LIVE" on my developers console. And the first minutes after I try the production apk on my Nexus 5 were frightnening.

First let me tell you exactly how I crafted the whole payment/trial flow without any special server backend on my end.
The first thing to check was to make sure old paying users would be automagically upgraded with unlimited cycles. That's easy, rely on a custom LVL implementation and first check if the user has purchased the app. If yes, then amazing, they are free to go. If not then I sign-in to Play Games and make sure the user hasn't been awarded the 10 cycles achievement. Relying on Play Games it's bulletproof. The achievement is linked to the Google account, and it's there regardless if you uninstall the app/clear the data/move phones etc. This allowed me to not having to build my own backend service to keep track of the trials and it worked beautifully during testing.
So moving on, if the user didn't have that achievement then good, let them keep using 5217. If the achievement has been awarded, then goodbye, you have to pay to keep using 5217. Perfect. I obviously had contigencies if the user didn't have Play Games installed, or if the user was offline. And those checks worked great too.

This was the flow. And I was counting on everything to work fine as soon as the whole thing was pushed to production.

Here's where I'll be blaming myself and +Google. As soon as the app goes to production and turns into "FREE" mode, LVL will always reply as the user being allowed. So yeah the whole system I built my flow on top of just didn't work as I expected and tested for almost 2 weeks... yes, big caca. Now the app is "FREE" and there's absolutely no way I can keep track of old purchases so I had two choices (mind me this all happened in the last 50 minutes):

1 - All users have to upgrade to the in-app-purchase system which will royally piss off old users who bought it before. I could prompt something like "if you're an old user who purchased it before, contact me and I'll send you a promo code" but I didn't think that was legit since I guess about half of the users would down rate, and never bother to contact me, and second I would be cheated on with users who couldn't provide a reciept and claimed they bought it;
2 - Man up, assume the consequences and make the app 100% free with the option to donate in-app for the $ I was asking before to unlock unlimited cycles.

I decided to go with (2).
So yeah, not only I lost a potential financial gain with this system set up, but now I have one less app that will generate a steady stream of purchases since the in-app purchase is optional... I almost teared up in frustration but well, this is life, gotta man up and put users ALWAYS first. Sorry for those who purchased it before and now the app is free, I'm so sorry. Trust me you're not more frustrated than I am.

Now I will blame +Google. I build apps for almost 6 years. Since day 1 their payment API/infrastructure have barely changed. Their LVL protection is the worse pile of dog crap I've ever seen. It's unreliable, easily crackable, their servers "blow up" more often than not and the sample code they provide is the worse dated CRAP I've seen on Android. That's one part of it and it's embarassing +Google never gave a single crap about making it reliable. I mean it's money we're talking about, they make money with developers...
And more, their In-app purchase API sample is also the most crap I've seen. Crashes, and what not and we developers have either to build a wrapper around the raw API or use third-party libs who done all the hard work for us and fixing bugs Google should've fixed.
And more, there's absolutely no support for transitioning a paid app into free as far as I could find and there's no way to test how things will work as if the app was in production mode. Documentation is bad etc. Also their multi-account support payments is the worse too and I've had my share of angry e-mails from customers and there's really nothing I (we) can do.

Morale of this story: with nearly 6 years of experience on apps, Play Store, Google's apis and what not, I just lost an app's business model due to trusting +Google payment infrastructure, trusting I could "emulate" the scenario that would happen when the app went from paid to free, and trusting there would be proper APIs to detect if users paid for an app or not. Working on payments feels like trying to walk on water, news flash, it goes to crap more often than not.

Sorry for the long rant. Raising awareness for these situations is never enough.

5217's new update is up, and as you've read it's now free. Go on download it, and enjoy the amazing app that it is:

Please leave it a rating if you like it and feel like it's helpful to you.

(I haven't proof read this post, I just literally wrote it with a hot head, I'll re-read it later and fix any inconsistency if needed).

8 Photos - View album
Add a comment...

Krexus-CAF won't get any Nougat builds.

Unfortunately, I have no time and no device to do it, and last time it was very difficult doing it blindly.

Please don't ask for it, unless you are willing to send me a caf device.

Post has shared content
It seems that there is a lot of misinformation going around right now.

The discussion is not about if OMS is our code or Sony’s, or if we used CMTE code or not (we retained authorship in both cases).

The main issue is that they claim that they developed their new system all by themselves.

See, Substratum theme apks and in particular, the assets folder structure and the implementation of variants are made 100% unique for Substratum. From type variants to manifest metadata, all of them were made specifically for Substratum, they are not standards.

All this structure, design, way of compiling and so forth is unique to Substratum.

As it stands, Slim replicated what Substratum does and are claiming that they developed the whole entire interface (frontend and backend) to our OMS base (which is very different than stock Sony OMS), and this means that it is a derivative of Substratum and even if it is 100% rewritten it was still in the intent to get around the copyright on Substratum and/or claim that they developed the whole thing.

Slim theme engine literally just replicates what Substratum does and is not unique at all and that is the issue in all of this, they committed fraud by claiming it is theirs.

This isn’t as simple or unimportant as many posts make it sound. Allowing such direct replication of our GPL licensed code to be named “original” means that it can be re-licenced as whatever they want it to be and do whatever they want to do with it, even commercializing (or close sourcing) it.

All we have been asking of Slim is to take down the builds, remove their replica system from their github and gerrit and if they want to do a alternative, fork Substratum sources and do it on top of them. Everyone is free to develop a proper fork that can be compatible with our established theme apk template.

What they have done in their endeavors in chronological order; understanding Substratum’s source code and how things should be done, rewriting it under the Apache2 license, claiming complete credit because they “rewrote” the application, and distributing a system that is leveraging on our current system - possibly convoluting it for the users and causing more issues. To put it in perspective, if you installed macOS on a Hackintosh; then when users complain, their impression is left with macOS and how it is a buggy system (because it doesn’t work completely on their hacked up machine).

We are not interested in pursuing a civil action lawsuit because it has never been our intention to hurt the community but if it becomes obvious to us that is the only way to protect our works then we will gladly go that route.

All we are asking is to do open source the right way and maintain the authorship of all the countless developers that have spent many hours/days/months developing Substratum and not try to pass it off as original development.

Giving credit to the Substratum team is not enough. We want Slim to maintain full commit history and correct authorship of each subsystem; substratum (or “frontend app”), interfacer (or “backend app”) and AOSP modifications (across all repos).

Retaining authorship is not a matter of claiming “first”. It is the proper, legal way to protect and serve the intellectual rights of the Substratum contributors on their code, so they can have a say in every action towards their code, including re-licencing it. Please read the GPL licence.
Add a comment...

Post has shared content
When we are talking about opensource and FREE projects:

Don't shit on hard work done, regardless of if you like it or not.

Either code it better and show it to the original developers, try to help them, show them what they do wrong, or stay silent.

Just don't shit on free, hard, work.
Something that has really been bothering me lately and seems to be coming up more and more every day is people disparaging others' work while promoting their own or someone else's that they use.

For example, I see all the time on XDA people saying "this ROM is the best and I've tried them all". Like that's awesome that you really like the ROM you are on but you just shit on every other ROM out there. It takes a lot of effort to make something like that and you just said it wasn't worth it compared to someone else. It happens all the time with kernels and with things like Substratum and CMTE.

Remember, it's possible to say "I really like the work that is being done here, keep it up!" rather than "Substratum is SOOOO much better than CMTE" or vice versa. We're a community, we strive to make things better and come together, not tear others down. Just keep that in mind, it's comments like those that cause developers to pack up and leave.
Add a comment...

Post has shared content
+George G., everybody!

What you're seeing here is a way to disable all themes at start up (instead of flashing a recovery zip)!

Hold Volume Up and boot up - instead of volume down for safe mode, we have a mode that would disable all overlays on the device!
Add a comment...

Post has attachment
Krexus Rootless builds

Krexus just released its first Substratum/OMS rootless builds, which also drop the "beta" tag.

I'm extra excited when I can combine my development projects, so I hope you like what Krexus has to offer, bundled with our almost complete under-the-hood rewrite of our Substratum theme system.

A big Thank you to all the contributors and maintainers that are supporting both projects, this wouldn't be possible without them.

Also, enjoy the Spring, Northern Hemisphere!

Add a comment...

Krexus for Nexus 6 just got an awesome captain!

I'm very happy to announce that +Nathan Chancellor is picking up the Krexus Shamu maintainer position :D

Go by the community to grab a link!

Always awesome to work with fellow devs and very exciting to get more hands on board!

Add a comment...

+stratus stratus

If you tried to join the Krexus community, please try again. I was allowing members to join and I missed the "allow" click on your name (I think it was you).

If it wasn't you and you have no idea what I'm talking about, sorry xD

Sorry for that. If you can't ask again, contact me directly so I can see how to solve it.
Add a comment...

Post has attachment
Krexus 7.1.1 is finally OUT!

Krexus is a Nexus ROM re-defining how stock Android should be.

Krexus is also supporting the great Nexus 5!

Join the community to find out more and download a build!

Add a comment...

Post has attachment

Not! xD

No, this isn't Pixel. This is our beloved Nexus 5, running Krexus 7.1.1!

Prepare yourselves!

An early 2017 gift is coming, later this evening! (EEST time)

#Krexus #Nougat #ItsHappening

8 Photos - View album
Add a comment...
Wait while more posts are being loaded