Skip to main content
 

SWEs should do Part Time User Support

My first dev job in 1991 required that I do at least 4h of phone support and 4h of walk-in support a week.  Feeling user pain and answering the same dumb questions over and over made me a better developer and also led to a bunch of innovation:

- Mainframe Mail Woes? Develop SLIP/PopMail, give away on floppy
- Xmodem problems? Add hqx attachment support.
- Need access to Apple's techinfo CD?  Get it via Gopher.
- Indepth howtos?  Publish newsletters like you see below.

You don't have to answer the phone to help people today.  You can engage externally on mailing lists, on G+ and more.  Just remember to follow the guidelines in http://go/u2u

http://conservancy.umn.edu/bitstream/handle/11299/161886/Microcomputer_Newsletter_Jun_1991.pdf?seque...

 

A fascinating listen from my morning drive.

A fascinating listen from my morning drive.  I imagine I'll now notice the ambient sound more after being made aware of this.

 

People do not fear change, they fear loss

About a year ago I did a one-day seminar called _Managing Through Change_.   It was actually pretty good and helped me understand how the human brain treats stressful transitions.

Sadly the course isn't offered, but there is some pretty decent self-instruction available here:

https://grow.googleplex.com/opportunity/site/navigatechange/

https://login.corp.google.com/request?s=grow.googleplex.com:443/uberproxy/&d=https://grow.google...

 

 

Sieves

Sieves

 

Recruiting... in reverse

Hi Paul,

Long time no see! Hope all is well with you. Have been trying to reach someone in engineering at Google to see if there might be interest in acquiring my company. Would be cool to catch up sometime, please let me know what you think!

Here's some more info regarding our company / technology:

....

XXXXX is fully bootstrapped, we have no debt and no additional shareholders (just the two of us). The company was recently incorporated, so a transaction would be straightforward. We are both versatile generalists in our respective fields with lots of experience innovating hands-on as well as managing teams. And we’d love an opportunity to demo our tech with anyone who’s interested!

 

Someday ...

Someday ...

Originally shared by Singularity Utopia

It is possible to do with a G+ badge? I want the badge large for big screens so I set the width to 450 but it doesn't resize to fit like all my other elements, here in the image you can see the badge when zoomed-in is off the screen. Can you allow (make happen, implement) a 100% width instead of 450?

Here it is live: http://singularity-2045.org/

 

HashSets

Replacing static HashSet<String> with Java 7 string switch?

Has anyone investigated whether Java 7 switch is more memory efficient than HashSet<String> or ImmutableSet<String>?  I think it might be.  Read on....

I ask because HashSet is one of the more bloated java collection classes.  It uses 32 bytes for each used entry + an array for the capacity.  For example the follow
ing HashSet uses 128 bytes (2*32 + 16 * 4):

  private static final HashSet<String> FOO = new HashSet<>();
  foo.add("a")
shpub note --category=googplus --syndication=https://plus.google.com/107786897865850743842/posts/VPYQiMunRRY --published="Mon Dec 29 12:22:44 PM PST 2014" --name="" - <<EOF
Replacing static HashSet<String> with Java 7 string switch?

Has anyone investigated whether Java 7 switch is more memory efficient than HashSet<String> or ImmutableSet<String>?  I think it might be.  Read on....

I ask because HashSet is one of the more bloated java collection classes.  It uses 32 bytes for each used entry + an array for the capacity.  For example the follow
ing HashSet uses 128 bytes (2*32 + 16 * 4):

  private static final HashSet<String> FOO = new HashSet<>();
  foo.add("a")
  foo.add("b");

  boolean isFoo(String s) { return FOO.contains(s);}

We can replace that with:

  boolean isFoo(String s) {
     switch (s) {
        case "a":
        case "b":
           return true;
        default:
           return false;
     }
  }

Java 7 transforms this code into something like this:

    switch (s.hashCode()) {
       case -1234:
          return s.equals("a");
       case -55999:
          return s.equals("b");
       default:
          return false;
    }

