The issue with WatchKit InterfaceController’s context object

I’ve been lucky enough to be able to work with Apple WatchKit since the first beta. I found interesting that now we only have one way to push/present an Interface Controller, with only one way of passing informations to it: the context object.

This makes things easier but somehow dangerous. If the same interface controller is pushed in two different place of the app, we developers have the responsibility to make sure the context object is the same.

Let’s say we have a WKProductInterfaceController and WKSizeInterfaceController.

So the WKProductInterfaceController has to:
– set itself as delegate of WKSizeInterfaceController (to handle the size selection)
– pass an array of sizes to WKSizeInterfaceController

We could use a Dictionary, hardcoding or defining keys to set/get the values in both the ICs. But it seems hackish and dirty. I think we should define a case specific InterfaceController context object. Here the example.

 

WKSizeInterfaceController.h

 #import <WatchKit/WatchKit.h>
 
 @class WKSizeInterfaceController;
 
 // Delegate
 @protocol WKSizeInterfaceControllerDelegate <NSObject>
 ... 
 @end
 
 // Interface controller specific context object
 @interface WKSizeInterfaceControllerContext : NSObject
 @property (weak, nonatomic) id <WKSizeInterfaceControllerDelegate> delegate;
 @property (strong, nonatomic) NSArray *sizes;
 @end
 
 // Classic IC interface
 @interface WKSizeInterfaceController : WKInterfaceController
 ...
 @end

 

WKSizeInterfaceController.m

 #import "WKSizeInterfaceController.h"
 
 // Empty implementation of the context object
 @implementation WKSizeInterfaceControllerContext
 @end
 
 @interface WKSizeInterfaceController ()
 @property (weak, nonatomic) id <WKSizeInterfaceControllerDelegate> delegate;
 @property (strong, nonatomic) NSArray *sizes;
 @end
 
 @implementation WKSizeInterfaceController
 
 - (void)awakeWithContext:(id)context {
 [super awakeWithContext:context];
 
 // Asserting that the context is of the right kind of class make this solution robust
 NSAssert([context isKindOfClass:[WKSizeInterfaceControllerContext class]], @"Context object is not of the right kind");
 // This way we know what properties to expect in the context
 _delegate = context.delegate;
 _sizes = context.sizes;
 }
 
 ...
 }

 

The finally when you have to push the interface controller from WKProductInterfaceController:

WNSizeInterfaceControllerContext *context = [WNSizeInterfaceControllerContext new];
 context.delegate = self;
 context.sizes = sizes;
 [self pushControllerWithName:NSStringFromClass([WNSizeInterfaceController class]) context:context];

 

What do you think about this solution?
Please let me know your feedback.

This article was written by Claudio Carnino.
He is the founder of Fanchimp, a tool to help online businesses do marketing on social media.

There could not be another Silicon Valley, it’s the market rule

In the 50s/60s when the cold war was ramping up, the US Army and later on NASA, had to create new technologies. Some related to communication, other for bellic use.
The people more qualified to create this kind of technologies were researches and professors at famous universities. It happened that in the Bay area had few of these universities. To note is also the close industrial economy that could bring to market these new technologies.

The US government started to invest money in these universities to create these new cool technologies. Later on the professors started to create their own R&D companies. These same companies started to be contracted by the government to keep creating shiny tech. Some other bigger companies started to buy more and more frequently this smaller, but successful, R&D cos.

This cycle, in that ecosystem, in that historical moment, created the Silicon Valley.

In the 50s the world technological market size was really small. It wasn’t an interesting market where to invest and speculate. Indeed the majority of investors kept investing in the financial market.
With time the technology positioned itself at the center of our lives. Doing so the technology market grew to a huge size, where the Silicon Valley has always been the main player. The Silicon Valley has been the monopolist of this market from the beginning.

In the recent years with tech becoming trendy and valuable to everyone, more and more investor wanted to invest in this market. What they’ve found is that investing in this market is hard. Getting into the good deals is hard because there are the players of the Silicon Valley who have the monopoly and are more appealing.

It started a long, and pretty boring, collective euforia where mayors and prime ministers announced they wanted to create “the next Silicon Valley”. All topped by a lot of press and noise.
The plan has always been injecting money in a neighbourhood of a city who would become the Silicon [alley | roundabout | crapper]. Investors, backed up partially by the government, started to create events and press release about “innovation, disruption and fund raising”.
The startups arrived and started to experiment with new products and technologies (the only good thing).

What the last few years have taught us, though, is that this is not really working. Yeah, we’ve new shiny co-working space surrounded by a hipster attitude. Early money in some places is fairly easy to find. Sometime a successful startup do an exit.

What we’ve not got closer a single bit is “creating the next Silicon Valley”. No city or country in the world has demonstrated progress toward this goal.
The main reason is that the tech market is a mature and attractive market, where there’s already a monopoly. It’s like if tomorrow I woke up and I want to create the next search engine (hello Bing) or the next Facebook (hello Diaspora or Ello).
It’s really hard to pass ahead of a monopoly because it’s in a better position. Plus the resources, the culture and knowledge they have is not slightly comparable with yours.

