Sunday, March 31, 2013

10 Must-Have Chrome Extensions for Developers

The Mashable published 10 Chrome extensions for web developers and I bet web developers like you yourself must be using some of them. Do you have your own favourite extensions? Do share with us.

  1. Firebug Lite
  2. Web Developer
  3. Session Manager
  4. Clear Cache
  5. Chrome Sniffer
  6. JSONView
  7. Resolution Test
  8. Edit This Cookie
  9. Page Speed Insights
  10. Postman - REST Client

Related Readings:

10 Firefox Add-Ons for Designers

The Mashable published 10 Firefox Add-Ons for Designers and I bet web designers and web developers like you yourself must be using some of them. Do you have your own favourite add-ons? Do share with us.

  1. ColorZilla
  2. Pencil
  3. MeasureIt
  4. Stylish
  5. View Source Chart
  6. Firesizer
  7. HTML Validator
  8. Font Finder
  9. CSS Usage
  10. Tab Mix Plus

Related Readings:

10 Firefox Add-Ons for Developers

The Mashable published 10 Firefox Add-Ons for Developers and I bet web developers like you yourself must be using some of them. Do you have your own favourite add-ons? Do share with us.

  1. Firebug
  2. Web Developer
  3. FireFTP
  4. YSlow
  5. Greasemonkey
  6. JSONView
  7. RESTClient
  8. Empty Cache
  9. JS Deminifier
  10. Fireshot

In my own opinion, HttpFox should be the other worthy mention add-on.

Related Readings:

How does it look like in major cities at night without lights?

Ever wonder how does it look like at night without lights? A New York City-based photographer who spent the last two years documenting glaciers around the world produced his impression in major cities - dark, star-lighted sky, and sometimes can be cold.

Notify Me! Android App

A FREE Android app that lets you create a list of apps that are allowed to light the screen up and show their notifications on it as a popup in front of your lock screen.

More information here:

Wednesday, March 27, 2013

Tuesday, March 26, 2013

18 Inspiring Examples of Websites Developed Using HTML5

Looking for HTML5 websites for inspiration? Webrevisions published an article recently introducing 18 such websites.

Friday, March 22, 2013

MSSQL: Update running sequence / number

Let's say we have a table with a column of numbers and for some reason, they are not in running sequence. Instead of editing the rows manually, we can actually do it using a SQL script.

Hopefully the following helps.

--Create some test data
IF EXISTS (SELECT 1 FROM sys.objects WHERE object_id = OBJECT_ID(N'tblTest') AND type in (N'U')) DROP TABLE tblTest
GO
CREATE TABLE tblTest (Label VARCHAR(20), OriginalOrderNo INT, OrderNo INT)
INSERT INTO tblTest (Label, OriginalOrderNo, OrderNo) VALUES ('four', 4, 4)
INSERT INTO tblTest (Label, OriginalOrderNo, OrderNo) VALUES ('seven', 7, 7)
INSERT INTO tblTest (Label, OriginalOrderNo, OrderNo) VALUES ('one', 1, 1)
INSERT INTO tblTest (Label, OriginalOrderNo, OrderNo) VALUES ('two', 2, 2)
INSERT INTO tblTest (Label, OriginalOrderNo, OrderNo) VALUES ('five', 5, 5)
INSERT INTO tblTest (Label, OriginalOrderNo, OrderNo) VALUES ('nine', 9, 9)
GO
--BEFORE
SELECT * FROM tblTest ORDER BY OrderNo
GO
--DO the UPDATE
UPDATE t1 SET t1.OrderNo = t2.Sequence
FROM tblTest t1 INNER JOIN (
 SELECT Label, OrderNo, ROW_NUMBER() OVER (ORDER BY OrderNo) AS 'Sequence'
 FROM tblTest) AS t2 ON t1.OrderNo = t2.OrderNo
GO
--AFTER
SELECT * FROM tblTest ORDER BY OrderNo
GO
IF EXISTS (SELECT 1 FROM sys.objects WHERE object_id = OBJECT_ID(N'tblTest') AND type in (N'U')) DROP TABLE tblTest
GO

Wednesday, March 20, 2013

MSSQL: Get schema owner of database tables