Which maps to a tableswitch or lookupswitch.  Squinting it appears that you'd need the following for each entry:

tableswitch:
  per-entry: hashcode + result value (8 bytes)
  equals test: 4 opcodes (16 bytes)

So it would appear that you have 24bytes/entry.

Performance would be limited by the JVM/Dalvik/Art implementation of tableswitch which can be O(n)

Also obligatory reference to:

  http://blog.jamesdbloom.com/JavaCodeToByteCode_PartOne.html

http://blog.jamesdbloom.com/JavaCodeToByteCode_PartOne.html

 

 

Julie's Plane taking off

Julie's Plane taking off

 

 

 

 

 

Was pondering how James Kirk would share on a social network and remembered that he always said Captain's Log,...

Was pondering how James Kirk would share on a social network and remembered that he always said Captain's Log, Stardate...  -- but then I found this.

 

 

Farewell

Farewell.

After a 4 month battle against cancer we made that hard yet logical decision to end the fight.  Tommy didn't visit Google often, but he always enjoyed the attention, laying in the grass, and walking the trails nearby.

Thanks to everyone that put up with my last minute cancellations for vet visits and the extra time I spent tending to his needs in his final months.

 

[A]lmost all (92%) of the catastrophic system failures are the result of incorrect handling of non-fatal errors...

[A]lmost all (92%) of the catastrophic system failures are the result of incorrect handling of non-fatal errors explicitly signaled in software.

Check out the postmortems linked in the references.

 

Heads up webmasters -- please consider updating your javascript snippets.

Heads up webmasters -- please consider updating your javascript snippets.

Originally shared by Ilya Grigorik

All Google+ widgets have been updated to use the script[async + defer] pattern! E.g. +1 button docs: http://bit.ly/YHoj96

What's the benefit? Loading widgets via script[async+defer] does not block the document parser (see [1]), and allows the preload scanner to discover the script resource and initiate an earlier fetch (see [2]). Net outcome, both your page and the widget load faster! Have a G+ widget on your page? Check out the docs for guidance on how to update your snippets.

Kudos to the G+ team for taking the lead on this! Hope to see more widget providers adopt the same pattern.

[1] https://developers.google.com/web/fundamentals/performance/critical-rendering-path/adding-interactiv...

[2] https://www.igvita.com/2014/05/20/script-injected-async-scripts-considered-harmful/

 

Tail latency == power user latency

The next time you ignore a few deadline exceededs ask yourself:  Where are the people affected on the participation curve.  Often they're the ones with thousands of blocked people, tons of posts and +1s and *your most valuable users*.  Call 'em whales if you like, but do not ignore them.

http://ross.typepad.com/blog/2006/04/power_law_of_pa.html

 

Perf

My vet didn't realize that Perf was due last night and said Tommy should go home.  Just finished at 8:00am after staying up much of the night to get it done.

Going to sleep for a while and am glad I don't need to wear a massive flowery collar around...

 

test with 'send email' checkbox

test with 'send email' checkbox

 

4 mos old visitor

4 mos old visitor

 

 

I hope you can update Mark with authorship changes the same way you treat Search Engine Land.

I hope you can update Mark with authorship changes the same way you treat Search Engine Land....  He's going to lose some major credibility.

Originally shared by Mark Traphagen

Interview with Me About Google Authorship

Andre Alpar of OMReport.de interviewed me last June at SMX Advanced in Seattle about Google Authorship and the changes we had seen from the beginning of the year up to that point.

Please note that this interview was conducted before Google removed all author photos from regular search, but Authorship still works, and I believe the principles I discuss here are still valid.

 

 

Good context here.  27k members!

Good context here.  27k members!

 

John Hjelmstad / Jonathan Beri - same deal as sign in button...  let's incorporate it...

John Hjelmstad / Jonathan Beri - same deal as sign in button...  let's incorporate it...

Originally shared by Gerwin Sturm

As you might have noticed I invested quite some time in Polymer recently. What I like about web components is that they make a lot of things a lot easier, except...

Normally adding a +1 button (or any other Google+ plugin) to a website is just about the easiest thing you can do.

