IT Business Start Up Guide


Warning: Undefined array key "layout" in /home/bateeqjg/public_html/news/wp-content/plugins/wp-about-author/wp-about-author.php on line 94

IT Business Start up Guide

By Larry Battle
The following are 10 simple steps that you can take to successfully turn your idea into a marketable product or service. This guide is more geared to software startups.

  1. Create a Business Plan & Product Document
    Construct a product or service that solves a problem.
    Verify with others that the product or service is marketable.
    Or find at least 3 potential customers willing to buy your product or service.
    Note that you need to involve at least one customer throughout the entire start up process.
    Process: Develop a document that describes the following information.

    • Your product or service
    • Audience / Marketplace
    • Competition
    • Schedule with deadlines
    • Financial Projections
    • Startup cost
    • Business Plan (How are you going to make money?)
    • Market and Sells Strategy
    • Limitations
    • Team Members
    • Exit Plan
  2. Create a Requirements Document
    Define what your product or service does, what it come with and how you’re going to make the customer happy.
    Process: Develop a document that contains the following information.

    • Product Name
    • Deliverables (what is it you’re making)
    • Customer Requirements (What are the customer wants)
    • Functional Requirements (What are the functionalities)
    • Environment / System Requirements (What will this work with)
    • External components
    • Diagrams for Overview, Software and /or hardware
    • Hardware components
    • Limitations
    • Assumptions
    • Team Roles

  3. Create a Architecture Document
    This documents converts the requirement/product/services into simple abstract layers.
    Process: Develop a document that contains the following information.

    • Programming Language / Framework / Software Used
    • Layers
    • Customer Requirements to Layers Matrix
    • Diagrams of Layers and Data Flow
    • Simple Data flow
    • Use Cases
    • Simple GUI Mock-up
  4. Create a Detailed Design Document
    This document will discuss the sub-layers within the layers and define data-flow between them.
    Process: Develop a document that contains the following information.

    • Layers
    • Sub-layers
    • Diagrams of Layers, sub-layers and Data Flow
    • Data Flow Definitions
  5. Create a Test Plan Document
    Create Test cases.
    Process: Develop a document that contains the following information.

    • System Test Plan
    • Integration Test Plan
    • Unit Tests Plan

  6. Develop a working prototype of your Product or Service
    Develop a prototype of the working system.
    I prefer to use test driven development (TDD).
    TDD steps are to Write a test case, watch it fail, program it to pass, re-factor.
  7. Convert your product from beta to a final product / service
    Work with beta testers and customers to improve your product / service to a final working product or service.
  8. Perform System Verification
    Check to see if the system works and have fulfilled all the requirements.
  9. Get ready for release
    Create the following items

    • Product/Service Packaging
    • License and warranty
    • Support information
    • Company website release page
    • Demo setup
    • Payment System
    • User guide and other documentation
  10. Release and start marketing
    Release to the public, market the product/service and rake in the cash.
    You can do stuff like …

    • Video Demonstrations
    • Buy Ads
    • Press Release
    • Attention getting stunts

Done.

Larry Battle

Larry Battle

I love to program, and discover new tech. Check out my <a href="http://stackoverflow.com/users/527776/larry-battle">stackoverflow</a> and <a href="https://github.com/LarryBattle">github</a> accounts.

More Posts - Website

Follow Me:Add me on XAdd me on LinkedInAdd me on YouTube

Interview Programming Challenge: Print me a tree


Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/bateeqjg/public_html/news/wp-content/plugins/wp-syntax/wp-syntax.php on line 380

Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/bateeqjg/public_html/news/wp-content/plugins/wp-syntax/wp-syntax.php on line 380

Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/bateeqjg/public_html/news/wp-content/plugins/wp-syntax/wp-syntax.php on line 380

Warning: WP_Syntax::substituteToken(): Argument #1 ($match) must be passed by reference, value given in /home/bateeqjg/public_html/news/wp-content/plugins/wp-syntax/wp-syntax.php on line 380

Warning: Undefined array key "layout" in /home/bateeqjg/public_html/news/wp-content/plugins/wp-about-author/wp-about-author.php on line 94

Last Thursday I had a interview with a software company. During the interview that asked me write out a program which I was unable to complete within 10 minutes time. But I think am OK because their goal seemed to be to determine how I approached the problem rather than if I could produce a working program.

Anyhow, I decided to finished the program during my spare time in case if it every comes up again. And here it is.

Question: (Not exact wording)
Design a program in any language that will print a tree using only UNICODE or/and ANSI characters. The program should accept user input an integer value to set the base of the tree.
Example:

// base length is 7
   *
  ***
 *****
*******
   *

My Program
I decided to use Groovy and Test Driven Development to solve this problem. After a little bit of thinking I managed to come up with the following two files that create a working program.
Tree.groovy – Program that prints the tree
TreeTest.groovy – Test cases for Tree.groovy

TreeTest.groovy (Test Cases)

/**
* @author Larry Battle
* @date 1/3/2011
* @purpose Provide test cases for the Tree class.
*/
import Tree;
 
class TreeTest extends GroovyTestCase{
    private Tree tree = new Tree();
    private testValues = [
        [baseLength:-1, level:-1, length:0],
        [baseLength:1, level:0, length:1],
	[baseLength:1, level:0, length:1],
	[baseLength:1, level:5, length:0],
        [baseLength:1, level:9, length:0],
        [baseLength:2, level:0, length:1],
        [baseLength:2, level:2, length:1],
	[baseLength:2, level:5, length:0],
	[baseLength:6, level:0, length:1],
	[baseLength:6, level:2, length:5],
        [baseLength:6, level:3, length:6],
        [baseLength:6, level:4, length:1],
        [baseLength:6, level:5, length:0],
        [baseLength:7, level:0, length:1],
        [baseLength:7, level:2, length:5],
        [baseLength:7, level:3, length:7],
        [baseLength:7, level:4, length:1],
        [baseLength:7, level:5, length:0]
    ];
    void testHeight(){
        def vals = [ 0:0, 1:1, 2:3, 3:3, 4:4, 7:5, 40:22 ];
        def msg;
        vals.each{
            msg = "baseLength of {$it.key} should have height of {$it.value}";
            assert tree.getHeight( it.key as short ) == it.value : msg;
        }
    }
    void testTreeBranchLength(){
        def msg; 
        def length;
        testValues.each{ obj ->
            length = tree.getBranchLength( obj.level, obj.baseLength );
            msg = "BaseLength $obj.baseLength at Level $obj.level should be $obj.length, not $length";
            assert length == obj.length : msg;
        }
    }
// Other test cases not included.
}

Tree.groovy

/**
* @author Larry Battle
* @date 1/3/2011
* @purpose Tree Interview Question: Display a tree in ansi format with a specified integer base length.
*/
// function documentation excluded.
class Tree{
    short getHeight( baseLength ){
        short height = 0;
        if( baseLength > 0 ){
            height = 1;
            if( baseLength > 1 ){
                height += Math.floor( baseLength / 2 ) + 1;
            }
        }
        return height;
    }
    short getBranchLength( levelNum, baseLength ){
        short length = 0;
        short height = getHeight( baseLength );
        if( levelNum > -1 && height > levelNum ){
            if( height - levelNum == 2 ){
                length = baseLength;
            }else{
                if( height - levelNum == 1 ){
                    length = 1;
                }else{
                    length = 2 * levelNum + 1;
                }
            }
        }
        return length;
    }
    short getWhiteSpaceOnLeftNum( levelNum, baseLength ){
        short i = 0;
        short height = getHeight( baseLength );
        if( levelNum > -1 && height > levelNum ){
            if( height - levelNum == 2 ){
                i = 0;
            }else{
                if( height - levelNum == 1){
                    levelNum = 0;
                }
                i = Math.floor( baseLength / 2 ) - levelNum;
            }
        }
        return i;
    }
    String getTreeBranch( levelNum, baseLength ){
        char x = '*';
        short xNum = getBranchLength( levelNum, baseLength );
        short spaceNum = getWhiteSpaceOnLeftNum( levelNum, baseLength );
        String str = "";
        spaceNum.times{
            str += ' ';
        }
        xNum.times{
            str += x;
        }
        return str;
    }
    String[] getTreeAsStrArr( short baseLength ){
        short height = getHeight( baseLength );
        return (0..height-1).collect{
            return getTreeBranch( it, baseLength );
        }
    }
    void printTree( short baseLength ){    
        if( 1 > baseLength || baseLength > 49 ){
            throw new Error( "BaseLength must be bigger than 1 and less than 50." );
        }
        String[] strArr = getTreeAsStrArr( baseLength );
        println strArr.join( '\n' );
        println "------Base length = $baseLength -------";
    }
    static void main( String[] args ){
        Tree a = new Tree();
	def vals = [1,2,6,7,49];
	if( args.length ){
		vals = [];
		args.each{
			vals.push( Integer.parseInt( it ) );
		}
	}
	vals.each{
		a.printTree( it as short );
	}
    }
}

