Saturday, March 16, 2013

Business and success

This is not a tutorial but it's one of those things university professors neglect to tell future businessmen. Professors are professors - they will teach you about business, economy, market, and management - all valuable and helpful but not nearly enough. Don't kid yourselves - getting a degree at a university doesn't automatically make you an expert or a businessmen or what have you. It's a good place to start your journey and get some insight. Nobody can teach you about starting a successful business - because everybody is not you. You need guts to do it, sometimes you need luck and to be in the right place at the right time, you need resources and to be resourceful at finding those. You will need money (regardless of what you're doing, trust me you will need it). And you need an idea or a solution to a problem. And you need humility - you need to recognize the fact that you may not be the best in the world and you won't get things done, well, just because it's you and you believe you're awesome. So lose the sense of entitlement if you have it, and let's talk about where is a good place to start a successful company.

Idea

 
First of, think about how many other companies there are out there doing the exact same thing as you. And I mean really think of them - some are very established with years of experience and excellent experts - they are renowned and trusted by the customers. People don't have to give it a chance - they know that if they pay an X amount of money they will get what they bargained for. You, as a starting company have to work hard to convince those people to come to you instead. So, you must offer something special, something that others don't have. And for the most part "oh we do the same thing as all those other companies do, just better and/or cheaper" is not the answer. That's good if you already have a name and some clientele.

A smaller example of it is a blog - you can have the best design and awesome development behind it but if the content or the idea is bad people won't go there. Same with computer games - bad graphics are more excusable if the content is good. Same with apps, programs, websites. You need to have a good solid idea behind all that. And that isn't going to be that easy.

Sometimes a good idea is a new solution to existing problem - something revolutionary and innovative. So, start looking for a problem that people face. There can be a number of solutions to it but none of them are good enough. Take a look at it from a different angle, think outside the box.

Research


Alright, now say you have a great idea, or a fresh solution to a problem. Next step? Get a reality check. Is it doable? Do you see a way of doing it? Talk to some experts on the field, do some research, find out if anybody else has already figured it out, know your competition. If experts say 'yay', and get all excited about it, then you're on the right track. Now think about time. How long will it take to turn your idea into reality? Maybe by the time it gets done nobody will care about it? If that's the case either find a way of getting it done faster or maybe let it go and think of something else.

Research should never stop - you need to be up to date on what's out there, on the tools you're using, on people you have, competition, reviews, market, economy. And most importantly always look for ways of bettering your product or idea. Don't immediately throw everything out the window though - stay on the track and just know what could be done to better but take into consideration your resources and clients. Just know about possibilities and paths you can take, think, and decide whether or not to take them.

Implementation


Implementation of the idea is very important. Think about who is going to use it, who it's for. You can't please everybody. But if 790 customers out of 800 love it, you're doing great. Focus on them, Don't focus on the 10 that hate it.

During the development phase you will be constantly faced with making decisions of what's important and what to sacrifice. It will be easier when you know who your clients will be. One important thing to remember though is it's better to deliver something quick and let people use it and THEN add features and better it, rather than releasing something perfect 5 years after you had the idea. However, when you release the first version, you need to have the key elements in place. You need to recognize what is key and what's a "I would love to have that added!"

Team

Think of who do you need for getting this done. And who you need to put a focus on. Something heavy with graphics? Get more designers. Something complicated and functional? More developers. And when you have your main people on the team talk to them, ask them for opinions and thoughts. However, don't immediately change everything because so-and-so said it was a good idea. Just think about it and make a decision.

Also, if it's something specific get a couple (or one) experts on the field - somebody from your potential clients who will be using your product and knows about the industry where your product belongs (as in doctors, teachers, etc). Alternatively you can have one of your people go study the industry - and it will be important to have somebody who both knows the industry and is directly responsible for creation of the product - but don't overdo with this. If it's a programmer then they better spend most of their time programming and not learning about how to breed fish (it's an example :) ).

Marketing


Once you have your shiny finished product you can start marketing it. A lot of people start marketing when they just have an idea. Talk is cheap - everybody is bursting with ideas. It's difficult to sell it though. It's like a designer with no portfolio trying to convince you that they are the best and the right person for the job.

What I'm saying is when you start marketing, you need to have something done - and not just a pretty picture of what it could be. A very basic product - but product that works.

And your marketing should be aimed for finding at least one client that will love the product, buy it, use it, tell everybody else about how great it is. Aim for that. Go door to door if you have to. Marketing can be very expensive and you need to have some income before you can start spending. Start small. Find clients. If you have a product that's great for certain people you have to find them and tell them about it, rather than trying to tell the whole world about your product and hoping that your clients will find you.

Extra mile


