Just got a new HP ENVY 15 and so far I love it. Well, except for one little thing that drove my crazy.
Not sure what those pesky engineers at HP were thinking when they decided to change the default way the function (fn) keys work on the newer HP ENVY laptops. By default you do not need to press the (fn) key to get function key functionality.
Example: If you press F5 (even in a browser window) it turns the backlit keyboard on and off, rather than refreshing the browser. Really???
This "amazing" technology is called "Action Keys Mode", and the good news is that it is very easily turned off to get your laptop back to working the standard way of having to press the fn key.
Steps to fix:
- Shut Down your computer completely. Don't put in Sleep or Hibernate
- Press Power button to start
- Immediately press F10 key a few times
- This will start the BIOS
- Go to 3rd page (System Configuration). Press right arrow key to go to next page
- Select the "Action Keys Mode". Press ENTER. Select DISABLE
- Save and Exit
Nifty,
Thomas
Saturday, January 25, 2014
Saturday, January 18, 2014
Useful RegEx expression for text manipulation
When doing text manipulation, there are a number of regular expressions (RegEx) that I tend to use over and over again. Maybe you'll find them useful too.
Nifty,
/T
Problem | Find | Replace | Example: Before | Example: After |
Move text in brackets
from end of line to beginning of line
| ^(.*) (\[.*\])$ | \2: \1 | Yada yada [BC4]
Yada yada [POS123]
| [BC4]: Yada yada
[POS123]: Yada yada
|
Convert dates from
MM-DD-YYYY to YYYYMMDD
| ^(..)-(..)-(....) | \3\1\2 | 11-30-1998
01-23-2004
| 19981130
20040123
|
Clean phone numbers
(remove space, paren, dash, period)
| [ \-\.\(\)] | N/A | 999.888.7777
(555) 444-3333
| 9998887777
5554443333
|
Nifty,
/T
Friday, January 10, 2014
Deleting multiple empty Google contact groups
My beloved Google Contacts suddenly have ~300 empty "Starred in Android" groups. Not sure how or why they showed up, but many people who have the very same problem are pointing fingers at Nook, and yes, I was using a Nook at the time it occurred.
Anyway, there does not seem to be an easy way to delete all these empty contact groups except manually one by one, which I simply refuse to do. So I wrote a simple script for Google Apps Script to solve the problem. The script is listed below.
Disclaimer: I have tested the script many ways, but please use at your own risk !
To run simply:
- Go to https://script.google.com,
- Start a blank project, and copy/paste the script below
- Run once with ContactsApp.deleteContactGroup commented out (as is)
- Press Ctrl-Enter to view logs to make sure everything looks fine.
- Uncomment the ContactsApp.deleteContactGroup line, and run again to delete empty groups.
- If you want to remove all empty groups independent of name, uncomment the line referencing "Starred in Android"
Nifty,
Thomas
// ============================================================
// What: Deletes all empty "Starred in Android' contact groups from your Google contacts
// How: 1) Run once to verify that correct groups will be deleted.
// Review log file (press ctrl-enter)
// 2) Uncomment deleteContactGroup line below and rerun.
//
// Jan 2014, Thomas Gemal
// ============================================================
function DeleteAllEmptyGroups() {
// Grab all contact groups
var myContactGroups = ContactsApp.getContactGroups();
// Use this to limit number of groups processed if performance is an issue
var MAXCOUNT = 1000;
var count = 0;
// For each contact group
for(var i = 0; i < myContactGroups.length; i++) {
// Only delete MAXCOUNT groups at a time (since execution can take long)
if (count == MAXCOUNT) {
break;
}
// Get name of a contact group
var group = myContactGroups[i];
var group_name = group.getName();
// Keep this code to only deal with "Starred in Android".
// To delete all empty groups, simply comment this 'if' out
if (group_name != "Starred in Android") {
Logger.log(Utilities.formatString("%s: Skipped. Not SiA", group_name));
continue;
}
// Get number of contacts for a group
var num_contacts = ContactsApp.getContactsByGroup(group).length;
// We are only looking for empty groups
if (num_contacts == 0) {
// Ignore special groups
if (group_name.substring(0,13) != "System Group:") {
// Log that we want to delete
Logger.log(Utilities.formatString("%s (%d): DELETE",group_name,num_contacts));
count++;
// !!!!! Uncomment line below to physically delete the groups !!!!!
// Make sure you have first verified that list to delete is OK
// ContactsApp.deleteContactGroup(group);
} else {
Logger.log(Utilities.formatString("%s (%d): Skipped. System group",group_name,num_contacts));
}
} else {
Logger.log(Utilities.formatString("%s (%d): Skipped. Not empty",group_name,num_contacts));
}
}
Logger.log(Utilities.formatString("Empty groups processed: %d", count));
}
Anyway, there does not seem to be an easy way to delete all these empty contact groups except manually one by one, which I simply refuse to do. So I wrote a simple script for Google Apps Script to solve the problem. The script is listed below.
Disclaimer: I have tested the script many ways, but please use at your own risk !
To run simply:
- Go to https://script.google.com,
- Start a blank project, and copy/paste the script below
- Run once with ContactsApp.deleteContactGroup commented out (as is)
- Press Ctrl-Enter to view logs to make sure everything looks fine.
- Uncomment the ContactsApp.deleteContactGroup line, and run again to delete empty groups.
- If you want to remove all empty groups independent of name, uncomment the line referencing "Starred in Android"
Nifty,
Thomas
// ============================================================
// What: Deletes all empty "Starred in Android' contact groups from your Google contacts
// How: 1) Run once to verify that correct groups will be deleted.
// Review log file (press ctrl-enter)
// 2) Uncomment deleteContactGroup line below and rerun.
//
// Jan 2014, Thomas Gemal
// ============================================================
function DeleteAllEmptyGroups() {
// Grab all contact groups
var myContactGroups = ContactsApp.getContactGroups();
// Use this to limit number of groups processed if performance is an issue
var MAXCOUNT = 1000;
var count = 0;
// For each contact group
for(var i = 0; i < myContactGroups.length; i++) {
// Only delete MAXCOUNT groups at a time (since execution can take long)
if (count == MAXCOUNT) {
break;
}
// Get name of a contact group
var group = myContactGroups[i];
var group_name = group.getName();
// Keep this code to only deal with "Starred in Android".
// To delete all empty groups, simply comment this 'if' out
if (group_name != "Starred in Android") {
Logger.log(Utilities.formatString("%s: Skipped. Not SiA", group_name));
continue;
}
// Get number of contacts for a group
var num_contacts = ContactsApp.getContactsByGroup(group).length;
// We are only looking for empty groups
if (num_contacts == 0) {
// Ignore special groups
if (group_name.substring(0,13) != "System Group:") {
// Log that we want to delete
Logger.log(Utilities.formatString("%s (%d): DELETE",group_name,num_contacts));
count++;
// !!!!! Uncomment line below to physically delete the groups !!!!!
// Make sure you have first verified that list to delete is OK
// ContactsApp.deleteContactGroup(group);
} else {
Logger.log(Utilities.formatString("%s (%d): Skipped. System group",group_name,num_contacts));
}
} else {
Logger.log(Utilities.formatString("%s (%d): Skipped. Not empty",group_name,num_contacts));
}
}
Logger.log(Utilities.formatString("Empty groups processed: %d", count));
}
Subscribe to:
Posts (Atom)