To retrieve a list of schema owner of database tables, try the following code snippet. Hope it help.s

SELECT t.object_id AS 'TableID', t.name AS 'TableName', s.schema_id AS 'SchemaID', s.name AS 'SchemaOwner'
FROM sys.tables t inner join sys.schemas s ON t.schema_id = s.schema_id
ORDER by t.name

Saturday, March 16, 2013

Introducing Samsung GALAXY S 4

This is really looking like Samsung is building its own ecosystem. Looks like there is going to have more and more Samsung in-house apps and a growing personalisation going on in an Android phone.

Samsung S IV accessories announced

Samsung introduced together with the Samsung Galaxy S 4, 11 accessories for the Samsung Galaxy S 4. The accessories are: S Band, S View Cover, Game Pad, Wireless Charging Pad / Cover, Flip Cover, Pouch, Protective Cover+, Headset, Extra Battery Kit, HRM and Body Scale.

Most of the accessories can be used by Samsung’s S-Health 2.0 application.

» Accessories announced by Samsung for the Galaxy S 4 | SamMobile

McDonalds FREE 1,000 Egg McMuffin

McDonalds Singapore is participating its "National Breakfast Day" by giving away 1,000 Egg McMuffinTM absolutely FREE per participating stores, while stocks last, on 18 March 2013 (coming Monday).


How does it work?

McDonalds will give away Free Egg McMuffinTM Giveaway coupon at its participating stores on 18 March 2013. Recipients will then have to present the original coupon on the same day in the morning for redemption.

More information on the giveaway can be found at www.mcdonalds.com.sg/nbd/.

Friday, March 15, 2013

List of known domain names blocked by Kaspersky products

I am putting across a serious note on Kaspersky products blocking domains including Google, Facebook and Twitter. From my experiment, it seems this is true when I am using Google Chrome browser. Have tried to contact Kaspersky via Twitter but am ignored completely. A quick web search on the world wide web reaffirmed that this is not affecting just me, but possibly thousands others as well.

The Kaspersky product I am using is Kaspersky Endpoint Security 8 with the latest database definitions installed as of today. I am not too sure if other Kaspersky variant products are having similar restrictions too.

Some of the confirmed legitimate domains blocked are the following:

Last Updated: 25 March 2013, 3:00 PM (GMT+8)

