Friday, November 30, 2012

How I use Rooms on Windows Phone 8

How I use Rooms on Windows Phone 8:
Every day at 3:50 on the dot, my daughter sends me a text: “Who’s picking me up at the bus stop?”
Usually, I know the answer. But (I confess) there are times when I’m not altogether sure. So I text my husband. He texts my mom. And then one of us texts the poor kid back to reassure her that the adults in her life do, in fact, have a plan.
It definitely takes a village, but our village needs all the help it can get. Now that my husband has his new HTC 8X, we’ve got it—in the form of Rooms, a new feature in Windows Phone 8. (See how to set it up)
Instead of flinging frantic texts around, we can check the room calendar to see who’s on deck. We can start a group chat so everyone’s on the “What the heck is happening?” thread together. And when I add something to the grocery list or cancel a dentist appointment, the updates sync to my husband’s phone. He’s got the room pinned to Start, so its Live Tile even alerts him to the changes.
All in the family: Rooms, a new feature of Windows Phone 8, makes it easier for people to stay connected and in sync. A starter room called Family Room comes preinstalled on new phones.
“We wanted to help people, especially families, feel more connected, and to help them communicate, coordinate, and get the hard stuff out of the way so they can enjoy their time together,” says Lavanya Vasudevan, the program manager who oversaw the feature for Windows Phone 8. “It started with the idea of an actual room, where you can put stuff up on the walls and have conversations. You can come and go, and the stuff you post is still there.”
How’s that different from Groups, a feature you may already know and love from Windows Phone 7? Pretty different. If I create a group called “Guilbert Family” to keep track of my loved ones’ Facebook updates and new messages, the group lives on my phone only—the members won’t even know they’re in it unless I tell them. But my room called “Guilbert Family” will show up on my husband’s phone and that of any other Windows Phone 8 user who joins. All the room members are active participants, but they can’t see anything else on the other members’ phones—just what’s shared in the room.
Groups, first introduced in Windows Phone 7.5, is another handy way to keep in touch. It has some key differences from Rooms.
I can even invite my daughter and mom, on Windows Phone 7 and iPhone respectively. They won’t have the room set up as a special place on their phones, like on Windows Phone 8. But they’ll be able to see the calendar alongside their other calendars, and they can install the OneNote and SkyDrive apps to see the notes and photo album. They just won’t be able to take part in group chat. (See Tips for using Rooms on other phones)
Windows Phone 8 comes with a room preinstalled to get you started. It’s called “Family Room,” but you can change the title to whatever you want. Lavanya notes that “family” might mean a typical parents-and-kids arrangement, but it could also be extended family or roommates who need to stay in touch. And there’s nothing to stop you from creating a room for whatever collection of people you choose: your book club, your pub crawl buddies, people you’re going on safari with. You can create multiple rooms to suit your needs, and when you’re done with them, you can just delete them.
Lavanya and I worked on the Rooms feature together this year, so we’ve been creating and using rooms with our Windows Phone colleagues for a while. We’ve used our rooms to make lunch dates, keep track of to-do lists, and stay in touch when traveling to tech events. But I know we’ve both been looking forward to the same glorious event: the day our husbands get their new phones and start seeing all those new dentist appointments, canceled violin lessons, and ever-expanding to-do lists right on their Start screens.
Still curious? Check the Rooms and Groups FAQ on the Windows Phone website.


Updating your Windows Phone Location code to use WinRT

Updating your Windows Phone Location code to use WinRT:
This blog post was authored by Daniel Estrada Alva, a software development engineer on the Windows Phone team.
- Adam

In this post I describe how you can optionally modify your Windows Phone 7 geolocation code to use the new Windows Runtime (WinRT) Geolocation APIs in Windows Phone 8. Modifying your code to use the new Geolocation APIs in Windows Phone 8 is optional, but offers some solid advantages. In future posts I’ll go into more detail about the extended functionality that the new APIs offer, and how to implement the Windows Runtime. I’ll also walk you through some scenarios that you can build into your Windows Phone 8 apps.
Windows Phone 8 offers a set of APIs in the new namespace Windows.Devices.Geolocation. The following table maps the types of the new Windows Phone 8 APIs to types of the set of APIs provided in the namespace System.Device.Location in Windows Phone 7:

Windows.Devices.Geolocation [Windows Phone 8]

System.Device.Location [Windows Phone 7]

Geolocator GeoCoordinateWatcher
Geoposition GeoPosition
Geocoordinate GeoCoordinate
[Not implemented in Windows Phone 8] CivicAddress

Each Windows Phone 8 WinRT API provides the same functionality as the Windows Phone 7 API it replaces. However, Windows Phone 8 APIs also give you new ways to define your positioning requirements. Now you can use fewer requests to accomplish your objective. The following table summarizes the functionality in the Windows Phone 8 namespace Windows.Devices.Geolocation.Geolocator:

Windows.Devices.Geolocation.Geolocator member


DesiredAccuracy Sets the accuracy requirements through an enumeration with common values.
DesiredAccuracyInMeters (NEW) Provides a more granular way to define your accuracy requirements.
MovementThreshold Sets the movement threshold, in meters, at which the app should be notified.
ReportInterval (NEW) Sets the time interval at which the app expects to receive periodic position notifications.
PositionChanged event Provides notifications when a position update is available. Position updates are available depending on the parameters specified for the session.
StatusChanged event Provides notifications when the status of a tracking session changes.
GetGeopositionAsync() (NEW) Asynchronous operation through which an app can obtain a single position update.


(NEW) Asynchronous operation through which an app can obtain a single position update. In addition, you can specify how long to wait for the results of the operation (Timeout), and the maximum age of cached position data (MaximumAge).

The following table compares Windows.Devices.Geolocation.Geolocator and System.Device.Location.GeoCoordinateWatcher members:

Windows.Devices.Geolocation.Geolocator member

System.Device.Location.GeoCoordinateWatcher member

DesiredAccuracy DesiredAccuracy
MovementThreshold MovementThreshold
[ NOT NEEDED: You can use GetGeopositionAsync(Age, Timeout) to obtain the same results; see the following example.] Position
LocationStatus Status
PositionChanged PositionChanged
StatusChanged StatusChanged
[NOT NEEDED] Start()
[NOT NEEDED] Dispose()
[NOT NEEDED] TryStart()

TryStart() and any other synchronous behaviors have been removed from the new interfaces in favor of the WinRT asynchronous model in Windows Phone 8.
Some tips:

  • The signatures of the PositionChanged and StatusChanged events have changed. The new API passes in the Geolocator object that generated the event as its concrete type instead of as a System.Object as it does in the Windows Phone 7 API.

  • Start/Stop are now implicit to the Add/Remove operations for the PositionChanged and StatusChanged events.

  • The Geolocator object doesn’t implement IClosable (which is the equivalent to IDisposable in the .NET Framework), so it relies mostly on event handlers to be removed when the tracking operation isn’t needed. To stop tracking, you need to unregister the event handlers before the Geolocator object is thrown away. Make sure you don’t forget to do this!

  • Remember that a tracking operation can be expensive, in terms of battery consumption. Use the new asynchronous GetGeopositionAsync method to get a single position update if you only care about detecting the current position (see the GetGeopositionAsync sample below).

The following code snippet is an example of how your code may look in Windows Phone 7:

Code Snippet

  1. private GeoCoordinateWatcher geoCoordinateWatcher;


  3. public void StartTracking()

  4. {

  5.     if (this.geoCoordinateWatcher != null)

  6.     {

  7.         return;

  8.     }


  10.     this.geoCoordinateWatcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High);

  11.     this.geoCoordinateWatcher.MovementThreshold = 100; // in meters


  13.     this.geoCoordinateWatcher.PositionChanged += (watcherSender, eventArgs) =>

  14.         {

  15.             // ...

  16.         };



  19.     geoCoordinateWatcher.Start();

  20. }


  22. public void StopTracking()

  23. {

  24.     if (geoCoordinateWatcher == null)

  25.     {

  26.         return;

  27.     }


  29.     geoCoordinateWatcher.Stop();

  30.     geoCoordinateWatcher.Dispose();


  32.     geoCoordinateWatcher = null;

  33. }

