06
Apr 17

What I do to keep the Google Pixel’s Android OS up to date

As an ever vigilant pursuer of the most modern yet stable – oh the paradox – software for my daily carry mobile device, I sprung for the Google Pixel around seven months ago.  Having received it five-ish months ago – like most everyone else I waited forever from order / wait to in-hand – I immediately rooted it. Thereby effectively paving the way for continuing my hobby of riding the edge of brick-dom by manually flashing firmware updates. OTA updates don’t work for us hackers.

As any Google branded device owner will attest, the monthly Android OS updates are a tremendous perk over the other guys.  So, with my rooted Pixel, these very updates have become a monthly trial.  Albeit considering my previous LG and Samsung devices, this trial continues to be more or less safe – no more bootloader unlock dev community goodluckery.  Indeed, the practice is relatively routine now that I’ve performed it four such times, and put together a set of instructions that outlines the generalities as well as the odd foibles involved.

Do note that I decided to keep stock recovery awhile back; I forget the posts that convinced me of this, though many safely use TWRP as their primary recovery.  With that said, the rest of this has worked very well for me, whom simply needs root, and doesn’t want to reset from factory every update.  Perhaps this step-by-step – to update to the latest android, root, and keep stock recovery – will help others.  Please have a working adb install and your bootloader unlocked before hand.

  1. Download latest image for your pixel variant — sailfish for 5″, marlin for 5.5″(developers.google.com)
  2. Unzip the image, and edit flash-all(.bat or .sh – depending on your environment) and remove -w flag to prevent the wiping of all your data.
  3. Enable USB debugging (in developer options)
  4. From CLI, execute: adb reboot bootloader, then when you see the exposed android: flash-all.(bat/sh)
  5. WAIT for it to do its thing!  The process doesn’t give much feedback between steps.  Do not ctrl+c. This may take five to 10 minutes where it looks like nothing is happening. The phone will reboot several times, you’ll get a bunch of ‘OKAY’ output in your cmd terminal.  Afterwards you’ll be upgraded (w/o root); go check ‘About Phone’ after login (and also to let the upgrade finish after boot) to confirm android version change.
  6. Download TWRP (for pixel / android oreo)
  7. Download SuperSU (v2.82 – SR5)
  8. Copy the supersu zip file to your device
  9. adb reboot bootloader then fastboot boot <twrp.img>
  10. Install / flash the supersu zip, then reboot
  11. And you are rooted running Android O.

Begin optional stuff, for the restless.

  1. Install SuperSU Hide by fastbooting back into the previous twrp image and flashing the suhide zip from (here)
  2. FYI, you can get to the bootloader through these manual commands (as opposed to adb reboot bootloader) — with phone off, turn phone back on holding volume down + power buttons
  3. Flash other stuff custom kernel, busybox, magisk, etc and whatever other root things you may desire

Tethering / Hot Spot capability is all but required for most folks these days.  With root, these are the basic steps to disable the bullshit carrier impositions on my “unlimited data” plan.

$ adb shell
$ su
# mount -o rw,remount /system
# echo "net.tethering.noprovisioning=true" >> /system/build.prop
# settings put global tether_dun_required 0

then, reboot and profit (by keeping your ~$150/year for the privilege of using your data plan how you choose.)

Disclaimer: I am NOT responsible if your brick your phone.  Seriously, this isn’t for the meek, it voids your warranty and scares your children.

Updated for November ’17 release of Android (Oreo)


18
Jan 12

Stop SOPA protests will have a day of productivity side-effect

With numerous time-sink sites going down (e.g. reddit, slickdeals, xda, fark, xkcd, wordpress, boingboing) after internet peoples contact their congress person(s) will have little choice but to get to work. And or post on their own blogs. Ahem. Venturebeat has handily captured screenshots of many of the stop-sopa participants homepages.

Also, who doesn’t love theoatmeal:

…As someone who creates content for the web, earns a living from it, and has had his content pirated, I do feel that we need better legislation against online piracy.
I do not, however, think that SOPA or PIPA are the legislation we need.

Want to help in the fight against SOPA / PIPA? First, go learn about the bills. After that go contact your elected officials. Wikipedia has a handy-dandy page set up which allows you to locate your state representative.

Hugs and jet skis,
-The Oatmeal

Continue reading →


06
Feb 11

Coincidence or Acute Audience Targeting in Ads

Bargin and Luxury in an Ad pair

Targeting the Rich and Thrifty

Why did these two ads appear side by side as and when they did? Could they possibly have known I recently visited both slickdeals (thrift) and sites containing Mercedes (wealth) content?

Straight out the gate, this was likely coincidence. Disclosure: I work deep in the underbelly of internet advertising, and specifically on the audience segmentation and targeting technology that powers modern day website ad serving. The sheer amount of information exchange and processing required to match this up in-real-time in a cohesive and sale-able way is not (yet) happening.

Google is certainly close. And the more I think about it, the more I think this wasn’t coincidence at all. All the disparate information necessary to make the map is in their arsenal. They could have made this match.

A few factoids feeding the not-coincidence conclusion:

  • I primarily use Chrome
  • I am signed in to a Google account
  • I use Google search often
  • most every blog and site has Google Analytics
  • Ads were served by Google (adsense)

What do you think? Have we entered the era where even remnant banner ads speak specifically to our interests and tenancies?


07
Oct 10

Unintentional Art via frozen Windows

Those clever engineers at Microsoft… what better way to deal with the frustration of having a locked up application than through art? I remember creating angry-art pieces back when frozen Windows applications, such as IE6 were common place. Good times.

Thanks to mr doob for re-creating the experience in a controlled environment.


09
Jun 10

PHP released 15 years ago today

