Creative Ideas.

To all the entrepreneurs and dreamers out there, hi! We want to share with you what's been on our mind, what issues we're currently dealing with, and how we're solving them. We invite you to come along for the ride -- how often do you see a company that does that?

NY Tech Meetup

After years of organizing the NY Tech meetup together, Scott Heiferman and Dawn Barber are looking for someone to step in and take the reins. The new organizer will have to solve many issues, including the prospect of a larger venue for the growing group, corporate sponsorship, and increasing the opportunities for its members. These are the issues I’m considering, since I volunteered to run for the next organizer (along with 10 other people). I’m going to be presenting on Tuesday. Wish me luck! :-)

A lot has happened…

… since the last blog entry.

I’ve finished PAL with its plugin system, and built many projects on top of it, including:

  • http://apps.facebook.com/editphotos/ <– proof of concept for Photo Artist, using our new viral photo technology
  • A facebook application for MAC cosmetics
  • A Flash application for Bluefly
  • and more.

This month, luckyapps is working on:

  • Holiday applications for facebook, and several non-profit organizations
  • An improved gifting engine for our clients
  • A casual network game engine is in the works. More about that later.

Happy holidays!

Plugins

I’ve now gotten my framework Pal to the point where it is in very good shape. I’ve already made several projects with it, such as this one. I decided to think seriously about adding a robust plugin system, that would let me re-use and upgrade plugins between projects, and facilitate the development process.

Architecture diagram:

Architecture

 

 

Development process diagram:

As people produce more functionality on top of Pal, it should consistently and neatly fit the two diagrams above. This lets development happen smoothly, and allows functionality to be re-used between projects.

So right now I’ve just got through designing the basics of the plugin system for Pal. It makes the following possible:

  • Plugins can be developed and used across multiple projects. The user of a plugin will be able to decide whether particular instances of a plugin share their databases/model or not.
  • Plugins will be versioned, with several versions coexisting side-by-side. Upgrading a plugin will mean installing a new version.
  • Keeping track of dependencies between plugins and their versions.
  • Separate projects will be able to use separate versions of a plugin. Installation and upgrading will involve importing the web assets of the plugin, executing .sql files to upgrade the schema, and .php scripts to do anything else automatically.
  • A control panel (basically a Pal project) for managing Pal projects, plugins, and modules in a consistent way. It will allow adding, removing, exploring and changing properties of many different items in a consistent way.
  • Integration with automated testing, with scripts to handle setup and teardown for staging.

My current design does all that. Now it’s time to start implementing it :)

Three insights for the new web

Working on facebook applications in 2007 has taught me a lot about the web in general. The landscape has changed. In some ways, making successful apps on the web has now become a bit of a science. Here are three key insights about how a successful project should typically be designed:

Business Aspects

A very successful web application should achieve the following three objectives:
1) It should be viral - people would help spread it themselves
2) It should be sticky - people would enjoy coming back and using it over and over
3) It should monetize - usage of your application should translate into revenues of some kind.

There are many ways to achieve each one of the three things. Almost all applications on facebook aim for the first two steps — 1 and 2, but most do not seem to have seriously been designed for 3). That is why, when they are at 200,000 users a day, they are still not making a lot of money. But are they worth a lot?

Actually, having just 1) and 2) is good, too. Imagine if your first project resulted in stable traffic of 200,000 visitors per day with no sustaining effort on your part. That is 200,000 people (many of them returning visitors) every day who enjoy using your web application for one reason or another. Now, if you implemented a project that really helps the user and monetizes, you could drive this traffic toward that project. Many useful products don’t spread virally at all. Consider Adobe Photoshop. Services on average spread more virally than products (because you can usually somehow involve your friends) but here’s the thing:

If you took an existing viral and sticky project and promoted a monetizing project, you’d have a sustainable money making machine.