VictimDomain Remark Added on
Facebook*.akamaihd.net/* Facebook photos 15 Mar 2013
Facebook*.facebook.com/* General website 15 Mar 2013
Get Satisfaction*.cloudfront.net/* Resources 19 Mar 2013
Google*.ggpht.com/* Resources 15 Mar 2013
Google*.google.com/* Several Google services 15 Mar 2013
Google*.googleapis.com/* Resources e.g. Analytics 15 Mar 2013
Google*.googleusercontent.com/* Resources 15 Mar 2013
Google*.gstatic.com/* Resources 15 Mar 2013
Google*.googlegroups.com/* Files hosted may have problems 23 Mar 2013
Microsoft*.ms/* Resources 25 Mar 2013
Microsoft*.wlxrs.com/* Resources 25 Mar 2013
Pinterest*.pinimg.com/* Resources 19 Mar 2013
Twitter*.twimg.com/* Twitter photos 15 Mar 2013
UserVoice*.uservoice.com/* General website 17 Mar 2013
YouTube*.youtube.com/* General website 15 Mar 2013
YouTube*.ytimg.com/* YouTube photos 15 Mar 2013

Right now, I have to add the above domain names (will be growing) as trusted urls to be able to consume content normally.

Please let me know any other domains blocked by Kaspersky so I can add them here too to benefit everyone.

Why is Google killing Google Reader?

If you are still unware, Google will be axing Google Reader on 1 July 2013. Do participate on online petitions hoping the popular service will stay!

Ever wonder why is Google killing Google Reader? Here is a word from former Google Reader Product Manager, Brian Shih, on this.

Join Online Petition to Keep Google Reader Alive

Since Google Reader started 8 years ago, I have been a great fan of it, using it on a daily basis. It is indeed sad to hear we will have to bid farewell to Google Reader on 1 July 2013. Immediately after the closure is announced, online petitions started and quickly begin to receive signatures in tens of thousands on same day. Do participate in them and hopefully Google will listen for once.

  1. Petition on Change.Org
    Objective is to hope Google Reader will stay alive.

  2. Petition on keepgooglereader.com
    Objective is to get Google Reader open sourced so enthusiasts can run the web application themselves. This is with the understanding that Google will not reverse its decision to axe Reader.

I trust Google to product excellent product and not to discontinue just because it is not generating money out of it.

Thursday, March 14, 2013

Goodbye to Google Reader

It is indeed very sad news coming from Google - Google Reader is to be discontinued from 1 July 2013 onwards. This is Google's yet another round of spring cleaning effort.


We launched Google Reader in 2005 in an effort to make it easy for people to discover and keep tabs on their favorite websites. While the product has a loyal following, over the years usage has declined. So, on July 1, 2013, we will retire Google Reader. Users and developers interested in RSS alternatives can export their data, including their subscriptions, with Google Takeout over the course of the next four months.

Google also advised in their support page on how to go about downloading your data so you can bring your RSS subscriptions to a RSS alternative.

The closing of Google Reader must have upset several users including myself and Americans have already started putting up a petition to Keep Google Reader Running. To date, the petition has garnered over 26,000 signatures.

Wednesday, March 13, 2013

Google launches webmasters help for hacked sites

Google launches a new support website to provide help to webmasters if their sites are hacked. For instance, your website will be labelled as "harmful" by Google if it is suspected to hacked.


Google offered several advices and a video for such scenarios. Do watch and read the advices.

Samsung S IV Teaser Video (Part 2)

Samsung released Part 2 of their teaser video to their soon-to-be-announced Samsung S IV phone.

Part 2

You may visit part 1 too.

Sunday, March 10, 2013

Manually download of Android SDK Components (Android SDK platforms)

More information here.

When Responsive Web Design Is Bad For SEO

Insightful article on When Responsive Web Design Is Bad For SEO.

MSSQL: sp_MSforeachdb to loop through all databases without using cursors

sp_MSforeachdb is an undocumented stored procedure since SQL 2005 that can come in real handy, looping through all databases to get information without having to write cursors. The idea of its usage is to use the [?] placeholder and SQL will intelligently do a replace with a database name.

Just some sample usage of sp_MSforeachdb.

--Get all table/columns information from all databases
sp_MSforeachdb 'SELECT * FROM [?].[INFORMATION_SCHEMA].[COLUMNS]'

--Check for orphans login
EXECUTE sp_MSforeachdb 'sp_change_users_login @Action=''report'''

--Get database information - space, name
EXECUTE sp_MSforeachdb 
 'SELECT
  ServerName=@@SERVERNAME, DBName=DB_NAME(), [fileid], CONVERT(DECIMAL(12,2),ROUND([size]/128.000,2)) AS ''SizeMB'',
  SpaceUsedMB = CONVERT(DECIMAL(12,2),ROUND(FILEPROPERTY([name],''SpaceUsed'')/128.000,2)),
  FreeSpaceMB = CONVERT(DECIMAL(12,2),ROUND(([size]-FILEPROPERTY([name],''SpaceUsed''))/128.000,2)) ,
  name, filename
  FROM dbo.sysfiles'

Undocumented may mean it may not be supported in future versions. My last check is sp_MSforeachdb still works for SQL 2008.

Related reading:
  1. MSSQL: sp_MSforeachtable to loop through all tables without using cursors

MSSQL: sp_MSforeachtable to loop through all tables without using cursors

sp_MSforeachtable is an undocumented stored procedure since SQL 2005 that can come in real handy, looping through all tables in a database to get information without having to write cursors. The idea of its usage is to use the [?] placeholder and SQL will intelligently do a replace with a table name.

Just some sample usage of sp_MSforeachtable.

--Check space used for each table in a database
EXECUTE sp_MSforeachtable 'EXECUTE sp_spaceused [?]';

--Check for integrity of tables in a database
EXECUTE sp_MSforeachtable 'DBCC CHECKTABLE ([?])'

Undocumented may mean it may not be supported in future versions. My last check is sp_MSforeachtable still works for SQL 2008.

Related reading:
  1. MSSQL: sp_MSforeachdb to loop through all databases without using cursors

Saturday, March 09, 2013

How to block/unblock Messenger contacts after migration to Skype?

After having moved my messenger to Skype for a few weeks, the experience is like taking 100 steps backwards. Other than once encountering login issues, my impression on Skype has reached new bottom.

On the first day when I first migrated to Skype, messaging my contacts encountered problems. I soon realised that's all because I appeared offline on Messenger previously. A quick resolution not to lose all these contacts is to go back to Messenger, appear online to all contacts, exit from Messenger, then login to Skype again. Why didn't Skype think of this and do a proper synchronise job.

Blocking a messenger contact is so damn difficult on Skype. I repeat again - MESSENGER contact. The reason for repeating is because blocking a Skype contact is a few clicks away within the Skype program itself but NOT for a MESSENGER contact.

To block a messenger contact, you can only do it from Microsoft Live People page.
  1. Login to Windows Live account http://www.outlook.com on your preferred browser.

  2. Click on the down arrow from the top menu followed by the People option.


  3. Then go to Manage > Limit Access.

  4. You may then limit access to selected contacts on this page.

NOTE: It is required to re-login Skype for the block/unblock to take effect.

Linux Cheat Sheet (Command Lines)

# cheat_sheet.org.sh
# (C) William Hackmore, 2010
# The contents of this file are released under the GNU General Public License. Feel free to reuse the contents of this work, as long as the resultant works give proper attribution and are made publicly available under the GNU General Public License.
# Best viewed in emacs org-mode.

* Reference:
** Basics:
*** Getting help:

# View the manual for target command
man command

# Get help with a target command (probably the same as above, but not always):
command -h

# In case you forget the name of a command, print possible commands relating to guess:
apropos guess

# View index of help pages:
info

*** Command Line Utilities:
**** Basic File and Directory Operations:
# Print current working directory:
pwd

# Show files in current directory:
ls

# Show maximum information about all files, including hidden:
ls -a

# Recurse into subdirectories and list those as well:
ls -R

# Move/rename a file or directory (be careful that you don't move the source over a destination with the same name):
mv source destination

# Delete target forever (be very careful), use -r recursive flag for directories:
rm target

# Copy file or directory:
cp source destination

# Mount filesytem:
mount /dev/device_name /media/device_name

# Unmount:
umount /media/device name

# Forensically clone filesystems and do other low-level operations on files. Be careful with this one. Can be destructive:
dd

# Work with filesystems and partitions. (Easier, still quite dangerous):
fdisk

**** System Administration:

# Execute command as an administrator (can be destructive/insecure. Use only for system administration tasks):
sudo command

# Become system administrator:
sudo -s

# Quit system administration:
exit

***** Installing software from a .tgz (also known as a tarball):

# First, unzip the tarball (see section on tar, below)
# Next, move into unzipped directory:
cd software_directory

# Always read README first if it is provided, in case there are any modifications to the procedure outlined below:
cat README

# Automatically check for appropriate configurations and generate a MAKE file in the directory:
./configure

# Compile software. May require sudo:
make

# Move files into their appropriate locations. May also require sudo:
make install

# Clean up files in directory, in case make command fails, or just to remove unnecessary cruft:
make clean

***** Ubuntu/Debian Software repositories:

# Check distro repositories for software updates:
sudo apt-get update

# Download and install updates (update first):
sudo apt-get upgrade

# Search for package in the repositories:
apt-cache search keyword

# Get more detail on one specific package:
apt-cache show package_name

# Download and install a package:
sudo apt-get install package_name

# View the output of a command in a more convenient format:
command | less

**** Working With Files:

# Print a file in terminal:
cat file

# Find files matching filename:
locate filename

# Search through filename for matches to phrase:
grep phrase filename

# Search through output of a command for phrase:
command | grep phrase

**** Working With Processes:

# List all running processes:
ps -e

# Standard system monitor showing a more extensive view of all processes and system resources:
top

# Like top, but with a better, cleaner interface:
htop

# Stop a process from using all system resources and lagging computer:
nice process_name

# Kill misbehaving process (use sparingly, last resort, try 'nice' command first):
pkill process name

# Start a process in the background
command &

# Start a process in the background and have it keep running after you log off
nohup command &

**** Compression and Encryption:

# Make a simple compressed backup of a file or directory:
tar -cvzf backup_output.tgz target_file_or_directory

# Open a compressed .tgz or .tar.gz file:
tar -xvf target.tgz

# Encrypt a file:
gpg -o outputfilename.gpg -c target_file

# Decrypt a file:
gpg -o outputfilename -d target.gpg

# Zip and encrypt a directory simultaneously:
gpg-zip -o encrypted_filename.tgz.gpg -c -s file_to_be_encrypted

*** The Bash shell:
**** File Name expansions:
# Current user's home directory:
~/

# Current directory:
./

# Parent directory:
../

# Or even (Two parent directories down):
../../

# All files in target directory. (Be very careful.):
/*

**** Output Redirects:

# Redirect output of one command into the input of another with a pipe:
command_1 | command_2

# Or even:

command_1 | command_2 | command_3

# Redirect output to a file:
command > file

# Or:

file > file

# Or even, to redirect in a different direction:
file < file

# Append output rather than writing over the target file:

file_or_command >> file

# Works like |, but it writes output to both target and terminal:
tee target

# Redirect standard output and error to /dev/null, where it is deleted.
command > /dev/null 2>&1

**** Controlling Execution:
# Wait until command 1 is finished to execute command 2
command_1 ; command_2

# Or even:
command_1 ; command_2 ; command_3

# && acts like ; but only executes command_2 if command_1 indicates that it succeeded without error by returning 0.
command_1 && command_2

# || acts like && but only executes command_2 if command_1 indicates an error by returning 1.
command_1 || command_2

**** Bash Wildcards:
# Zero or more characters:
*

# Matches "phrase" and any number of trailing characters:
phrase*

# Matches any incidences of "phrase" with any trailing or leading chars:
*phrase*

# Matches any one char:
?

# Matches any of the characters listed inside brackets:
[chars]

# Matches a range of chars between a-z:
[a-z]

** Advanced:
*** Command Line Utilities, Continued:
**** Networking:

# Configure network interfaces:
ifconfig

# Configure wireless network interfaces:
iwconfig

# Connect to a remote server.
ssh username@ip_address

# Forward X from target to current machine (Get a remote desktop. Somewhat obscure, but very useful):
ssh -X username@ip_address

# Copy files over the network from one machine to another:
scp source_filename:username@ip_address target_filename:target_username@target_ip_address

# Copy only changes between files or directories (super efficient way to sync directories, works either locally or with remote servers using username@ip_address:optionalport, just like ssh):
rsync source target

# Check to see if target is online and responding
ping ip_address

# View network route to target:
traceroute6 ip_address

# Network Monitor
netstat

# Manage standard linux firewall (advanced users only)
iptables

# Scan this machine to check for open ports:
nmap 127.0.0.1

***** netcat:

# Listen for input from network on recieving_port, dump it to a file (insecure, but handy):
netcat -l recieving_port > file_copied

# Pipe the output of a command to a target ip and port over the network:
command | netcat -w number_of_seconds_before_timeout target_ip target_port

# Use tar to compress and output a file as a stream, pipe it to a target ip and port over the network:
sudo tar -czf - filename | netcat -w number_of_seconds_before_timeout target_ip target_port

**** Users and Groups:
# Change owner of a file or directory:
chown user_name:group_name directory_name

# Change privileges over file or directory (see man page for details.)
chmod

# Create a new user:
adduser

# Change user privileges (be very careful with this one):
usermod

# Delete user
deluser

# Print groups:
groups

# Create a new group:
groupadd

# Change group privileges:
groupmod

# Delete group:
delgroup

# Temporarily become a different user:
su username

# Print usernames of logged in users:
users

# Write one line to another user from your terminal:
talk

# Interactive talk program to talk to other users from terminal (must be installed from repositories.):
ytalk

**** Working With Files, Continued:
# View what processes are using what files:
lsof

# View the differences between two files:
diff file_1 file_2

# Output the top number_of_lines of file:
head -n number_of_lines file

# Like head, but it outputs the last -n lines:
tail -n number_of_lines file

# Checksum a file:
md5sum file

# Checksum every file in a directory (install this one from repositories.):
md5deep directory

# Checksum a file (better algorithm with no hash collisions):
sha1sum

# Same operation as md5deep, but using sha1:
sha1deep

# Call command every few number_of_seconds, and display output:
watch -n number_of_seconds command

# Execute command, print how long it took:
time command

# View files in directory from largest to smallest:
du -a directory | sort -n -r | less

# remove spaces from filenames in current directory:
rename -n 's/[\s]/''/g' *

# change capitals to lowercase in filenames in current directory:
rename 'y/A-Z/a-z/' *

***** Environment and Hardware:
# Print full date and time:
date

# Print the hostname of this machine:
echo $HOSTNAME

# Print information about current linux distro:
lsb_release -a

# Print linux kernel version:
uname -a

# Print information about kernel modules:
lsmod

# Configure kernel modules (never do this ;p ):
modprobe

# View Installed packages:
dpkg --get-selections

# Print environment variables:
printenv 

# List hardware connected via PCI ports:
lspci

# List hardware connected via USB ports:
lsusb

# Print hardware info stored in BIOS:
sudo dmidecode

# Dump captured data off of wireless card:
dumpcap

# Dump info about keyboard drivers:
dumpkeys

***** Ubuntu System Administration, Advanced (Continued):

# Add a Personal Package Archive from Ubuntu Launchpad:
add-apt-repository

# Install a .deb file from command line:
sudo dpkg -i package.deb

**** Python:

# Update pip (Python package manager):
pip install -U pip

# search pip repos for a library:
pip search library_name

# create a virtual ython environment to allow install of many different versions of the same Python modules:
virtualenv dirname --no-site-packages

# connect to a virtual python environment
source dirname/bin/activate

# disconnect from a virtual python environment:
deactivate

# install package into virtual python environment from outside:
pip install packagename==version_number -E dirname

# export python virtual environment into a shareable format:
pip freeze -E dirname > requirements.txt

# import python virtual environment from a requirements.txt file:
pip install -E dirname -r requirements.txt

**** git (all commands must be performed in the same directory as .git folder):

# Start a new git project:
git init

git config user.name "user_name"

git config user.email "email"

# Make a copy of a git (target can be specified either locally or remotely, via any number of protocols):
git clone target

# Commit changes to a git:
git commit -m "message"

# Get info on current repository:
git status

# Show change log for current repository:
git log

# Update git directory from another repository:
git pull [target]

# Push branch to other repository:
git push [target]

# Create a new branch:
git branch [branchname]

# Switch to target branch:
git checkout [branchname]

# Delete a branch:
git branch -d [branchname]

# Merge two branches:
git merge [branchname] [branchname]

# Show all branches of a project:
git show-branch

*** Virtualization:

#clone a virtual machine (this works, it's been tested):
vboxmanage clonehd virtual_machine_name.vdi --format VDI ~/target_virtual_machine_name.vdi

#mount a shared virtual folder:
#you need to make sure you have the right kernel modules. You can do this with modprobe, but this package works instead in a ubuntu-specific way.

sudo apt-get install virtualbox-ose-guest-utils

sudo mount -t vboxsf name_of_shared_folder_specified_in_Virtualbox path_of_mountpoint

*** mysql:

# Get help:
help

# Show databases:
show databases;

# Choose a database to use:
use database_name_here;

# Show database schema:
show tables;

# Delete database:
DROP DATABASE databasename;

# New database:
CREATE DATABASE databasename;

# Create a new user:
CREATE USER username@localhost IDENTIFIED BY 'password';

# Show users:
select * from mysql.user;

# Delete a user:
delete from mysql.user WHERE User='user_name';

# Give user access to all tables (make them root). the "%" means that they can sign in remotely, from any machine, not just localhost.:
grant all privileges on *.* to someusr@"%" identified by 'password';

# give certain privileges to a user on a certain database:
grant select,insert,update,delete,create,drop on somedb.* to someusr@"%" identified by 'password';

# Tell mysql to use new user priv policies:
flush privileges;

# change user password:
use mysql;

update user set password='password'('newpassword') where User='user_name';

# mysql command line args:
# export text file with commands to rebuild all mysql tables:
mysqldump databasename > dumpfilename.txt

# restore from a dump:
mysql -u username -p < dumpfilename.txt

# dump entire database:
mysqldump -u username -p --opt databasename > dumpfile.sql

# restore from entire database dump:
mysql -u username -p --database=databasename < dumpfile.sql

Courtesy of a GitHub user here

Friday, March 08, 2013

Moving forward ...

Moving forward, I will be writing more articles on tips and tricks in doing things.

How to get the new Facebook Newsfeed (Google+) look?

Facebook announced a revamp on its Newsfeed putting more emphasis on the news area. My take on the new look reminds me of Google+. Facebook must have taken some design cues from Google+ and incorporating them onto theirs. Study Facebook’s New News Feed: The Before & After Look and see for yourself.

Ok, so how do I opt in to the new Newsfeed? Click this link, scroll all the way down and then click on the "Try the new look" button. You will be placed in the waiting list.

Wednesday, March 06, 2013

Resolve Skype unable to login problem

I woke up in the morning finding myself unable to log myself onto Skype to access my Messenger contacts. After figuring out for some time and sometimes even accusing my anti-virus program, I conclude this is a problem with the Skype installed on my laptop, since I am having no problems with Skype on my Android.

To resolve the login problem, I attempted to remove my profile completely. This seems to have resolved everything.

Before performing the following steps, make sure Skype program has exited i.e. Skype shouldn't even be lurking in your system tray.
  1. Start Menu > Run

  2. Type %appdata%\skype

  3. Click OK button.

  4. Delete the folder bearing the name of your Skype login name. It may be in the form of <username> or live#<username>.

Your Skype should run okay now.

For Mac users, the path is User/Library/Application Support/Skype.

Tuesday, March 05, 2013

SQL Management Studio - "Saving changes is not permitted ..." error

Sometimes when you are working something using SQL Management Studio (SSMS) and intend to make changes to existing table schema, e.g. adding a new column, you may encounter the following error message. You are unable to proceed making the changes you desire with SSMS user interface.

Saving changes is not permitted ...

So what can you do? Either you re-create the table or write ALTER statements (but let's not do that!).

There is, however, a known trick to get around the above annoying "Saving changes is not permitted ..." error. Here are the steps to do just that!
  1. From the SSMS, go to Tools > Options.
  2. Select the Designers page.
  3. Un-check "Prevent saving changes that require table re-creation".
    Options Box
  4. Click OK button.

You should be good to go now!

Programming Is Not For Everybody

Just as I posted "Every student in every school should have the opportunity to learn to code" few days back, there is another article saying Programming Is Not For Everybody.

I sort of quite agree with the latter article especially on the last statement for some people.

A lot of time, it’s sitting in front of a computer screen, looking at a colorful text document, and thinking, and thinking, and typing, getting angry, and wondering why the hell you’re living a life sitting down.

But still, I love programming :)

Samsung S IV First Teaser Video


Part 2 of the above video is out now.

Saturday, March 02, 2013

Google Releases Interactive Infographics to Explain How Search Works

Google released an interactive infographics to explain just 'How Search Works'. It comes in 3 parts - Crawling and Indexing, Algorithms, and Fighting Spam.

YouTube Does a Harlem Shake With an Easter Egg

YouTube has joined Harlem Shake. Simply perform a search on 'do the Harlem Shake' on YouTube to reveal the Easter Egg.

The Harlem Shake effect starts off with the YouTube's logo shaking, followed by the search results. A video record of the Easter Egg is as follows:

Friday, March 01, 2013

Chrome Super Sync Sports - Run, Cycle Swim With Friends

Google just launched Chrome Super Sync Sports, a Chrome Experiment web app that syncs any smartphone or tablet running the Chrome app with a corresponding computer, turning your device into a handheld controller.

To start playing, players must first visit the Super Sync Sports website, get a URL and a unique game ID code, which are then entered into the mobile Web browser in order to enter the game. One can either enter as a single player mode or multi-player mode. In the game, players can compete by running, cycling or swimming, all controlled using hand gestures on the mobile screen. Players' progress in the game will be telecast on the desktop browser.


Very creative.