Monday, June 27, 2016

stuff about things

update-hosts has been, well, updated.

Version 2 brings support for ipsets along with hosts files. The tool will aggregate ipsets from various sources around the Internet. It will parse these set in the same way that it handles hosts files, and then will add them into the ipset if it exists. If it does not exist, it will not touch anything. It "should" be a bit faster than a script which calls into the ipset command directly to add sources, and by default will save its configuration of ipset to /etc/ipset.conf

Along with the addition of ipset support, the 2.0.0 update brings better handling of errors mid script and cleans up after itself more reliably.

Later today/tomorrow, PadLock update to fix some bugs and add (a) new feature(s). This update will bump the database version, so you will need to re-create your locked application list.

Later on Power Manager, later still SoftGlow.

========================
Follow pyamsoft around the Web for updates and announcements about the newest applications!
Like what I do?

Send me an email at: pyam.soft@gmail.com
Or find me online at: https://pyamsoft.blogspot.com

Follow my FaceBook Page
Follow my Google+ Page
=========================

Saturday, June 25, 2016

Prepare for update

Padlock update soon.

This will fix a bug with the dialog not displaying if you navigate to the Settings screen and back.

This will also change how locking is handled. Right now, each time you navigate to a new screen, you may be re-locked, even if you are in the same package. The next patch will update to lock each application globally by the package. By default, this means that unlocking an app will leave it unlocked for a given amount of time. Individual activities in the package can still be locked for an additional layer of security, and these individual activities will live by different timer rules than the package itself.

This should mean that you will see PadLock less, and it will do a better job at securing only the activities you ask it to.

Also, Power Manager update. This will bring job scheduling and better support for power triggers. More triggers can be handled more quickly, and multiple triggers can be ran at the same time with more fine grained control.

A small ZapTorch bug fix, and possibly a Home Button freshen up as well in the later days, stay tuned!

========================
Follow pyamsoft around the Web for updates and announcements about the newest applications!
Like what I do?

Send me an email at: pyam.soft@gmail.com
Or find me online at: https://pyamsoft.blogspot.com

Follow my FaceBook Page
Follow my Google+ Page
=========================

Wednesday, June 22, 2016

Pasterino plzarino

Pasterino is released.

Programmed in essentially a single day, Pasterino serves as a global text paster.

Awesome.

Gonna go write Power Manager now.

========================
Follow pyamsoft around the Web for updates and announcements about the newest applications!
Like what I do?

Send me an email at: pyam.soft@gmail.com
Or find me online at: https://pyamsoft.blogspot.com

Follow my FaceBook Page
Follow my Google+ Page
=========================

Saturday, June 18, 2016

Copy Pasterino

So I don't actually know when this began, but never the less.

It seems like recently, you are not allowed to use Copy-Paste functionality into the text entry field for the Google Play purchasing dialog.

This means that if you are like me and use a password manager application to handle your credentials, and like me you do not actually know all of your passwords, then like me you have been unable to purchase items on Google Play due to this change.

I know that the change was added for security. And security is good. But so is choice.

Because I was left without the choice to paste text into this field and enter my password into the purchase dialog, I did what any developer would do in this situation.

I built a work around.

Enter Pasterino.

It's quite simple. It runs an AccessibilityService, monitors for the views that you are currently focusing on (like text entry and such) and allows you to paste the contents of the clipboard when you press a simple notification button. Awesome.


And that's it.

The basic functionality is already done, more or less, and was coded up in about 30 minutes plus some additional time spent reading the AccessibilityService documentation (which is admittedly sparse). I still need to add tests and flesh out the UI and some basic options but overall, the application is finished and should be published soon.

But hey, it's something.

As always, open source, ad-free, and up on GitHub for your viewing pleasure.

========================
Follow pyamsoft around the Web for updates and announcements about the newest applications!
Like what I do?

Send me an email at: pyam.soft@gmail.com
Or find me online at: https://pyamsoft.blogspot.com

Follow my FaceBook Page
Follow my Google+ Page
=========================

Thursday, June 16, 2016

Managing Power

So nobody asked.

But I did anyway.

Power Manager is being re(-re)-written (again) to be better at doing the things.

The next version 6.0.0 will remove Ads.

I have removed the old code which required two different services to run to handle simple screen events. It has instead been replaced with a job queue which relies on the Google Play Services GCM scheduler for devices below Lollipop, and uses the Framework JobScheduler for Lollipop and above.