Keep in mind, however, that there is a limit to this. Those 200,000 visitors are most likely mostly returning visitors, so you might have at most 1-5 million TOTAL visitors. That means you’re not going to be making a billion dollars from making a one-shot-wonder like a software program and selling it to your users. However, you should keep the momentum going. Each one of your products and services should continue the good experience for the user and provide opportunities for you to later introduce something new to your users.

Of course, the best projects achieve all three — viral, sticky and monetize — starting from their very conception. That way people start coming, staying and spending money from the very beginning. If I was a VC, I’d strongly look for the actual mechanisms that would achieve 1, 2, and 3, and make sure they are all viable and have a good chance of working. These are the main factors these days, that can make or break your product. (Sure, there are completely different ways to market, such as SEO and Google Adwords, but I am talking about startups, exponential growth and major possibilities.)

If you apply this “successful combination” analysis to previous products, you can see its power in determining how things play out. For example, Whimit - Russians Online (and still is) was a social networking site that launched way before facebook.

Viralality comparison: One of the major problems was, it was limited to Russians. So, the initial growth in the Russian communities was explosive. But because of this limitation, it didn’t become much more viral than that. At some point, it had around 3 million members. It lost most of its visitors to facebook because people had lots of non-russian friends, and started to get pulled away to this new site.  TheFacebook, on the other hand, started in Harvard and got half of the student population using it within a month. It’s kind of funny that it started as just a follow up to a hotornot clone. The hotornot clone was done first, but what people really always wanted to do was connect with each other and share pictures and express themselves. Especially students! (They already had yearbooks, so it was an easy concept to understand.) I believe facebook would have taken off just as much if it had started at NYU or Berkeley. (See myyearbook.com) Of course, it helped that it had an enterprising founder and smart guys taking it to the next levels.

Stickiness comparison: And in thefacebook.com, for the first time, they had a site that did all these things, and rapidly improved and gave them more and more features. Whimit didn’t. It was pretty static and — although it had unique features, like polls — it didn’thave many privacy controls, searching, events, discussion forums, modularity… facebook was just built smarter and eventually offered a better user experience. This is another reason why whimit lost to facebook. Facebook was way more sticky.

Monetization: Okay, whimit had already lost. But it didn’t help that users’ profiles were spammed with promoters advertising clubs. Facebook keeps a tight lid on spam, and its advertisements started with low-key “flyers” in the bottom left of a page. Anyone could post a flyer, and it was pretty democratic. I think facebook could make way more revenue than it currently does, but this already generates at least ten million dollars a month in revenue, thanks to their 40+ million users.

The number of your friends on a site also contributes very mcuh to its stickiness. If more of your friends are doing actions on a particular site, you feel your drive for social interaction being satisfied better through that site.

How To Be Viral?

Here’s the short answer:

  • Help your users invite their friends through viral channels - email, AIM, word of mouth, print media, facebook invites.
  • Give them a compelling reason to spread word about your product. This can be done artificially — by giving them some kind of contrived points they can spend in your app, or intrinsically — because they would benefit from the network effect of having more of their friends using the app. Both are good and there is no clear line where “intrinsic benefit” and “contrived benefit” begin and end.

The problem, though is no matter how good your application is, it will have an extremely hard time growing virally through channels which are clogged/ignored by users. This can be seen currently in the facebook application platform. Because applications many hijacked the crowd mentality and some abused things outright (such as forcing invites), the invite channel got comlpetely spammed, and many people lost faith in applications that even their friends recommended. No matter how good and sticky your application is, if it sends an invite to a user with a lot of friends (and those are the ones you want to reach most), it might wind up 537th out of 839 invites. What are the chances anyone will care?

Facebook could have avoided this by letting the users control the exponential factor of growth for applications. users could rate an application on its about page, and if the rating was unfavorable, the maximum number of daily invites would be lowered for it; and if everyone loved the app, it should be able to spread by even 100 invites a day. This simple system would have kept the invites channel full of mostly relevant stuff, proportional to how many other users liked this app.

