Monday, January 11, 2010

Google Contacts Sync Trick

I have Google Sync enabled so I can sync my contacts and calendar with my iPhone. It makes it easy to maintain my contacts in Gmail and have them sync instantly with my phone without a cable. It's also great having the peace of mind that if my phone breaks or is lost, all my contacts are backed up. My one issue is that I have to carefully choose which contacts I save because when I clutter up my Google contacts it makes my phone hard to use.

Anytime you email someone, they get added to the All Contacts group. If you email them often, and they aren't in your My Contacts group, they get added to your Suggested Contacts group. If you add or edit a field in a contact or add it to a group, Google will add it to your My Contacts group and begin to sync it with your mobile device.

You can tell if a contact is in your My Contacts group in two ways. Obviously you can click on your My Contacts group and scroll the list of contacts to find it but most people have a lot of contacts and this can be a pain. If you search for a contact or click on a group to find it, you can tell if it's in your My Contacts group if it's listed after Remove from... in the Groups drop down list.



That is the trick; you can remove a contact from your My Contacts group after you've cleaned up the name, added some more information or added it to a group. Keeping it out of your My Contacts group will prevent it from syncing.

Why is this useful you ask? There are lots of reason you might not want to sync some contacts. Old contacts you want to keep for references but don't need to contact often like past landlords or employers. Exes or international contacts that you rarely call. You can import an email roster for a group you are in and put them in their own group but not your My Contacts group. On the iPhone, and possibly other Exchange ActiveSync (what Google sync is based on) implementations, you can click the groups button on the top left of the contacts screen to search the Gmail Sync Global Address List which includes all your contacts. In a pinch you can always browse to the Google Contacts page to see them all or use the mobile Gmail where auto complete still works for all contacts.


This trick is also a great way to add birthdays to your Google Calendar if you have the contacts birthday calendar turned on. I use it to add young relatives or kids of my friends that don't have their own contact information yet. Make a new contact with just a name and birthday then remove from your My Contacts group. Then you also have a place holder to enter contact information when you get it.

One caveat is that everytime you edit a contact or put it in a group, Google will re-add it to your My Contacts group. A small inconvenience compared to the flexibility this adds.

Thursday, January 7, 2010

iSlate (or whatever the Apple calls their tablet)

Everyone is talking about the upcoming Apple tablet (possibly named the iSlate) and the announcement from Apple on January 27th. Many bloggers are trying to predict it's specs and features. I figure I may as well throw my idea out there. One idea is that, while it'll be relatively easy to port, iPhone OS apps to the tablet, they won't be compatible. I completely disagree.

Apple boasts all the time how many apps they have and it would be a HUGE advantage to release the tablet with all these apps. If Apple keeps the tablet resolution the same ratio of the iPhone, say 4 times larger (1920X1280), they could easily resize all the images with little degradation and, with a little clever software, make all the current apps work. I am not saying the tablet will use the exact same SDK, but it could be a superset of the iPhone OS SDK. Application developers could optionally repackage their apps to take advantage of the new tablet features (whatever they are) and include correctly sized images.

I predict they will make the devices app compatible with at least the current line of iPhones/iPod Touches. At some point the two devices may branch apart so newer iPhone OS apps would not necessarily work on the tablet but they would still share enough to make developing for both fairly easy. So contrary to what most say, I am predicting the tablet to be a giant iPhone OS based device. It'll have a higher resolution screen, a redesigned home screen and additional UI features, but all current iPhone OS UI features will be supported. It's value would be:
  • Full 1080p HD video (notice the above resolution),
  • A great user experience for newspapers/magazines with subscriptions available through the iTunes store
  • Native e-book reader using an Apple format available through the iTunes store
  • An even better mobile browsing experience
  • More convenient than a Macbook; always on (like iPhone) and smaller/lighter
  • Faster processor, more RAM and larger hard drive than the iPhone/iPod Touch
Based on nothing except that it's what I would do....

Saturday, November 15, 2008

No more virtual memory!

Virtual memory is exactly what it sounds like, fake memory. A simple example is, say you have 4 MB of memory and you want to run 5 programs each needing 1 MB of memory. When you run the 5th program the operating system takes 1 MB of memory that hasn't been used in a while and writes it to the hard drive. This frees up the memory allowing the 5th program to run. Now if another program requests the memory that is on disk, the operating system has to swap something with it. This is slow. For most users, the operating system manages it and you never have to think about it. Virtual memory is great and it's allowed people to multitask easier without having to worry about memory. But....

