Showing posts with label Startup-Engineering. Show all posts
Showing posts with label Startup-Engineering. Show all posts

Friday, August 9, 2013

Use PuTTY with AWS EC2 Instance

Steps

  1. Start a new instance and save the corresponding private key file (.pem file)
  2. Use PuTTYGen to convert .pem file to .ppk file
    1. Load the .pem file
    2. Save private key as .ppk file
  3. Connect using PuTTY
    1. Use the right EC2 hostname
    2. Update Connection > SSH > Auth > Private Key File to point to the newly created .ppk file
    3. Save the connection

Reference:


Friday, July 19, 2013

Running SSH on Windows

Setting up SSH on Windows for GitHub

  1. Create a ".ssh" folder in your home directory.
  2. Use Puttygen.exe to create ssh-rsa keys.
  3. Save the public key as %HOME%/.ssh/id_rsa.pub
  4. Save the private key as %HOME%/.ssh/id_rsa
  5. Edit the id_rsa.pub file by removing the comment and replacing with "ssh-rsa". Make sure it is one single line. It should look like:
    • ssh-rsa AAABSLDFEISELslghkjsesoi ...... yourname@email.com
  6. Login to GitHub and add the contents of id_rsa.pub as one of the security keys.

See this site on instructions on how to use Puttygen.exe to create keys.

Thursday, July 18, 2013

Why use Twitter Bootstrap

Use Tools

  1. Use Chrome's User-Agent Switcher to spoof your user agent
    • Make the spoof permanent
  2. Use Chrome's Resolution Test to quickly switch resolution of browser
    • Add iPhone resolutions using options
  3.  Use Twitter Bootstrap and CSS to quickly style a website to look good on mobile
    1. See documentation on examples and components

Wednesday, July 17, 2013

Why/How to do Market Sizing, Product Tier and Product Pricing

Why do market sizing?

The only thing that matters is the market:
In a great market -- a market with lots of real potential customers -- the market pulls product out of the startup. ~Marc Andreessen

How to do market sizing?


Top-down estimation
Bottom-up estimation

Product Tier and Pricing

  1. Establish a market before building a minimum viable product
  2. Develop a simple landing page
    • Use Launchrock service
    • Use photos from iStockphoto
    • Use icons from iconfinder
    • Use some basic SEO
  3. Determine product tiers
    1. Read Kickstarter product tiers
    2. Read Kickstarter trends
    3. Use the product tier selection process
    4.  
  4. Review what Joel Spolsky has to say
 

The Idea Maze and Execution Mindset

The idea state machine

Think of the idea state machine above as a recipe that tells you what to do next.

How to develop a good idea?

  1. Develop a bird's eye view of the idea maze
    • understand all the permutations of the idea and the branching of the decision tree
    • gaming things out to the end of each scenario
  2. Develop an obsession with the market / the idea maze
  3. Study historical players that failed or succeeded in the maze
  4. Think deeply about others who have gone before you and failed or succeeded 
  5. Explain how you are different or you will navigate it better

The Execution Mindset

The execution mindset is in two parts:
  1. do the next thing on the todo list
  2. rewrite the list in response to progress
The list is essentially the plan - stay focused on what needs to happen and be flexible to "rewrite" the list in response to progress.

 References

  • Startup Engineering Lecture 5

Startup Ideas

Startup Ideas

Context-aware applications - like Google Glass.
A personal collection of recipes, templates, models, examples and where to learn that are accessible:
  1. Frequently Used Recipes, Templates, Practices
  2. Financial models tells us what kind of information to collect
  3. Code recipes or process recipes tells us what to do next
  4. Templates gives us a quick structure
  5. Model thinking models tells us what information to collect, which models to use
  6. Examples to illustrate how 
  7. Value - Productivity, better decision
  8. Eventually available on Google Glass
Theoretical Underpinnings: Knowledge is constructed.

Tuesday, July 16, 2013

Three Steps to creating a truly valuable tech company


There are three steps to creating a truly valuable tech company. 
  1. First, you want to find, create, or discover a new market. 
  2. Second, you monopolize that market
    •  through some combination of brand, scale cost advantages, network effects, or proprietary technology
  3. Then you figure out how to expand that monopoly over time. 
Reference:

Beyond Startup Engineering

Next Steps:
  1. Review awesome essays in Peter Thiel's CS183: Startup Course.
  2. Review the pmarca guide to startups
  3. Follow the pmarca blog
Technical
  1. Get a Javascript workout
  2. Get examples of node.js | jquery.js
  3. To to Startup School 

Monday, July 15, 2013

Two Crucial Considerations for a Startup