As it is, facebook implemented a stopgap measure based on how many people reject your invitations. Guess what! The people most qualified to decide  whether an application is great or not are the people who have used it. Their ratings should affect the maximum rate of growth of the app, not the responses of the poor friends who are still being deluged by invites.

Another thing that would have been great is to have a button that says “ignore future invites from this application”, with an option to unblock the app later. Facebook may have that — I’m not entirely sure — but it’s not prominent. Instead, they have a big button that lets you delete all your invites. Hardly helpful for restoring faith in that viral channel.

In short — at this time, the invite channel on facebook is clogged, so you should be using other means to spread your social apps.

Architecture

Finally, let’s realize that not all web apps much reside solely on facebook. Instead, let’s leave our options open, and grow our own businesses. The web used to be just web sites. You can think of them as standalone programs. You could embed widgets into any website, but the widget didn’t really have much personalized information, since it didn’t really know who you were very well. Nowadays, social networks like facebook, and other websites that log in their users, have enabled you to write applications on top of them that actually know a lot about the person and even their friends. So the new web architecture is becoming something like this:

BACKEND + INTERFACES

Interfaces include your web site, facebook apps, myspace apps, and widgets embeddable in websites like blogs. Interfaces can be personalizable or generic. On a site where you know who the logged-in user is, you can display information from your service relevant to them (such as what their friends are saying). On a site where you don’t know who the logged-in user is, you can display the most recent information, to tantalize them into clicking a link to your site, or remaining in the widget and logging in through there.

In short, build all your backends to be independent of facebook. That means, don’t store the user id as just “facebook uid”. This goes for all other objects. Anticipate you may have users coming from elsewhere, and build accordingly!

FreeMeet — the social calendar

“Hey, dude. What are you doing tonight?” “You wanna do something?” “Where can we go…” “well, I know this nice place…” “Want to invite some girls?” “Nah, not tonight, man.”

This happens all the time. People want to get together. They want to do stuff. Sometimes, they’re busy and they need to stay in. Other times, they want to see a movie, they want to check out a new place, they want to meet new people, they want to be social.

FreeMeet — the social calendar solves all those problems.

I’ve been bouncing around lots of ideas, lots of programming, lots of time and resources. I’ve tried a lot and did yet not have one resounding success. Since my last post about becoming focused, I have become more so. Now, when I’m putting together a business plan for freemeet, I realized just how wonderful that service can be — it can improve not just my life, but the lives of everyone around me. I can actually build a business that makes life better for a lot of people. They say a great business addresses a pain that the customer feels. Well, lonely people, social people, guys, girls, and those who feel that “pain” I have felt for the past several years — some times more than others — I can help you.

To accomplish this, I will focus on freemeet, more than anything else at this time.

Enough shedding tears about the past. If you’re gonna feel something, enjoy that you’re feeling.

I’m really going to enjoy this business.

On March 25th, FreeMeet is born.

Paptcha

Here is another one of my creative ideas, that I wanted to do for quite a while. Personally, I don’t have the time to make it right now. But I would really like to see it done.

So as with my other ideas, if you’re going to do it, let me know. Cause I’d like to take part in some small way :)

How do you prevent your sites from being overrun by automated spambots? One way is to let only logged-in users affect the databases. But at some point people have to sign up, right? And maybe you might want visitors to try things out before making an account. For all this, there was a quick method to weed out the bots: CAPTCHA.

CAPTCHA stands for Completely Automated Public Turing test to tell Computers and Humans Apart (whew). Captchas started out over ten years ago and are still being used today. We come across them from time to time on the internet:

Sample captcha

If a form is being submitted, someone’s got to type in the letters. The idea is, a bot can’t do it. That’s because the search space of all possible solutions is too big to randomly guess, and solving the problem, and because solving the problem is too hard for a computer program.