Your city could not become the next Silicon Valley because you don’t have the same conditions of the Silicon Valley, when it was born. The market is not small and with low competition anymore. It’s not easy to become the leader city of the tech market.
The rules of the market, that work for companies, work also for cities who want to become the next tech capital.

If you want to become a great place that allow people to change the world, you cannot use the same dictionary the Silicon Valley used. You have to create something different. You have to create your own conditions. You have to create your own rules.

This blog post has been inspired by Peter Thiel in his lecture at Stanford.

This article was written by Claudio Carnino.
He is the founder of Fanchimp, a tool to help online businesses do marketing on social media.

Monopolies: the way of creating the Next Big Thing

Yesterday I saw the 5th lecture of Startup School (YC produced). It’s an insanely great course, even for an experienced startupper with years of experience.

The talk was made by Peter Thiel, a founder and investor with proven track record (he’s founder of Paypal and early investor Facebook). The interesting bit that I brought home is that successful businesses are monopolies.

In the tech world monopolies are Google (search market), Amazon (online ecommerce) or Facebook (social networking). Also if they’ve not been the first companies to create a product in their market, they’ve been able to make a product with an order of magnitude better than their closest competitor. Creating a product 10000x better is what made them winning their market.

Another intersting bit is that these companies have not won a big market. They’ve won a small market, deemed as non interesting by investors and by common sense. When Facebook started the market was 10k user big (maybe an exageration).

These companies entered a small market, they conquered it (becoming a monopoly of this market) and then they made it grow. The ability of these founders is in:

a) creating a product that is way better than the competitor’s one and
b) in understanding that the market they’re targeting will grow.

What Peter transmitted me is that if you want to create the next big thing you should not go after a big enstablished market. You should go after a market that you think will grow.

At the end if you want to be the next Facebook, you shouldn’t try to imitate Facebook.

This article was written by Claudio Carnino.
He is the founder of Fanchimp, a tool to help online businesses do marketing on social media.

The counterintuitive nature of finding good ideas

Today I was looking at one of the new lectures of How to Start a startup Stanford course, made by Paul Graham (YCombinator patron).

Talking about counterintuitive things about startups, the one that struck me the most is how to get good ideas. PG says that you don’t get good ideas by looking for good ideas, you came up with good ideas in an counterintuitive way.

Most of the tech companies that changed the world started as a side project. People working on interesting problems with other interesting people. You follow your passion and you become an expert of a certain field. In this journey of mastering an interesting topic you face problems and you get ideas. These founders started to work on a problem because they were curious, not because they wanted to start a company.

Then they understood they were into something. People wanted what they were building. People wanted to use it or buy it.
When this happened, these founders turned the side project into a company.

PG sustain that this is the only way of making something really successful and world-changer.

This article was written by Claudio Carnino.
He is the founder of Fanchimp, a tool to help online businesses do marketing on social media.

The proper way and the good-enough way

I am an entrepreneur-developer. I build the products that I imagine. It is cool, but you’re constantly facing an internal battle. On one side you want to “do more faster”. On the other, you want to have something done properly (who require 50 to 100% more time).

I always followed the entrepreneurial side of my conscience and it worked… for a while. When your product grows and the codebase expands, it start to get unstable. It starts cracking. It becomes trickier to add stuff. Or to fix old stuff.

Then the worst nightmare of every CEO happens: “we need to rewrite the app/platform/codebase… it’s impossible to deal with it anymore… the team is not happy and it’s leaving… etc”. The five minutes of terrors are followed by imprecations, mystic invocations and blame of incompetence. An initial estimation of 3 to 6 months is given, who then becomes 9. Followed by other 3 months of fixing.

To save time during the development, you pushed for the good-enough solutions, and now you need (you cannot do otherwise) invest a lot of time to do it again. In the proper way this time (hopefully).

This year thank to Luca, Juan and Luca (awesome iOS engineers) and other great engineers, I learned why it is really important to not sacrifice quality. In the short term you’re slower implementing features, but in the medium/long term you’re not forced to do big rewrite your codebase.

The overall velocity is higher. Doing things properly, you actually do more. The engineers are happy, because they work well. Business people is happy, because they’re not forced to pause the business for half year. It becomes easier to recruit engineers when you’re building start-of-art technology. And it’s also easier to retain them too.

Your job as an entrepreneur/CEO becomes picking the right things to do. Your job is to understand what is a priority and what can wait. What has to be done and what can be not done. This way you’ll let the engineerings do their job properly, not the good-enough way.

This article was written by Claudio Carnino.
He is the founder of Fanchimp, a tool to help online businesses do marketing on social media.

Relationships in the age of startups

Today I learned how much are important relationships. I say that because I am inequivocably bad at them.

I was talking with an entrepreneur that I respect earlier today. I know him just a little, but I can breathe the difference with a lot of other wannabes. You know why? He cares about talking with you. He is able about to create relationships without trying to sell.

Is renown that what you should do when you try to enter in a new startup scene is to help people. You shouldn’t ask, you should give. But is so rare to find someone that is able to do it.

It’s very common that you talk to people that try to help you, while trying to sell you something. That is not real help. That is selling stuff, wrapped with bacon. You recognise the taste immediately.