Crucial Considerations

Two Crucial Considerations for a Startup:
1. Market Size
2. Time to Market

Market Size

Look at the market leaders for an estimate of market size.

Time to Market

A faster time to market beats all other considerations, other than market size.
Because of the effect of compounding.

Saturday, July 13, 2013

Ideas for Startup Engineering Project

Retirement Calculator

A calculator of how much one needs to save using the principles of Finance.
Additional ideas include:
  1. Saving Reminders, 
  2. Integration with precommitment websites
  3. Gamification ideas

Saturday, July 6, 2013

Setup Samba

On the Server

1. Edit /etc/samba/smb.conf
[sharename]
    comment = Share
    path = /path/to/shared_path
    writable = yes 


2. Restart samba server
sudo service smbd restart

Reference:

Change the origin of git repo

If the origin already exists, you can point to another repo as follows:
  git remote set-url origin git@github.com:username/repo.git 

If you've initialized a local repo and want to push to github, do the following:
  git remote add origin git@github.com:hoekit/vimrc.git
  git pull origin master
  git push --set-upstream origin master

Friday, June 28, 2013

Using scp

The slow way

# -- Execute on local computer
# Copy hello.txt from local computer to remote home directory
$ scp -i skey.pem hello.txt ubuntu@ec2-54-218-73-84.us-west-2.compute.amazonaws.com:~/
# Copy hello.txt from local to remote home directory, renaming it foo.txt
$ scp -i skey.pem hello.txt ubuntu@ec2-54-218-73-84.us-west-2.compute.amazonaws.com:~/foo.txt
# Copying ~/foo.txt from remote to current local directory
$ scp -i skey.pem ubuntu@ec2-54-218-73-84.us-west-2.compute.amazonaws.com:~/foo.txt .
# Copying ~/foo.txt from remote to local directory cc, renaming it a.b
$ scp -i skey.pem ubuntu@ec2-54-218-73-84.us-west-2.compute.amazonaws.com:~/foo.txt cc/a.b

The fast way

First, setup the ~/.ssh/config file.

# -- Execute on local computer
# Copy hello.txt from local computer to remote home directory
$ scp hello.txt awshost1:~/

# Copy hello.txt from local to remote home directory, renaming it foo.txt
$ scp hello.txt awshost1:~/foo.txt

Setting up ssh config

Unwieldy SSH Execution

# -- Executed on local machine
# Login to AWS as the ubuntu user using your private key pair
$ cd downloads # or wherever your pem file is
$ ssh -i skey.pem ubuntu@ec2-54-218-73-84.us-west-2.compute.amazonaws.com


# Login to AWS as ubuntu using your private key pair and run uptime command
$ ssh -i skey.pem ubuntu@ec2-54-218-73-84.us-west-2.compute.amazonaws.com uptime


Setting up ~/.ssh/config

# -- Execute on local machine
$ mkdir -p ~/.ssh
$ cp ~/downloads/skey.pem ~/.ssh/
$ chmod 400 ~/.ssh/skey.pem
$ chmod 700 ~/.ssh
$ nano ~/.ssh/config # edit the file as shown below
$ cat ~/.ssh/config

Host awshost1
    HostName ec2-54-218-35-71.us-west-2.compute.amazonaws.com

    User ubuntu
    IdentityFile "~/.ssh/skey.pem"



Rapid SSH Execution

# -- Execute on local machine
# SSH using the ’awshost1’ alias defined in ~/.ssh/config
$ ssh awshost1
# SSH using an alias, run a command, and then exit
$ ssh awshost1 uptime

Install node and npm


# Update list of available packages
$ sudo apt-get update

# Install a special package
$ sudo apt-get install -y python-software-properties python g++ make

# Add a new repository for apt-get to search
$ sudo add-apt-repository ppa:chris-lea/node.js

# Update apt-get’s knowledge of which packages are where
$ sudo apt-get update

# Now install nodejs and npm
$ sudo apt-get install -y nodejs


# Check node and npm are installed
$ npm --version
1.2.32
$ node --version
v0.10.12

Setup git and heroku

# Execute these commands on your EC2 instance.
# Note that -qO- is not -q0-. O is the English letter, 0 is the number zero.

# 1) Install heroku and git
$ sudo apt-get install -y git-core
$ wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh
$ which git
$ which heroku

# 2) Login and set up your SSH keys
$ heroku login
$ ssh-keygen -t rsa
$ heroku keys:add


# 3) Clone a sample repo and push to heroku
$ git clone https://github.com/heroku/node-js-sample.git
$ cd node-js-sample
$ heroku create
$ git push heroku master