Alex Kaminski's Blog

Audentes fortuna juvat.

Three Men in Grey

Goal: >600 words with only using “I”, “Me”, “My” twice in the story.

I heard the footsteps before the others in the room and glanced towards the door. It swung open and the three men in grey suites walked in. They walked side by side, for not one of them dared give the impression that they were more important. They held their heads up, their suites cleanly pressed, their bodies well kept; for they surely have not wanted for a thing in their life. Walking behind the three men in grey suites were the body guards. They were as impressive as any imperial soldier any of us had seen. The energy weapons they carried were two generations ahead of the standard imperial issue. The bodyguards’ full body suites sparkled in the light, no doubt the suites were coated with the energy absorbing paint we’ve heard about.

The three men continued ahead with an arrogance and confidence that only they could possess. They were walking into the most dangerous area in this solar system, but the three men showed not a care in the world. The throne room was overflowing with rebels, for they had all come to watch the execution of the emperor. Yet, as the three men continued walking the rebels gave way and moved to the sides of the room. Nobody dared say a word or block their path.

Even the rebel leader, my dad, seemed nervous and unsure. His head was dripping with sweat and his mouth was cringing. Nobody had expected the three grey men to be alive, let alone be here. Everyone in this room had heard stories about the men in grey, each story passed down from generation to generation, from father to son. My favorite bed time stories involved their battles and speeches.

The taller of the men in grey stopped in the middle of the room while the other two continued walking towards the emperor. As they reached the emperor, who was bound and shackled and kneeling on his knees, the rebel guards slowly took a step backwards. The guards did not want to interfere and they definitely did not want a fight with the three men in grey suites. They looked at the rebel leader for approval to back away, and he nodded their way.

The two of the men in grey helped the emperor rise to his feet. One of them then spoke to the taller man in grey who still stood at the center of the room. The rebel leader looked at his aides to see if anyone understood what was said. Everyone shook their head, no. The rebels had spoken in English, a dead language that hasn’t been spoken in our solar system since before the great war.

The man in a grey suit who was standing in the center of the room then said something to his bodyguard. The bodyguard quickly went and stood guard at the door they had just come through. The man in grey then spoke in the native tongue of this solar system, Chinese.

“We are old men now. Yet, you no doubt know who we are and what we are capable of. Hear me now, rebels of Aluza. Hear me, emperor of Aluza. Your fate depends on your choice, and a choice must be made now. This land has seen much of war. Too much. Too much blood has been shed. We know the cause for which you fight and it is a noble one. But actions today do not erase those of the past or future. ”

The man in a grey suit paused, turned, looked the rebel leader and continued in English: “we are here for you, Admiral Zhuhu. You are in violation of direct orders.” The rebels looked around confused, what did the men in grey want with the rebel leader? And why were they speaking to him in English?


A startups’s dilemma: the curse of being an innovator & low market adoption.

We (innovators, startup founders) start companies to solve a problem, to fill a need – usually this is a problem or need that we’ve personally faced in our life. We focus on industries where we have plenty of experience, where we understand the market dynamics, the players, and the consumers. So, we assemble a great team and build a great product only to find that nobody is buying your product. Why?

Here are two reasons (among many):

1. Your knowledge of the market has biased you.

Having spent so much time researching the market, formulating your strategy, researching your competitors you simply know more than your consumers. You look at your product with the knowledge you have – and as hard as you try to put yourself in the mind of a consumer, you will still be biased by your knowledge. You can’t unlearn knowledge.

As an innovator you fully trust your product, you have become biased (as has your team) in the staunch belief that your product is better, that the needs and benefits of your product offers is obvious. Yet, a consumer might have a totally different reaction to your product: your company is unknown, unestablished, the need and benefit of your product is not obvious.

You can alleviate as much of this issue as possible by focusing on customer development. Talk to customers at every step of your product development cycle. Release an MVP (minimal viable product) as early as possible – but one that fully shows the value you will bring (especially if behavioral change is high – see below). Every part of your product must show value to the customer, the design, UI, branding must be consistant and work together to show the value your product offers. Having amazing value is pointless, if because of your design the customer doesn’t see the value. This is where customer development will help you figure out if it’s your design that’s the problem or your product (or something else).

2. The behavioral change needed for your product is too large.

Innovation by definition requires a product change, with the value your innovation brings actually residing in the changes you make. The greater the behavior change the greater potential for a revolutionary product that delivers amazing value. But, consumers are wary of change, they don’t want it – that is, unless your product brings so much value that they are willing to ignore the behavioral change necessary. This balance is critical and is different for every company / industry. Generally, you want the behavioral change to be as minimal as possible, while the value your product brings to be as great as possible. This is especially true in crowded markets.

In situations where behavioral change is large your MVP must show the full value your product can bring, so as to convince your consumers to change their behavior. Therefore your MVP might need to be a little further along (in terms of functionality, speed, features and the benefits these represent) than an MVP for a product that requires no behavioral change.

So, what do you do when your product adoption is low?

1. Rethink your product to bring more value – aim for at least a 10x improvement in value over existing products. Make sure you are actually solving a problem your customers have. The only way to do so is by talking to your customers.

2. Expand your runway as much as possible. Some products need time to gain traction. This might mean raising money so you can last another 18 months, or it might mean being lean with your spending for a few months.