The following is how your code will look with the new APIs. Note that you no longer need to provide the accuracy you require in the constructor. You also can modify the property on the object as long as a tracking operation is not in progress.

Code Snippet

  1. private Geolocator trackingGeolocator;

  2. private TypedEventHandler<Geolocator, PositionChangedEventArgs> positionChangedHandler;


  4. public void StartTracking()

  5. {

  6.     if (this.trackingGeolocator!= null)

  7.     {

  8.         return;

  9.     }


  11.     this.trackingGeolocator = new Geolocator();

  12.     this.trackingGeolocator.MovementThreshold = 100; // in meters


  14.     if (this.positionChangedHandler != null)

  15.     {

  16.         this.positionChangedHandler = (geolocator, eventArgs) =>

  17.             {    

  18.                 // ...

  19.             };

  20.     }


  22.     this.trackingGeolocator.PositionChanged += positionChangedHandler;

  23. }


  25. public void StopTracking()

  26. {

  27.     if (this.trackingGeolocator == null)

  28.     {

  29.         return;

  30.     }


  32.     this.trackingGeolocator.PositionChanged -= this.positionChangedHandler;

  33.     this.trackingGeolocator = null;

  34. }

The StatusChanged API hasn’t changed, so I don’t show it here. The list of supported statuses is listed here for reference: .
Finally, the Geolocator object is a simple way to get a single position update asynchronously. You can also simplify your code with this API if you only need the current position of the device. Here’s an example of how your code may look on Windows Phone 7:

Code Snippet

  1. public GeoCoordinate GetSingleLocation()

  2. {

  3.     GeoCoordinateWatcher geoCoordinateWatcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High);

  4.     EventWaitHandle waitHandle = new EventWaitHandle(false, EventResetMode.ManualReset);

  5.     GeoCoordinate geoCoordinate = null;


  7.     geoCoordinateWatcher.PositionChanged += (watcherSender, eventArgs) =>

  8.     {

  9.         geoCoordinate = eventArgs.Position.Location;

  10.         waitHandle.Set();

  11.     };


  13.     geoCoordinateWatcher.Start();

  14.     waitHandle.WaitOne();


  16.     geoCoordinateWatcher.Stop();

  17.     geoCoordinateWatcher.Dispose();


  19.     return geoCoordinate;

  20. }

