Profile cover photo
Profile photo
Cody Toombs
A tech geek with flair.
A tech geek with flair.


Post has attachment
Every time somebody sends us a tip titled "Look what's new in X" with a single screenshot and no context...
Add a comment...

Post has attachment

Post has attachment
Solving went pretty quick. Wonder if I'll be booking a trip to California for this May...

Dates are May 8-10th, again at Shoreline Amphitheatre.

(SPOILER) If you're stuck on any of the rooms, here are the answers:

01 60 80
Google I/O 2018
Google I/O 2018
Add a comment...

Post has attachment
Gmail v8.1.7 Tiny Teardown: Just let me snooze another 15 minutes

Last fall, Google announced a roadmap of features planned for Gmail. [1] There was some good stuff in there, but nothing too overwhelming. Probably the biggest feature, and judging by the response to a teardown that went sideways, it was the most wanted, was Google's plan to add a snooze feature to Gmail. This obviously resembles the feature of the same name in Inbox. [3]

Despite the original announcement taking place almost 4 months ago, there haven't really been any significant signs of life for Gmail's snooze feature in the app, but that changed with the latest update. Five new line clearly belonging to snooze have appeared. Okay, that's not a lot, but it's enough to show that it's still happening.

<string name="conversation_resnooze_error"> Error resnoozing conversation </string>
<string name="conversation_resnooze_prompt_prefix"> Resnooze to %s </string>
<string name="conversation_resnoozed_prefix"> Resnoozed until %s </string>
<string name="conversation_snoozed_prefix"> Snoozed until %s </string>
<string name="notification_sender_line_snoozed"> Snoozed: %1$s </string>

In my experience with Gmail, text relating to upcoming features rarely gets added significantly ahead of launch. While I wouldn't count this as any kind of assurance, this is a good sign that the snooze feature will be hopping out from under the covers fairly soon.

Add a comment...

Post has attachment
Came across a really clever card game on Kickstarter. It has a battle system built around common programming control structures (e.g. while loops, for loops, if/then/else), and it actually looks pretty fun.

Add a comment...

Post has attachment
Look, I get that Google is pushing to get all of the apps updated with adaptive icons, but I think somebody on the Google Fit team was on autopilot when this happened.

Yes, that's the original Fit icon (the heart) sitting inside of a round background, also sitting inside of the adaptive rounded square (I could have set any of the other shapes, but that's not the point). This is truly the darkest timeline.
Add a comment...

A little code for activating Google Lens (while it worked)

Google Lens was active and usable for a few hours this afternoon after I posted a teardown of Google Photos v3.5, [1] provided you use a simple trick to launch the activity. To be clear, Google pulled the plug on Lens shortly after this was discovered, but it did give us a little time to play with it. Unfortunately, there some surprisingly inappropriate behavior followed. Since the situation was blown a bit out of proportion, I thought it was worth addressing what the method actually involves.


I wrote a quick app to launch the Lens activity. It's nothing special, just about 7 lines to do anything important, and about another 15 lines of code for formality. This only took about 10 minutes to write and test, but it demonstrates just how easily something like this can be done.

The repository is here. It was built from a default project and I didn't bother cleaning it up, so it still contains unnecessary test projects that you'll want to ignore:

The important file can be found here:
with the only other necessary bit here:

This block and the next aren't related to activating Lens, they just register the sample app to receive images shared from other apps. This part is added to the AndroidManifest.xml file
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/" />

*Here is the onCreate method that receives the shared image. Again, this is mostly a formality. It checks that the incoming Intent and then sends it onto the code that actually does something.
protected void onCreate(Bundle savedInstanceState) {

Intent intent = getIntent();
String action = intent.getAction();
String type = intent.getType();

if (Intent.ACTION_SEND.equals(action) && type != null) {
if (type.startsWith("image/")) {
handleSendImage(intent); // Handle single image being sent

And in the final step, it unpacks the image from the incoming intent, creates and launches a new outgoing Intent containing the same image and pointing to the LensActivity in the Google Photos app:
void handleSendImage(Intent incomingIntent) {
Uri imageUri = incomingIntent.getParcelableExtra(Intent.EXTRA_STREAM);
if (imageUri != null) {
Intent lensIntent = new Intent();
lensIntent.setComponent(new ComponentName("", ""));

No part of this is remotely complicated, and any beginning Android dev can piece it together pretty quickly with a couple of samples from the web. Anyway, I hope this is helpful to a few devs out there and puts some of this stuff into perspective for other readers.
Add a comment...

I'm begging you, +YouTube, please let us block channels from recommendations.

I was just watching a legitimate movie trailer, and then followed a recommendation that brought me to my own personal hell: "fan made" trailers. You know the kind that intentionally hide that they are fake so they can scam a crapload of views (220k in this case) with fantasy cast lists.

I also want to block channels that produce contrived listicles proclaiming the reasons Hollywood won't cast somebody anymore. While we're at it, there are a few YouTubers that I find highly grating and undeserving of my views, yet they appear in recommendations every time I load the site, which is weird given that I never click on their videos and repeatedly choose "not interested" when they are suggested.

Please, let's put an end to the suffering, let us block what we don't like. It's not a new feature, YouTube Kids already supports this, we just need it on the main interface where adults can use it too.
Add a comment...

Post has attachment
Google Fit v1.72 Tiny Teardown: Challenge Accep...err, Declined

Many of the things that turn up in my teardowns tend to come true, albeit sometimes long after we would have expected them to. Unfortunately, some projects are also killed off and ultimately removed. That appears to have happened with a feature called Challenges that was covered in a teardown of Google Fit v1.57 [1] a little over a year ago.

The latest update to the apk comes in at about 2MB less than the previous version, and a look through the resources shows that next to nothing was added, but a ton of stuff was removed. It was plain to see that the Challenges feature was the clear target. I won't copy any of the text into this post because it has gone mostly unchanged since last year's teardown.

I can't say I'm entirely surprised, but I didn't really expect to see a premature death for the only social feature in Fit. I would be curious to know the story of what happened. I'm a little concerned that this means Google is scaling back its ambitions for Fit, which already felt pretty lackluster.

Add a comment...

Post has attachment
Google Camera v4.4 Tiny Teardown - Your Shots Are So Cheesy

The slightly-less-restricted version of the Google Camera is out for Nexus and Pixel devices running Nougat. It's not a major update from the previous build for Android O, but it does include strings for a new, and very unusually named feature: Gouda Mode.

<string name="mode_gouda"> Gouda </string>
<string name="mode_gouda_desc"> Switch to Gouda Mode </string>
<integer name="camera_mode_gouda"> 7 </integer>

I think it's safe to say this has nothing to do with the city of Gouda in the Netherlands, and it's unlikely to be a dedicated mode for photographing the namesake cheese, though that would be an especially fun kind of quirky.

I'm not really sure what it does, yet, but it technically takes the place of "Portrait Mode" (which had been #7), so it may be a new codename for something that already existed, or it might turn out to be something altogether new. Hopefully we'll get a little more insight with the next update.
Add a comment...
Wait while more posts are being loaded