3. Reduce the behavioral change you require. This might be a lot easier in some products than others.

4. Target new consumers who are unaware of alternatives, making it easier to sell your product (even if you haven’t increased the value your product offers compared to competitors).

5. Get evangelists to go and market your product on your behalf.

If you still can’t get product adoption, you need to go back to #1 and again re-think your product to bring more value. As long as you keep increasing the value your product offers (and you might need to change your product to do so), you will eventually hit a point where your customers see the value you bring (the magical product-market fit), and your business will be on the path to success. The question is, how much runway do you need – and will the ROI at the end be worth it. Part of being an entrepreneur is being stubborn and believing in your product and vision, on the other hand, it’s also having the skill to determine if pivoting and re-thinking your product can still lead to success. In some cases you’ll realize that the end-ROI simply will never be worth it (at least fiscally, the experiences you’ll learn will be worth it).

Worth mentioning some points Marc Andersson made in his post on The Pmarca Guide to Startups, part 4: The only thing that matters. What happens when product adoption is low because you don’t have product market fit:

You can always feel when product/market fit isn’t happening. The customers aren’t quite getting value out of the product, word of mouth isn’t spreading, usage isn’t growing that fast, press reviews are kind of “blah”, the sales cycle takes too long, and lots of deals never close.

And you can always feel product/market fit when it’s happening. The customers are buying the product just as fast as you can make it — or usage is growing just as fast as you can add more servers. Money from customers is piling up in your company checking account. You’re hiring sales and customer support staff as fast as you can. Reporters are calling because they’ve heard about your hot new thing and they want to talk to you about it. You start getting entrepreneur of the year awards from Harvard Business School. Investment bankers are staking out your house. You could eat free for a year at Buck’s.

iPhone SDK Tutorial: A Simple "Hello World" Program.

Image representing IPhone as depicted in Crunc...

Image via CrunchBase

The iPhone SDK is a great platform for developers. It gives developers a great opportunity to reach a huge market of users easily. So, let’s great started so you can start building your own great apps. 

XCode and Objective-C

I am assuming most of you have never worked with Objective-C or XCode before. Neither had I until I wanted to develop iPhone apps. The first thing you should note is that Objective-C has a very different syntax than languages such as C# and Java. Let’s go over some basic differences by comparing the same code in Objective-C and Java. 


PointCountsViewController *aViewController = [[PointCountsViewController alloc] initWithNibName:@”PointCountsViewController” bundle:[NSBundle mainBundle]];


PointCountsViewController aViewController = new PointCountsViewController(“PointCountsViewController”, mainBundle);

As you can tell when calling an object’s method, instead of doing something like object.method(parameter) in Objective-C you would do: [object method:parameter];

Similar to C++ each file has a header file and a source file. The header file has the extension of .h while the source file has extension of .m. Whenever you create a class you create the interface in the header file and implemented it in the source file. 

Now that we are familiar with some basic concepts of Objective-C, let’s take a look at how XCode is organized. 

All of the code files are placed within the Classes folder. Things such as images and the .xib files are placed in the Resources folder. The .app that is produced when you compile is built and placed within the Products folder. You can essentially ignore everything else (at this point). 

The .xib file that I mentioned earlier is a file that stores the interface/gui of your application. You can edit it using Interface Builder by simply double clicking it. 

Creating the Project

Now that you are familiar with what files you will use and some basic Objective-C syntax, let’s get started and create a new project. 

Go to File -> New Project -> iPhone OS -> Application -> View-Based Application

Name your application: HelloWorld and create the project. 

Now, let’s open up the Resources folder. Double click on the HelloWorldViewController.nib file. The file should load up in Interface Builder. This is where you can drag and drop items to create your application’s interface. The first thing we want is to add a label. So, let’s get a Label from the Library (if your library isn’t open, go to Tools -> Library to open it) and drag it into the view.

Let’s Get Coding

Now that we have designed the GUI of our application, let’s create the code that prints out hello world on screen touch. 

Open up HelloWorldViewController.h and replace the file with the following code: 

#import <UIKit/UIKit.h>

@interface HelloWorldViewController : UIViewController { 

IBOutlet UILabel *lblText;


@property (nonatomic, retain) UILabel *lblText;


What this code does is create an object of UILabel that we will (in a few steps) link up with the label we created in interface builder. 

Now let’s add the real code that does all the work. Open up HelloWorldViewController.m and put the following code inside:

@synthesize lblText;

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event


    lblText.text = @”Hello World”;

    [super touchesBegan:touches withEvent:event];


What this code does is sense when a touch has occurred anywhere on the screen, and when it has we update the label to say “Hello World”.

We are still not done. The label that we created by declaring IBOutlet UILabel lblText is not linked up to the label that we create in Interface Builder. So, now let’s open up interface builder again. Go to the inspector (if it’s not already open, open it from Tools -> Inspector) and click on the tab that has a blue circle with an arrow inside. Now go back to the view and click on your label. Now that it is selected click on the blue circle next to “New Referencing Outlet” in the Inspector and drag it to the File Owner window. 

Essentially that’s it. Build and Go and you should see your app in the iPhone simulator. :)

Reblog this post [with Zemanta]