When you use the new GetGeopositionAsync() API, you can leverage the new await operator ( to significantly simplify your code:

Code Snippet

  1. public async Task<Geocoordinate> GetSinglePositionAsync()

  2. {

  3.     Geolocator geolocator = new Geolocator();

  4.     geolocator.DesiredAccuracy = PositionAccuracy.High;


  6.     Geoposition geoposition = await geolocator.GetGeopositionAsync();


  8.     return geoposition.Coordinate;

  9. }

We will be adding follow-up posts that take a deeper look at the new APIs, and how you can use them in advanced scenarios in your Windows Phone 8 apps.


Tips for using Rooms on other phones

Tips for using Rooms on other phones:
[This post was written by Lavanya Vasudevan, program manager for the Rooms feature in Windows Phone 8.]
What if someone I want to invite to my new Room doesn’t have Windows Phone 8?
It’s a good question, and as program manager for the feature, one I often get. As Juliette wrote in her post, Rooms lets you share notes, a calendar, photos, and participate in a group chat with people you choose. As you might guess, the feature works best when everyone has Windows Phone 8.
But it doesn’t mean friends and family are shut out if they don’t. With the exception of group chat, Rooms features are all available on other devices. So even if your mom’s on iPhone, your daughter has a Windows Phone 7, and your cousin has a Surface tablet, they can still join the fun (once they accept the invitation on their phones). Here’s how.
On Windows Phone 7, iPhone, or a Windows 8 device: Add your Microsoft account as an email account on your device. Then the room calendar will show up alongside your other calendars, with the same name as the room.
On Android: First get the free Hotmail app from Google Play, and sign in to the app with your Microsoft account. Then go to the calendar app on your device to turn on the room calendar. It will show up with the same name as the room. Note: Due to differences in software versions and devices, not all features may work exactly as they do on Windows Phone 8.
Photos and videos
On Windows Phone 7, iPhone, Android, or a Windows 8 device: Get the free SkyDrive app from your app store, and sign in to the app with your Microsoft account. The room photos will show up as a shared folder, with the same name as the room.
On Windows Phone 7, iPhone, Android, or a Windows 8 device: Get the free OneNote app from your app store, and sign in to the app with your Microsoft account. The room notes will show up as a shared notebook, with the same name as the room.
See also: Rooms on Windows Phone 8 and iPhone


New Office Visio Stencil

New Office Visio Stencil:

This stencil contains more than 300 icons to help you create visual representations of your Microsoft Office and Exchange Server architecture.

Creating visual representations of your Microsoft Office and Exchange Server architecture is a helpful way to communicate your deployment. This Visio stencil provides more than 300 icons -- many depicting servers, applications, and services -- that you can use in architecture diagrams, charts, and posters. These icons are primarily centered around Lync, SharePoint, and Exchange technologies and features.

Download New Office Visio Stencil from Official Microsoft Download Center

DIGITAL JUICE Reader for Windows Phone 7.5 or higher Reader for Windows Phone 7.5 or higher:
Leonardo Amaya has created a news reader for Windows Phone, without me even knowing it! How cool is that. Open-mouthed smile

“This is a simple news reader from One of the most important news sites about the entire Windows ecosystem.”
Includes my twitter feed too Ver 2.0
-Added the ability to see a preview of the news.
-Added the ability to view on the web, pin to start and share news
80852e6e-8edf-4956-992c-da5eb378ded9 a6943cde-57bc-451b-9332-35008388417f        b1746964-056d-4f55-b405-1ec8455df483 Reader  Windows Phone Apps+Games Store (United States)


Windows MultiPoint Server 2012 Evaluation

Windows MultiPoint Server 2012 Evaluation:

Windows MultiPoint Server 2012 is a shared resource computing technology that delivers low cost shared computing primarily for educational environments

Windows® MultiPoint Server 2012 is the third version of a Windows product primarily designed for educational institutions that allows multiple users to simultaneously share one computer. Users have their own independent and familiar Windows computing experience, using their own monitor, keyboard and mouse directly connected to the host computer. Windows MultiPoint Server 2012 enables more users to access technology at a lower total cost of ownership.

Designed for non-technical users, it is simple to manage and use. Based on the latest Windows technology it can run the latest Windows applications. Support can be obtained through Microsoft or an authorized partner, and schools have access to the latest updates with the confidence that they are getting the experience they expect.

Download Windows MultiPoint Server 2012 Evaluation from Official Microsoft Download Center


System Center 2012 Monitoring Pack for Microsoft Windows Server 2012 Remote Desktop Services

System Center 2012 Monitoring Pack for Microsoft Windows Server 2012 Remote Desktop Services:

The Remote Desktop Services Management Pack helps you manage your computers that are running Remote Desktop Services on Windows Server 2012 by monitoring the health of Remote Desktop Services role services.

The Remote Desktop Services Management Pack helps you manage your computers that are running Remote Desktop Services on Windows Server 2012 by monitoring the health of Remote Desktop Services role services.
Feature Summary
This management pack provides monitoring of the following Remote Desktop Services role services:

  • RD Session Host

  • RD Virtualization Host

  • RD Licensing

  • RD Gateway

  • RD Connection Broker

  • RD Web Access

Download System Center 2012 Monitoring Pack for Microsoft Windows Server 2012 Remote Desktop


Almost All of the First 50 Billion Groups Have Order 1024

Almost All of the First 50 Billion Groups Have Order 1024:

MathML-enabled post (click for more details).

Here’s an incredible fact: of the 50 billion or so groups of order at
most 2000, more than 99% have order 1024. This was
announced here:

Hans Ulrich Besche, Bettina Eick, E.A. O’Brien,
The groups of order at most 2000.
Electronic Research Announcements of the American Mathematical
7 (2001), 1–4.

By no coincidence, the paper was submitted in the year 2000. The real
advance was not that they had got up to order 2000, but that they had ‘developed
practical algorithms to construct or enumerate the groups of a given

I learned
this amazing nugget from a
MathOverflow answer
Ben Fairbairn.

You probably recognized that 1024=2 10. A finite group is called a
‘2-group’ if the order of every element is a power of 2, or equivalently if the
order of the group is a power of 2. So as Ben points out, what this computation
suggests is that almost every finite group is a 2-group.

Does anyone know whether there are general results making this precise? Specifically, is it true that

number of 2-groups of order  ≤Nnumber of groups of order  ≤N→1

as N→∞?


Multiple recurrence in quasirandom groups

Multiple recurrence in quasirandom groups:
I’ve just uploaded to the arXiv my joint paper with Vitaly Bergelson, “Multiple recurrence in quasirandom groups“, which is submitted to Geom. Func. Anal.. This paper builds upon a paper of Gowers in which he introduced the concept of a quasirandom group, and established some mixing (or recurrence) properties of such groups. A {D}-quasirandom group is a finite group with no non-trivial unitary representations of dimension at most {D}. We will informally refer to a “quasirandom group” as a {D}-quasirandom group with the quasirandomness parameter {D} large (more formally, one can work with a sequence of {D_n}-quasirandom groups with {D_n} going to infinity). A typical example of a quasirandom group is {SL_2(F_p)} where {p} is a large prime. Quasirandom groups are discussed in depth in this blog post. One of the key properties of quasirandom groups established in Gowers’ paper is the following “weak mixing” property: if {A, B} are subsets of {G}, then for “almost all” {g \in G}, one has

\displaystyle  \mu( A \cap gB ) \approx \mu(A) \mu(B) \ \ \ \ \ (1)

where {\mu(A) := |A|/|G|} denotes the density of {A} in {G}. Here, we use {x \approx y} to informally represent an estimate of the form {x=y+o(1)} (where {o(1)} is a quantity that goes to zero when the quasirandomness parameter {D} goes to infinity), and “almost all {g \in G}” denotes “for all {g} in a subset of {G} of density {1-o(1)}“. As a corollary, if {A,B,C} have positive density in {G} (by which we mean that {\mu(A)} is bounded away from zero, uniformly in the quasirandomness parameter {D}, and similarly for {B,C}), then (if the quasirandomness parameter {D} is sufficiently large) we can find elements {g, x \in G} such that {g \in A}, {x \in B}, {gx \in C}. In fact we can find approximately {\mu(A)\mu(B)\mu(C) |G|^2} such pairs {(g,x)}. To put it another way: if we choose {g,x} uniformly and independently at random from {G}, then the events {g \in A}, {x \in B}, {gx \in C} are approximately independent (thus the random variable {(g,x,gx) \in G^3} resembles a uniformly distributed random variable on {G^3} in some weak sense). One can also express this mixing property in integral form as

\displaystyle  \int_G \int_G f_1(g) f_2(x) f_3(gx)\ d\mu(g) d\mu(x) \approx (\int_G f_1\ d\mu) (\int_G f_2\ d\mu) (\int_G f_3\ d\mu)

for any bounded functions {f_1,f_2,f_3: G \rightarrow {\bf R}}. (Of course, with {G} being finite, one could replace the integrals here by finite averages if desired.) Or in probabilistic language, we have

\displaystyle  \mathop{\bf E} f_1(g) f_2(x) f_3(gx) \approx \mathop{\bf E} f_1(x_1) f_2(x_2) f_3(x_3)

where {g, x, x_1, x_2, x_3} are drawn uniformly and independently at random from {G}.
As observed in Gowers’ paper, one can iterate this observation to find “parallelopipeds” of any given dimension in dense subsets of {G}. For instance, applying (1) with {A,B,C} replaced by {A \cap hB}, {C \cap hD}, and {E \cap hF} one can assert (after some relabeling) that for {g,h,x} chosen uniformly and independently at random from {G}, the events {g \in A}, {h \in B}, {gh \in C}, {x \in D}, {gx \in E}, {hx \in F}, {ghx \in H} are approximately independent whenever {A,B,C,D,E,F,H} are dense subsets of {G}; thus the tuple {(g,h,gh,x,gh,hx,ghx)} resebles a uniformly distributed random variable in {G^7} in some weak sense.

However, there are other tuples for which the above iteration argument does not seem to apply. One of the simplest tuples in this vein is the tuple {(g, x, xg, gx)} in {G^4}, when {g, x} are drawn uniformly at random from a quasirandom group {G}. Here, one does not expect the tuple to behave as if it were uniformly distributed in {G^4}, because there is an obvious constraint connecting the last two components {gx, xg} of this tuple: they must lie in the same conjugacy class! In particular, if {A} is a subset of {G} that is the union of conjugacy classes, then the events {gx \in A}, {xg \in A} are perfectly correlated, so that {\mu( gx \in A, xg \in A)} is equal to {\mu(A)} rather than {\mu(A)^2}. Our main result, though, is that in a quasirandom group, this is (approximately) the only constraint on the tuple. More precisely, we have

Theorem 1 Let {G} be a {D}-quasirandom group, and let {g, x} be drawn uniformly at random from {G}. Then for any {f_1,f_2,f_3,f_4: G \rightarrow [-1,1]}, we have

\displaystyle  \mathop{\bf E} f_1(g) f_2(x) f_3(gx) f_4(xg) = \mathop{\bf E} f_1(x_1) f_2(x_2) f_3(x_3) f_4(x_4) + o(1)

where {o(1)} goes to zero as {D \rightarrow \infty}, {x_1,x_2,x_3} are drawn uniformly and independently at random from {G}, and {x_4} is drawn uniformly at random from the conjugates of {x_3} for each fixed choice of {x_1,x_2,x_3}.

This is the probabilistic formulation of the above theorem; one can also phrase the theorem in other formulations (such as an integral formulation), and this is detailed in the paper. This theorem leads to a number of recurrence results; for instance, as a corollary of this result, we have

\displaystyle  \mu(A) \mu(B)^2 - o(1) \leq \mu( A \cap gB \cap Bg ) \leq \mu(A) \mu(B) + o(1)

for almost all {g \in G}, and any dense subsets {A, B} of {G}; the lower and upper bounds are sharp, with the lower bound being attained when {B} is randomly distributed, and the upper bound when {B} is conjugation-invariant.
To me, the more interesting thing here is not the result itself, but how it is proven. Vitaly and I were not able to find a purely finitary way to establish this mixing theorem. Instead, we had to first use the machinery of ultraproducts (as discussed in this previous post) to convert the finitary statement about a quasirandom group to an infinitary statement about a type of infinite group which we call an ultra quasirandom group (basically, an ultraproduct of increasingly quasirandom finite groups). This is analogous to how the Furstenberg correspondence principle is used to convert a finitary combinatorial problem into an infinitary ergodic theory problem.

Ultra quasirandom groups come equipped with a finite, countably additive measure known as Loeb measure {\mu_G}, which is very analogous to the Haar measure of a compact group, except that in the case of ultra quasirandom groups one does not quite have a topological structure that would give compactness. Instead, one has a slightly weaker structure known as a {\sigma}-topology, which is like a topology except that open sets are only closed under countable unions rather than arbitrary ones. There are some interesting measure-theoretic and topological issues regarding the distinction between topologies and {\sigma}-topologies (and between Haar measure and Loeb measure), but for this post it is perhaps best to gloss over these issues and pretend that ultra quasirandom groups {G} come with a Haar measure. One can then recast Theorem 1 as a mixing theorem for the left and right actions of the ultra approximate group {G} on itself, which roughly speaking is the assertion that

\displaystyle  \int_G f_1(x) L_g f_2(x) L_g R_g f_3(x)\ d\mu_G(x) \approx 0 \ \ \ \ \ (2)

for “almost all” {g \in G}, if {f_1, f_2, f_3} are bounded measurable functions on {G}, with {f_3} having zero mean on all conjugacy classes of {G}, where {L_g, R_g} are the left and right translation operators

\displaystyle  L_g f(x) := f(g^{-1} x); \quad R_g f(x) := f(xg).

To establish this mixing theorem, we use the machinery of idempotent ultrafilters, which is a particularly useful tool for understanding the ergodic theory of actions of countable groups {G} that need not be amenable; in the non-amenable setting the classical ergodic averages do not make much sense, but ultrafilter-based averages are still available. To oversimplify substantially, the idempotent ultrafilter arguments let one establish mixing estimates of the form (2) for “many” elements {g} of an infinite-dimensional parallelopiped known as an IP system (provided that the actions {L_g,R_g} of this IP system obey some technical mixing hypotheses, but let’s ignore that for sake of this discussion). The claim then follows by using the quasirandomness hypothesis to show that if the estimate (2) failed for a large set of {g \in G}, then this large set would then contain an IP system, contradicting the previous claim.

Idempotent ultrafilters are an extremely infinitary type of mathematical object (one has to use Zorn’s lemma no fewer than three times just to construct one of these objects!). So it is quite remarkable that they can be used to establish a finitary theorem such as Theorem 1, though as is often the case with such infinitary arguments, one gets absolutely no quantitative control whatsoever on the error terms {o(1)} appearing in that theorem. (It is also mildly amusing to note that our arguments involve the use of ultrafilters in two completely different ways: firstly in order to set up the ultraproduct that converts the finitary mixing problem to an infinitary one, and secondly to solve the infinitary mixing problem. Despite some superficial similarities, there appear to be no substantial commonalities between these two usages of ultrafilters.) There is already a fair amount of literature on using idempotent ultrafilter methods in infinitary ergodic theory, and perhaps by further development of ultraproduct correspondence principles, one can use such methods to obtain further finitary consequences (although the state of the art for idempotent ultrafilter ergodic theory has not advanced much beyond the analysis of two commuting shifts {L_g, R_g} currently, which is the main reason why our arguments only handle the pattern {(g,x,xg,gx)} and not more sophisticated patterns).

We also have some miscellaneous other results in the paper. It turns out that by using the triangle removal lemma from graph theory, one can obtain a recurrence result that asserts that whenever {A} is a dense subset of a finite group {G} (not necessarily quasirandom), then there are {\gg |G|^2} pairs {(x,g)} such that {x, gx, xg} all lie in {A}. Using a hypergraph generalisation of the triangle removal lemma known as the hypergraph removal lemma, one can obtain more complicated versions of this statement; for instance, if {A} is a dense subset of {G^2}, then one can find {\gg |G|^2} triples {(x,y,g)} such that {(x,y), (gx, y), (gx, gy), (gxg^{-1}, gyg^{-1})} all lie in {A}. But the method is tailored to the specific types of patterns given here, and we do not have a general method for obtaining recurrence or mixing properties for arbitrary patterns of words in some finite alphabet such as {g,x,y}.

We also give some properties of a model example of an ultra quasirandom group, namely the ultraproduct {SL_2(F)} of {SL_2(F_{p_n})} where {p_n} is a sequence of primes going off to infinity. Thanks to the substantial recent progress (by Helfgott, Bourgain, Gamburd, Breuillard, and others) on understanding the expansion properties of the finite groups {SL_2(F_{p_n})}, we have a fair amount of knowledge on the ultraproduct {SL_2(F)} as well; for instance any two elements of {SL_2(F)} will almost surely generate a spectral gap. We don’t have any direct application of this particular ultra quasirandom group, but it might be interesting to study it further.

Filed under: math.CO, math.DS, math.GR, paper Tagged: quasirandom groups, ultrafilters, ultraproducts, Vitaly Bergelson