Well, the news is out that the major CAPTCHAs have all been cracked. Jeff Attwood made a great blog post about it recently, and you can find the story about the latest crack here. That’s GMail being cracked. This doesn’t mean your passwords are stolen, but it does mean spammers can make thousands of GMail accounts to play with. And GMail.com isn’t unlikely to be blacklisted.

If you make your own CAPTCHA, it is unlikely someone is going to crack that particular one. Even if it’s just an slightly distorted image of a word, and you expect them to enter the word ‘blah’. That’s because it’s in the spammers’ interest to crack something once and gain a lot of benefits. They are very unlikely to make a bot that can crack crack every single CAPTCHA on the internet, but they will definitely focus on Google and Yahoo.

But because these CAPTCHAs at google and yahoo are all automatically generated (that’s the CA part), these people have figured out how to get back the text they started with, with impressive accuracy: 20% in google’s case.

There are, of course, much more secure ways to make sure people don’t abuse the system. You can, for example, use two-factor authentication, and simply verify the user’s email or cellphone number (typically people do not have more than 1 or 2 cellphones, so verifying a cellphone is a great way to make sure a user has only 1 account — although it does rule out some people who don’t have one).

Here Comes Paptcha

So here is a slight variation on CAPTCHA that makes a lot of difference:

Let people submit photos with text in them. The letters in the text, once submitted, can be mixed together to make words. Or words can be mixed to make sentences.

The best OCR software is still rather rather bad with real-life situations. Text is skewed, printed in many different fonts, distorted a bit, and so forth. Here are some examples below:

Street signs:

Stree signs

T-shirts:

T-shirts

Coffee Mugs:

Coffee mug

But perhaps computers will be able to read these. So an even easier thing would be to combine these pictures with a question. The space of solutions is big, and the questions are pretty intractable.

Change the C to a P and it’s called PAPTCHA — Partially Automated Public Test to tell Computers and Humans Apart. Whew!

But how would it work?

Here’s how:

  • A fun site where people would submit thousands of new PAPTCHAs every day
  • We’d make sure they are people by two-factor authentication, or by existing PAPTCHAs.
  • An API that would allow sites to place these PAPTCHA challenges on their forms
  • New PAPTCHAs would be tested. Unlike CAPTCHAs, PAPTCHAs might have more than one popular answer. Viewers would be presented with one or two heavily tested PAPTCHA (tested means that there were at least 1000 attempts, say, and 1 or 2 answers which are by far most common), which would be used to prove they are a human. And alongside the tested PAPTCHAs, they would get one PAPTCHA that is being tested.
  • But they wouldn’t know which is which. The PAPTCHAs would all be strung together into one sentence or word. The challenge would be considered solved if the tested PAPTCHA subchallenges were all completed successfully.
  • We could use some bayesian estimation to determine which answers are correct and when a PAPTCHA is sufficiently tested to be used. We would probably end up with a linear combination of some sort — I haven’t done any mathematical analysis on this yet.

Of course, these PAPTCHAs, like CAPTCHAs, will need to be implemented carefully. There are other security threats, such as session hijacking which sites need to guard against in order to be as secure as possible. But PAPTCHAs will prevent bots from doing much of anything, until of course hackers come up with ways of reading even 1% of all text from different kinds of photos in the world. In that case, they might as well get some venture capital :)

Let’s Build It!

This is one of the upcoming battles of Humans vs Machines. It should be fun to watch. This project has a lot of practical benefits, so if you want to make it, contact me.

Why contact me?

Because I registered paptcha.com :)

So, what do you do?

That’s a funny question I often get asked when I am on a date. (Yes, by the way, I am single.)

I do, and am interested in, many things, so it’s hard to just put me in one box. But the answer to the question doesn’t have to sum me up. It just has to paint a picture of who I am. It can be one side of me. It can be an engaging story. That’s what people can really connect with.

I just realized today — my company’s tagline works great to answer this question. “I help bring people together.” That’s intriguing… how? Am I Hitch? Well, in a way, I actually am. I help create opportunities for people to connect and share information better than ever by using that old tool, the internet.

