Nexus 7 slow after upgrade to Lollipop?

Thursday March 26th, 2015

After upgrading to Lollipop my N7 was completely useless. It would take MINUTES just to bring up the settings app – and i am not exaggerating for dramatic effect. It was seriously that bad.

It was so slow I just shoved it under the bed and forgot about it for a few weeks. Finally decided to try and figure out what is up, I saw a few posts that suggested to try TRIMing it. Well, let me save you some time now, the N7 doesn’t support TRIM, so don’t waste your time.


While doing this, even though my device was prerooted and unlocked from many previous installs, it turns out that my root was disabled. Not only that, Root is now an actual option in the Android Settings which leads me to believe the hacky root enablers are no longer needed. I found all this out when I was getting ready to reroot/unlock the device over USB by enabling USB debugging. However the moment I enabled root in Android Settings, my N7 started going super fast just like it was new. Brilliant!

I would also suggest disabling Adaptive Brightness, as I noticed that my framerates suffer a bit while it sits there constantly dicking with its brightness while sitting on the desk in a bright room.

So, give that a try. Here are some screenshots so you can figure it out since they moved everything in Settings this release.

First open up Settings > About Tablet. Then tap on the build number field 7 times to enable the Developer Options.


After that hit the back button, now you should have a Developer Options menu at the very bottom of Settings. Open that and enable Root access for all the things.



After doing this if you are using SuperSU like you should, SuperSU will be able to update the SU binary. Then reboot. Hopefully, like me, you will enjoy your “fast” tablet after this, as well as all your crap being able to be full featured again.

No matter what this tablet is going to be slow the bigger Android gets, remember how cheap it was when we bought it? At least it is usable now and that is what matters to me.

Facebook’s URL sharing is the bane of the internet.

Friday December 26th, 2014

Sharing a link. It sounds so fucking easy, doesn’t it?

I’ve been dicking with this for over a year now. If you try and fight me on this, I will end you.


Adding the Share code to your page causes Facebook to prematurely hit your page and cache it even if nobody ever actually clicks share.

Why is this a problem?

Because when a profile is created it has no images. My og:image tag is telling to use the sites logo, but of course Facebook ignores this shit and instead pulls a random image from the web page, usually the QR Code, which is not even visible by default. This is fine, whatever, nobody has even shared that page yet anyway because its brand new.

Oh wait, but, just the act of loading the share button causes Facebook to cache it. Now when the user uploads their own images to the profile header and icon, the share dialog is still using the old cached copy instead of with the new images. This means the first time they actually try and share their nice and completed profile, Facebook is all like “here is the shitty looking one from 4 hours ago”


[Fail] Call the Graph API to tell them to scrape your shit when someone changes something on the profile. It works, they hit your shit. It almost never actually updates the cache though – at least not nearly instant enough to make it work right. I can confirm every time the user changes their images now Facebook is hitting the page with curl "" -d "scrape=1&id=URLENCODEDURL" tail -f access.log .. and the JSON it returns even says “HEY I FOUND YOUR UPDATED OG:IMAGE” – except here we are, still seeing stale cache in both the share dialog and the final feed post if we decide to be bold and click share anyway.

[Fail] Use version’d URLs. I now have pending=RANDOMNUMBERRRRR on the front of any profile which does not yet have images. It doesn’t work, Facebook seems to be ignoring the query component. There are lots of suggestions of using fbrefresh=rando too, but that is also defunct.

[Fail] Use the FB.UI (from the JS SDK) manually instead of their prefab share code. This calls a newer version of the popup than Facebook’s Share Button generator which seems to be better about showing the latest cache. This button refuses to work except on the domain your app is configured for. It will toss a giant red error to the user.

Ok, that is fine, Facebook allows you to set multiple domains in the App control panel. WRONG. IF YOU TRY, THEY TELL YOU TO FUCK OFF BECAUSE THE DOMAIN MUST MATCH THE CANVAS URL, WHICH NOBODY FUCKING USES FOR SHARING EITHER.