Output ( Run Tree.groovy 2 7 12 > output.txt )

 *
**
 *
------Base length = 2 -------
   *
  ***
 *****
*******
   *
------Base length = 7 -------
      *
     ***
    *****
   *******
  *********
 ***********
************
      *
------Base length = 12 -------
Larry Battle

Larry Battle

I love to program, and discover new tech. Check out my <a href="http://stackoverflow.com/users/527776/larry-battle">stackoverflow</a> and <a href="https://github.com/LarryBattle">github</a> accounts.

More Posts - Website

Follow Me:Add me on XAdd me on LinkedInAdd me on YouTube

Book Review: Beginning SQL Queries


Warning: Undefined array key "layout" in /home/bateeqjg/public_html/news/wp-content/plugins/wp-about-author/wp-about-author.php on line 94




Here’s my Amazon.com review for Beginning SQL Queries by Clare Churcher

This is an excellent book to turn you into a SQL professional but not an expert. This isn’t a book for complete beginners but for a person with some experience with databases. In other words, someone around the beginning to intermediate level because this book is all about SQL Queries and not how to setup, maintain and configure your database system.

Anyhow, this book focuses on SQL and not a specific Relational Database Management System (RDBMS). So check out another book if you’re primarily focused on Oracle, MySQL or any other RDBMS. However, she does go over a few differences between vendors when it comes to SQL queries.

I bought this book to review SQL and clarify a few concepts. Now after finishing this book, I feel that my goals has been reached. I really enjoyed this reading this book, because Clare is an effective writer who provides clear and concise examples with helpful explanations. For example, she provides annotations on screen captures of tables from Access and MS Server instead of only writing a description of a query. Even though the chapters were short and fast-paced, I was never stretching my head too long to understand what was going on.

The only negative thing about this book is the queries don’t have any semi-colons at the end.

I recommend this book for anyone taking a database course or anyone who wants a simple overview of SQL.

Tip:
All the table example data is listed after chapter 11. I suggested that you store that in your database before reading this book and so you can follow along easily.

Larry Battle

Larry Battle

I love to program, and discover new tech. Check out my <a href="http://stackoverflow.com/users/527776/larry-battle">stackoverflow</a> and <a href="https://github.com/LarryBattle">github</a> accounts.

More Posts - Website

Follow Me:Add me on XAdd me on LinkedInAdd me on YouTube

Subscription Review: New Scientist


Warning: Undefined array key "layout" in /home/bateeqjg/public_html/news/wp-content/plugins/wp-about-author/wp-about-author.php on line 94


Throughout 2011 I have been loyal subscription holder to the scientific magazine New Scientist.
I love it how each week I’m presented with the latest scientific discoveries that blow my mind.

So, what is New Scientist?

New Scientist reports on the very latest science and technology news, putting discoveries and advances in the context of everyday life. New Scientist relates the advancements of human knowledge to the broader impacts on society and culture, making it essential reading for people who ask why. – From: Amazon.com

Here are my top 5 hottest stories from 2011

  1. Fallible DNA evidence can mean prison or freedom

    New Scientist reveals that much of the DNA analysis now conducted in crime labs can suffer from worrying subjectivity and bias.

  2. Neutrino watch: Speed claim baffles CERN theoryfest

    OPERA … announced that neutrinos traveling from CERN had apparently moved faster than light.

  3. Move over, Einstein: Machines will take it from here

    Schmidt recorded this movement using a motion tracking camera which fed numbers into his computer. What he was looking for was an equation describing the motion of the pendulums.

    Note: I wrote an article over this here

  4. How online games are solving uncomputable problems
  5. Better than human? What’s next for Jeopardy! computer

Pros:

  • Well thought out and highly organized magazine.
  • Scientific Job Board
  • Amazing Scientific News
  • Articles are easy for ordinary person to understand.
  • Offers short lessons over complex topics
  • “The Last Word” – answers to scientific questions about everyday phenomena.

Cons:

  • Topics can sometimes become repetitive
  • No references for most articles.
  • It’s only news, so you can’t apply want you learn.

Price: ~$99 annually (on line discounts may vary)
You can check out “New Scientist” at www.newscientist.com/

Larry Battle

Larry Battle

I love to program, and discover new tech. Check out my <a href="http://stackoverflow.com/users/527776/larry-battle">stackoverflow</a> and <a href="https://github.com/LarryBattle">github</a> accounts.

More Posts - Website

Follow Me:Add me on XAdd me on LinkedInAdd me on YouTube