1. Take the code snippet from the docs, e.g. https://developers.google.com/+/web/+1button/

2. Paste it in your code at the appropriate place.

3. Done.

Unfortunately the gapi JS library doesn't like to work with the Shadow DOM. Even if you pass in a direct reference to an element inside of your element it won't work.

The (https://github.com/GoogleWebComponents/google-hangout-button/) works around this issue by adding an element to the light DOM, telling gapi to render the button there, then snatching the element and sending it to the shadow realm dom.

Since there are a lot more widgets to choose from, I took this idea and started by creating a generic element that takes `type` and `data` as attributes to render the appropriate plugin, using the same idea as the hangout-button.

So for the default +1 button you could just use

Or for a profile badge you would use

<google-plugin type='person' data='{"href": "https://plus.google.com/+GerwinSturm"}'>

From there I started to create specific elements, that have the relevant attributes for each plugin.

For now there are only two but others are easy to add:

(the profile attribute will be used to build the href attribute needed by the profile widget)

The plugins still aren't really happy inside of the shadow dom, displaying some errors in the console, and not all interaction seems to be working correctly.

I have some other ideas I will test to improve this, but maybe the gapi team will eventually support Shadow DOM properly ;)

For now these elements work better than not working at all :)

Source code: https://github.com/Scarygami/google-plugins

Docs: http://scarygami.github.io/google-plugins/components/google-plugins/

Demo: http://scarygami.github.io/google-plugins/components/google-plugins/demo.html

 

A gem of a performance.

A gem of a performance.

I've found that a search for {BANDNAME} {YEAR} live where year is early on yields some amazing finds.  That's how I found this superb performance.

 

Read this behind the scenes article about Project Boswell with Brett Lider  and Joseph Smarr  who toiled long and...

Read this behind the scenes article about Project Boswell with Brett Lider  and Joseph Smarr  who toiled long and hard to deliver an awesome feature.

This article also showcases how sometimes you have to throw away the first few concepts before you get it right.   Happy that I had a small part at the beginning of the project and props to the many folks that invested time and effort to get this out the door.

 

Still at work, trying to leave now...

Still at work, trying to leave now...

 

Fundraiser for Libby Schaaf for Mayor of Oakland at the BlueSprout industrial co working space.

Originally shared by Tim O'Reilly

Fundraiser for Libby Schaaf for Mayor of Oakland at the BlueSprout industrial co working space. Oakland is a Maker city. Libby will be a Maker - friendly mayor. But she is most of all a doer who will help city government to work for its citizens!

 

EA FIFA '73 spotted at Google...

EA FIFA '73 spotted at Google...

 

This crazy "gothic" house near my home in Oakland can be yours for $869k.

This crazy "gothic" house near my home in Oakland can be yours for $869k.

Bonus: it's an Ingress portal.  Not sure if that'll be in the disclosures...

Photo tour here:

http://www.coldwellbanker.com/property?propertyId=283479577

 

Wow.

Wow.

 

 

 

A tale of automation woe.  Read from the bottom..

A tale of automation woe.  Read from the bottom..

A Windows 7 deployment image was accidentaly sent to all Windows machines, including laptops, desktops, and even servers. This image started with a repartition / reformat set of tasks.

As soon as the accident was discovered, the SCCM server was powered off – however, by that time, the SCCM server itself had been repartitioned and reformatted.

 

 

 

So I was trying to buy a copy of The Decline of Western Civilization this weekend.

So I was trying to buy a copy of The Decline of Western Civilization this weekend.  Only available copies are VHS tapes for $200 on Amazon (!)

Found this instead...

 

Newcomer Kilovolt Coffee Lights Up West Oakland

Newcomer Kilovolt Coffee Lights Up West Oakland

New food and drink establishments are slowly springing up in our neighborhood, Kilovolt Coffee is the latest welcome addition -- read more from KQED Bay Area Bites: http://goo.gl/GGg5k3

 

Now you too can build your own Zuul Portal.

