My Outsourced Brain

How to Keep Your Passwords Safe?

When I am browsing internet sites and using different services I am required to enter a lot of passwords. Memorizing all passwords grants best security, however this is inconvenient and usually annoying. It's much easier to let firefox fill in the passwords for me, however the problem is that if my laptop gets stolen or somebody gets physical access to the computer all private information will be visible. This post looks at solutions to this problem.

Remembering a new password for every site is difficult if not impossible, however using the same password for different sites is insecure, moreover sites have different password requirements regarding length and allowed characters. Letting firefox remember and enter the passwords for me is faster and easier than memorizing passwords and entering them manually. It is also a protection against phishing, where look-alike imitations of websites try to get access to your data.

The firefox feature to remember and automatically enter passwords is called a password manager. Password managers exist for the desktop, portable devices, or as web applications. A solution to the computer-stolen or physical access problem is to use a master password. This means that all your on-line passwords are secured behind one master password. Without the master password, there's no access to your other passwords. The master password has to be entered once per session.

Configure the master password for firefox as you can see in the image below.
master password for firefox

Password managers for the desktop encrypt passwords for all applications (including your web-browser). Examples are KWallet for KDE, GNOME Keyring for Gnome, or the Keychain for MacOS. For Microsoft Windows several proprietary programs exist.

If you want to secure all the data on your disk, disk encryption software like TrueCrypt provide you with the ability to create encrypted partitions whose existence is deniable, which means that you can plausibly deny in court having encrypted your data.

This post was inspired by a slashdot discussion about the best tool for remembering passwords.

Enjoy. Please leave a comment below for questions and suggestions.

[ Read more... ]

Greeting Widget (Entrecard, Twitter, etc.)

You might have noticed a greeting message on this blog. You would see different welcome messages depending on whether you come from a search engine, twitter, or entrecard. This post describes how to install such a welcome widget in your blog or website. Installation is as simple as copy-pasting a code.

Credits for a welcome message to Visitors from Entrecard and Twitter goes to Laura from Reviewing Whatever. In fact I even copied parts of her welcome message. Her message is great and I didn't know how to improve on it. If there is any part of it you don't like, it's probably an addition of me.

This widget is an extension of my earlier Welcome Widget. Basically you just take the code below and put it in your template where you want the message to displayed. In blogger you can create a new HTML/javascript widget and paste the code in the box.

There are parts of the code you might want to change, especially the text of the welcome messages, where it says search_again.innerHTML=.

You should also change this line:
if (document.referrer.length > 0 && document.referrer.indexOf("myoutsourcedbrain.com") > -1) return false

This filters the URL of your own site from the referral URLs. In my case that is myoutsourcedbrain.com. Just write the main part of your address there. This is important. If you don't change it, the widget does not work as expected.

For easy installation in blogger click the widget button:


Here goes the code of the greeting widget:

<div id="welcome_message"></div>

<script type="text/javascript">
function getReferrer() {
  var Refer = document.referrer
  if ( ! Refer ) return false
  if (document.referrer.length > 0 && document.referrer.indexOf("myoutsourcedbrain.com") > -1) return false
  if (document.referrer.indexOf("entrecard.com") > -1) return 2 // 2 for entrecard
  if (document.referrer.indexOf("twitter.com") > -1) return 3 // 3 for twitter
  return 1;  // by default probably search.
} 