Next time you’re asked what you do, feel free to use your company’s tagline.

The “best” productivity metric?

I don’t have a lot of programmers working FOR me right now, and things are pretty laid back. Which is nice. But I look at companies where a team of programmers are working, each earning a full-time salary — the kind of company I might soon be running — and many of these companies want to compensate their employees based on their achievement/performance/productivity. They might give a bonus, or divide up the profits from the project, etc. How can this be measured?

You can read far and wide about how the number of Source Lines of Code, or SLOC, is both the easiest to measure and a really bad idea. Joel Spolsky and others have written extensive opinions about SLOC. I’m not going to rehash all the points, but just point to the good links.

No, instead I am going to suggest the easiest metric I can think of that actually works. This is Creative Ideas, and I decided it’s about time to start writing them on here.

So what’s the metric?

Simply put, it is the weight of features you build, as a percentage of your entire team’s work. The thing is, when the team gets together to decide on the features, they also decide on the weight of the features. That super-critical function should probably have double the weight a normal function has. That algorithm which takes 1 week to research and get right should also probably have double the weight. After coming up with the features to implement, let the team rank the features in the pre-coding analysis based on how important they are to the overall project, and also by how difficult they are to build. Incidentally, this also gives you a great “cost-benefit analysis” right there, to see which features are the most necessary. And prioritizing like that can save the team a lot of time. And during coding, if there is any serious discrepancy between how long a feature is taking to make and how complicated it seemed at the beginning, a re-evaluation is in order next time the team meets to discuss the state of the project.

The metric is this:
The productivity of each programmer is measured by the weight of features they produce, in relation to the overall project. Producing involves passing all the tests correctly and fixing all the internal bugs.

Okay, so it’s clear this system is more fair than SLOC for measuring productivity. But why is it the “best” productivity metric? Well, it kind of is by definition. When a particular programmer is found by a productivity metric to have done 30% of the work of the team, and should be compensated accordingly, who is the main party that needs to agree with this assessment? Well, the rest of the team. They are the ones most directly being impacted by this. And since the team gets to weight the features and allocate the responsibilities, they by definition agree with the metric. Poof.

Okay, so programmers don’t really game the system to take advantage of the rest of the team. But maybe the team can game the system and take advantage of a couple lone programmers (new hires, perhaps). Valid concern. One answer is, this is the job of the manager — to oversee that substantial abuse on any level does not happen within the team. The manager should be present at each meeting where these things get decided, and be familiar enough with each programmer’s work to know how much they can and should handle.

This system can be applied not just to large projects, but small subprojects as well. An interesting question is how the weight of subprojects trickles down to the weight of features. Or should weights aggregate up? There are lots of possibilities here, but I’ve just described a simple metric for one project done by one team. If you’re managing one team, you can use this in your assessments.

Jiving with Agile Development

Okay, sometimes teams don’t just sit down and make a lot of requirements, sign off on them, and start at the top of the waterfall. These days it’s become pretty popular to do agile development, extreme programming, or whatever else you want to call it. Because they are to be kept simple, tests should not normally count in this metric, only the code to satisfy the tests. In fact, it is a good idea for one person to write the tests and another person to write the write the code to satisfy them, so as to avoid the “programmer blindness” phenomenon of only looking for things you expect to see.

Since there are as many styles as there are people and teams, I don’t have a one-size-fits-all solution for everyone. But here’s a guideline — if you are considering adding new features, batch them together and hold another meeting at some point, to do the cost-benefit analysis again. You are just doing things iteratively instead of as a monolithic project, and you let your clients know the results of this internal cost-benefit analysis. If it’s democratic and fair, and the manager makes sure the new programmers aren’t being abused, then this metric will work even better, since your team keeps refining their ideas of what feature is “worth” what.

So there you have it. What should we call this metric?

Productivity

