Tech Support Websites

  • Subscribe to our RSS feed.
  • Twitter
  • StumbleUpon
  • Reddit
  • Facebook
  • Digg

Wednesday, 20 February 2013

Firebug simplifies programming with JSON

Posted on 19:50 by Unknown

The Developer Tools (F12 keyboard shortcut) of popular browsers show the JSON output returned by an API, like this -


Firefox add-on Firebug's JSON tab within the Net tab, presents it neatly like this -


This makes it easy to extract the specific details that you are after. 

The above view helps to visualize how to get to a flickr photo's id on making a call using the jQuery getJSON method to one of the flickr API services - data.photos.photo[i].id


Read More
Posted in APIs, Firefox, Javascript, JSONP | No comments

Tuesday, 19 February 2013

HOW TO batch Geocode a set of addresses

Posted on 19:02 by Unknown

Geocoding is the process of taking an address and getting the associated latitude and longitude so that it can be visually represented as a a point on the earth with any mapping service.

MapQuest API has a free batch geocoding service that allows multiple locations to be geocoded at the same time. A limit of 100 locations exists for one call. I haven't seen any of the popular mapping services offering this kind of a bulk geocoding facility.

An AppKey is needed to run that service & you can get it by creating a free Community Account.

An AppKey is generated when requested but it will take approximately 1 hour for your AppKey to be active.

Read More
Posted in HOWTO | No comments

Monday, 18 February 2013

SharePoint 2013 NAPA Keyboard Shortcuts

Posted on 20:28 by Unknown

With a Office 365 Preview Developer account, you can build SharePoint 2013 & Office 2013 Apps. This account includes an app called NAPA that contains a small subset of Visual Studio features to build an App within the browser & run it. As a keyboard person, I like that it includes keyboard shortcuts for common tasks. Here are my favorites:

F1                  : Show & trigger commands
Ctrl+F            : Find
Ctrl+H           : Replace
Ctrl+/             : Comment
Ctrl+L            : Jump to specified line number
Ctrl+E            : Quick Open
Ctrl+D           :  Delete line
Ctrl+A           :  Select all
Ctrl+Space    :  Intellisense
Ctrl+G           :  View Methods?

Read More
Posted in SharePoint2013 | No comments

Sunday, 17 February 2013

Voice Fingerprinting

Posted on 10:27 by Unknown

The Independent has an interesting article on voice fingerprinting -

Fuelled by 9/11, spurred on by the advance of our digital society and made possible by raw computing power, the development of increasingly sophisticated automated speaker recognition systems (ASRS) are now bringing the prospect of a voiceprint enticingly close...These systems can in as little as 15 minutes use a background population of voices to make a statistical judgement on the significance of any similarity or difference between the voice of the criminal and that of a suspect that could have taken a human 15 hours to complete.

Like computer vision and video fingerprinting, voice fingerprinting will be a great digital frontier to conquer.

Also see: Raman Effect can fingerprint the universe
Read More
Posted in | No comments

Thursday, 14 February 2013

HOW TO handle a API's JSONP response that uses a static or fixed or named callback function

Posted on 10:28 by Unknown

Script and JSONP requests are not subject to the same origin policy restrictions. Most APIs that return JSONP data will generate a dynamic callback function name and they typically have a parameter like jsoncallback=?.

However some API's like flickr, Facebook require that you use the callback function name that they specify.

Here are a couple of ways that you can tackle that scenario -

window.fixed_callback = function(data){
alert
(data.title);
};

$
(function() {
$
.getScript("http://api.flickr.com/services/feeds/photos_public.gne?tags=cats&tagmode=any&format=json&jsoncallback=fixed_callback", function(data) {
alert
('done'); } );
});
click to enlarge code snippet
Read More
Posted in APIs, Javascript, JSONP | No comments

Wednesday, 13 February 2013

Tweetcheero

Posted on 10:28 by Unknown

I found it funny that two separate tweets on the same topic but in different contexts and having the opposite effect landed one after another on my Twitter timeline.


As I can't think of a word for this coincidence, I'm calling it Tweetcheero - a take on Switcheroo
Read More
Posted in | No comments

Sunday, 10 February 2013

Fix for "The page at https://*.sharepoint.com/* ran insecure content from http://{3rdparty_json_api_call}" error in a NAPA app

Posted on 19:54 by Unknown

