Zero to One, or how to create a monopoly business

I have recently read the book Zero to One by Peter Thiel  and it really changed my overview on the business world, and the projects/products I want to work on from now.

The book focuses on building Paypal  and the period it was built in, the dot com boom. We all know Paypal is now a successful company, and we maybe not know that they are one of the few who survived the boom in 2000. I was shocked to read that their first product was a Palm Pilot money transfer software. I’ve had a Palm, and although it was a cool device back then, the market wasn’t cohesive enough to support the product. But the underlying mission of Paypal was to change the way we transfer money between each other. Having Palm device as a prerequisite, although the niche was big enough, was not a good idea. So they switched to the email address money transfer, and we all know how that turned out.

For Paypal, or any company to succeed in the long run, the main prerequisite was to create a product or service that is either something innovative, like iTunes store, or something at least 10 times better than the competition. They also teach us that we have to start with a small niche, and build up from there. Unless you are old enough, you probably didn’t know that Amazon started as an online book reseller, and Paypal started as a merchant payment option for a small number of eBay top sellers. eBay (or Auction Web) started as a direct person-to-person auction site for collectibles. They all built great services, which were at least 10x better than the competition, or completely new, and started in small enough markets, where they had zero competition, so they could iterate and improve the products, before competition caught up what was happening.

There is also one great thing about small markets, and that is the fact that big fish can’t swim in small ponds. You as a small bootstrap company can live of a small enough market, and the big companies won’t even touch that market, because the market value is in the range of a statistical mistake on their yearly earning reports. And it’s a great place to innovate, improve and grow, till you can expand to another pond, after you have a monopoly in the first one.

We were all taught that competition is a good thing, even in economics class. And that highly competitive markets are the best option, for consumers, and for companies. That is a big fat lie, for both the consumers, and the companies. The companies in this kind of open market are in ruthless cutthroat battle for customers, and they have to lower their profits to the bare minimum, because if the competition is cheaper, the customer will go and buy their product, in a commodity market, price is one of the main attributes that guide the customer’s decision on buying.

Monopoly on the other hand, is a great thing. There are two types of monopoly, the economic one, which imposes its size and power over the market, buying or destroying all competitors, but that is not the one I’m talking about. The intellectual monopoly, the one created by innovation, or by having a 10x product, is the best position in the market. You have no competition, or they are scarce. The market is in pain, and your product can solve that pain. Tesla  as an example, is a company who builds on of the best electric vehicles in the world. But they started with a roadster, a really cool looking roadster, which was a novelty item, but beat all of the brick-shaped electric vehicles when the hip green business people considered on buying an environmentally friendly car. I would buy the cool roadster over the brick shaped electric vehicle any day. Now Tesla also has 2 family cars, the best electric cars in the world. There is competition right now, but competition is at that state that Tesla had to open their patents, just for the sake of everyone else catching up to them. It is a monopoly if the competition isn’t competent enough to merely catch up with you, if not exceeding you, and overtaking the market.

ember-cli 101 Book Review

Ever since I first heard of Ember.js (even before the 1.0 days), I’ve been wanting to learn it. But the learning curve of the framework always veered me off from it. Also, the lack of a real project to apply Ember.js to it was also an issue. Yes, we can rebuild the Hello World (Todo MVC app) in any possible framework, but the real learning comes when you start building a real application, with all the issues and edge cases it brings with itself. Although I’ve read a lot of blog posts, watched a lot of screencasts, tinkered with it, and nothing came close to the information provided in the ember-cli 101 book by Adolfo Builes. As ember-cli is now the official “Ember Way” (not to be confused with the book that is coming out in spring/summer 2015), I’ve realised it’s worth learning about, and using it to build great applications.
A warning note, if you are looking into Ember.js, and aren’t really that proficient with JavaScript, do yourself a favour and go read this four book series first: Master Space and Time With JavaScript by Noel Rappin. It will teach you the basics of JavaScript, and it also contains an Ember.js book as the last part of the book series.
In the book, the author guides us through creating a simple item borrowing app. The difference from all other tutorials is that the author has created the backend API for us and has different endpoints, as he guides us through the book. You will learn how to implement a medium complexity app with a REST (Rails active_model_serializers) API. Also, you will touch all of the Ember.js components, and implement them in your demo application. You will also get to learn the awesome ember-cli cli generators, which are a really nice thing, especially looking from a perspective of a Ruby/Rails developer, that is used to having those nice things.
Although I’ve learned a lot from this book, I still have to reference the Ember.js API docs for every complex issue. As I will probably have another blog post on learning things, I won’t write much of it now, but the gist is, you have to build 10 apps to be a specialist in a framework, or one or two really nasty ones. You will encounter basic issues when you are starting out, and some weird ones specific only to your project. But that is the thrill of our job, and we need to embrace it, it wouldn’t be much fun writing todo apps our whole lives, would it?
Back to the book, it’s a fairly light read, updates constantly, and as the author himself promised, it will be updated at least until Ember.js version 2.0, which is still in the RFC process. If you are thinking about learning Ember.js, you should definitely consider reading it. You won’t learn everything, it isn’t a silver bullet book that will teach you a new framework in an afternoon, but it will give you a much better start, compared to everything else that is out there. Also, consider that Ember.js is constantly improving(with a 6-week release cycle), so having an up to date resource, while you are learning the framework is a great thing.

