How to make better decisions

After reading this post you will not instantly become a good decision-maker, but in this blog post, I will introduce you to a technique, that if you choose to adopt it, it will make you a good decision maker after some years of using it.

This technique is to write down whenever you are making a decision

  1. Write down the decision that you are making
  2. Write down the expected outcome of the decision
  3. Add a heading 6-month review
  4. Add a heading 12-month review
  5. Create 6-month and 12-month reminders and review the decision

If you want to go full throttle also add a heading 10-year review.

Then set a reminder, I typically use Evernote for this, I have a notebook in Evernote dedicated to this, I create a note in the notebook for each big decision that I am making and set a reminder to remind me after 6-months and after 12-months to write down the actual outcome, then I also write down the learning I got from that.

By doing this over the years you will have a great record of your right and wrong decisions when you go over them our incredible brain has the ability to seek patterns in the decisions and you will be able to realize in making what type of decisions you are good at and where you suck and the pitfalls you fall into, and you will be able to greatly improve your decision making ability.

Let me know in the comments your ideas and suggestions regarding the above approach.

ssh-copy-id: The easiest way to copy ssh keys to another machine

I wanted to copy ssh keys to the server so that I could log in without requiring to enter the password. To do that typically I would ssh into the server and copy the public key of my laptop the authorized_keys on the remote server.

I came across a better way and I realized I have been doing it wrong for a very long time and there is a much simpler way to do it, using the ssh-copy-id command.

Just run the following command in the terminal

e.g

It will prompt you to enter the password, and then after that, it will copy the public key on your computer to the authorized_keys on the remote computer, and now you will be able to SSH without entering the password.

That’s it! Let me know if you have any questions or comments.

Disable password prompt when running sudo via SSH

Recently I came across a problem. I created a deploy script that would SSH into the server and run a bunch of commands, and some of those commands required sudo, but when running commands as sudo presented a password prompt, which was a problem.

I solved this by updating the sudoers file in ubuntu. If you ever face this problem all you have to do it update the file /etc/sudoers on your server

Add this line to the end of the file

That’s it! Feel free to comment if you have any questions or suggestions.

VNC into the tinkerboard with x11vnc

I wanted to vnc into my tinkerboard, and using the default mac vnc client. I tried different packages, like RealVNC but that has license only for RaspberryPi, then I tried tightvnc but it was not working with the default mac client and getting tigervnc up was also not a smooth process, as it was giving error related to fonts.

Then, finally I came across x11vnc and it worked like a charm. To install it, simply run the following command on your tinkerboard

Once installed you can start the vnc server using:

If you want to run it with the password, first set a password using the following command

Now you can run the x11vnc with the password, run the command

Now, on the mac if you want to connect to the tinkerboard in the terminal type

It will launch the vnc the client and prompt you to enter the password, and you’ll be in.

That’s it! Feel free to comment if you have any questions or suggestions.

Running Jenkins behind NGINX Proxy

I have a Jenkins server with a private IP address and an NGNIX server with a public IP. I wanted to point the domain for the Jenkins server to the NGINX server and the NGINX server would forward the request the Jenkins server.

I got this working through NGINX proxy pass, here is NGNIX configuration that I have used to get it working.

Assume the domain used for Jenkins server is jenkins.mydomain.com and the IP address of the Jenkins server is 192.168.1.20 running at port 8080.

On the Nginx server we create the file under the sites-available folder, here is the exact path: /etc/nginx/sites-available/jenkins.mydomain.com

Then linked the jenkins.mydomain.com file to sites-enabled

sudo ln -s /etc/nginx/sites-available/jenkins.mydomain.com /etc/nginx/sites-enabled/

Test the updated configuration

sudo nginx -t

Restart the nginx server

sudo systemctl restart nginx

That’s it! Let me know if you have any questions or comments.

Running your apps on your own server – This site is running on my own server

I have two software projects and a bunch of websites and databases running on the internet. They cost me around $1000 /mo. in terms of server cost to run, and I was sick of the slow performance and high costs of the computers running in the cloud.