If you are receiving data through a JSONP API call from a third party service in your SharePoint 2013 NAPA app and you get an error of this pattern -
"The page at https://*.sharepoint.com/* ran insecure content from http://{3rdparty_json_api_call}"

... make the JSONP API call from its equivalent HTTPS URL i.e. replace http with https. This fix will work provided the third party API supports HTTPS.
Read More
Posted in NAPA, SharePoint2013 | No comments

"Missed call" from a mobile as an event trigger

Posted on 10:14 by Unknown

India has a 900 million mobile user base. Many Indian companies have discovered a cost-effective, personalized way to reach out to their customers - via a missed call from their mobile. It is cost-effective because they don't have to develop a full blown IVR and their customers love it because they are not paying anything to engage with the brand. Economic Times estimates that this is a Rs 500 crore business opportunity for banks, FMCG majors & even political parties.

Here's how some companies are utilizing a "missed call" from a customer's mobile as an event trigger to provide helpful services:

  • ICICI Bank customers can give missed call to a particular number and get their account balance status as a text message, instantly. Dial another number, you'll get mini-statements delivered to your inbox.
  • A Marathi daily has started a campaign asking its readers to give a missed call to a particular number to renew their subscriptions.
  • BMG Cinemas, the first multiplex in Rewari, Haryana, has tied up with IMImobile to use the 'missed call' tool. Rewari residents now give a missed call to a BMG Cinema number and get an instant SMS on the movies that are currently being played across its four screens.
  • IMImobile is putting in place a similar setup for Chennai's largest cinema complex —Satyam Cinemas — where customer would even be able find the seat availability on that day across its six theatres.
  • Veerchand Bothra, the Chief Strategy officer of Netcore Solutions, that executed a popular missed-call project for HUL, says that it can also be used as a mobile verification tool and can be a substitute for physical presence or signature.
  • The India Against Corruption campaign used the 'missed call' route to garner the support of 250 lakh people within 180 days.
  • Over 10 lakh farmers in Karnataka, Gujarat and Andhra Pradesh have availed of a service to give a missed call on a number to get an SMS of daily prices of about 24 crops in their Mandis. 
  • I received a text message from TaxiForSure, a cab service I availed in Bangalore, with 3 different phone numbers to which I could give a "missed call" to convey if I liked or disliked their service or say thanks.

Also see:
Online, SMS-based services to get distance, approximate autorickshaw fare
Get Google Search results by SMS
Read More
Posted in India | No comments

Saturday, 9 February 2013

Carefully review apps that provide Facebook Login

Posted on 10:09 by Unknown

Facebook Login makes it easy for a website's users to connect with that app or website without having to create a new set of credentials and instead reuse your Facebook account details.

It came as a surprise to me that a shopping site implementing OAuth with Facebook as a provider could receive many more personal details than required for a regular e-commerce transaction.

The shopping site places a condition that I should allow it to access my "basic info". I was shocked to find that to Facebook, "basic info" means all of these:

  • Name
  • Profile picture
  • Gender
  • Networks
  • User ID
  • List of friends
  • Any other info you made public

Except my name & possibly my email address, the shopping site had no business to know any other details.

In addition, it informed that app can make posts on your behalf on your Facebook timeline and the visibility of those posts was set to Friends by default. The onus is on the subscriber to set it to "Only Me" to prevent their FB friends from being spammed by the site requesting all these details.

With this kind of cloaking & ambiguous wording, it is hard to trust websites these days.
Read More
Posted in Privacy | No comments

Thursday, 7 February 2013

A "secure" website is only as secure as the third-party plugins/widgets/services that it uses

Posted on 19:50 by Unknown


Yesterday, pages on numerous major sites including CNN, Tumblr, NBC News were affected by a Facebook Connect bug that redirected users to a FB error page.

Facebook issued this statement, but chose to keep quiet on exactly what went wrong -
“For a short period of time, there was a bug that redirected people logging in with Facebook from third party sites to Facebook.com. The issue was quickly resolved, and Login with Facebook is now working as usual.”

One quick fix to this problem was to log out of Facebook. One netizen commented - "This is a good solution to many problems, actually."

When you use third-party plugins or widgets or services on your site, you have to prepare for the fact that these can compromise the privacy and security offered by your website.

Related: Sage advice on security

Read More
Posted in Security, Websites | No comments