Say you have a company that seems to be on the successful track and is growing. Are you growing with it? Or did you stop somewhere and decided that everything is good you should just sit back and let it be and collect the profit? The chances are that's when things will start falling apart. If you are the businessman, the owner, the one with the idea then it all depends on you in the end - not on the marketing people, not on experts. Nothing in life stays the same - everything changes and your company will need to adapt to various outside factors. And since you're the one responsible for your company you need to be aware of those factors and watch them and know what's coming or at least try. Update your tools, make sure your experts didn't get rusty and follow up on their field. Go to start up business conferences, look around, see what others are doing, what new things are out there and so on. Stay on top of things!

 

Monday, March 4, 2013

Web-servers and database set ups

This is not going to be an in-depth post for advanced folks. Rather, this is a post for beginners to help them make heads and tails from all the things that seem to be so complicated. Or this can be treated as a base or auxiliary material after which you should go hit up Google for more information. You should just get a basic understanding of how things work out of this post.

Alright so. Database is a place where you keep your data - the stuff that you will need repeatedly or that will need to be updated or added in the same format. You can create many tables in a single database. And each table can have as many columns as you want. Each column needs to have a type - string, integer etc, can have a limitation of how many characters long will the type be like varchar 255.

For example if you're making a category menu for your website I'd rather put it into a database - this way I can easily change and add categories without having to go into the code, finding the right spot, and modifying the same code in many files.

Anyway. So if database is a place for data it also needs to be somewhere - needs to have a physical location just like anything. So, when you go host a website that provides you with a databse of any kind you should get an email from them letting you know the HOST name of that database, and other information. In this case setting it all up is easy - you either get an email or you can log in to the website that's doing the hosting and find all the info you need.

Now say you don't have a website, or didn't get a database with it but suddenly you need to test some stuff out with databases.

No problem there - go download WAMP servers (or something similar. WAMP is my personal preference) and install it. What happens is it creates a virtual server - in reality the server is on your computer there is a folder where all of the data, files, etc is stored. Now RUN the servers. This kind of server is accessible only on your computer - locally. Since it's local it got the name localhost.

Once this is done open your browser and type in localhost in the address bar and hit enter (or get there some other way). Go to phpmyadmin. Create a database there - can be empty (no tables).