Now you too can build your own Zuul Portal.

 

Install ground-breaking spyware; receive ongoing rewards!

_[from a survey I received from TiVO today]_

We are considering creating a special segment of the TiVo Advisors panel to explore TiVo subscribers' usage of mobile technology and how it relates to your enjoyment of TV and other media.  Everyone who participates in this exclusive segment of the panel will receive ongoing rewards based on actual participation (not a monthly sweepstakes).

This ground-breaking research will help us understand the ways mobile, television, digital, social, and other media are viewed, used, and shared by TiVo subscribers.  Your participation will have a direct impact on how entertainment and information is delivered to consumers today and in the future.

To participate in this exclusive group, you will be required to download and continually run an app on a qualified mobile device (up to three devices per panelist).  The app runs in the background of your device (in other words, you do not have to interact with the app to receive rewards).

Qualified devices include:

Android™ smartphones and tablets that run Android version 4.0 or greater, and are not rooted;
Kindle Fire HD, but not the first generation Kindle Fire;
iPhone® 5, iPads® and iPod touch® devices that run iOS version 5.0 or greater.
Earlier iPhones are not supported at this time.
The app is a small mobile application (about 3.3 megabytes) which is not intended to interfere with your web, app, wireless phone, or battery usage. Once installed, you should never need to re-activate the app.

At this time, we'd like to get your initial thoughts about this idea.  If we choose to proceed, we'll send out more information in the next few months.

 

Still an empty profile though...

Still an empty profile though...

But not much better than:

Joe Tuman - https://plus.google.com/109949039322333887009

Libby Schaff - https://plus.google.com/110500927796450135344

Bryan Parker - https://plus.google.com/109333654487362962540

At least Parker has a couple of posts there.  Tuman has only 1 Youtube video..

If there are other candidates add them here and I'll share an Oakland Mayor 2014 circle..

 

Broken Bells at the Fox Theater with Julie Lindner

Broken Bells at the Fox Theater with Julie Lindner

 

I've been very impressed with the rapid progress of Sprint Reader I'm up to 650 wpm and can probably go faster with...

I've been very impressed with the rapid progress of Sprint Reader I'm up to 650 wpm and can probably go faster with a little more practice.

Originally shared by Sprint Reader

Language auto-detection done!

Functionality coming soon and paves the way for more intelligent word hyphenation (by language pattern) and maybe, just maybe auto-translation!

Stay tuned.

  Google Translate     

 

Google+  has some common sense content rules in the User Content and Conduct Policy [1]  You'll notice there is no...

Google+  has some common sense content rules in the User Content and Conduct Policy [1]  You'll notice there is no section on censorship based on viewpoint.

The issue described by Eric Raymond below is much more mundane.  It's actually a problem in the way Google+ previews web snippets.  

A couple of weeks ago we introduced the new Article embed type.  You'll notice these posts by their distinctive large-photos with a ragged-edge.  This new code caused the problem.

The markup on theblaze.com uses the http://schema.org/NewsArticle markup.  That, combined with some other factors causes the preview processing to fail.  This issue was reported to us on April 1st and a fix will be released to production early next week.

I opened an issue on our developer site to track this issue since it does affect a handful of other sites that use the NewsArticle markup.  Feel free to Star it to receive updates: 

https://code.google.com/p/google-plus-platform/issues/detail?id=805

[1] https://www.google.com/intl/en-US/+/policy/content.html

Originally shared by Eric Raymond

G+ may be engaging in non-viewpoint-neutral censorship of news  articles relating to firearms. 

This link:

http://www.theblaze.com/stories/2014/04/04/gun-control-advocates-who-say-more-guns-equal-more-crime-...

results in post blocking when it's either pasted in the link box or pasted in text with the preview image not removed. Others have reported that all firearms-related articles from The Blaze, but not non-firearms-related articles, are blocked.

Something more specific than blocking of firearms-related images is going on, as the Geeks with Guns G+ community would have noticed that a lot sooner than now.

Google has some explaining to do.

 

 

Looks familiar...

Looks familiar...