Wednesday, 6 February 2013

Counter arguments to excuses of the Cloud Skeptics

Posted on 10:30 by Unknown

In this GigaOm article, Dave Girouard, former President of Enterprise for Google, provides interesting counter arguments to these common complaints against adoption of the Cloud:
  • These big outages mean we should keep things in house
  • I need somebody to talk to when a service interruption occurs
  • Cloud is OK for non-critical applications with non-sensitive data

Read More
Posted in Cloud | No comments

Tuesday, 5 February 2013

Where is the .NET 4.5 folder?

Posted on 10:17 by Unknown

Looking at the %WINDIR%\Microsoft.NET\Framework directory used to be a simple way to check what versions of the .NET Framework were installed on a machine.

.NET 4.5 is an "in-place upgrade" of .NET 4. That means .NET 4.5 is still the v4 CLR and adds new libraries as well as improvements to the core CLR itself. As such, there no .NET 4.5 folder.

In-place upgrade means that the CLR is the same but new libraries are added as well as bug fixes and performance improvements. 


The .NET Framework can version in two ways. There are "side by side installs" and there are "in place upgrades." A major version means side-by-side and a minor version means in-place.

Side-by-side means that different versions of .NET can live together on the same machine.
Images from Scott Hanselman's blog
The version numbers of the currently installed versions of the .NET Framework are listed in the Windows registry. You can use the Registry Editor (regedit.exe) to view Framework version information.

Alternatively, you can download the .NET version checker tool from Scott Hanselman's SmallestDotnet.com  or try this DOS command (it make up to a few minutes for the result to appear) -
wmic product where "Name like 'Microsoft .Net%'" get Name, Version

If you have to check the version programmatically, try this code sample from MSDN.


Read More
Posted in C# | No comments

Monday, 4 February 2013

Azure in Pictures - The Life of a Windows Azure Cloud Service

Posted on 10:22 by Unknown


This poster by Haishi Bai, Windows Azure Technical Evangelist, shows how a Cloud Service is created, tested, deployed, and maintained. 

Read More
Posted in Azure, AzureInPictures | No comments

Sunday, 3 February 2013

Automate Azure tasks with Windows Azure PowerShell Cmdlets

Posted on 10:29 by Unknown

The ability to run Windows Azure tasks from the command-line and thus also automate such tasks was introduced with Windows Azure SDK 1.3.

Starting with Windows Azure SDK 1.8,  it is possible to manage Windows Azure Websites with the following cmdlets:

  • New-AzureWebSite
  • Get-AzureWebsite
  • Remove-AzureWebsite
  • Set-AzureWebsite
  • Show-AzureWebSite
  • Start-AzureWebSite
  • Stop-AzureWebSite