Create relationships is something that I have to become better at. It’s something that I have to embrace as person, not just as entrepreneur. I will try to put a serious effort in caring more about others, because I think it’s the first step in helping others.

This article was written by Claudio Carnino.
He is the founder of Fanchimp, a tool to help online businesses do marketing on social media.

Phablets, pain and iPhone 6 Plus

Today I learned that I was probably wrong about phablets (oh… I hate that word). I always thought that such big smartphones where just a stupid idea. But now that also Apple made the iPhone 6 plus I had to reconsider my mind.

I always thought that such a big devices were uncomfortable to carry around, would have made developers, designers job much harder and the app quality would have decreased…
This year I joked with Android dev friends (I am an iOS dev) that if Apple would have made a big iPhone the name would have been “iPhone 6 M” as “the iPhone for morons”.

Then Apple made them for real.

The surprise was that the iPhone 6 plus has got a lot of attention. I had to change my mind when I saw from whom this attention came from.
A lot of people who I respect and who knows a lot about products wanted the 6 Plus. People like Kevin Rose, Sam Altman and Mike Suster. I mean, they are heavy league of product minds.

Probably it’s the fact that people don’t necessary wants to have a smartphone and a tablet to carry around. Or maybe is that they think that Apple will delivery higher quality than a Samsung device. Or maybe it’s just like cars. People like to have it big, because it’s more manly.

Anyway, I have ordered my iPhone 6 NOT plus, suckers.

This article was written by Claudio Carnino.
He is the founder of Fanchimp, a tool to help online businesses do marketing on social media.

Today I learned…

Few years ago, it was probably the last year of high school, I went to “La Fiera del Libro”, one of the most important book fairs worldwide. I was with my school mates (actually I remember just my friends there). In one of the booth we found a 60-years old very charming man.

I don’t remember how we got to the point, but at a certain point he told us “My dad used to say me that if you don’t learn at least one thing new every day, you have wasted that day”.

I got impressed by that sentence and it got stuck in my head. It became my inner motto. I have hunger of knowledge from always and this is a rational way of expressing why.

So from today (from this beautiful last day of my Cretan holiday) I decided that I will start to share “Today I learned…”.

PS: the goal for tomorrow (when I will have again my holy-good-and-fast internet connection in London) is learning if it’s correct to say “what I’ve learned today” or “what I learned today”…

PSS: it appears that are both correct. It mostly depends on the context.

This article was written by Claudio Carnino.
He is the founder of Fanchimp, a tool to help online businesses do marketing on social media.

Confidence Is a Bitch

Confident kid

Confidence is what make people believe in you, in your vision, in your future success. Without confidence, it’s hard for people to believe. That’s completely rational: if you don’t believe in what you’re saying, how can you ask to others to believe in it?!

Confident kid
He’s so confident, that you’l not notice that he’s eating sand.
(He’s starting to regret it, though)

All the greatest entrepreneurs and leaders use their confidence to gather people around problems and opportunities, guiding them to create something new, something amazing, and something that no one else has ever achieved.

That’s great, because if smart people with deep knowledge of their market/space use confidence it’s a good tool. However, as soon as someone who’s not that smart or with scarce knowledge about the space he’s into, this tool transforms itself in cockiness, arrogance and failure to learn. That will finally lead you to auto destruction, misery, hunger, apocalypse, etc. Maybe too much? But we’ve understood the point.

The problem here is that when you’re confident and sure about something, you stop to seek other opinions and to listen to critics to your plan.

 

What to do about it?

I’ve repeated this error at different times, and I continue to do it, despite all my efforts to avoid it.
Lately I’ve found a technique that seems to work. Continue to be confident about what you’re saying, but keeping to welcome negative feedback and constructive critics.

When someone make you a critic, just reply something like “That’s interesting, I believe that this thing work this other way, but I’ll dig deeper into the topic and I’ll let you know in few days. Ok?”.
This way, you’ll force yourself to consider the opinion of other people, think about it when you’re alone, so without your pride at stake.
This helps me to reevaluate my ideas, without making me feel insecure.

 

Now,

what do you think about it? I’ll consider every comment in the comment box.
Else, if you don’t agree, you can slap me in the face. In this case, I’ll get back to you in just tens of a second.

This article was written by Claudio Carnino.
He is the founder of Fanchimp, a tool to help online businesses do marketing on social media.

How to get a shitload more chances of succeeding

In the first 4 years of my startup life, despite my own rookie errors, I saw many other entrepreneurs doing something that I didn’t understand. They were creating a company in order to be able to create a product, which to me seemed absurd. I always thought the correct way was to create a product in order to be able to create a company, not the other way around.

A company trying to create a product
A company trying to create a product

Then, on a beautiful day, I saw an interview of Fred Wilson, which confirmed to me that I was right. You have to create a minimum team to start with, build the product and test it against the market. If you have good feedback, a real demand for your solution and cannot keep up with this demand, then you start to build a company with the people, the processes and the structures that compose it.

Continue reading

This article was written by Claudio Carnino.
He is the founder of Fanchimp, a tool to help online businesses do marketing on social media.