I have been inspired by the Jeff Atwoods blogs posts (particularly this and this) for a long time. When he first blogged about running your own server, is much cheaper in the long run and then his recent blog post on running mini-pc server, and how the performance of the mini-pc was much better than the cloud computing which costs more than $5700 to run over the period of 3 years. Just to be clear nothing beats the flexibility of cloud computing, you can spin up a server in a matter of seconds and it is great for testing out ideas and running your application for some time, which I have been doing, but if you want to run something for a long term you are better off running your own server.

And I have been reading a lot about the cheap 1U server and few years old Xeon CPUs coming to the used market and selling ludicrously cheap, so I finally decided that I will buy a used server and host all my applications myself.

Hosting the server in your home is not a particularly great idea, as data centres are getting quite inexpensive it is best to put the server in the data center, so I decided to put mine in the Nuday networks datacenter. They also offer an IPMI connection to my server over the VPN which is an amazing service that would allow you to restart/boot/manage the server remotely, and it is quite cheap at just $59 CAD /mo. (they took a $99 one-time setup fee as well)

So, I was looking for used servers and I found a great one, a Supermicro 1U server with dual Xeon 6 core CPUs. A total of 12 cores and 24 threads and 64 GB of RAM.  I installed the VMware Hyper-v on it and created virtual machines that I require. 

I will be writing more about how I configured the server and setup the firewall and everything.

My server is currently running 6 VMs:

  1. MongoDB server
  2. MariaDB server
  3. Nginx server
  4. Dead Simple Chat Server
  5. Dead Simple Screen Sharing Server
  6. Firewall

There is an internal network through all the VMs are connected to each other sort of a VPC that we can have in AWS and the Firewall provides a VPN, so I can connect via VPN and manage the services.

This site is currently running on the Nginx Server along with few other sites, and the performance is really compared as compared to other hosting options.

So far I am very happy with my setup and it costs a fraction to run as compared to the services running in Google Cloud and AWS and is approximately 10 times more powerful.

If you want services to running for a long time then I think hosting your own servers is the best way to go.

That’s it! Feel free to comment if you have any questions or suggestions.

Maximizing productivity when working on multiple software development projects

Software development is a creative pursuit and to enable the creative mind some cues are required, to get in the zone and kickstart the process.

I am a web and mobile app developer who works on multiple projects during the day, and to enable myself doing so I have created different zones for each project, where I can get in the zone and work on my craft, working on multiple projects requires some amount context, and switching context is taxing on the brain.

So in order to work on multiple projects during that day, I work on one project at a time, with a dedicated time slot for each project and a different workspace for each project.

A different workspace means a different desk, chair and a computer for each of my projects and ideally at a different location. Currently, I am working on 3 projects, so I have 3 computers and 3 desks, each dedicated to a separate project.

Now some of you might think it is wasteful, but trust me it is not. Dedicating a workspace for a project is one of the best money I have ever spent because after I am done working on one project, I do not have to close the editor, the tabs etc. I can just leave the things where they are and come in the next day and continue from where I left.

If you look at the desk of creative geniuses like for e.g Einstein or Steve Jobs they have messy desks, and the programs open in your computer is akin to things on your desk that you require when working on your project easily accessible so that you don’t have to break the flow of the what your working on and quickly access the programs and files and keep going and working productively and seamlessly resume where you left of.

By closing all the windows on the computer to switch to a different project and then coming back to the first project you have to re-think and re-load all the variables again in your brain, whereas if they are already open you still have to do some mental loading of the task but it is far less as compared to the re-opening all the stuff e.g the editor and browser tabs.

Steve Jobs Desk at his home office
Einstein’s Last Desk

With computers being more and more affordable it is an incredible luxury afforded to us by the modern times that I can dedicate an entire computer for one project and it has been a great boon for my productivity as I do not have to load things into my brain, when I sit on the desk for a project I just get going.