Here is the complete list of currently supported Windows Azure PowerShell cmdlets (via the PowerShell command get-command -module azure | format-table -property name ):

  1. Add-AzureCacheWorkerRole
  2. Add-AzureCertificate
  3. Add-AzureDataDisk
  4. Add-AzureDisk
  5. Add-AzureDjangoWebRole
  6. Add-AzureEndpoint
  7. Add-AzureNodeWebRole
  8. Add-AzureNodeWorkerRole
  9. Add-AzurePHPWebRole
  10. Add-AzurePHPWorkerRole
  11. Add-AzureProvisioningConfig
  12. Add-AzureVhd
  13. Add-AzureVMImage
  14. Disable-AzureServiceProjectRemoteDesktop
  15. Enable-AzureMemcacheRole
  16. Enable-AzureServiceProjectRemoteDesktop
  17. Export-AzureVM
  18. Get-AzureAffinityGroup
  19. Get-AzureCertificate
  20. Get-AzureDataDisk
  21. Get-AzureDeployment
  22. Get-AzureDisk
  23. Get-AzureDns
  24. Get-AzureEndpoint
  25. Get-AzureLocation
  26. Get-AzureOSDisk
  27. Get-AzureOSVersion
  28. Get-AzurePublishSettingsFile
  29. Get-AzureRemoteDesktopFile
  30. Get-AzureRole
  31. Get-AzureSBLocation
  32. Get-AzureSBNamespace
  33. Get-AzureService
  34. Get-AzureServiceProjectRoleRuntime
  35. Get-AzureSqlDatabase
  36. Get-AzureSqlDatabaseServer
  37. Get-AzureSqlDatabaseServerFirewallRule
  38. Get-AzureStorageAccount
  39. Get-AzureStorageKey
  40. Get-AzureSubnet
  41. Get-AzureSubscription
  42. Get-AzureVM
  43. Get-AzureVMImage
  44. Get-AzureVNetConfig
  45. Get-AzureVNetConnection
  46. Get-AzureVNetGateway
  47. Get-AzureVNetGatewayKey
  48. Get-AzureVNetSite
  49. Get-AzureWebsite
  50. Get-AzureWebsiteDeployment
  51. Get-AzureWebsiteLocation
  52. Import-AzurePublishSettingsFile
  53. Import-AzureVM
  54. Move-AzureDeployment
  55. New-AzureAffinityGroup
  56. New-AzureCertificateSetting
  57. New-AzureDeployment
  58. New-AzureDns
  59. New-AzureQuickVM
  60. New-AzureSBNamespace
  61. New-AzureService
  62. New-AzureServiceProject
  63. New-AzureSqlDatabase
  64. New-AzureSqlDatabaseServer
  65. New-AzureSqlDatabaseServerContext
  66. New-AzureSqlDatabaseServerFirewallRule
  67. New-AzureSSHKey
  68. New-AzureStorageAccount
  69. New-AzureStorageKey
  70. New-AzureVM
  71. New-AzureVMConfig
  72. New-AzureVNetGateway
  73. New-AzureWebsite
  74. Publish-AzureServiceProject
  75. Remove-AzureAffinityGroup
  76. Remove-AzureCertificate
  77. Remove-AzureDataDisk
  78. Remove-AzureDeployment
  79. Remove-AzureDisk
  80. Remove-AzureEndpoint
  81. Remove-AzureSBNamespace
  82. Remove-AzureService
  83. Remove-AzureSqlDatabase
  84. Remove-AzureSqlDatabaseServer
  85. Remove-AzureSqlDatabaseServerFirewallRule
  86. Remove-AzureStorageAccount
  87. Remove-AzureSubscription
  88. Remove-AzureVM
  89. Remove-AzureVMImage
  90. Remove-AzureVNetConfig
  91. Remove-AzureVNetGateway
  92. Remove-AzureWebsite
  93. Reset-AzureRoleInstance
  94. Restart-AzureVM
  95. Restart-AzureWebsite
  96. Restore-AzureWebsiteDeployment
  97. Save-AzureVMImage
  98. Save-AzureWebsiteLog
  99. Select-AzureSubscription
  100. Set-AzureAffinityGroup
  101. Set-AzureDataDisk
  102. Set-AzureDeployment
  103. Set-AzureEndpoint
  104. Set-AzureOSDisk
  105. Set-AzureRole
  106. Set-AzureService
  107. Set-AzureServiceProject
  108. Set-AzureServiceProjectRole
  109. Set-AzureSqlDatabase
  110. Set-AzureSqlDatabaseServer
  111. Set-AzureSqlDatabaseServerFirewallRule
  112. Set-AzureStorageAccount
  113. Set-AzureSubnet
  114. Set-AzureSubscription
  115. Set-AzureVMSize
  116. Set-AzureVNetConfig
  117. Set-AzureVNetGateway
  118. Set-AzureWalkUpgradeDomain
  119. Set-AzureWebsite
  120. Show-AzurePortal
  121. Show-AzureWebsite
  122. Start-AzureEmulator
  123. Start-AzureService
  124. Start-AzureVM
  125. Start-AzureWebsite
  126. Stop-AzureEmulator
  127. Stop-AzureService
  128. Stop-AzureVM
  129. Stop-AzureWebsite
  130. Test-AzureName
  131. Update-AzureDisk
  132. Update-AzureVM
  133. Update-AzureVMImage
Not all of these cmdlets are covered currently in the Windows Azure Cmdlet Reference.

Related: Pluralsight Introduction to PowerShell Course - Notes


Read More
Posted in Azure, PowerShell | No comments

Saturday, 2 February 2013

Book Review: Fall of the Sparrow

Posted on 10:28 by Unknown

