Tagged with internet

The transfer of complexity

I would not give a fig for the simplicity this side of complexity, but I would give my life for the simplicity on the other side of complexity. – Oliver Wendell Holmes, Jr.

I remember attending Mobile Money Monday sometime in November, 2010 for a session on Mobile Web Trends. At that time, I was still thinking about how the whole service delivery platform had changed from SMS to USSD and MMS to GPRS and mobile applications. However, In his talk about the Mobile Web, Shwetank Dixit from Opera made a very interesting comment about the mobile explosion in Kenya and its impact: It was based purely on existing technologies such as SMS and USSD. In fact, the entire mobile money service of m-Pesa is completely based on USSD. The thing is if services can be delivered efficiently on existing technology platforms, then why use more advanced platforms as what is happening in the mobile industry ?

One obvious reason is the UX. Basically, mobile OS’es such as Android, the Apple iOS and Symbian allow developers to build pretty GUIs and define how text and graphics should be displayed rather than just a string of text. But I think there is a more important reason than that. It’s about transferring complexity from the development stage to the deployment platform.

I know I know. Too many multi-syllable words in that previous sentence. So here goes. If you had to develop an application using a normal non-OS solution, you would basically have to learn how USSD text works, how the network would deliver it and basically how to build an USSD-based product which does not typically work on C++ or Java or some other well-known OOP language. Secondly, design-wise you would barely get any flexibility. SMS limits you to 140 characters. Too many messages and it jams up the inbox (without any way to delete old messages automatically). Only text. The business model requires extensive network tie-up, etc. Basically, at the developer end you get badly killed. So it’s simple. Build it on an Android or/and an iOS platform and deploy.

However, what happens is that the complexity of building the app is not killed. It is transferred. It is transferred to the customer who has to  replace his existing barely-feature-rich handset to a fully loaded Apple iPhone to enjoy the product. It probably requires a GPS-enabled handset to locate a joint. It requires MMS capabilities to send across the required data. This is all fine in the USA but in countries like India and African countries, people first demand proof-of-concept before any adoption takes place. That’s why handsets with radio facilities exploded in Mumbai. The concept of radio and its entertainment value was already tested and proven. Apps and GPRS-based services, however are an entirely different story.  So was interactive TV which failed because people refused to adopt it without any proof of concept. So we end up missing a whole section of people who hold back from moving up the value chain because they don’t perceive value in moving.

I’m not writing this post from a developer’s point of view to increase adoptibility. I’m viewing it from the customer’s point of view. My biggest frustration is that a lot of people don’t have access to critical services and information because the complexity of the operation is transferred to them. It’s not that it cannot be done on a simple technology. It’s just that it requires a lot more (a LOT LOT more) effort from the development team along with certain UX and feature compromises to deploy the basic information on a plain-vanilla platform. And this kills adoption by people who could really use and benefit from the service: whether it is the rural poor unable to access financial services because they don’t have proof of identity (designing a process that requires documentation to open accounts is easy; deploying a product like UIUD across the country from scratch for people with absolutely no documentation of existence is difficult. (In the first scenario, the complexity is transferred to the customer – the responsibility to run from pillar to post to get the required documentaiton, in the second, it is transferred to the provider which simplifies the subsequent processes for the poor) or the humongous number of brands and sub-brands we face every time we go to make a purchase (tweaking a few options and launching them as multiple sub-brands is easy which transfers the complexity of making the choice to the customer).

The second example reminds me of Apple. When Steve Jobs (hesitatingly) accepted the role of interim CEO, his first action was to do a in-depth review of all of Apple’s products . There were around 50 of them.  Basically, customers had to choose among 50 of Apple’s products alone, forget about what HP, Compaq and Dell were launching. The complexity of choosing products to launch was transferred to the customer as products to choose from. As Steve himself said during WWDC 1998,

What I found when I got here was a zillion and one products. [...] It was amazing. And I started to ask people, why would I recommend a 3400 over a 4400? Or when should somebody jump up to a 6500, but not a 7300? And after three weeks, I couldn’t figure this out! And I figured if I can’t figure it out working inside Apple with all these experts telling me into it, how are our customers going to figure this out?

Steve decided to simplify. Legend says (and so does Icon :) )  that he went up to a white board and drew  a 2 X 2 matrix. The rows were “Types of computers” i.e. Desktop or notebook and the columns were “Types of users” i.e. Professional andConsumer (as per the picture below). That’s it. 4 products. Simple. And with that, he conquered the world.