PHP version 1, by Rasmus Lerdorf, was released into the world on June 8, 1995. It’s original name of Personal Home Page was renamed, with a heavy nod to recursion, to “PHP: Hypertext Preprocessor” in 1998 with the launch of version 3.


I owe a great deal of my professional success to this language, it is the one that truly sold me on programming.

<?php
/**
* June 9, 2010
*/

echo<<<HAPPY15THBIRTHDAYPHP
* May your future be full of fantastic features and ever greater efficiencies.
* You've powered the dynamic web from yahoo to facebook.
* May you continue to enthrall and encourage programmers young and old.
* You've come a long way, be sure to have lots and lots of cake today.
* May your full fledged Unicode support be your gift to us sooner rather than later.
* You've got your problems, but then don't we all.
* May you survive and thrive another 15 years.
HAPPY15THBIRTHDAYPHP;
?>

Bonus: here’s some cool PHP usage statistics and trend graphs.


23
Apr 10

Do not underestimate the need for Multi-Browser testing

No matter what the trending statistics tell, people do use alternative browsers. If something totally doesn’t work, these users are going to complain about it and rightfully so.

test all of these

Technical (javascript) lesson learned: do not use setTimeout() for making an external script call such as document.write(); If the result happens to contain an iframe tag, all your caller pages will be overwritten. Only seems to affect Opera and to some degree IE. Safari, Chrome and Firefox are immune (and as it happens, the three browsers I originally tested against).


12
Apr 10

How to win at the “platform” game

A contemporary story brought to you by Twitter… who arguably, would have never risen to its present great heights in popularity, and thereby valuation, if not for the labors of its creative users… and now, we shall see their true colors…

“…Twitter investor Fred Wilson speculated that Twitter would edge out third-party developers whose add-ons for the microblogging service merely filled feature holes that the company ought to have built itself. Then Twitter, which previously hadn’t developed its own mobile apps, bought Tweetie, a popular Twitter service for the iPhone, and released its own BlackBerry app.”

With apparent lack of long term reputation strategy, their latest purchase is not well timed as “…these announcements came right before Twitter’s big developer conference, Chirp, which opens in San Francisco tomorrow.”

Twitter also purchased Summize nearly two years ago to fill the former void of search.

And the lesson to gleamed from Twitter’s totally tubular tale is… “The real reason to build a platform is to boost your company’s valuation. An open application programming interface lets third-party developers donate their labor and ideas to the cause of enriching your investors. And through their creativity, investors get inspired about the potential to make money.”

The moral of the story is: be the foundation (platform), not the pretty structure that sits above it. Because if you’re a company building off of some other company’s platform, being bought out is the only way to achieve a big pay day. Good luck with that.

Quotes from VentureBeat’s “How Twitter won the platform gamble“.

Also worth noting, as another prime example, Apple’s App-store.


22
Dec 09

V8 benchmark suite v5 – my numbers

Google has this benchmark suite thing you’ve probably heard about. Here are my numbers for the browsers I use most often on my machines. First and only run results below:

Windows 7 Ultimate 64-bit, 4GB DDR3 1033MHz, Intel 2.4GHz C2D P8600 Linux Ubuntu 8.10 32-bit, 2GB DDR2 800MHz, Intel 2.2GHz C2D T7500
 
Opera 10.10
Score: 199
Richards: 151
DeltaBlue: 177
Crypto: 126
RayTrace: 338
EarleyBoyer: 622
RegExp: 86.4
Splay: 203
Opera 10.00
Score: 125
Richards: 87.3
DeltaBlue: 103
Crypto: 69.3
RayTrace: 235
EarleyBoyer: 378
RegExp: 62.9
Splay: 137
Firefox 3.5.6
Score: 383
Richards: 1239
DeltaBlue: 106
Crypto: 746
RayTrace: 261
EarleyBoyer: 355
RegExp: 242
Splay: 554
Firefox 3.0.15
Score: 120
Richards: 90.7
DeltaBlue: 92.2
Crypto: 132
RayTrace: 105
EarleyBoyer: 117
RegExp: 129
Splay: 200
IE 8.0.7600.16385
Score: 98.7
Richards: 50.9
DeltaBlue: 56.3
Crypto: 69.6
RayTrace: 102
EarleyBoyer: 170
RegExp: 124
Splay: 213
IE 6 (Windows XP VM)

Richards: 8.7
DeltaBlue: 3.27
Crypto: 6.69
RayTrace: 16.2
EarleyBoyer: 8.64
RegExp: …
Could not get past 89% completed… ran “forever” on RegExp test
Chrome 3.0.195.38
Score: 3754
Richards: 3837
DeltaBlue: 3918
Crypto: 3062
RayTrace: 5351
EarleyBoyer: 6212
RegExp: 1066
Splay: 6445
Chrome 4.0.249.30
Score: 3455
Richards: 3272
DeltaBlue: 3523
Crypto: 2863
RayTrace: 4938
EarleyBoyer: 6373
RegExp: 1061
Splay: 5335

No doubt Chrome blows these #’s away update – big time confirmed. What company would release a benchmark suite that didn’t favor its own browser? Benchmarks are an engineers marketing.  My hunch is that Safari would fare well on these as well.


16
Dec 09

Ensure privacy of your data by encrypting public email service

email-security

first, set up a secure-mail domain email server that upon mail receipt, applied (subscriber specified key) encryption, to the message contents and then forward that encrypted message along to whatever web mail service that subscriber wants to, or is already, use (and is supported) – – such as gmail, y-mail, hotmail.  key point being, be the first leg in the journey & to secure the contents of the message before sending onto the public email service.

second, develop a browser plug-in that utilizes “screen-scraping” and decrypts secure-mail messages using the user’s private key (PGP perhaps).  the plug-in could display the decrypted message contents on the fly without sending any data back to the storing server.

Continue reading →