[Fail] Do not include the Facebook JS SDK and Share button until the profile has images. This fails because now my users think they can’t share their page ever because they can’t see the share button from step one. Users need to see all their shit from the moment they open the account or they think it is broken.

[Fail] Wait 24 hours. Screw you.

It actually gets a little worse.

When using the prefab Facebook share button, it uses an older version of the share popup, and this popup seems to have its own cache which is separate from the Graph API cache. This means it is possible to click share, see the QR code, be unable to change it, hit share, and then some totally different image… sometimes random, sometimes og:image, is actually what is displayed on the Facebook feed.

Stop Composer from caching the Packagist index (on Windows)

Friday May 30th, 2014

If you are actually trying to develop a package for Composer and you manage to do it without getting yourself into a bloodrage, then you are a much more zen person than me. One of the things that pisses me off the most is that it caches the Packagist index on my local machine, and when I am pushing tweaks to Github several times an hour, that is super annoying.

  1. Find your AppData\Local\Composer folder. For me, C:\Users\bob\AppData\Local\Composer.
  2. Delete all the crap in it.
  3. Right click the empty space you just made, choose Properties. Security tab, Hit Edit.
  4. Select your user, put a checkmark in the Deny box for Write. Hit Apply and accept its warning that you know you are denying yourself.
  5. Enjoy Composer being unable to cache.


I assume on Linux you can find wherever it hides it in your home directory and chmod 000 it.

Unadultered LibreOffice bashing – because I earned it

Thursday February 13th, 2014

Version on Windows 8

How to delete Icons from the new Android 4.4 desktop

Friday January 24th, 2014

Certainly it cannot be that difficult… right? Just like before… long press… drag to… wait… what? I spent about 15 minutes trying different things before figuring this one out.

Finally the option to hide the Google Search bar is an option in the default launcher. But wait, did you hide it? It turns out the Google Search bar is what turns into “x Remove” when you long press an icon. If you get rid of the search bar, you cannot delete any icons. To get the bar back, long press an empty spot on the desktop, and then choose settings.

Screenshot_2014-01-24-02-21-26 Screenshot_2014-01-24-12-36-20 Screenshot_2014-01-24-02-21-14

Of course, this will not be an issue for you if you are using a different launcher.

Google Chrome taking a long time to load on Windows 8.1

Monday January 20th, 2014

I came across this “fix” completely by accident. About two weeks ago my Google Chrome started taking 7+ seconds to launch, which made it as slow as both Firefox and Internet Explorer, while Opera launches in less than 1 second.

Hit up your about:flags page. At first I thought it was this option “Enable Instant Extended API”:




If you do not set that to disabled, the act of creating a new tab takes for-fucking-ever, and you have to sit there and wait for your search box and most visited sites. This fixed slow tabs, but did not fix slow launch. It ended up being this option “Enable D3D11″:




As soon as I enabled that, Chrome was launching in under 1 second again. I assume just like games, the “Default” option is using D3D9, and perchance may be buggy on modern computers. No idea.



Wednesday October 23rd, 2013

Don’t get me wrong, I love PHP. But I also don’t have delusions about it. IMHO she fits it perfectly, lol.


Constructors, Factories, and Typecasts… oh my.

Friday October 18th, 2013

Or – why I prefer a factory style object management system. For the duration of this post we shall assume I have a class called App\User, of which represents a user account in our database.

I am rather used to having unpopular views, so this post will probably be flamed or ignored. Does that at least peak your interest a little to wonder what in the world I could be talking about in here? Lowercase lol.

TL:DR – leveraging all three of these to work together for you is pretty awesome.

Continue to full post…

Reacting with ReactPHP

Wednesday August 14th, 2013

The slides from the presentation I gave at DallasPHP about ReactPHP and Ratchet.

Code that I demoed during the presentation is on Github.

Windows 8 on Macbook keeps having the wrong time

Wednesday July 31st, 2013

The Problem

Even if the timezone is properly set, if you set the time to the correct value eventually at some point the clock gets many hours off again at seemingly random times. You are going to need regedit to fix this.

The Cause

The internal hardware can be either set or not set for UTC and whichever that is, Windows is expecting the opposite.

Continue to full post…