<body><script type="text/javascript"> function setAttributeOnload(object, attribute, val) { if(window.addEventListener) { window.addEventListener('load', function(){ object[attribute] = val; }, false); } else { window.attachEvent('onload', function(){ object[attribute] = val; }); } } </script> <div id="navbar-iframe-container"></div> <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script> <script type="text/javascript"> gapi.load("gapi.iframes:gapi.iframes.style.bubble", function() { if (gapi.iframes && gapi.iframes.getContext) { gapi.iframes.getContext().openChild({ url: 'https://www.blogger.com/navbar.g?targetBlogID\758211560\46blogName\75Tech+Tips,+Tricks+%26+Trivia\46publishMode\75PUBLISH_MODE_BLOGSPOT\46navbarType\75BLUE\46layoutType\75CLASSIC\46searchRoot\75http://mvark.blogspot.com/search\46blogLocale\75en\46v\0752\46homepageUrl\75http://mvark.blogspot.com/\46vt\75-5147029996388199615', where: document.getElementById("navbar-iframe-container"), id: "navbar-iframe" }); } }); </script>

Tech Tips, Tricks & Trivia

by 'Anil' Radhakrishna
A seasoned developer's little discoveries and annotated bookmarks.

Search from over a hundred HOW TO articles, Tips and Tricks

reCAPTCHA MAY let you through even if you get part of it right

Wednesday, November 26, 2014
CAPTCHA or Completely Automated Public Turing Test To Tell Computers and Humans Apart, is a technique to stop bots from signing up for online accounts or automatically filling up forms. It works on the assumption that Humans can understand distorted text presented in a CAPTCHA image but not bots which may have a basic training in OCR (Optical Character Recognition)

A Stack Exchange forum user found out that he could get past the CAPTCHA barrier even though he didn't type the last character in the distorted text that is shown. Stack Exchange uses reCAPTCHA - Google's implementation of CAPTCHA.

I don't agree with Google when they claim "Our easy CAPTCHAs are a breeze for legitimate users."
Also see: Lazy-Developer-CAPTCHA Text Extractor Bookmarklet

Labels: ,

HOW TO bulk archive a web page along with linked pages in PDF format - needs IE

Tuesday, November 25, 2014
Imagine this - you're in the middle of an interesting online article and you have to turn off your computer for some reason. You can choose to save that web page as a PDF but what if that page contains linked articles that you want to read as well?

Internet Explorer has a option called Print all link documents
If you have a PDF printer utility installed, instead of send those files to a printer you can print a selected web page and the linked files as PDF files in a single shot for offline reading.

I found it strange that the Foxit PDF Printer doesn't make the links clickable whereas you can click on links within a PDF generated by Chrome.
On a related note, to export the URLs of the open tabs of a Firefox window to go through later there is a nice convenience in Firefox. Under Tools > Options, in the General tab look for the Use Current Pages button in the Startup section. When you click on the Use Current Pages button, all the URLs of the pages open in different tabs are copied to the Home Page text box with a pipe delimiter. Copy the text to get all the URLs. The keyboard shortcut to simulate clicking on the Use Current Pages button is Alt+T+O+C.

Too bad, we don't have all the features we like in a single browser.

Labels: , ,

This Week I Learned - Week #85

Saturday, November 22, 2014
This Week I Learned:

- Difference between Visual Studio Express Editions & Visual Studio Community Edition:
  ~ VSE does not allow users to use extensions (aka. plugins).  There are over 5000 great plugins for Visual Studio in Visual Studio Gallery. With Visual Studio Community (similar to Professional) Edition, you can access all of them
  ~ There are 3 different Visual Studio Express Editions targeting specific platforms. Visual Studio Community Edition lets you develop projects targeting cross-platforms.

- Google Spreadsheet has a feature to scrape a specific portion of web pages using the ImportXML() formula. Firefox and Chrome Developer Tools can easily generate the XPath for a selected element which is a required parameter for ImportXML.

Some of the video tutorials on Microsoft Virtual Academy are also available on Channel 9. Channel9 shows the file size of videos in different formats. If you're looking for the lowest sized file, you have more choice on Channel 9.

Design for Failure - Traditional approaches often equate reliability with preventing failure, but cloud-based systems are inherently different, so the design approach has to be different too – expect failures, contain and recover from them quickly.

- There’s no option to sign out of the Gmail app for Android without removing your entire account from your phone or tablet.

- When you are watching any video on the YouTube website, the storyboard for that video is automatically downloaded in the background. The Print YouTube bookmarklet stitches all these storyboard image frames as one large poster.

Joblint is an online tool that tests tech job specs for issues with sexism, culture, expectations, and recruiter fails.

Developer Economics - a research series that tracks developer mindshare, revenue and tools — says that they are “tracking at least *fifty” BaaS (Backend as a Service) offerings, and it seems more options appear nearly every month.”

- The faster the browser, the faster a hybrid app runs. As of Android 4.4, the web view used by hybrid Android applications is Chromium-based, and is not subject to the performance penalties of earlier Android versions.

- The gold standard for high availability is five 9's, that is 99.999% of uptime for an application, meaning just 5 and half minutes of downtime over a year.