Even though the GCM scheduler requires the Internet permission, rest assured that Power Manager does not actually access the network in any way. The GCM scheduler should also not actually access the Internet, and only uses that permission to check if the network is available when it is needed for Job requests.

RxJava will once again drive the train here as far as multi-threading requests go. The APK should also be much smaller as it does not rely on the entire Ad SDK (though it was never too large to begin with).

It won't look all too different from version 5, since even though its been a while since I last updated Power Manager, I liked the colors and the flow of the application.

As always, its open on GitHub. The master branch will show you the old code for Power Manager 5, and the dev branch holds the current version 6 in development. I hope to put it out before too long, but we'll see.

========================
Follow pyamsoft around the Web for updates and announcements about the newest applications!
Like what I do?

Send me an email at: pyam.soft@gmail.com
Or find me online at: https://pyamsoft.blogspot.com

Follow my FaceBook Page
Follow my Google+ Page
=========================

Wednesday, June 8, 2016

Things I should have done before

Surprise, that's right. Tests.

Unit tests. Instrumentation tests. UI tests.

I'm working on it, I promise (the last couple commits should show that).

Right now, I'm using Robolectric so that I can run Android tests on the JVM (because my presenters are badly designed). The reason for this is, one, its faster than booting up the emulator. And two, my application data repository is the device's package manager. You need the Android classes to invoke the package manager (even though I end up having to fake it for tests).

By mocking the rest of the classes that would normally be injected by dagger, I'm able to write tests to handle things like the presenters, and the interactors to make sure that any new code I add (see: removing view pager for fragment) does not introduce any regressions.

Once I get a test battery which works against and validates the existing code base, I will start adding tests for new code as I write them. This way, the application will be smoothly tested while it is being developed.

I hope to include tests in PadLock, ZapTorch, and SoftGlow when they are next updated, but we will see as time permits.

After some pain in figuring out how to shadow the PackageManager, I've been able to really get testing underway for PadLock. ZapTorch will arguably be more difficult, since its feature relies on hardware in the device itself. I will have to mock up situations of both success and failure and hope for the best.

More to come.

========================
Follow pyamsoft around the Web for updates and announcements about the newest applications!
Like what I do?

Send me an email at: pyam.soft@gmail.com
Or find me online at: https://pyamsoft.blogspot.com

Follow my FaceBook Page
Follow my Google+ Page
=========================

Monday, June 6, 2016

Android N and Padlock

PadLock is meant to restrict access to applications that the user deems sensitive. And when there is only one application running on the screen at a time, this works reasonably well.

When there are two, a hole different problem emerges.

PadLock, by design, only launches a single Lock Screen which is the almighty in this context, and handles the restriction of all sensitive applications. Perhaps this is bad design, but nevertheless, this is how things work and the design is now stable and in production.

When two applications take the screen then, it is expected that PadLock will only be able to lock one of them, usually the first one. This effectively breaks PadLock, as it allows a user to avoid the restriction without knowing the passcode. That's not good.

A working patch on the dev branch seeks to fix this issue by allowing multiple instances of the LockScreenActivity to be launched. This allows PadLock to restrict multiple applications on the screen at the same time. Beautiful.

However, not all is easy. Normally, allowing multiple LockScreenActivity instances would create duplicates in the Recent Activity stack. I have changed the way that the LockScreenActivity cleans up after itself, which should hopefully avoid this issue.

I will be pushing the patch forward far before the release of Android N. Do note then, that the oldest version of PadLock that will "work" on Android N is the to-be-release 1.4.0. If you are running on an older version of PadLock at the time you upgrade to Android N, you will enter multi-window hell.

Also note that if you do not use an ignore-time for PadLock, that by design, when switching focus between multi-window apps, PadLock will re-lock the application. This can be very frequent (and also very annoying). This is by design - since as the user you have requested there be no buffer time where a passcode is not asked. If you would wish to avoid this scenario, configure PadLock to use a non-zero ignore time value, like 5 minutes or - in the future - a user configured value.

Android N is the future. And the future is looking very cool. Hopefully PadLock, and all of the other pyamsoft applications, can be similarly chilly.

========================
Follow pyamsoft around the Web for updates and announcements about the newest applications!
Like what I do?

Send me an email at: pyam.soft@gmail.com
Or find me online at: https://pyamsoft.blogspot.com

Follow my FaceBook Page
Follow my Google+ Page
=========================