Salim Ali's interest in birds was sparked when as a child, his uncle, a member of the Bombay Natural History Society (BNHS) introduced him to the then Honorary Secretary, Mr W.S.Millard to identify a bird he had shot. The Britisher not only identified the bird as a Yellow-throated Sparrow but also kindled his curiosity that lasted a lifetime.  He patiently showed him several stuffed specimens and lent him two books, Common Birds of Bombay and A Naturalist on the Prowl which Salim Ali continued to refer even after sixty years.

Salim Ali's autobiography 'Fall of the Sparrow' is named after that fortuitous incident. This event led him to cultivate a life-long interest in natural history and particularly birds. There was a dearth of documentation on Indian birds and Salim Ali filled that gap. He pursued his passion for ornithology & conservation for the rest of his life despite having a slender income, being ridiculed by a few family members for not having a proper job and losing his wife in his mid-life.

He travelled wide & far. Besides visiting several remote, uninhabitable & far flung places in India (Jagdalpur, Mayurbhanj, Dhenkanal, Kutch) for his bird study trips, he also toured Burma, Afghanistan, Europe & USA at various times. He made friends with scientists & conservationists around the world. For his work, he received several honorary doctorates and awards (though late) not just in India but also from science-loving countries around the world.

In about 250 pages of his autobiography, he takes us through important events & people in his life in a non-linear narrative. The writing is candid, opinionated, engaging & mostly light-hearted. Sample his views on English and religion -

..without English, India would be 'an archipelago of nations in a non-navigable sea..
Placed as we are today, nationally and internationally, I am convinced that in order to keep abreast with modern thought, concepts, science, technology, etc. it is not only desirable but imperative for us to foster English as a link language for India. This is not to say that all possible encouragement should not, at the same time, be accorded to the local languages and to Hindi...
English is one of the most-perhaps the most-important and beneficial legacy the British have left us. It has been the chief factor in the unification of the country, in such integration as we have so far achieved, and in India making a mark in the international sphere.

Like all Muslim children at the time when I was young, and in many Muslim families even today, we were taught from an early age to read and recite the Koran parrot-wise  without understanding a word of the Arabic in which it is written, and to go through the prescribed genuflections of formal prayer (namaz). I am sorry to confess that all this not only failed to elevate my spirituality but on the contrary rather put me off formal prayer for all time as a meaningless and even hypocritical performance. Critical observation in later years of some of my own ostentatiously sanctimonious elders-of their precepts vs. practices-has not helped to alter my views.

He lived life on his own terms. Born in a country that believes more in superstition than science, he pursued his passion for science despite all odds and worked tirelessly to create awareness about conservation. Nehru and Indira Gandhi too followed his books with interest. He is one of my science heroes. I look forward to reading more of his books to discover by myself the birds around me and also the fauna of India

I highly recommend this book to all those who love autobiographies, scientists or  India.

Related:

  • Book of Indian Birds by Salim Ali - ebook available for free download at Archive.org
  • Search for other copyright free books by Salim Ali at the Digital Library of India website
Read More
Posted in Book Review, India | No comments
Newer Posts Older Posts Home
Subscribe to: Posts (Atom)

Popular Posts

  • Windows 8 keyboard shortcuts
    Win + X   - context menu to access common features like Control Panel, Task Manager, File Explorer, Programs & Features, Run, Search etc...
  • What is the difference between Browser Mode & Document Mode in IE
    If you're a web developer and your job actively involves building web pages that work the same in all browsers including the last three ...
  • My 30-day personal project - watch 100 hours of Pluralsight videos
    Inspired by Matt Cutts' 30-day challenges , I plan to watch 100 hours of Pluralsight online videos to get up-to-date with current ...
  • Archive tweets & favorites with Google Reader
    There are numerous ways to archive tweets but rather than use yet another tool, I prefer using Google Reader to preserve the tweets I mark ...
  • TWIL - Week #3
    This Week I Learned: New Azure VM Image Templates include SQL Server, BizTalk Server, and SharePoint Server (2013?) images . This can be han...
  • Dashboard-like info with Browser tabs, Windows 7 Taskbar tabs
    Browser tabs & Windows 7 Taskbar tabs are turning self-aware.  This is how my browser looked the other day: I had the summary of all tha...
  • The State Of HTML5 Video
    Key points from the  The State Of HTML5 Video  report by LongTailVideo (last updated on April 19, 2012): 75% of the desktop & mobile bro...
  • Azure in Pictures - overview of Windows Azure Features, Services and Common Uses
    Download the Windows Azure Poster in PDF format (1.1MB)
  • Indian comparison shopping sites
    Did you know, India has 120 million Internet users & the Indian e-commerce market is worth $7 billion ?  Travel accounts for over 80 per...
  • Things to consider before settling on a JavaScript Library or jQuery plugin for your project
    In the article, Which JavaScript Library Should I Pick? , Pamela Fox has listed some practical points to consider before you settle on a Jav...