Yearly review 2014

It’s the beginning of a new year and the best time to look back on the one behind us. As writing reviews of the past times is generally a good thing, because our memory of lesser moments will fade away, there is only one way to be able to look back and have enough consistent data of the past. If nothing else, we can use it for future benchmarking and see if we are moving in the right direction.

Writing

I wrote more blog posts in 2014 than all the previous years combined. Thirty posts came out, averaging 2.5 per month. That is not bad, but still not close to one (good) post a week which is my long term goal, in addition to other writing I’m planning to do.

Business

I’ve had a fairly good year business wise, my business making more than ever before. It was also the first full year I was doing remote only consulting. And it is much better than my previous employment. Stepping out of the box, analysing and solving different problems each week/month is a terrific way of improving yourself and your business down the way. I’ve had two burnouts last year, and decided that I need to slow down a bit, and focus on what is really important. Applying the Pareto principle saved my sanity. I stopped working on a few projects, and I’m happier about the time that I now can spend with my family. Also, I have attended my first
CodeRetreat, and learned a lot, not only about programming and TDD, but about myself, and how to handle working under tight constraints.

Personal

Remote work, and the ability to plan my own day has been a blessing, especially because of the fact that I have a two year old son, and spending more time with him than I normally would if I had a normal job, is in itself a blessing. Also, we have been able to spend more than a month at the coast last summer, working from there was a great experience and a proof that this way of life indeed is better (for me).

Reading

I’ve rediscovered my Kindle somewhere around the summer and started reading again. Reading about a book each week, sometimes less, sometimes more. Most of those were business books, but also some of them are design and UX books, recommended by a friend. Design has always been a dark magic art to me, but lately I’m finding out that is isn’t really magic, but constrained by lots of rules and boundaries. And human psychology, which is also of an interest to me.
Also, I’ve been reading some biographies, philosophy, almost anything that felt OK when I was reading the book summaries.

Plans for 2015

I have many plans in my head, but everything is a bit foggy and probably unattainable in a year. So, here are some business plans, some personal development, some simple wishes I aim to accomplish in 2015.

  • Creating some small products, I haven’t figured out what they will be, probably a booklet/book, or a small course. I’ve always been wanting to create a SAAS(software as a service) product, and have some passive monthly income, who knows, if I put enough elbow grease into it, it might happen. Small sites like the ones that Kurt Elster does are something also worth exploring. Although the money from AdSense isn’t something you should rely upon, I agree that it is a nice way to direct people into your sales funnel.
  • Build a site for my consulting business, it has been more than one and a half years, and I don’t even have a landing site for the business I’m working from. That is one of the top priorities for 2015. Even if it is some custom WP theme.
  • Learning more about design, and user experience. It is a great interest to me, and although I realize that I can’t be that developer/designer unicorn, I just want to know enough about design, so I don’t feel totally incompetent among designers.
  • Speaking to user groups, and maybe even a conference. I will have to free up my schedule for this, but the goal is attainable, and speaking to people about the things you are working on and know about isn’t that hard.
  • Reading more. My ballpark plan is to read 54 books in the next year, so basically one per week. And I plan to write reports on the site about them. This could also serve as a nice passive income generator because most books I read are from Amazon, and you can earn a pretty sum of money in the Amazon affiliate program.
  • Spend the whole summer at the coast. I always loved the sea, the air there (living 5 kilometers from an old refinery makes you appreciate the smell of fresh air), and the feeling I have always had. I do plan to work, but work less than usual, and have fun with my family at the beach, for as long as we can.

Learning Ruby and Rails in 2014

In the last few weeks, I have been approached by a couple of people who are interested in learning Ruby and/or Ruby on Rails. And for their sake, and for my own interest, I investigated what are the best resources at the moment. Ruby and Rails ecosystem is a one that evolves really fast, and while I like it a lot, because we have new toys to play with all of the time, it is not a great thing for new developers. Also Rails has grown to this big behemoth, and although I like Rails a lot, and will continue using it as long as I can, I’m not sure it is newbie friendly. But I’ll address that one later.

Before i list the resources, and their brief descriptions, there are a couple of rules you should follow, to have an easy ride with Ruby on rails. A basic understanding of HTML/CSS is needed, because, you are learning a web framework, which incidentally runs in the browser, which incidentally uses HTML/CSS to render the pages. I’m not telling you that you need to be a frontend developer/designer, just to have a basic knowledge of it. Ok, no more philosophy from now on. You should also be acquainted with JavaScript, not that you need to be an expert in it, but just have a basic knowledge of it. You are going to use it if you want to have any dynamic interactions in your web applications, but it is not as crucial as HTML/CSS. After you have your prerequisites in order (and it will probably take you a couple of days to get acquainted with HTML/CSS and JavaScript), you can start learning a new programming language, and a web framework. The basics will come in handy if decide to use any other programming language and framework, if your goal is to create web applications.