So if you are a programmer that works on a single project at a time then great for you! But if your profession demands you to work on multiple projects then trust me dedicating a separate workspace for each of the projects would be a great investment.

Conculsion

So in summary based on my experience the best way to work on multiple projects is to have a dedicated workspace for each project so that you can get in the zone with minimal effort.

If you have something more please share your thoughts in the comments.

DeadSimpleScreenSharing 2: Open source browser based self-hosted screen sharing

This blog post is about a project that I have built, which is called DeadSimpleScreenSharing 2, which the next version of DeadSimpleScreenSharing, and it is much better and faster than the previous version.

It offers audio conference out of the box and supports sharing your screen with any number of users just by sharing a URL, and it is very high quality and super fast.

I am also offering a self-hosted version of the application that you can run on your own server, and the self-hosted version is also white label so you can rebrand it with your organisation’s brand name.

So, here is how you can use this super simple service:

Step 1: Go to http://deadsimplescreensharing.com and click the “Host a Meeting” button

Step 2: It will take you the chrome extension page, where you’ll have to install the extension

Step 3: After installing the extension, click the extension icon, and a window will appear, in that window click the “Host a Meeting” button

Step 4: Done! Your screen is being shared, you can share the URL with others so that they can join your session.

How to get customers for your startup- A comprehensive guide.

Marketing and selling products and services for your newly created startup can be a difficult preposition. But, it can easily be done if we think about it logically.

Let’s Start:-

For the sake of understanding, let’s assume we have a SaaS (Software as a Service) startup. We sell something that helps early stage entrepreneurs build their enterprises.

Defining a Persona

Now lets have a look at who our customer is and try to build a persona of our ideal customer.

Some things to consider:

  • Gender
  • Age
  • Martial status
  • Education
  • Income
  • Interests
  • Aspirations in life.
  • Employment.
  • Where does he/she lives

For our startup, our customer is the founder of an early stage startup, and his name is Mike.

  • Mike is a male
  • He is 27 years old
  • Mike lives in San Francisco,
  • Single and a graduate in business,
  • Mike has a job and makes around 100k/ year.
  • He wants to start a startup and make it big in life.
  • Mike does’t know programming or design and has to rely on other people for these skills.

Now, we have got Mike but,
Mike doesn’t know about us
nor about our awesome product that is going to help him make it big.
We have got to find him and tell him.

Where can we reach mike?

We might be able to meet mike in places where he generally hangs out, like:

On the Social media sites:

  • twitter
  • facebook

And Website which provides startup news and updates:

  • product hunt
  • betalist
  • hackernews
  • inbound.org

Apart from this Mike is also reading stuff about entrepreneurship and success on sites like:

  • entrepenuer.com
  • thenextweb
  • lifehacker
  • Medium
  • Forbes
  • VentureBeat
  • etc.

Mike also does a lot of things in the physical world:

  • Mike visits technology meet-ups.
  • Mike visits coffee shops, building his business plans
  • Mike visits trade fairs.

What does mike want ?

Since Mike is starting a early stage startup, he is probably looking for ways to:

  • build a website,
  • Build his product
  • Market his product,
  • Looking for people in his network who might be be interested or willing to help him with his startup.
  • Maybe he is trying to pitch his idea to investors
  • Looking for a small office space or a Co-working space among many other things.
  • Mike might even be looking for his early employees or freelancers perhaps. That might be designers and
    developers to help him build his product.

At this point in time we have got Mike with his early stage startup and we know what does Mike wants and the places where he hangs-out and the people he hangouts with.

Now we have got to get to Mike and help him succeed in his startup.

Why do we want to do that ?

Because Mike does not want to buy our SaaS product. Mike wants to succeed in his business. And we are not going to sell our SaaS product to him. Mike will buy a resource from us that is going to help him achieve success in his business.

Marketing that does not look like marketing is the best kind of Marketing.