Categories

  • AJAX
  • Android
  • APIs
  • App
  • ASP
  • ASP.NET
  • ASP.NET-MVC
  • Azure
  • Azure SQL Database
  • AzureInPictures
  • Bing
  • Book Review
  • Bookmarklet
  • Browsers
  • C#
  • chart
  • Chrome
  • Cloud
  • CSS
  • CSS3
  • DidYouKnow
  • E-Commerce
  • Excel
  • FB
  • Fiddler
  • Firefox
  • Gadgets
  • GeoLocation
  • GMail
  • Google
  • Google Docs
  • Google Reader
  • Health
  • Hotmail
  • HOWTO
  • HTML
  • HTML/CSS
  • HTML5
  • Humor
  • Hyderabad
  • IE
  • IIS
  • India
  • Internet
  • IT
  • Javascript
  • jQuery
  • JSON
  • JSONP
  • Laptop
  • Learning Resources
  • Lists
  • Map
  • Metrics
  • Microsoft
  • miscellaneous
  • Mobile
  • NAPA
  • Office365
  • Opera
  • PDF
  • Performance
  • Personal
  • PHP
  • PM
  • PowerShell
  • Privacy
  • Programming
  • Rant
  • Safari
  • Science
  • Search Engines
  • SearchEngines
  • Security
  • SEO
  • Sharepoint
  • SharePoint2013
  • Silverlight
  • Software Engineering
  • Solutions
  • SQL Azure
  • SQL Server
  • TFS
  • Tip
  • Tips
  • Tools
  • Tools/Utilities
  • Trivia
  • TWIL
  • Twitter
  • UX
  • VM
  • VS.NET
  • VS2010
  • VS2012
  • WCF
  • WebApps
  • Websites
  • WF
  • Windows Phone
  • Windows7
  • Windows8
  • Word
  • WP7
  • WPF

Blog Archive

  • ▼  2013 (112)
    • ►  October (16)
    • ►  September (14)
    • ►  August (8)
    • ►  July (8)
    • ►  June (13)
    • ►  May (12)
    • ►  April (12)
    • ►  March (8)
    • ▼  February (15)
      • Firebug simplifies programming with JSON
      • HOW TO batch Geocode a set of addresses
      • SharePoint 2013 NAPA Keyboard Shortcuts
      • Voice Fingerprinting
      • HOW TO handle a API's JSONP response that uses a s...
      • Tweetcheero
      • Fix for "The page at https://*.sharepoint.com/* ra...
      • "Missed call" from a mobile as an event trigger
      • Carefully review apps that provide Facebook Login
      • A "secure" website is only as secure as the third-...
      • Counter arguments to excuses of the Cloud Skeptics
      • Where is the .NET 4.5 folder?
      • Azure in Pictures - The Life of a Windows Azure Cl...
      • Automate Azure tasks with Windows Azure PowerShell...
      • Book Review: Fall of the Sparrow
    • ►  January (6)
  • ►  2012 (127)
    • ►  December (11)
    • ►  November (14)
    • ►  October (13)
    • ►  September (14)
    • ►  August (16)
    • ►  July (16)
    • ►  June (6)
    • ►  May (5)
    • ►  April (11)
    • ►  March (12)
    • ►  February (7)
    • ►  January (2)
  • ►  2011 (98)
    • ►  December (5)
    • ►  November (2)
    • ►  October (5)
    • ►  September (7)
    • ►  August (7)
    • ►  July (15)
    • ►  June (10)
    • ►  May (7)
    • ►  April (8)
    • ►  March (10)
    • ►  February (11)
    • ►  January (11)
  • ►  2010 (163)
    • ►  December (14)
    • ►  November (19)
    • ►  October (19)
    • ►  September (15)
    • ►  August (18)
    • ►  July (17)
    • ►  June (20)
    • ►  May (17)
    • ►  April (19)
    • ►  March (5)
Powered by Blogger.

About Me

Unknown
View my complete profile