Learning Ruby on Rails is mostly done backwards, at least that is the way I’ve done it myself. I first “learned” Ruby on Rails, then started learning Ruby, because it was pretty stupid not being skilled in a language that runs your favorite web framework. Who would of thought that by learning the language, you get to understand the framework better. You should not be a fool that I was, and learn the language first. Also, learning Ruby on Rails is a really big bite to chew all at once. Here is a brief overview of the things you are expected to learn all at once:

  • A new language
  • A whole web framework and its abstractions
  • HTML/CSS (if you haven’t done web development before)
  • JavaScript (or CoffeeScript and its abstractions)
  • Probably much more stuff that I don’t remember anymore

Learning Ruby

First thing you want to know is how Ruby syntax looks like, and how it behaves. I think that the best possible way to find out is to Try Ruby. This is a great interactive tutorial, which helps you to learn the language basics. There is also one more site, which I’ve been using lately, to get an insight into other programming languages: Learn X in Y minutes and specifically their Ruby tutorial. After you have done the ruby tutorials, and at least grasped the language basics, you will be able to decide if you like it or not. If you chose not to experience the awesomeness of Ruby, and everything that comes with it, that is OK. To each their own. If you want to continue learning ruby, this is probably the best book there is: Programming Ruby or colloquially called “The Pickaxe book”, from which you will not only learn about the Ruby programming language, but there are also three Regex chapters from which you can learn to be a wizard.

Learning Ruby web frameworks

After you have learned Ruby, the next step on your itinerary is learning Ruby on Rails. I would like you to make a short break here, and learn something a bit closer to the metal. Sinatra is a great small Ruby web framework which will teach you how to build small and simple sites or API endpoints. Also, it is possible to mount Sinatra apps in Rails, and the Rails learning curve will be easier for you if you already know Sinatra. And maybe you decide that Sinatra, with some added libraries is enough for your project. So as a next step, I want you to look into Padrino which is built upon Sinatra, and it also gives you a predefined way to build your web applications.

Learning Ruby on Rails

Learning Ruby on Rails is a big task, and if you set out to do it, it can take you 15 minutes to build a blog, and probably half a decade to master everything that Rails can (and will be able to) do. In my opinion, the best resource to get you on the way is The Ruby on Rails Tutorial by Michael Hartl. A book (and videos) that have helped mold plenty of Ruby on Rails developers. There is also a free online version, if you are on a budget. There is of course the official Ruby on Rails Guides, and one of my favorite books on Rails, The Rails 4 Way which is a great resource, and each time I get through it, I find another new thing I should be using. There is (was) a great screencast resource packaged in Railscasts. Although it isn’t updated anymore (I really hope Ryan gets back soon), it is still a great asset for solving most of the specific problems you will encounter as a Rails developer.

I have focused mostly on free resources, although some of the books I recommend come with a price tag attached. The price, although it might seem a lot to you, is really reasonable, and is much lower than the value these books provide. Even if you don’t stick with Ruby, owning The Pickaxe Book, and going through the first part of it, will teach you some stuff you can probably employ in your language of choice.

I however, chose Ruby, and I’m happy with it. And it doesn’t mean I am, or will only be doing Ruby for the rest of my life (I probably could, if you don’t count JavaScript), but that Ruby on Rails solves the database backed web application problem in the best way I can imagine. And if that isn’t your game, you probably didn’t get to this part of the post. If you have, please try Ruby, it is a beautiful programming language that was designed to make developers happy.

I attended my first Coderetreat

As the title says, I attended my first (and definitely not last) Coderetreat. And we also made history, because it was the first one in Croatia. It was organized by Željko Filipin and Aljoša Mohorović, and we also had a great facilitator, Péter Zsoldos, who really made us think differently in solving an easy problem, at least it was easy on first sight. Also, his insights into our code and the ways we should think outside of the box, even if it doesn’t make sense in a given situation, really helped. Big thanks to Tentamen for sponsoring the event, and Aljoša for being a great caterer who transformed the sponsorship into enough food and drinks for everyone.

You are probably wondering what a Coderetreat is now. It is an activity that serves to teach us (the programmers) better ways of thinking, while doing TDD, and pair programming all the time. There were about 15 of us, and that was an ideal number. Not to crowded, and everyone had another pair for each session. Working with people you regularly don’t work with, switching between development environments, and sometimes languages can be really hard, if you don’t open yourself to accepting every possible way of stepping out of your comfort zone, so you can learn a thing or two. If you have never been to an event like this, I won’t spoil the fun, but you can always go and read about the Structure of a code retreat on their official website.

The problem to solve is always the same, it’s Conway’s Game of life. A simple mathematical problem, that only has four rules you need to obey. By using a simple enough, but not a trivial problem, one can focus on sharpening the skills as a programmer, which we tend to skip in our day to day lives. We “know” how to do our work, and rarely step out of the comfort zone, and do a thing differently, not because it should be done that way, but for fun, trying different things, and learning new tricks.

I learned a lot there, and had fun pair programming with people I never had a chance to work with, which is great by itself. All of us are quirky in our own way, and adapting to that takes some time, but it makes you a better person, not just a better programmer. I’m looking forward to attending the next event.