grid of apple's products

Credit: Allaboutstevejobs.com

I think the basic point of what I’m trying to say is this: It’s that not all complexity can be killed. Those are few and very obvious instances where it can actually be removed from the process and the product. The problem is the complexities which get transferred. It’s when we can’t deploy services on simple platforms that middlemen arise. It’s the problem of standing in line for railway tickets that travel agents for trains arose. Online booking have reduced that complexity somewhat, but not without setting up its own complexities of requiring internet access and owning credit cards and bank accounts. It’s when there was a difficulty in getting a driver’s license (demanding repeat visits to the RTO) because the list of documents required was not updated that agencies who help you obtain driving licenses arose. It’s the complexity of choosing across multiple (and only slightly different) products that personal shoppers arose.  Unscrupulous moneylenders make unheard of profits because of the complexity of opening a bank account or getting crop insurance.These intermediaries take on the complexity and put in the effort required to resolve that complexity. To be fair, some of these middlemen obviously also provide a lot of other services to help the customer through fair and legitimate results but their jobs exist because of this complexity. Complexity which should not have been handed over to the consumer in the first place.

Telecom products and VAS are still at their infancy. In my opinion, this is the first infrastructure sector that is actually a carrier of knowledge rather than crude oil or power. It is, in fact, as I optimistically believe, the answer to the wide-spread problems of rural illiteracy, ignorance, lack of participation on vital issues and influence of propoganda . However, if these products / information are halted at the gates of customer complexities, it’s akin to the bureaucracy which refuses to let life-saving medicines into the city through octroi because the papers are not in adequate order. In fact, I have to re-iterate that. Customer complexity is like a bureaucratic government corporation – a bureaucracy that prevents information from reaching its rightful owner. The owner shouldn’t have to run from pillar to post sorting out the mess. It should be the producer who takes on the responsibility to deliver the information to the consumer’s footstep no matter where he is. It’s easy to demand that the customer accept some of the complexities to better their own lives. It’s a fallacy to expect it. It’s only when the consumer adequately believes in the proof-of-concept in his existing state of being, that he is ready to be hand-held into the more advanced nuances of your service/ product.

Bonus link: When strength becomes weakness. Dave Trott may be an advertiser but I swear, each one of his posts is worth printing and pinning to the wall !

Bonus talk: One of my favorites Barry Schwartz on the paradox of choice (based on the example of too many brands to choose from)

Update: Found another couple of videos on the topic from TED which I forgot to add
Sheena Iyengar on the art of choosing:

A slightly different one on choice which actually supports choice up to a point: Malcolm Gladwell on spaghetti sauce

Tagged , , , , , , , , , , , , , , , , ,

Why the hell are menus of home delivery services in pdf format on the net?

Credit: schillersny.com

 