Up till now what we have done is

  1. Customer Profiling: Identifying who our customer is.
  2. Identifying distribution channels: Finding out where our customer is.

From now on, We will help our customer find us.
There are two ways we can get this done.

  1. In the physical world.
  2. Over the internet.

We can choose both ways or we can choose any one based on our resources and which we think might work best for our product.

The Physical World

We can go to the meet-ups, where mike is hanging out.
To the coffee shops where he is working on his business plans.
To the trade fairs where he might visit to sell his product.
Out-side Co working spaces where he might be visiting.
We can talk to him and tell him about our product and how we can help him.

OR

We can
Find out his contact number/email and call him or email him.

Cold calling is an awesome sort of Marketing, you just need to know whom to cold call and how to execute. People out there have real problems to solve and if we can help them. It is going to be great business.

(One of the biggest examples of cold calling working is today’s business environment is AppAftercare  app maintenance business by Einar Vollset.

It is an awesome company, He even runs a course explaining how he markets his products.)

And we can speak to Mike, tell him how awesome our product is and how he is going to be huge success by using it.

Over the internet

We have already figured out where Mike hang outs over the internet, We just need to reach out to him and help him out with his Business.

  1. Building a Side Project.
  2. Teaching.
  3. SEO

1. Building a Side project.

A side project can be a website or a tool that does some kind of leg work for Mike.
For example
Mike needs to get a lot of things done.

He needs a Website, a logo, he needs legal stuff done, he needs to find designers and developers, he needs productivity tools. He needs to learn basics of coding or design. He needs photos for his blog or social media posts etc.

If we can build a tool or a side project that can help Mike in achieving his objective. He is going to come finding us.

One of the awesome companies that are doing this kind of thing is: Buffer

Buffer is company that helps entrepreneurs schedule their social media posts. They need to attract people who are into social media.

They have a side project called:

  1. Pablo is website that helps you design images for your social media posts. This solves a big problem for Entrepreneurs and social media marketers.

When Mike is searching for photos for twitter post and he stumbles-upon Pablo.
He gets to know that there is this SaaS company called Buffer which helps him save time
on his social media marketing and he is likely to buy from them.

2. Teaching

Blogging is a very well known tool for inbound marketing. But what to blog is thing to consider. We need to only blog things that are going to help Mike.

Actionable content, Content from which mike can take away something from and apply to his life and business and get results.

A study by New York Times, claims that the likelihood of an article being shared is the most for articles with
practical utility. articles with actionable content gets shared the most.

Ideas to blog about?

We already know a lot about Mike. Lets just think what would be the core idea Mike would like our advice on?

Answer: Entrepreneurship and success.

Well, this is just one thing. What are the other complimentary things we could help Mike with.

Complimentary ideas

  • Productivity
  • Marketing
  • Getting startup ideas
  • Validating startup ideas
  • Building an MVP.
  • Getting funding etc.

Apart from writing an article, you could also make video or podcasts or slide-share. But the basic idea between all these mediums is the same, that is to help the customer achieve success in his/her pursuits.

And writing an article is just not enough. We will have to tell Mike we exist and here is an awesome article which would be a great help to him.

Distributing your Side Projects/Articles and doing SEO:

Well we have a great SaaS product, a great tool to help Mike and we are also writing awesome articles.

How are we going to make Mike come to us?

Well we know where Mike hangs out on the internet. We can just through stuff on the social media and hope and pray that Mike reads OR we can be proactive in our efforts to reach Mike.

Here’s How:

Now, there are certain people on social media who are called influencers. These people have a large amount of following.

We will need to find out certain influencers who would be interested in distributing our free tools and blog articles to their network of people on social media.

How we are going to do that?

With a certain tool called as Followerwonk, which is available at MOZ.com It helps us sort influencers on twitter with certain keywords in their profile or bios.

for example. If our tool is an open source product. we will sort people with open source in their bios and see if they post other people’s open source products on twitter.

Then we will contact them and ask them to distribute our product.