function getQuery(){
  var Refer = document.referrer
  q = Refer.match(/(q(([^=]*)|kw)?|p)=([^"&;]+)/)
  if ( ! q ) return false
  query = unescape( q[ ( q.length - 1 ) ] )
  query = query.replace("/</g,>/g", '&gt;')
  query = query.replace("/\+/g", ' ')
  if ( ! query.match(/\w/) ) return false
  return query
}

function yousearchedfor(result){
  if(result.responseData.cursor.estimatedResultCount>1) {
      var search_again=document.getElementById("welcome_message");
      search_again.innerHTML='<h2>Welcome Searcher.</h2><br/>According to google, for your query "' + query + '" there are <a href="http://www.myoutsourcedbrain.com/search?q=' + query + '">' + result.responseData.cursor.estimatedResultCount + ' results</a> on <i>My Outsourced Brain</i>. Please feel free to leave comments. If you like the site, you might want to subscribe to our feed to stay updated. ';
  }
}

function welcome_entrecard(){
  var search_again=document.getElementById("welcome_message");
  search_again.innerHTML='<h2>Welcome Entrecard Dropper!</h2><br/>I hope you enjoy what you see enough to explore for more than the few seconds it takes to drop your card. My Outsourced Brain features articles about topics ranging from technology and software to scientific research. Recent articles have been more focused on <a href="/search/label/blogger">blogging</a> help, including several useful <a href="/search/label/widget">widgets</a>, which I wrote myself. You can find many articles on <a href="/search/label/linux">linux</a>, phd research, and <a href="/search/label/software">software</a> or of general interest such as lifestyle, and <a href="/search/label/nutrition">nutrition</a>. I write occasional <a href="/search/label/book review">book reviews</a>. <br/>A good place for exploration are most visited articles, labels, the search, or the article archive. <br/>I try to post several articles a week, but life being what it is, sometimes I make it, sometimes not. If you like what you see, it might be worthwhile subscribing to the <a href="/atom.xml?redirect=false&start-index=1&max-results=500">feed</a> in order to stay updated.';
}

function welcome_twitter(){
  var search_again=document.getElementById("welcome_message");
  search_again.innerHTML='<h2>Welcome Tweeter!</h2><br/>I hope you enjoy this site. My Outsourced Brain features articles about topics ranging from technology and software to scientific research. Recent articles have been more focused on <a href="/search/label/blogger">blogging</a> help, including several useful <a href="/search/label/widget">widgets</a>, which I wrote myself. You can also find many articles on <a href="/search/label/linux">linux</a>, phd research, and <a href="/search/label/software">software</a>. You can also find topics of general interest such as lifestyle, and <a href="/search/label/nutrition">nutrition</a>. I write occasional <a href="/search/label/book review">book review</a>s.<br/>A good place for exploration are most visited articles, labels, the search, or the article archive. <br/>I try to post several articles a week, but life being what it is, sometimes I make it, sometimes not. If you like what you see, it might be worthwhile subscribing to the <a href="/atom.xml?redirect=false&start-index=1&max-results=500">feed</a> in order to stay updated.';
}


var refer=getReferrer()
if(refer){  // refer > 0 query true, means the visitor was referred from another web site
  switch (refer)
{ // refer is a number that indicates the referral web site
    case 1: // search engine
          var query=getQuery();
          if (query){
          var script = document.createElement('script');
          script.src = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q='+query+'+site%3Awww.myoutsourcedbrain.com&callback=yousearchedfor';
          script.type = 'text/javascript';
          document.getElementsByTagName('head')[0].appendChild(script);}
          break;
    case 2: welcome_entrecard();
          break;
    case 3:
          welcome_twitter();
          break;
    default: // standard welcome message
  }
}
</script>


Download here.

Enjoy. Please leave a comment below for questions and suggestions.

[ Read more... ]

Best Blog Tools

I compiled a list of useful internet resources for blogging. Categories for blog tools include page design and cross-browser testing, testing page loading performance, seo tools, social media tools, and post editing. If you think any page should be added, please comment.

Page Design

Combining Color Palettes and Fonts

  • Typetester provides a comparison tool for different fonts.
  • Color Scheme Designer provides a tool for creating color schemes.
  • A bit more simple is Color Blender, which generates 5 matching colors from one color you provide.

Cross-Browser Testing

browsershots.org is a free on-line service that lets you see your websites rendered in different browsers such as Firefox, Opera, IE, Safari, Dillo, Epiphany, Flock, Galeon, Konqueror, Seamonkey, and many more. You can adjust monitor resolution, color depth, javascript, Java and Flash support.


IE Netrenderer allows you to check how a website is rendered by Internet Explorer 7, 6 and 5.5 for free.

Page Loading Performance

Page Loading Analysis

Nothing beats firefox with Firebug and YSlow.

To clear the cache there is the clear cache button.

Web Page Test is one of the best on-line page loading analysis services.

Sprite Generators

CSS Sprite Generator

Image Optimization

Smushit reduces image sizes by optimization

CSS Minification

CSS Compressor

Javascript Compression

Compressor Rater

Content Delivery Networks

Google App Engine

Post Editing

greasemonkey and platypus for customization of web pages (blogger edit boxes)

Multimedia Embedding

  • Many different types of multimedia can be included with apture
    Apture helps during and after page editing. There are plugins for firefox and other browsers.
  • google viewer allows embedding of Powerpoint (ppt), MS Word (.doc) and open document formats (.odf, .odp)
  • Embedit.in
  • provides embedding of documents (doc, docx, xls, xlsx, ppt, pptx, pdf, wpd, odt, ods, odp, txt, rtf, csv, html), images (png, jpg, gif, tiff, bmp, eps, ai)
  • Wufoo Form Builder allows to build forms for on-line surveys

Source Code Embedding


SEO Tools

  • alexa sparky firefox add-on (improve alexa rankings)
  • swoosty seo tools provides alexa ranking and page rank of the pages you view
  • Google Webmasters allows you to control how google spiders your site.
  • Google Analytics provides a broad spectrum of statistics about visitors, and content.
  • deeper cloud helps you to find relevant tags to write more keyword-relevant articles (see also google lab suggest term)
  • Google Sets creates sets of items from a few examples, which can also help you find more relevant keywords.

Social Media Tools

Major social networking websites include digg, technorati, Facebook, Twitter, del.icio.us, stumbleUpon, slashdot, and reddit


Entrecard does social marketing.

For a list of advertisers, please see the footer of this page.

Enjoy. Please leave a comment below for questions and suggestions.

[ Read more... ]

Blogger Archive Pages with only Post Titles

Blogger category (label) pages can be very annoying to visitors if they have to wait very long while page with many articles loads. One remedy is to add &max-results=5 to your category links, however then many articles probably won't be read, because you can't realistically expect visitors to thumb through many pages. Probably this solution is also bad for search engine optimization (SEO), because it increases the distance between blog pages. In this post I present another solution which only displays the titles of the posts.

Here's a simple hack to change the show only titles In blog archive pages. Credits go to Divya Sai from bloggerstop.net.

From the blogger dashboard go to Layout -> Edit HTML. Make a backup, then check the expand widget templates box.

Search for this line:
<b:include data='post' name='post'/>

Replace that line with this coding.
<!--ARCHIVE-TITLES-STARTS-->
<b:if cond='data:blog.homepageUrl != data:blog.url'>
<b:if cond='data:blog.pageType != &quot;item&quot;'>
<a expr:href='data:post.url'>
<data:post.title/></a><br/>
<b:else/>
<b:include data='post' name='post'/>
</b:if>
<b:else/>
<b:include data='post' name='post'/>
</b:if>
<!--ARCHIVE-TITLES-STOPS-->


Enjoy. Please leave a comment below for questions and suggestions.

[ Read more... ]