Why the hell are all menus of eating joints in a static pdf format? Why the hell are they so lazy that your online menu is just a scan of the frickin’ paper menu? Why can’t I just have a clickable menu on the Net where if I click on the item, it gives me the details on the item (ingredients, origin, calories, whatever, photos, most ordered side dishes and the most commonly ordered/ highly recommended type of crust (when ordering a pizza for example), link to reviews about specific food items or highly recommended items. And if I say confirm, it adds the item to a order (shown maybe as a waiter’s notepad on the side). I confirm the order and directly place the same through the net (through an account session or something or the same way they map you to your mobile number before they ask for your order). Even if there is some finickiness (for example, one Domino’s store does not take an order for an area of delivery which is serviced by another Domino’s franchisee) or you’re not sure of some of the items, you just store the session (get a session id) and then just call them to confirm the order using the session id. Doesn’t that save a lot more time ? And give you a much better idea of what you’re ordering? Or in case of a classy, night-on-the-town kind of restaurant, use some kind of OpenTable button (in the USA) to make the reservation through them and get some discounts. And then integrate Google Maps to show the location. More specifically, shouldn’t restaurants/bars and mainly, home delivery stores use the Net more intelligently now ?

Note: Inspired by Why ARE Restaurant Web sites so bad?

Tagged , , , , , ,

Brilliant post from Dan Lyons

I love this post by Dan Lyons (better known as Fake Steve Jobs):

Friends Without Benefits

Not saying something is wrong with the way things are. But IBM is the only big company trying to solve problems truly on a global scale. (It could just be plain marketing but it’s too early to be cynical)

Tagged , , , ,

Media buying at $100? Brilliant !

 

‘Nuff said.

Check this out: How I ran an ad on Fox News

Didn’t realize Google AdWords was so well-designed for their television campaigns:

Tagged , , , , , , , , , , ,

TED Talks: Tim Berners Lee

An SQL query for the Internet? That’s what the Sir Tim Berners-Lee proposes to do with his concept of linked data. Tim compares the search on a complex protein between Google and  a search through his linked data architecture. Google- millions of results; not relevant, the linked database – 32 hits; all relevant.

While it is a little unfair to compare a generic Internet to linked data for such a specific query, the implications are pretty cool. Usually, when we come across tables, it is usually the summary of all the analysis performed. Or you get documents. Not DATA! Time demands raw data! Can you imagine governments putting up entire databases on the Internet – public domain information, obviously and then we can actually query that data for our own requirements. I remember downloading Excel sheets on Netflix rentals from the Long Tail blog to see if I could tease out some of my own inferences. It was pretty cool !

 The gap I see is the intent of people to “upload” raw data. I can’t imagine that even though you purchase a report from a research company, they would give you access to the entire database of data. But Tim takes this concept to an entire new level. That of linked data for relationships. He goes:

In fact, data is about our lives. You just — you log on to your social networking site, your favorite one, you say, “This is my friend.” Bing! Relationship. Data. You say, “This photograph, it’s about — it depicts this person. ” Bing! That’s data. Data, data, data. Every time you do things on the social networking site, the social networking site is taking data and using it — re-purposing it — and using it to make other people’s lives more interesting on the site. But, when you go to another linked data site — and let’s say this is one about travel, and you say, “I want to send this photo to all the people in that group,” you can’t get over the walls. The Economist wrote an article about it, and lots of people have blogged about it — tremendous frustration. The way to break down the silos is to get inter-operability between social networking sites. We need to do that with linked data.

 If this does work out, though, suddenly, the Internet will be a much richer source of information. See the talk here.

Edit: Finally, managed to get the video embedded. Check it below:

And this is the result, a year later: WOW !!

 

Tagged , , , , , , , , , ,

Cloud vs. Handsets/ Carriers….the debate continues

Cloud Computing. Credit: News and Reviews

While I’ve talked about apps distributed through handset vs. apps through carriers, never really got into cloud vs. proprietary. Basically, it means that should there even be a more distributor channel for apps which means downloading applications only available through one handset provider or only through one carrier. For the uninitiated, simply put, cloud computing is where the handset sits as an input-output/ communication device while the processing parts are managed by a central server. This would be equivalent to saying that you want to add the numbers 2 and 3. You type “2″, then “3″ and then “Add”. If it’s a cloud infrastructure, all these inputs are sent to a central server (Somewhere in what is called the “cloud”. It doesn’t matter where or what type of server it is. What matters is that it can be accessed and it can perform the required function) through a connection established between the handset and the server. The server looks at the “2″, “3″ and the “add” and then performs a summing operation and returns on the same connection a “5″. The handset receives this and displays it to you. If you think, this is riduculous, you’re right. But only for this level of computation. However, if you wanted to perform some statistical analysis on your handset like a mean, or a variance analysis which your handset can’t support, then this architecture comes to your aid. Leave Math. What about hard core gaming which requires an operating system to talk to? This can’t be done on a plain vanilla handset. But if the only function of the handset required was to receive you input to “jump” or “shoot” on the input side and redraw the pixels on the output side, this can lead to a credible albeit slightly shaky experience.

Where I’m coming from is that migrating to a cloud-type of architecture basically allows you to be carrier and handset agnostic. The only thing that matters is the mode of communication between the handset and the cloud. In my opinion, this is the only significant strategy of adoption of services in India. With handsets like the Nokia 1100 as one of the faster selling phones, applications for the rural market cannot depend on any functionality on the phone itself except for voice and SMS.

The Indian market has already given a thumbs-down to the iPhone frankly, the reason being value for money. Even some of the people I thought to be relatively hip have no reason to have one. And those who do have one invariably have a hacked-out one which basically negates the whole exclusivity thing with Voda and Airtel.

Developer’s point of view:

In the urban areas, the handset market is littered with Nokia, Sony, Motorola and HTC as well. And while, Nokia is the dominant market leader, it doesn’t dominate it enough to ignore all the other manufacturers while developing apps.
From the brilliant App is Crap post by Mark Suster:

- Let’s start with Google’s Android. You’ve just hired your iPhone development team for you app. They’re super busy developing a new version of your product because, guess what, Apple changed it’s terms of service to allow in-app purchasing. So you rush to develop a new monetization strategy which means rebuilding your app. It’s taking time to finish the product because you’re super expensive iPhone developers (they’re in high demand) are not as good as you like (they’re super high in demand). Should you now hire Android developers? Can your iPhone developers be good at both? Do you have enough resource to cover both?
- And that Palm Pre. I heard it’s pretty slick and Sprint seems to be pushing it really hard. I heard they have an App Store. Let’s look into it. Maybe we could ship our app and see how it does?
- Oh, wait. There’s that RIM company with the Blackberry. Should we have an app for that? They have a super relevant and high-end installed base including people like Mark Suster who never gave up his Blackberry since Apple only offers itself on a super sucky network for which their is ZERO bars of coverage at his house in Brentwood. But their browser sucks, their app environment sucks, the developer community isn’t strong. But we need device coverage, right?
- Oh, wait. I need some Microsoft OS coverage. I know Windows CE is dead despite having like a 100-year head start on Google. But Windows is now making a push with Windows 7 Mobile. Maybe we could get an application out early for that before everybody else does?
- And how about Symbian? We’re going to want to develop for all those Europeans, right? And Nokia has the Ovi Store thing, right?

And this is only the developer’s headaches. How do you manage a team making the same product? You can’t re-use classes, you can’t re-use objects and hell, you’re rebuilding the same product from ground-up. I used to fantasize about some kind of universal compiler where you right the code once for one platform and then this universal compiler would actually re-compile this code for all other platforms. But wait a minute? Isn’t that exactly what a cloud architecture does? Keeping the processing of the data, the classes, objects, methods, databases and all that jargon away from the handset? Making it a kind of a black box for the handset so that the OS on the handset (Hell, even the absence of an OS) does not affect the functionality of the application)

