Granola and a latte in the brisk air almost makes up for the pain of missing the shuttle.
Granola and a latte in the brisk air almost makes up for the pain of missing the shuttle.
I only recently found that Google Chat supports /me. If you type:
/me claps
It's rendered as
Paul claps
I wonder if there any other IRC features hidden in there?
Wallpaper* is here. Not as much of a fan since Conde Nast bought them. Of course that just means we now have Monocle
In any case it's always good to see the Walker Art Center doing the good things they do.
Originally shared by Wallpaper* magazine
Anyone want to help me fill out my DJ circle? ... especially artists that share Youtube content. Google+ shared videos are a great feature on the new Youtube home page.
Thanks!
Search. How does it work?
Try searching for ke sometime. You might be surprised at the results. It's all about character tokenization.
You might think you're clever by using punctuation in proper terms, but in reality they get treated like spaces. In this case ke-dollarsign-ha is really indexed as two terms ke ha. And you can put as many dollar signs, slashes or other characters in your query, they're just tokens to be ignored.
So for all the Korean Ke's out there here's a version of SNSDs Run Devil Run performed by the top search result for ke.
There's some interesting things going on behind the scenes here. Some of this will find it's way back to shindig.
In any case it's a generalized solution for calling JSON-RPC endpoints with postMessage flow using OAuth2.
Originally shared by Mano Marks
Pretty cool, a new way to access many of Google's APIs, though not Maps at the moment. In particular, Google+, Freebase, Contacts, Latitude, and a host of other APIs. And it'll handle the authentication for you.
Now I can finally populate my Internet Gopher circle! FYI my old gopher Ts are now on loan to the computer museum.
hmu if you want to talk about the past present or future!
Could either of you recommend someone associated with the Fedora cvs->git transition that can talk to the Apache folks? There's so much drama going on over there regarding git and their infra people are moving way slow...
Nice, The Current is on Google+ -- Listening to Radio Free Current right now on the time machine weekend. Lucky folks in MN you get it on FM :)
The world's most dangerous turkey wishes you all a happy Thanksgiving!
Some great shots of parades past. Don't miss the incidental stuff in the background like the Kleenex advertisement.
Originally shared by Ryan Estrada
Happy Thanksgiving!
Did you know they used to release all of the balloons after the parade was over? They quit doing that, because they almost crashed a plane.
It wouldn't be Christmas without a new Doctor Who special.. I hope that Amazon offers this as an HD digital download; they did well with season six.
Originally shared by null
Looks like Doctor Who meets Narnia for the Christmas special, I approve of this.
Even more amusing considering that we had an ice cream sandwich truck today....
Originally shared by Kimberly Johnson
I just got #icecreamsandwich on my iPhone
Android
Want to find some great new music? Load up this URL:
https://
Then click "Most Recent".
You'll find all sorts of interesting remixes scrolling by. There's enough content that you can't even listen to it all, so you can pick out the most interesting stuff.
(And feel free to substitute some suitable generic term if you're not really into DJs and electronic/pop music.)
Welcome to Google+, Ron Gould
Hope Standsure is doing well. Let me know if you want help setting up a Google+ Page!
Yikes!
Originally shared by Rob “CmdrTaco” Malda
The director of the last 2 Harry Potter movies will be getting a crack at a hollywood Doctor Who
http://
Made a reference to Paco today that no one got. If you don't know see the following playlist.
Wouldn't be where I am today without 3-2-1 Contact.
Just realized that I have 8 invites left for Google Music beta.. You might want to try it out just to get your hands on a few hundred free songs. (Admit it, you really do like the Bay City Rollers Saturday Night!)
First 8 emails posted below get an invite.
Hey look, it's the Fedora Project! On Google+
Check out Fedora 16 if you're into Linux distros. I just finished upgrading the home server last night and it's running smooth. (even if systemctl reminds me way too much of solaris SMF)
Fun fact: I've been upgrading the same system image since Red Hat 6.0. No reinstalls.. and since I never had a CD/dvd all upgrades were via rpm/yum.
You can stop reading now if you don't care about software that keeps the internet from falling over.
Memcached 1.4.10 is now out and this release looks to be the best yet. Check out the release notes and send some kudos over to http://
To do my part I just built the fedora RPMs for f15/f16/rawhide. Try it out on your favorite high-volume server.
One of my favorites, hopefully they'll start posting soon...
A Blue Bottle latte and the aroma of roasting coffee beans almost makes up for missing the google shuttle this morning....
Always worth a visit if you're near Jack London Square.
Hi -- have a few ideas on how 8tracks can work better on Google+
Feel free to drop me a line here or email plindner@google.com
Chris keeps finding these odd houses...
Originally shared by Chris DiBona
Wow, the metalwork done for this house blows me away:
http://
Check out the gatework in the photos..
I've just been informed that 8tracks now has an Android app. Check it out..
Tommy bath at Pawrero. Little known fact: the movie Fowl Play filmed a scene here.
The antidote to too much Phil Collins in my stream..
Side note: The Current is a public radio station in Minneapolis that only plays alternative music ala KEXP. Definitely worth a listen.
I think Perry Farrell came up with the idea of crashing hangouts and meeting with fans first. Nice to see the idea spreading.
Originally shared by Paul Oakenfold
Let's #HANGOUT! Paul Oakenfold crashes your hangout! Confirmed time for the hangout crashing Friday November 4th at 4:00pm EST/1:00pm PST. Probably will give you all a head start....so look for my "here we go" post.
When you see it, comment with your hangout link (the URL in the browser window of your hangout). And add a one-liner as to why I should join YOUR hangout.
IMPORTANT - please leave at least one seat open for me!
Download WE ARE PLANET PERFECTO Vol 1
Pre-order on iTunes: http://
4 years ago today OpenSocial launched to the world at the first Google Campfire One event.
You can find me at 4:14 and 4:30 operating the browser next to Akash Garg and Jeremiah Robison. Today Akash is doing infra work at Twitter, Jeremiah is over at Jawbone working with a bunch of the former hi5 crew, and I'm working on making Google+ better with some of the same folks that participated in the original OpenSocial effort you see below.
Also don't miss the Vic Gundotra's intro at
Campfire One: Introducing OpenSocial
and performances by Joe Greenstein, Marc Andreessen, Adam Nash and others.
How time flies!
Nice, the new Gmail UI is out. Make sure you give it a few days to grow accustomed to it. It really is better, but you have to retrain your brain a little bit. (Whenever I see the old UI now I cringe!)
Originally shared by Jason Cornwell
We're launching a major redesign of Gmail today! This is the result of months of hard work by many members of the Gmail team.
You'll get a link to upgrade at the bottom of your gmail screen over the next few days.
Have a Google vanity domain? This is what you've been waiting for!
Originally shared by Ronald Ho
Hi, I'm Ronald Ho. I’m a product manager at Google and for the past months I’ve been working on making Google+ work with Google Apps accounts.
We hoped to have this out to you earlier, but it took more technical work than we’d expected. With that work out of the way, the day is finally here and Google+ is now available with Google Apps.
You can find more details in our blog post including links to resources to help get Google+ enabled for your domain.
Let us know how you plan to use Google+ with your Google Apps account, and give us your feedback on any part of the experience that we can improve. Thanks!
1. Many earthquakes in a short time.
2. A large construction project nearby at Memorial Stadium in Berkeley
Max Zorin anyone?
Another creative use of hangouts...
Originally shared by Florian “Babar” Rohrweck
O RLY? #catspam #hangoutcat
Two things you don't see too often.
1) anything made by Sylvania.
2) a tiny Sylvania netbook thing running Win CE.
Another java project "goes guava"
Originally shared by James Snell
More Abdera2 Updates... this is a copy of an email I just sent to the Abdera-dev mailing list...
----------
Ok, for those of you who may not have seen it, I posted another major update to the Abdera2 code yesterday. Where as the first round of updates focused primarily on updating dependencies and the introduction of the Activity Streams capability, this update focused more on API Refactoring and the introduction of two new major dependencies: the Joda-Time Library (http://
First up, Joda-Time... for those who aren't familiar with it, joda-time is a comprehensive code library for working with dates, times, durations, intervals, etc. When I wrote the first version of the Abdera Feed Object Model API, there wasn't a good open-source implementation of the ISO8601 DateTime format required by the Atom specification available so I wrote a fairly limited, down and dirty implementation in the form of the AtomDate class. It had decent performance, fairly good coverage and got the job done. Joda-Time, however, has emerged since as a top quality rich implementation of the 8601 standard... so even though it is a breaking change to the existing Feed Object Model API, I have gone through an have replaced Abdera's own implementation with Joda-Time's DateTime class, which, when used in combination with the mechanisms provided by the Google Guava libraries, provides for some very interesting and compelling new capabilities.
Which, of course, brings me to Guava. This library is a collection of extremely useful utility classes from google. This update brings significant deep integration with Guava in a number of ways, the most important of which is the new Selector API that I introduced as part of the first Abdera2 checkin.
Among many other things, Guava defines a number of interfaces and utility classes aimed at making it easier for developers to write quality, functional, readable code that has a more natural flow to it. It is easiest to show by example.
In Abdera 1.x, if I wanted, for instance, to extract a list of entries from an Atom feed that had been edited after a specific date and time, it would look something like this...
AtomDate ad = new AtomDate("2011-09-10T12:12:12Z");
List list = feed.getEntries();
List selected = new ArrayList();
for (Entry entry : list) {
if (entry.getEdited() != null) {
if (entry.getEdited().after(ad.getDate()))
selected.add(entry);
}
}
Note that feed.getEntries() will return every entry from the feed whether we want it or not. We then have to iterate back over that list, check to make sure there's an edited date, compare those and build up a new list. The code is ugly and cumbersome and inefficient. With the code I just checked in, the same process looks like this...
import static org.abdera.abdera2.model.selector.Selectors.*;
import static org.abdera.abdera2.common.date.DateTimes.*;
List list =
feed.getEntries(
edited(after(dt("2011-09-10T12:12:12Z")))
);
The portion, edited(after(dt("..."))) constructs a Selector that filters the list of items returned by getEntries(), keeping us from having to iterate back over the list.
Suppose we wanted to add another condition to the mix.. say some custom selector that checks for the presence of a particular extension... We can implement our CustomSelector by extending the AbstractSelector class, and merely append that in to the code above like so...
import static org.abdera.abdera2.model.selector.Selectors.*;
import static org.abdera.abdera2.common.date.DateTimes.*;
Selector customSel = new AbstractSelector { ... }
List list =
feed.getEntries(
edited(after(dt("2011-09-10T12:12:12Z")))
.and(customSel)
);
Underlying the Selector API a large chunk of the Guava API... specifically the Predicate, Function, and Constraint interfaces. The Selector interface actually extends from Predicate and Constraint and provides a mechanism for being cast as a Function.
A broad range of utility methods have been provided that create constructors for many of the most common cases, in particular DateTime related operations. Look at the following classes for those utility methods...
org.apache.abdera2.common.date.DateTimes
org.apache.abdera2.common.selector.Selector.Utils
org.apache.abdera2.model.selector.Selectors (for Atom specific utilities)
org.apache.abdera2.activities.extra.Extra (for Activity Streams specific utilities)
The Selector mechanism has been baked into both the Atom and Activity Streams APIs now. For instance, suppose we have an Activity stream but we only want a max of 10 activities for which a given user is the intended target (using the Activity Streams Audience Targeting Extension.. which I can explain later .. lol).. We could get that list of entries using...
PersonObject person = new PersonObject();
person.setId("acct:john.doe@example.org");
Iterable list = stream.getItems(isTo(person).limit(10));
Additional changes in this update include....
1. Refactoring classes into immutable thread-safe objects. This will be an ongoing change. As much as possible, a Factory/Builder model for most basic object types will be used as opposed to the more traditional getter/setter model. The motivation behind this change is simple in that it helps make more a much more scalable architecture and significantly more readable code.
For instance, if you wish to construct a Cache-Control header, you can use a simple fluent builder api...
CacheControl cc =
CacheControl
.make()
.isPublic(true)
.noTransform(true)
.maxAge(1000)
.get();
Likewise if you wish to construct a new WebLink HTTP Header,
WebLink link =
WebLink
.make()
.iri("http://
.rel("alternate")
.title("Home")
.get();
The pattern is simple and consistent throughout.
2. Added support for Guava objects in the URI Template implementation... specifically, a URI Template Context can now include the Guava Multimap, Supplier and Optional values. In addition, support for java.util.concurrent.Future, java.lang.ref.Reference and java.util.concurrent.Callable were also added. The one caveat when using Future, however, is that the context will not wait for a value to become available. The Context calls Future.get() and takes whatever it gets back as the value so before you use a Future in a URI Template, make sure it's been completed.
3. org.apache.abdera2.common.text.CharUtils has been refactored. This class was always a bit of a hacky mess. It's been cleaned up significantly around a new CodepointMatcher that is modeled after Guava's CharMatcher interface. Codepoint matcher, however, is designed to work specifically with Unicode Codepoints rather than Java Chars. For the most part, CharUtils and CodepointMatcher are internal classes that the majority of users won't ever have to mess with.
4. Filter/FilterChain has been refactored. This is the part of the Server framework that allows you to plug in a chain of filters before invoking a Publishing Protocol Provider. Previously, the Filter and FilterChain interfaces were very specific to the Server API.. they have been refactored into generic Chain and Task interfaces and moved to org.apache.abdera2.common.misc.*. This allows the use of Chain anywhere you may need a simple interceptor framework...
A trivial example,
Task lower =
new Task() {
public Void apply(
String input,
Chain flow) {
if (input == null) return null;
return flow.next(input.toLowerCase());
}
};
Function print =
new Function() {
public Void apply(String input) {
System.out.println(input);
return null;
}
};
Function chain = new Chain(print,lower);
chain.apply("HELLO!");
The Google Guava api does provide the means of composing multiple Function objects together such that the output of one flows into the input of another, but it only works in one direction.. the Chain here allows you to intercept inputs and outputs.
There are a number of other additions here and there throughout the code, and there will be more to come. One MAJOR change that I'm currently exploring is the use of Guice as a complete replacement for the Classpath-based configuration model we currently have. Let's face it, the current stuff provides a significant amount of flexibility and power, but initialization is slow. Guice is significantly faster and much more powerful than what we currently have.
Anyway, that's it for now.------
Not sure what's the process for proposing new rel attributes for XFN..
In any case posting this here for feedback.
Add a new supplementary rel value 'verified' that combines with other rel attributes to indicate that the source believes that this relationship is valid (by using an OAuth API or other means.. For example:
<a href="http://