A Day at Bititude

I’ve joined Bititude recently, and over the past few days, and in that time, I’ve really come to appreciate the company workflow.

So, I thought I’d write a blog post about our process, the tools we use, the way we code, deploy and work together.

We have a Symbolic 9 to 6 Work setup that is rarely enforced, but generally accepted. Work Time is flexible, though we stick to a pattern, out of familiarity. Most of us Leave late, at around 7PM.

Almost Every Morning, at around 10AM, we have a standup session (which is actually done sitting down). There, we describe the previous day, pending work, etc.

We track the Latest Projects on Github, the Latest Stories on Hacker News and we also use Twitter religiously.

We also browse ProductHunt, as well as the rest, for stuff that could be useful later. We bring up new ideas during the Standup Sessions and throw out more than a few suggestions..

Then, we work on random stuff like the Company Blog, Twitter and other Miscellaneous Evil Marketing Activities in the next hour, from about 10:30AM to 11:00 or 11:15.

Remember, I’m talking about what I do.

Everyone has their own quirks and preferences, and we understand, accept and encourage everyone to work in a way, and time of their choosing.

For me, personally, the first hour of work is limbo. Its like I need to learn about computers all over again,  so I setup my Monitors, Twitter, Skype( More on that later ), look up Github and see a few cool projects, etc and then only do I start to code. This may vary.

We understand, accept and encourage everyone to work in a way, and time of their choosing.

At around 11:00, we start coding. We like to use a mixture of Editors and IDE’s.

Most of us use Sublime Text 3 with a smattering of Github’s Atom thrown in there once in a while. For Java ( I know what you’re thinking, but yes, we adjust to anything… ) we use Eclipse and the Excellent Intellij Idea by Jetbrains. For PHP, Ruby, Python, Scala, etc. We use IDE’s like PHPStorm, Rubymine when necessary but most of the work is done in Sublime Text.

We don’t talk much, except during the time when have informal standups, or during code review. Since we have a small workforce, we don’t do pull request based Code Review except when we’re introducing a new developer, as they did with me.

Instead of making each other pull off their headphones and pull out of the Zone™, we use Skype, for IM. We use Teamwork for assigning tasks and organization and Google Apps for Calendar,  File Sharing, etc which lets us basically just ping each other when we’re working, without interrupting the coding process.

Now, about the gear we use, We choose our own tools, that is, Mostly Macs and the occasional Linux, and and for accessories, it goes like this.
* Multiple External LED Monitors
* Favourite Keyboard and Mouse/Trackpad
* Headphones – (I recommend the Sony ZR450 but we also use stuff from SolRepublic, Sennheiser, etc)
* Ergonomic Chairs
* High Speed WiFi 6+ Mbps (Which is more than enough for the occasional Github Download, or System Update)

Just In case someone’s laptop is underpowered(Which never happens), we keep a high-end Desktop running Ubuntu in case a new developer needs to be productive right away, or for when we need to test something.

We keep another High End System running Ubuntu Server as a staging server. We use dploy.io and other services and just do a <code>git push</code> to deploy.

We use Amazon AWS and DigitalOcean as our hosts. We use Amazon’s S3 as well. We use AWS for most of the stuff while DigitalOcean hosts our Company website and this blog, mainly for ease of use.

At around 2PM, we have lunch, and chat for sometime. Maybe walk out for a jog, or a quick trip to a café for a quick bite in the Evening.

Then its just code, and more code. We constantly try to improve our workflow, and stay ahead of the curve. We adapt to projects and respond to new ideas.

I don’t think about the past, darling. It distracts from the now

– Edna Mode

I’ve just been here for a day, but I think it’ll be a great journey forward.

We tweet about our workflow and other cool stuff at twitter.com/bititudeTech . You should follow us.
No, you really should follow us.

Contact us at hello@bititude.com .

We’d be happy to answer any queries you have.

Read More

How to host multiple web sites in your VPS

Recently I have received a call from my friend regarding the Virtual Hosts setup. Down below, I scribbled his question for you to read. In summary, all he need is to set up a virtual host on his VPS, so that he can host just one more blog without spending any more on hosting.

Question: I have purchased a Virtual Private Server(VPS) to host my private web site.  I then mapped my domain to the VPS hosting space by making changes in the DNS settings of the domain. I created a new A record with IP addresss provided by the VPS service provider. In the server, I have deployed all the web pages in the root folder of apache (var/www/html) and everything seems working fine. I can reach my site without any problems. However, I also want to set up another blog for my wife but don’t want to spend on hosting. What I decided is to share the VPS. Please show me the steps to set up multiple web sites on a VPS. 

We can host multiple sites on a VPS using apache virtual hosts. In this post I’m gonna show you how exactly I had set up hosting for our two domains in our VPS server.

To follow along this tutorial, I assume you’ve successfully installed apache web server on your server machine. In my box, apache is running its default settings and I deployed the some web pages at the root document folder (/var/www/html). I also made changes in the DNS settings of our domain to point it to the vps hosting.

So, at this point, If I type beta.yourdomain.com, then apache will successfully render all pages to my browser.

Make changes in DNS settings.

As a first step, you need to create a new A record in the Domain’s DNS that points to your VPS server. So if you have two domains, let say beta.yourdomain.com and blog.yourdomain.com, then create two A records

create A record DNS
creating an A record in godaddy DNS

Create Virtual Hosts in VPS

Before we jump into any configuration, we need to create a new directory to keep the new website’s pages. Later on, this new directory will become the Document Root for the new site in the configuration file.

sudo mkdir /var/www/html/blog

After creating the directory, make sure to give the require permission upon it.

sudo chown -R $USER:$USER /var/www/html/blog
sudo chmod -R 755 /var/www

Now create a site file in apache’s available sites configuration folder.  A site file is also called a virtual host configuration file.

sudo nano /ect/apache2/sistes-available/blog.conf

Write the following configuration and save it

<VirtualHost *:80>
   ServerName blog.yourdomain.com

   ServerAdmin webmaster@localhost
   DocumentRoot /var/www/html/blog

   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined

   <Directory /var/www/html/blog/>
       Options Indexes FollowSymLinks MultiViews
       AllowOverride All
       Order allow,deny
       allow from all

Now we have almost done with the settings. In order to see the changes we need to enable the newly added site.

sudo a2ensite blog.conf

After that, reload the apache web server.

sudo service apache2 reload

If you have followed without making any error, then you can reach your blog by typing blog.yourdomain.com

Read More

How to create an alias for SSH

I have found myself in typing out that long ssh command string every time when I need to connect our VPS server is not only boring but also time consuming. If you’re like me, you should also be tired of typing long ssh command strings in your day-to-day work. So, wouldn’t it be nice to have a shorter ssh string to save that extra key strokes?

Let us create an alias for the ssh command to make it shorter.

Fire up your terminal, then execute the following command to create an alias file in your home.

sudo nano ~/.bash_aliases

After creating the file, write our alias command for ssh into it. Make sure to choose an easy to remember name for the alias.

alias sshserver='ssh root@'

save and close the file

source ~/.bashrc

Now, instead of executing ssh root@ to make an SSH connection, you can use the alias command sshserver

Read More