Customer’s point of view:
Forget compiling code, using a basic SMS delivery platform a basic handset like a Nokia 1100 could access some pretty advanced functionality since the entire the thing would be processed in the “cloud” of powerful servers. It would be in some sense a “black box” for the handset and hence, the application was handset-independent.

Second is the freedom of choice. Jason has put it so succinctly put it in his post The Case Against Apple–in Five Parts:

Apple will face a user revolt in the coming years based upon Microsoft, Google and other yet-to-be-formed companies, undercutting their core markets with cheap, stable and open devices. Apple’s legendary comeback ability will be for naught if they don’t deeply examine their anti-competitive nature.

Making great products does not absolve you from technology’s cardinal rule: Don’t be evil.

It also doesn’t save you from Scarface’s cardinal rule: Never get high on your own supply.

Interesting times. While VAS in India has been dominated by ring-back tones and Missed call alert services, the VAS market has not seen the real relevant services being pushed. The real useful ones haven’t yet reached critical mass partially in terms of usability issues and partly in terms of the revenue model. Now, that voice and SMS are really going the commodity way, and data hasn’t picked up fast enough to replace the voice and SMS revenues, now there should a push towards maturing this service/ business model.

Let’s play !

Tagged , , , , , , , , , , , , , , ,

Happy Birthday Firefox

Firefox logo

Credit: WordPress.com

5 years back, there was a browser that rose from the ashes of Netscape and Mozilla. The Fox then stormed across the world consuming everything in its sight. Besides it’s origin as an open source application, it still blew every other browser in sight with its advanced features such as tabbed browsing, spell checking, a download manager, etc. Further, it also implemented all the standards defined by the W3C. The best browser so far and the fastest growing too !

Growth of Firefox user share

Credit: Wikipedia.org

Key to statistics

Credit: Wikipedia

TEXT_HERE

TEXT_HERE

TEXT_HERE

A video from the 5 years of Firefox site

To add to the good news, Firefox finally surpasses Internet Explorer 6.0

Ars Technica browser market share

Credit: Ars Technica