Memory is so incredibly cheap these days, I recently upgraded to 8GB of memory and turned off virtual memory. My thinking is before I had 4GB of memory and 4GB of virtual memory and my system ran great. Now that I have 8GB I shouldn't need any virtual memory. Why not have both? Windows is notorious of being a memory hog, the more there is, the more it uses. Disabling virtual memory is the only way to force windows and other programs to use only physical memory. Have you ever heard your hard drive spin up when switching programs? Not me anymore!


Friday, May 23, 2008

New Weezer Album

As many of you may know, Weezer is my favorite band. In eleven days (June 3 2008) they are releasing their next album, "Weezer". It will their third self titled album, this time nicknamed "The Red Album".


The video for their single, "Pork and Beans", came out on YouTube today! If you keep up on the internet's viral videos, you'll find it pretty funny.



Below is a list of videos I compiled that are included (in order of first appearance):

Is it sad or impressive I recognized 80% of them? Please tell me if you know any that I've missed. :-)

Thursday, May 15, 2008

Finicky Configuration.RegexStringValidator

I was working on a custom ConfigurationElement for an HttpModule and I needed two properties. They both needed to be in the form of a URL (but only the host) and one was required. Regular expressions are a great tool for easily verifying a string is in a certain format and Microsoft was nice enough to include the RegexStringValidatorAttribute. So I tried this:

[ConfigurationProperty("Url", IsRequired = true)]
[RegexStringValidator(@"^https?://[A-Za-z\d\-_\.]+$")]

[ConfigurationProperty("Url2", IsRequired = false)]
[RegexStringValidator(@"^https?://[A-Za-z\d\-_\.]+$")]

If you know regular expressions you can see a simple URL like "http://www.jessemandel.com" should validate. Neither one worked, plus it gave me the misleading error that "http://www.jessemandel.com" wasn't validating.

After a bit of fiddling around, I figured out that at some point the RegexStringValidator is validating the default value. In this case it's an empty string which is not valid. This makes sense for Url2 if it's not provided but it told me "http://www.jessemandel.com" was invalid.

The second one was an easy fix. Since it's not required, I changed the regular expression to allow "" and now it works.

[ConfigurationProperty("Url2", IsRequired = false)]
[RegexStringValidator(@"^(https?://[A-Za-z\d\-_\.]+)?$")]

I can't do the same for the first one because I don't want an empty string to be valid. It's required so it's never empty but I guess when it initializes it loads the default value. Adding a DefaultValue that is valid does the trick.

[ConfigurationProperty("Url", IsRequired = true, DefaultValue = "http://localhost")]
[RegexStringValidator(@"^https?://[A-Za-z\d\-_\.]+$")]

You don't have to worry about the DefaultValue much because if you do not include the property at all you'll get the error, "Required attribute 'Url' not found." and if you include an invalid Url, you'll get the error, "The value does not conform to the validation regex string '^https?://[A-Za-z\d\-_\.]+$'."

Thursday, February 14, 2008

PlascoEnergy Group

PlascoEnergy GroupThis company is amazing! They take trash and convert it into energy using a process called plasma gasification. Plasma gasification uses plasma (super heated gas) to break down (not burn) trash into its basic elements. This allows all kinds of trash to be disposed of. Things like biomedical waste, toxic chemicals, concrete, metal, plastics.

Plasco Energy Group has the only full scale working prototype of its kind. What makes Plasco unique is how it organizes the material afterwards. Plasco uses a series of tubes (like the internet!) to sort the material so it is more useful and sends it through turbines to create energy. The most amazing part is once their power plant gets running, it produces enough electricity to sustain itself and put some power back into the grid. Plus after the process is complete, there is only about 0.2% waste product.

Check out the video by the Discovery Channel

Tuesday, February 5, 2008

Internet News Readers

I read a lot of news on the internet. I also follow a few comics and read programming articles. I keep up with the TED.com videos. I have a few friends with blogs that I read. All in all there are 50 sites I want to keep track of and I am always adding more.

How do I do it? Sure I could bookmark them all and check them on a regular basis but 50+ sites would take forever! Luckily there is an easier way, feeds.

There are two standards for feeds, Atom and RSS. There are a few differences but for the most part, they function the same. They are an XML file that lists the (articles, comics, videos, blog posts) on a given web site. Now using a reader, you can subscribe to as many of these feeds as you want and have one place to check all you favorite websites for updates.

There are many free news readers available. Personally I use Google Reader. It has a slick, intuitive interface and stores my subscriptions online so I can log in from anywhere and check them. You can also use Outlook, Thunderbird, My Yahoo!, or any other news reader. You can even make live bookmarks in Firefox or add feeds directly to IE7.

Once you've chosen your reader, look for the universal feed icon Subscribe to my blog or subscribe links to add them to your reader. Try it by subscribing to mine! :-)

-Jesse

PS- If you run your own feed, there a a tool called Feed Burner that allows you to count the number of subscribers you have.