For voice calling on Skype, the minimum download / upload speed has to be 30kbps, 128kbps for video calling/screen sharing

While popular Internet services are using encryption to shield user data from outsiders, they are generally retaining the ability for themselves to scan the contents of emails, text messages, search queries and other information for use in targeted marketing. Apple and Google have gone a step further recently with their encryption, saying new versions of smartphones that use the iOS and Android software will automatically encrypt data and make it impossible for the companies themselves to decipher photos, contact lists and other files.

- iOS 8 introduced a new language & 4,000 new APIs

Many of the great development successes of the last decade have been built on top of a vibrant plugin community. Node has npm; Ruby has gems; and jQuery has 574 ways to build a carousel. Unfortunately, that same plugin proliferation has not happened in the Cordova world. At the time of this writing, the official Cordova plugins registry lists a mere 262 plugins, 225 of which have less than 1,000 downloads. 

- I never thought Google Chrome can crash before it is launched. I saw this dialog box for the first time:

- OLX is the largest marketplace in India, Poland, and, as of last year, Brazil - these 3 countries make up 50% of its user base. OLX started with the biggest available market: India. The company didn’t launch anything in its home country , Argentina (its founder Alec Oxenford is based there), until four and a half years later - Fortune

- Star Trek was written in 1966. It is about events that take place in the year 2151

Labels: ,

HOW TO use a Google Spreadsheet as a read-only database for a web app

Friday, November 21, 2014
The data in a Google Spreadsheet can be accessed in JSON and JSONP format through a URL.  The trick is to extract the key from a spreadsheet's URL (the key looks something like this - 0AtMEoZDi5-pedElCS1lrVnp0Yk1vbFdPaUlOc3F3a2c) and place it in the position indicated in the below URL:


This approach can be useful when a limited number of people manage a database but when it has to be publicly viewed by users of a website. You can even use Google Spreadsheet formulas (like ImportXML()) to create dynamic values for a column.

So if you have data in a Google Spreadsheet whose schema is defined by the names in the first row,
it is possible to get that data as a JSON feed
and use it to programmatically display the list on a web page

Also see: Search all your ebooks with a keyword by putting them on Google Drive

Labels: , , ,

Notes from the MVA course "Fundamentals of Visual Studio Online"

Wednesday, November 19, 2014
The Microsoft Virtual Academy course Fundamentals of Visual Studio Online is a level 300 course that provides an high level overview of Visual Studio Online (VSO) in less than 2 hours. I wish it also dwelled a little on Process templates & covered best practices.
Notes from the course and elsewhere -

- Visual Studio Online is a cloud-based platform of tools and services that helps you plan, deploy and manage your application.

- VSO competes with Github.  GitHub lets developers work for free with public code repositories but there is a charge for those who want to work with private code repositories. It is possible to migrate a project from GitHub to Visual Studio Online

- VSO is free for the first five users and it is an included benefit for MSDN subscriptions.

- VSO offers cloud-hosted application lifecycle management (ALM) as a service. It provides TFS (centralized) and Git (decentralized) source control systems.

- Visual Studio Online isn't exactly TFS in the cloud. TFS was introduced in 2006 while Team Foundation Service was launched in 2012. Every few weeks, new features appear in VSO as the TFS product group wraps them up in their internal development iterations.

- The process template is what defines your workflow: what your work items are called, what states they go through as you work on them and other metadata. You can choose between three templates: Scrum, Agile and Capability Maturity Model Integration (CMMI).

If you’re an agile team, or you don’t have a particular process, choose between the Agile and Scrum templates. The biggest difference between the two is how they handle bugs and what name they use for backlog items. The Agile template treats bugs as tasks, while the Scrum template displays them on your backlog along with other backlog items. If you aren’t sure, stick with the Scrum template -it’s the default for a reason.

- Choosing the Scrum template doesn’t mean you have to do Scrum; it simply means you’ll see Scrum terminology used for work item types. Scrum refers to requirements as Product Backlog Items (PBIs) and the Agile template refers to them as User Stories.

- VSO works with non-VS IDEs as well

- Advantages of using VSO hosted build
  ~ Build doesn’t require custom installation of dependencies
  ~ One build at a time
  ~ Build takes < 1 hour to run
  ~ Build process uses < 75GB total storage
  ~ Build process doesn’t need administrator privileges

- Advantages of automating builds
  ~ Quick feedback
  ~ Consistency
  ~ Continuous integration
  ~ Continuous deployment

- VSO provides access to full-featured load testing as a service that runs on Microsoft infrastructure

- OpsHub VSO Migration Utility tool can be used migrate from on-premise TFS to VSO

- Free VSO monthly benefits include:
  ~ Automated hosted builds:60 minutes
  ~ Cloud load testing: 15000 virtual user minutes

- Visual Studio Online Application Insights collects rich operational, performance and customer usage information from your applications—whether they run on-premises, in Windows Azure, at third-party cloud providers, or in a hybrid manner across all three.

- Application Insights discovers dependencies, shows you when you’ve made new deployments and aggregates all of the performance information to give you the top 10 slowest parts of your application.

Labels: ,