Update: The hacks at Mozilla.org blog on the occasion.

Tagged , , , , , ,

Mobile social networks

I first thought of this concept when I was doing my MBA (around 4 to 5 years back). It was always thing of “what would happen if I could create a social network for mobile phones”? This is not like Facebook for mobile or Twittering through a mobile phone. The main difference would be that it would be:

1. Incredibly location-specific: In telecom terminology, it would be at a cell-level or a site-level grouping

2. Incredibly purpose-specific: That is, it would create links between people who have similar attributes.

The first point is simple. If someone in my friends’ network is at Worli Seaface and so am I (on the other end), we both would get an intimation about the other’s presence. Once we both agree to link up, a chat window would open wherein we could figure out where to meet and even whether to meet right now.

The second point would be the killer: Imagine two people (strangers to each other) at the same place (Bandstand if you must), one is a VC and the other is an entrepreneur seeking VC capital. If the VC is “looking” for entrepreneurs and the entrepreneurs is “searching” for VCs, the social networking platform would consider these two people invitations to link/meet up. Maybe, once the requests are approved, the VC gets access to the entrepreneurs’ profile to see what the company is about and then chat with him on that.

A few salient points:

1. Intimation without confirmation: It should never be clear to one of the parties whether the other party is ignoring the invite or does not know about it. This is because, if I know that you received an intimation that I am around and you don’t want to connect, I may feel insulted. Hence, there needs to be a distinction between logging on to the network and receiving intimations

2. Ability to turn-off the intimations at any time: Personalization extreme. I choose on which communities (in the above example, the VC would belong to a community of VCs investing in startups and the entrepreneur in a community which seeks VCs) I want to receive intimations from and which I don’t

3. Maybe increase or decrease the range of search for other people

4. Add-ons – Whether I can add testimonials, comments, blog urls, my feeds, etc.

Loopt does that to a significant extent except that it links people based on friends’ networks and tags but neglecting to integrate community and purpose. From their site:

Loopt shows users where friends are located and what they are doing via detailed, interactive maps on their mobile phones. Loopt helps friends connect on the fly and navigate their social lives by orienting them to people, places and events. Users can also share location updates, geo-tagged photos and comments with friends in their mobile address book or on online social networks, communities and blogs. Loopt was designed with user privacy at its core and offers a variety of effective and intuitive privacy controls.

A similar kind of mobile community here: New Loopt App Helps You With Random Hookups … Now

While the concept is the same, the objective is different. Maybe :) .

Tagged , , , , , , , , , ,

Telecom Media Gateway – III: What needs to get done first

I talked about a different model of television here and the unique advantages here. Here, I just wanted to talk about the possible hurdles in that model

1. Cable operators: Practically, in India, they are a powerful albeit invisible lobby. Politicians are rumored to have their sticky little fingers in this business. The operational model lays waste to this middleman and they won’t go down without a fight

2. The dumb TV: Well, this is one of the biggest problems in the expected setup. For one, the service would have to be IP based and except for the higher-end televisions, televisions do not have their own IP or Internet address or any kind of unique identifier. Apple tried to create a smart box for the TV called as Apple TV. But that flopped because:

  • It was configured to play only HDTV. Hence, normal resolution TVs would not work or create intensely grainy images
  • Apple TV only displayed movies that were first downloaded on to your PC hence making it duplicating the effort required
  • Limited format support.

If, however, we have a smarter set-up box to do some other operations, this kind of service could explode. These other operations would include:

  1. Authentication: Already done by set up boxes for DTH or  cable
  2. Profiling: Currently, a DTH set up box only acts as a filter blocking signals from some channels and allowing others. A profiler would basically allow you to create profiles for each member with an authentication protocol. It would track the profile’s viewing habits and log the same for further customizing the service. This is an implicit profiling pattern. The box would combine this data with the explicit profile (where the subscribers state what content they like to see or want to see)
  3. Updating: The box would typically query the content server to check for any new content (episodes, songs, etc.) that have been updated in the server. This would be based on the profile (explicit / implicit) of the particular login id (unique identifier for the profile).
  4. Advertising: This would work on a client-server basis. The advertiser would choose the content and the location (e.g. Bombay, Nagercoil, Dadar, if possible) and based on the IP address of the box, the advertisement would be correspondingly displayed.
  5. Reaction: Part of (4), but like Google ads, ads which are ignored are subsequently removed from the system. This would help even the advertisers to choose which ads to broadcast and which are not worth the money spent on it.
  6. Assistance in transactions: Not to get too detailed on this, but if we have a common pipe, the box can direct the customer to a site for purchasing items displayed in the ads.

