Friday, July 22, 2016

Always be experimenting. Always be measuring. Always be iterating.

Yesterday, I had a very long and detailed discussion with Chijioke (who does business and strategy for Tiketmobile) as regards Tiketmobile business; and it was really mind blowing. We started by watching the video below of Austin Ligon at Yale school of management, talking about how he co-founded and built CarMax. This helped put our discussion in the right context.


After which we revisited the assumptions which drives the current execution of Tiketmobile and reassessed the addressable market size (which we've chosen as the most important factor to base decisions on). Then we took a holistic view of the general addressable market of internet businesses in Nigeria. We looked at and tried to figure-out the highest possible valuations of some of the most notable tech start-ups around, while analysing why the really big guys (like Naspers) close their operations too often.

A very repeated sentiment, which both of us agreed to, is that the addressable market for consumer tech isn't large enough for extremely big things to be built and monetised locally (alluding to @asemota's post that tech in Africa is luxury). This is almost true for anything but FinTech.

Because what I'm really interested in succeeding at is consumer tech, all this time I kept asking "mehn, does this mean that I should leave this market and move to a place where what we build will be useful to a large number of people almost immediately?" I'm still considering this question.

However, our discussion led us to lots of different ideas being activated in our heads. We eventually settled on what direction we'll drive Tiketmobile to and the market we'll try explore next. This whole thing has become one very big experiment and I personally look forward to it.

In August, Chijioke will be off to Yale for his MBA.

P.S: Today is Chima, my baby brother's 25th birthday. Officially, all my mum's kids are 25 and above.

Friday, July 8, 2016

That day when I was at St. Gregory for Careerpedia's Career Day

On 8th June, Careerpedia held their Career Day event for secondary schools. Tiketmobile being one of the partners, I was there to talk to the students about technology and the opportunities in tech. I was amazed and impressed by what some of these students already say they do with the computer. A good number of others were just really curious about the technology around them.

Generally, I had a good time relating with the kids, it reminded me of when I started all these computer things. Much kudos to Joshua and the Careerpedia team for this. I also need to keep reaching out to my contacts to keep encouraging them.

Below are photographs from that day.








Thursday, July 7, 2016

Microsoft's confusing dilemma with Project.json and .csproj: my experience with ASP.NET Core.

It's been quite a while since I posted here, but I'm in some kind of sweet pain and I really want to document it.

So after hanging out with Ifetayo yesterday and having a good dose of Guinness, we got back to his place at Surulere and it was pressed in my mind that I needed to continue work on the new Tiketmobile website.

Constance had designed a set of static web pages which I'm meant to add dynamic functionalities to. However, being caught between running Tiketmobile business (understanding and redesigning sales process with John, on-boarding Jacinta and intermittent phone discussions with Chijioke about business performance and the possibility of another pivot), I hadn't done much with the web pages for a couple of days. So when I got back yesterday and was watching the Portugal vs. Wales semi-final match, I was caught between dozing off and coding. Nature had its way and I passed out on the couch.

As my body is always prone to do, I awoke at 2AM and immediately reached for my computer. I had decided to use Slim framework + Twig to add PHP functionality to the static pages and invoke the original WCF service, which the back-end of Tiketmobile runs (as is the current architecture). But after having some 30 min battle with myself, I decided to re-write the back-end and eliminate WCF finally.

You see, when we first started the Tiketmobile project in 2011, REST-based Web APIs weren't quite as common place as they currently are. So we had built the back-end with WCF, a Microsoft technology closest to Web API then. I'd written the codes. However, as time went by, we'd tried out event ticketing for a very brief moment + pivoted to our current pick-up and drop-off service, on a poor architecture meant that a lot of technical debt had built up on, mainly because spaghetti codes. This is the perfect opportunity to fix it. So I'm going to rewrite the back-end.

Now, I faced another mild dilemma. Should I rewrite in the API in PHP using Slim or should I continue with C# .NET? (Yeah, I know that there's Rails and Node and Go, and all that new "cool kids" tech, but I'm not really about that life.) When I remembered all the things I take for granted in C# -- like static typing (compile-time type checking), easy multithreading, background activities, the fact that the database is SQL Server, etc -- I decided to continue with C#.

Decision was made easier when I discovered that .NET Core (Microsoft's cross-platform offering of .NET) is out. I shutdown my Visual Studio and opened up Sublime Text, downloaded the installer and everything was set-up in 15 to 30min. I created my first ASP.NET Core web application in Sublime, and ran it without IIS (ASP.NET Core ships with an in-built lightweight web server called Kestrel). I was excited that when I get that Mac, I can continue with the Tiketmobile dev whenever and on whatever platform I want to.

Time to integrate the Tiketmobile database with the current system, which meant a couple of NuGet package installations. Running everything on the command prompt, I whipped up the "nuget install" command and got all the packages I needed, but the new .NET Core project configuration (project.json) wasn't being made aware of the new packages. This meant that even though I'd installed them, I couldn't use them in my codes.

Usually, Visual Studio handles all that "bizniz", but I'd decided to stress myself about this. Hence I wasn't using VS, not even the cross-platform VS Code. So I had to worry about all the minutest settings. So I ran to Google to find out why this was happening, only to discover that Microsoft has decided to do away with Project.json and return to the traditional .csproj method of project configuration. Here's the post: https://blogs.msdn.microsoft.com/dotnet/2016/05/23/changes-to-project-json/

Many questions. Why did they not update the new project creation process of .NET core to not add project.json? I mean, when I run "dotnet new", it still creates a project.json. I still even had to manually create a nuget.config to tell the nuget where to search online for new packages and where to save the packages locally. Are you guys this confused?

OK, I've accepted that I still need the "supervision" of almighty Visual Studio to bootstrap the project. I'm just about to whip-up my VS and import my ASP.NET Core app into it. (They said it will automatically convert the Project.json to .csproj when I import).

Fair job so far though. But I guess Microsoft isn't quite as ready about cross-platform like I thought. Maybe they'll sort all these out in a few months and then actually give Node.js that challenge that they're aiming for with ASP.NET Core.