I need to be more productive. One of the reasons people are reading this blog is because they respect what I have to say. And that will happen once I actually achieve something big. As I write this, almost no one is reading this blog. (If I’m wrong, leave a comment and tell me otherwise! :)

When you start running your own company, you have to look out for your own interests and pursue them. You probably don’t have a manager who tells you what you should be doing. It takes discipline to continually lay out a productive plan and stick to it.

Personally, I really enjoy creating the projects that I want to create. I sometimes work extremely long days in the comfort of my home. But as far as my plans for creating popular social applications go, I have not been productive enough. That’s because I am pursuing too many ideas at once. I have lots of things I want to do, but by not completing things one at a time, I spread myself too thin. I’m not very lazy, but I am disorganized.

I’ve got to be able to complete projects. I mean, I’ve got tons of experience with PHP, MySQL, HTML, CSS2 and JavaScript, as well as in-depth knowledge of C, C++ and Win32 app development. I’ve picked enough Flash/ActionScript to make my own ecards app. When it comes to knowing how things work, I’m a jack-of-many-trades, from browser quirks to from the knowing guts of the Win32 API. I learn quickly — at least when I can apply my usual patterns of learning.* I have a full set of powerful software tools installed, including Visual Studio 2005, the entire Adobe Creative Suite CS2, Microsoft Office 2007, Firefox 2 with firebug, and Zend Studio for Eclipse. And by the way, I have all of them installed legally :) Now I just have to do the work productively!

There are three ways to becoming more productive.

  • Get others to help you.
  • Strive for success in one project before moving on to the next.
  • Make incremental goals for every workday and achieve them as much as possible.

I’m not going to elaborate more on this, because at this point, I think it would be more productive for me to go implement these. We’ll see the results shortly. I’ll post here about them. Oh and if you’re wondering why this post is continuing, it’s because I had already written the following section. :-P
Productivity in Learning

When I come upon existing software projects, I have the approach of a mathematician, quickly grokking how things are put together based on patterns I encountered in the past, and by corollary realizing what needs to be done. This same approach, though, makes me lazy and unwilling to learn how to use huge software frameworks or complicated applications. I still barely scratched the surface of Eclipse. And I hate modifying other people’s buggy code, because it’s like trying to plug leaks in a dam without being aware of the rest of the dam. I like to know how comfortably well how the system I am using or modifying operates.

All this means I am in the category of “lazy-learner” when it comes to programming. Most of us are, I think, but especially a mathematician. I would gladly use someone else’s software, if it is intuitively designed and well documented. But if it’s not, I would much rather be designing and achieving than wrapping my brain around unintuitive patterns in software design. I don’t even mind so much if someone badly designed a small piece of code with few moving parts. But if there are loads of things to keep track of, or people say “I don’t know how that works” or “don’t worry about it”, I tend to worry. And then I am much more motivated to start my own projects from scratch than to build upon that one.

* Although I notice that I get stuck from time to time because I can’t proceed without making an assumption and taking a chance. Sometimes it’s not clear what you should do, or what has been said, and you can’t really ask too much. At times like this you have to assume one way or the other. I haven’t figured out anything really helpful for this kind of situation.

Business (and other) conversations

You can make more friends in two months by becoming more interested in other people than you can in two years by trying to get people interested in you” - Dale Carnegie

I have said before that no man becomes great all by himself. If you are going to be doing business, you will need others to help you in one way or another. Just like image is supremely important to politicians, connections are extremely important to business-men and -women.

Strong connections and trust take time to form, but you have to start by getting out there and meeting people. It would be ironic if we worked on “social applications” from our basements, seldom interacting with other interesting people in real life. We’d be missing out on so much fun and interesting points of view. And we’d be missing opportunities.

So if you are going to go out there and meet friends, you should take care about how you are perceived by others. Ever met a person you liked, you exchanged numbers and they didn’t call you back? They weren’t interested enough to do so.

Let’s face it, the connections we form in the beginning are usually pretty shallow and deepen with time. Actually, the main principle is rather simple, and keeping it in mind would help a lot. It is:

If people feel good about themselves in your company, they will like being around you.

There are other factors, to be sure. But we strive for that which will make us feel good*. Just as Mahatma Ghandi said, “be the change you want to see in the world,” so you must let others perceive you the way you would want to perceive people you are drawn to. Since perception is very much based on a person’s mood at the time (to some extent this is true for all of us), even logical, thought-out business decisions can be greatly affected by the way a conversation went, the way someone felt - about the project - and about you.

Is it manipulation? If it is, it’s certainly one of the mildest forms ever. You simply take into account the other person’s experience of being with you. Etiquette at interviews and at a dinner parties takes the form of do’s and don’ts that promote these very principles. And you don’t denounce them as manipulation, because they are “rules” clearly spelled out for everyone. Well, this principle should be too.

If the person you’re talking with found out that you are taking into account how you are perceived by them, and mindful of not making them uncomfortable in your presence, would they be aghast? I think that most people would appreciate that you made the effort. For me, as for many people, I suspect, considering the other person’s point of view comes naturally. But once in a while, when I have an argument with someone, I know I don’t do it enough.

As with anything, this can be taken to extremes. Communication can become impersonal, and conversations can become tactical games. Or it could be par for the course if you’re part of the nobility, or a royal family. Who knows… a lot is possible. Certainly, effective communication is a very good skill to have. As for me, I am interested in social dynamics and sociology in general, which is part of why I enjoy making social applications in the first place.

Here are some related concepts and thoughts about effective interactions:

Do not impress, but instead connect - The latter brings you both much closer together. When you are first meeting someone, you can establish who you are and what you are involved with, and that certainly will affect how you are perceived. But usually there’s no reason to push this further and start impressing the other person. Instead, focus on making friends.

Listening as a way making others feel good around you - The more interesting the conversation is to them, the more interest they find with you. Therefore, when you want to speak and you find the other person’s not done yet, instead of being impatient, consider too that they are currently very interested in your attention. They are talking to you, so pay attention to what they are saying.

Social proof - when someone doesn’t know you, they will take cues from other people, consciously and subconsciously. If you are surrounded by people who sing your praises, this help the impression you make on anyone else you meet.

Give respect from a place of having respect to give - you gain this respect by establishing who you are, carrying yourself in a certain way, from social proof effects perhaps, and so forth. If you have a good sense of self, and do not always look to others to define what is appropriate, then you get more respect, too.

Time bridge - if you’ve talked for a while and there is still a big topic that would be interesting to discuss, consider telling your partner to leave it for next time. Don’t feel the need to tell everything at once. It gives you both something to look forward to, when you both reveal there is more to you.

Have a reason for taking someone’s contact information - at business meetups this is not essential, but if I’m asking someone on an early date, I find it’s good to suggest a reason to meet besides simply “seeing each other sometime.”

Have meaningful interactions - For dating, you can call just to chat. For business, it depends very much on what the relationship is. In both, though, you should exchange something meaningful; otherwise the conversation will be perceived as “just fluff” and written off as such, at least subconsciously.

There are plenty more pieces of “social wisdom” you can derive. It is a bit like playing chess - the more you play, the better you get, and the more wisdom you internalize.

And sometimes you just don’t know what to do.

For example, here is a tough issue that I recently thought about: I call it temporal morality. Given a particular situation, what if you had two choices

  1. Do the thing that is moral to do from your point of view
  2. Do the thing that will result in everyone appreciating what you did in retrospect

In 1), you may show your respect to the person in the immediate present, and the person may appreciate it if they realize what you did, even if it is hard for them to live with the consequences in the future. In 2), you might respect the person secretly, but act in a way that makes things better and easier for everyone in the end. This dilemma comes up all the time in movies.**

I happen to think that 2) is usually preferable if you have an extensive amount of knowledge about what’s going to happen. If you’re not sure, then you should pick 1).

Read more…