Yes. In this world, the box is the centre piece.

3. Adoption: The toughest part. It would all hinge in how user friendly the interface is, how the pricing structure should benefit the subscriber, what technology is being used, e.g. I could recommend HDTV quality movies if I know that the subscriber is using a plasma or an LCD TV. The benefits of customization should benefit the customer first and only then the service provider.

4. Security: If I recommend a profile, I have to recommend that there should be adequate security controls and permission controls so that the personal habits of a person is not displayed for the world to see. Also, if the content is streaming, no subscriber should be allowed to hack the box to download the content resulting in copyright infringement.

5. Architecture: Joost has launched it own peer-to-peer technology for on-demand TV for desktops. Given, that PC penetration in India is abysmally low, a parallel paradigm would be required for television. A PC will just not do. The question is what would be more appropriate: A client-server model, mainframe or the brilliant P2P model.

Wait a minute ? Instead of a setup box, could I use a mobile phone as a profiler?

Tagged , , , , , , , , , ,

Telecom Media Gateway II: Unforseen advantages

In the previous post, I talked about a different model of content delivery and what are the upfront benefits we see. Now, for the unseen advantages of such a delivery mechanism

1. Pay models – With DTH and Setup boxes, we have been able to create bouquets of channels so that it becomes easier for subscribers to choose specifically which channels they do not want to pay. However, the problem with this is that the creation of bouquets is standardized and may not match what we want to see. For example, in our family, I watch Star World, Star Sports, ESPN, Discovery Travel and Living and Discovery, CNN IBN, VH1. Dad watches Nat Geo, Star Cricket, NDTV, Animal Planet. Mom watches soaps occasionally and Marathi channels while my Granny watches the Tamil language channels. In such a scenario, we end up choosing a large number of bouquets (courtesy the mode of creation of bouquets by the channel providers). This basically makes it more expensive for us to actually choose a DTH connection and hence, we revert to the original cable channel providers.  The model I describe can be actually used to create bouquets a content level rather than a bouquet channel. Example, a bouquet that allows me to watch F1 on Star Sports, NBA on ESPN, Engineering Marvels on Nat Geo and Hip Hop Hustle on VH1. That would be a bouquet I would prefer to buy and if the same is cheaper than what I pay, then why not. I could also add Animal Planet wholesale to this bouquet. Actually, rather than a bouquet, I would prefer to call it a shopping cart where I can add and remove channels and programs (“content”) at random.

2. Interactive TV:  Not the way that DTH operators define it. Given the previous analogy of a shopping cart, this model would create an Amazon.com for television where I can read other people’s reviews on that program, movie or whatever. I could add discussion forums and stuff on a separate server which I can access prior to acquiescing to content delivery. This is a benefit of delayed watching (asyncronous delivery again)

3. Better targeting of advertising. With the current broadband operations, it is incredibly difficult to clearly identify customer preferences and dislikes. Everyone depended on TRP ratings for the same (which in my understanding is incredibly suspect) for the lack of a better mechanism of rating programs. Advertisers could only take a stab at the demographics of the people “consuming” (watching) the content (programs broadcast). Now, if digital delivery is based based on the IP of the “television” (will come to this later), it is very clear what each “IP” is watching (An IP would pertain to the particular node where this content is being delivered. In the current explanation, that would be the television). Hence, two people watching the same program would have different advertisements displayed based on not just the program that their currently watching, but what they have watched previously as well. It’s a kind of profiling which I will come to in another post.

4. Oops! Did I just make the cable operators extinct? Considering that Airtel and Tata both provide the pipe, the DTH infrastructure and the internet services, the extinction has already been set in motion.

Obviously, there ARE problems in the proposed model. Most of which pertains to the dumb TV. More on that in the next post

Update: Just realized another real brilliant advantage is to create a mini-youtube kind of thing. Not to simply replicate the original one but to give a subscriber multiple points of view of the same action for example in sports. Details are in this post.

Tagged , , , , , , , , , , , , , , , ,
Follow

Get every new post delivered to your Inbox.