We could do something similar for product hunt as well. Product hunt is an awesome network that lists digital products.
Though we don’t have followerwonk for product hunt. Product hunt has hunters and we can contact them on twitter and ask them if they will hunt our product.

This same thing we are going to do with our Blog article. One thing to remember though: The quality of our content should be top notch. The better the quality of our product the more viral it will become.

One very good side effect of this will be people will start linking to our blog or free product page.
For example some one is writing some post and they might link to us as a reference. This is going to increase our SEO.

Or someone might be listing free resources for Entrepreneurs and
businesses and they might list our product.

Alternatively, we can also search for blogs on google.
Just typing in Open source software blogs or Entrepreneurship blogs and Google will give us a list if blogs and we can contact those blogs and ask them if they can list or add a link to our free product site or blog article.

Build an email subscription list:

Always try and build a subscription list. The people who are subscribing to your articles really believe in your content. And you should make them search for your articles from time to time.
They are a dedicated audience and dedicated traffic to your blog. Do your upmost to make it really easy for them to signup to your mail list.

What is SEO ?

SEO is search engine optimisation. What is means is that When mike does a google search for a product or problem that we could solve our website ranks higher in the search ranking.

To increase search ranking there are many things Search Engines consider. Among them are

  • Keywords
  • Number of links connecting to our site
  • Traffic coming to our site
  • Number of social media posts of our site.

What are Keywords?

Key words are words Mike might type into the search engine bar to find something he wants to find.

For example if Mike wants to hire a mobile app development company, He might search
mobile app development companies in San Francisco. or hire mobile app developer.
We need to research keywords that are relevant to our industry and customer

Typically we should try to rank in the top three keywords our customer would search.
Now there are two kinds of SEOs.
Onpage and
OFF page.
Here is a very good guide to Onpage SEO.

For finding out keywords
Think

“will searchers really find what they are looking for when they search using using these keywords?”

Or

Find out what key words competition is using. Tools like Open web explorer and SEM Rush are a great for this kind of research

and google keyword planner is another great tool for keyword research. It tells you how much traffic is there for a particular keyword. It even tells you how much difficult it is to rank for a particular keyword.

And we already have been doing a lot of off page SEO by building free products and Blogs.
Just be sure to sub-domain your free product page and blog site to your startup site.

After getting an understanding of keywords. DO a quick on page SEO. It doesn’t take much time is simple to do and the results are for ever
here is a quick guide.

These key word tools tools will also come in handy when distributing blog articles

Doing Paid Ads.

If we have the budget or if we want to do experiments we can use paid ads for this purpose.
Building a paid ad is an skill unto itself
We will need to answer questions like these ?

What is the goal of the ad?

The goal could be to drive signups, or
influencing people to read our blog post
or
converting people to buy our product.

What keywords to target?

Key word targeting in ads is a skill. You need to find key words that drive traffic but aren’t that expensive to buy.
We discussed some of the tools we could use above.

Which platform to choose?

Ideally we should only choose platforms where our customers visit (mike). Another thing to consider is what mood mike is in when he is on a particular platform.

Research shows that for long form content twitter is a good source, for relaxed entertaining content Facebook is good media.
For getting conventions search engine ads like on google and bing are a good source.

Other things to consider:

What ROI do we want, and at what cost ads are feasible for us.

What does a client pay us VS How much does it cost to get the client is an important thing to consider.

Assuming our goal is to convert the client to buy our product.

Income from client > How much money a single click costs * How many clicks are required to get the client.

##In Conclusion:

Marketing like everything else in life is a trial and error thing. All of the things will not work everywhere.
And running with all the strategies and all the distribution channels that I have mentioned is a not a good idea especially when your resources are limited. Instead try and identify what channels suits you the best and work with it.

So many times it happens that one of the channels brings in more customers than all of the other channel combined.

I wish you best of luck for your adventures.

This blog post is by Mohammed Lakkadshaw. Founder at Mohammed Lakkadshaw & Co. A Mobile and Web design and development company.