On the right of your phpmyadmin homepage there is all kinds of information:

  • Server: localhost (localhost via TCP/IP)
  • Software: MySQL
  • Software version: 5.5.24-log - MySQL Community Server (GPL)
  • Protocol version: 10
  • User: root@localhost
  • Server charset: UTF-8 Unicode (utf8)

  • This means your HOST NAME or SERVER is localhost.
    Your database is MySQL (there are many other databases like Django etc. MySQL is a database but not all databases are MySQL :D )
    and the default user is root . root@localhost is the same as myName@gmail.com gmail is the SERVER and myName is the user. so if you're logging into gmail you only input the name before @. but if you're giving your email to somebody it will be the whole thing. Remember that localhost is running locally :)

    By user they mean database user. Like admin or just somebody who is allowed to view or edit the data in the database. This is not a user of your website that needs to register. Different things.

    By default the password for root user is empty.

    So this is enough information for your page to be able to connect to your database. Here's an example in PHP:

    $dbhost = 'localhost';
    $dbuser = 'root';
    $dbpass = '';
    $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');

    $dbname = 'myDB';
    mysql_select_db($dbname);


    Of course you can just do :

    mysql_connect('localhost', 'root', '');
    mysql_select_db('myDB');

    MySQL_connect is a function that takes STRING arguments so everything is in quotes. Since there is no password you write an empty string - '' or "".

    If you are using a framework or software where you're give fields to fill out you write all of that without quotes. Here's a wordpress example:

    Database Name: myDB (your database. can be empty but must be in existence :) )
    Username: root
    Password : (leave blank)
    Database Host: localhost
    Table Prefix: wp_ (your tables in that database will always start with wp_ )

    This is a very basic set-up and is quite simple you need at very minimum 4 things - server / host , username, password, database name. That's it. Usually there are tooltips or descriptions that tell you what the field needs to be - make sure to read it. Don't panic if something doesn't work - maybe you need to provide additional information like port number or what have you. Read the documentation, look things up on your localhost, just Google for a specific question. Trust me you're not the only person with that problem - There are communities online where you can ask questions and get answers and solutions and if you Google for something you will most likely come across a solution exactly for your problem :)

     

    Thursday, February 28, 2013

    Thoughts on WWW trends

    Last week I was thinking about where internet is moving to, so I decided to devote my first post as a co-author of this blog to trends driven by today's technologies. In other words, I will try to see what are market needs that have to be satisfied.

    Recently, I had a seminar on developing breakthrough online presence for small businesses where I was discussing the 3 eras of World Wide Web we have passed.

    The first decade or establishing stage of the Web was until early 2000's when some of the major websites were founded (including Google) and internet users did not really interact with internet but were only information takers.











    Second or the Social era started after dot com boom. During this period online (social) services like youtube, facebook and, why not, match-making were introduced to the market. Further services were all designed around the social base, which made a huge success for some companies.


















    Currently, we are in the Cloud or Mobile internet era.
    We are facing technologies that developed in a direction allowing internet users be mobile, travel and have access through their smartphones, keep in touch on social level, use apps, play games online, work on their personal files  regardless in what country they are today and where they are moving tomorrow.
    So, opportunity-wise location does not change service availability which leads to thoughts that location is the key to designing new services/apps around it (just as "social" was during the previous internet era).

    Now, on a smartphone you can use an app to see your moves on a map and count steps, you can take a photo outside, process with an app and upload online immediately, You can checkin and invite friends, you can find best restaurant closest to your current location, you can find people interested in dating within 3 miles, you can find hotels, best deals, stores, best price cargo services, etc., etc. You can do almost ANYTHING around Location and whatever is not available yet, is surely going to be there.


    What's coming next after cloud era? Unfortunately, I have no answer yet. But, technologies are what defines upcoming trends, we just need to keep our wits about us.

    Tuesday, February 26, 2013

    Twitter Bootstrap - Layouts

    About Bootstrap

    (skip this part if you know about this project)
     

    Bootstrap is a tool that will make web-development and web-design very easy. You can make a very clean, professional looking website in a very short time and with very little effort if you choose to use it. It's absolutely free and doesn't really require working knowledge of JavaScript or jQuery, although that would certainly help and give more versatility to what you can do and how you can use other components. But that will be a separate post. For now, I'm just going to explain the layouts
    Bootstrap provides.

    So, first things first, go download Bootstrap and include the following:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <title>My page</title>
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
        <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css" />
    </head>

    If you are planning on using the JavaScript components you will also need to get jQuery and include the following in <head></head>:

        <script type="text/javascript" src="js/jquery.js"></script>
        <script type="text/javascript" src="js/bootstrap.min.js"></script>

    But I will talk about this later and for now you just need the css stylesheet from Bootstrap.

    Bootstrap Layouts

    Remember what a painful experience it was making sure that your layout will look good across browsers? Making tables to tie all the components together or using CSS styles to position divs? And adding special extra codes to make sure it will all look the same in IE and Mozilla? As if that wasn't enough for poor web-developers and web-designers then phones came out adding even more headache. Forget all that.

    Bootstrap provides a layout system that will look the same across any major browser (IE7 and up), phone, and tablet. It is done through a grid system. There are 2 grid systems - fixed and fluid. Fixed is based on pixels, and fluid is based on percentages. The standard width of your page is 940px but you can use a variable-width grid as well.


    The grid system uses 12 columns. They can be wrapped into rows. The sum of column numbers must be equal to 12 for fluid layout. Like column 1 and column 11. Or 3 column 4s, or 12 column 1s etc.

    Also you can offset columns to leave some empty space equal to the width of any of the 12 columns.


    So all of that sounds like making a table only instead of actual values you use numbers 1 through 12 and can merge columns. Wrong. You use divs and assign them classes. Here's basically how you do it.

    At first you make a 'container' div.

    <body>
    <div class="container">
    ...
    </div>
    </body>

    For fluid grid set class="container-fluid"

    <div class="row">
    <div class="span4">...</div>
    <div class="span8">...</div>
    </div>
     
    For fluid layout use row-fluid instead.
     
    .span1 is the smallest column and .span12 is the widest. The code above will look like a 2 column layout with first column being narrow and second being wide.
     
    The way offsetting works is through adding an .offset class where N varies 1 through 11.
     

    <div class="row-fluid">
    <div class="span2 offset2">...</div>
    <div class="span8">...</div>
    </div>

     
    This will offset the first column by the width of span2 to the right. Notice that the sum of span numbers and offset numbers must equal 12. It's important for the fluid layout as it is based on %s.

    You can also nest rows inside rows. Still simple code.


    <div class="row">
    <div class="span12">
    Level 1 column

    <div class="row">
    <div class="span4">
    Level 2
    </div>
    <div class="span8">
    Level 2
    </div>
    </div>

    </div>
    </div>

    Now that almost looks like the layout of this blog.

    Bottom line is you don't have to worry about sizes, margins, paddings, etc and your code will look very clean and short.

    If you're a fan of drawing a basic look of your page in Photoshop or Illustrator you can do it quite loosely now and just use the graphics rather than slicing everything up and calculating margins and offsets. I think of it as building blocks - build the skeleton of your website, loosely add artwork and text and convert it to html. This way instead of showing a picture to your client you can just show the page right away which to most clients will look like you did a lot more work. And you can show it on your phone, too, making the client even happier.

    And as you can see all you have to keep in mind is the Bootstrap classes for divs - container, row, spanN, offset. Quite intuitive and easy to remember.