theKindOfMe

March 17, 2011

Facebook Connect, Cookies, Nginx and 400 Bad Request Errors

Filed under: Uncategorized — Tags: , — yasi8h @ 10:15 am

One of my colleagues were having a problem with getting Facebook connect to work in one of his rails apps. The strange thing was that it worked fine on his local. But when he uploaded the app to staging (which was a standard nginx/passenger/mysql/ubuntu stack), he would get a weird 400 Bad Request error after authentication and redirection from Facebook.

After googling around for a while it turned out that nginx has a limit on the request header size.

“maximum number and size of buffers for large headers to read from client request.” – from nginx documentation (http://wiki.nginx.org/NginxHttpCoreModule#large_client_header_buffers).

Increasing this solved the problem.

The current setting is at large_client_header_buffers 4 8k and it seems to work fine so far.

Advertisements

March 7, 2011

Basic Ubuntu 10.04 Server Setup Guide

Filed under: Uncategorized — Tags: , — yasi8h @ 2:56 am

There are some basic steps i do when setting up a fresh server (ahh sounds so good! :D). Going to list them out so i can follow them and have no problems forgetting anything in the future.

  • Add a user : adduser foobar
    • answer all the question asked
  • Add your public key to the authorized_keys so you can ssh in without password authentication (with public key authentication).
    • login as the new user
    • mkdir .ssh
    • nano .ssh/authorized_keys
    • put your public key in and save the file (ctrl + o, ctrl + x)
  • Add a entry for the new server in your .ssh/config for easy access to it from your local
    • nano .ssh/config
    • add a entry like this (please ignore the bullet points)
      • Host whatever_fancy_name #you will use this on your local ie: ssh whatever_fancy_name
      • User=foobar #user name on the server
      • Hostname=93.52.23.23 #your server ip
    • save the file (ctrl + o, ctrl + x)
  • Setup sudo without been asked for the password for the new user
    • visudo
    • add this line to the bottom: foobar ALL=(ALL) NOPASSWD:ALL #foobar is the username, while nopassword tells sudo not to ask the user for his password when using sudo
  • Disable remote root logins for sshd
    • sudo nano /etc/ssh/sshd_config
    • find the line ‘PermitRootLogin yes’ and replace it with ‘PermitRootLogin no’
    • save the file (ctrl + o, ctrl + x)
    • restart sshd
      • sudo /etc/init.d/ssh restart
  • Some default packages you might want to setup
    • htop (sudo aptitude install htop)

Done!

November 19, 2010

Ubuntu 10.04, Nginx with Upload and Upload Progress Modules, RVM, Postgresql

Filed under: Uncategorized — Tags: , , — yasi8h @ 2:02 am

Had to setup a staging server recently. Thought of putting down the steps i followed in to a article. This thing is getting fun.

General Stuff

We need these libraries in order to compile the following stuff

sudo apt-get install build-essential libssl-dev libpcre3-dev git-core

These are some nice to have tools, install only if you use them.

sudo aptitude install htop

You might also want to run update-db so that locate would work.

sudo update-db

Nginx from Source

We are going to get nginx 0.7.65 with upload and upload progress modules and compile them from source. Please note that additional command line options passed in to some commands bellow via two ‘-‘ character might get jumbled up by blog/editor. So if you get any unusual errors while running the following commands check whether you are typing in the correct chars (if you do a copy paste you might be trying to execute some html chars that make no sense for the command you are running).

wget http://nginx.org/download/nginx-0.7.65.tar.gz
tar xzf nginx-0.7.65.tar.gz

wget https://github.com/masterzen/nginx-upload-progress-module/tarball/v0.8.2 –no-check-certificate
tar zxf masterzen-nginx-upload-progress-module-v0.8.2-0-g8b55a34.tar.gz

wget http://www.grid.net.ru/nginx/download/nginx_upload_module-2.2.0.tar.gz
tar zxf nginx_upload_module-2.2.0.tar.gz

cd nginx-0.7.65
./configure –add-module=../masterzen-nginx-upload-progress-module-8b55a34/ –add-module=../nginx_upload_module-2.2.0/
make
sudo make install

Ruby 1.8.7 with RVM

bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )
nano ~/.bashrc
source ~/.rvm/scripts/rvm
rvm install 1.8.7
rvm use 1.8.7 –default

Rails 2.3.5

We want to install an older version of rails so

gem install rails -v 2.3.5

Postgresql 8.4

sudo apt-get install postgresql-8.4
sudo nano /etc/postgresql/8.4/main/pg_hba.conf

Towards the end of the file look for a line like

local all postgres ident

and replace it with this line

local all all trust

The above line would allow full access to the db from the localhost WITHOUT any PASSWORD. So yeah be sure you know what you are doing. You could replace trust keyword with the md5 to enable password authentication.

sudo /etc/init.d/postgresql restart

Postgresql installation have already added a user called postgres. And this user can can connect to the db and have admin rights. So connect as postgres and add a user account and create a db. Be sure to give all the needed privileges to the user account you are creating. So that it can create new dbs…etc.

createuser builder -U postgres
createdb builder_development -U builder

Ruby Gems needed for postgresql – ruby integration

sudo apt-get install postgresql-server-dev-8.4
gem install pg

Thats it for me. Hope this helps.

October 24, 2010

Rails 3 on Ubuntu 10.10 with RVM, Passenger and Nginx

Filed under: Uncategorized — Tags: , , — yasi8h @ 1:09 am

This covers setting up a Ubuntu 10.10 box to run rails 3 on production. Please notice it only focus on installing and setting up things mentioned in the title. However there are other things that you should configure and setup when deploying a application to production (like ntpd for example).

Installing RVM

We will need git before we can get started.

sudo apt-get install git

Install rvm according to the official guide.

bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )

add

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"  # This loads RVM into a shell session.

to your .bashrc.

Once you edit your bashrc file execute the following to load rvm without logging out and back in

source ~/.rvm/scripts/rvm

Just to be safe check wether rvm is a function, which is what it should be.

type rvm | head -n1

Install ruby 1.9.2

See what you get out of rvm notes. you will need to install some stuff before you can compile ruby.

aptitude install build-essential bison openssl libreadline5 libreadline5-dev curl git-core zlib1g zlib1g-dev libssl-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libmysqlclient-dev

The above packages covers some common stuff. It should be enough to get you started. However depending on what gems you want to install you might need to install additional dependencies.

rvm install 1.9.2

Set 1.9.2 as the default

rvm use 1.9.2 --default

Passenger

Install passenger as instructed in rvm documentation http://rvm.beginrescueend.com/integration/passenger/

rvm 1.9.2 --passenger
rvm 1.9.2
gem install passenger
rvmsudo passenger-install-nginx-module

Let passenger downland and install nginx for you.

Modify /opt/nginx/conf/nginx.conf (thats the default location).

‘For Nginx users, replace the passenger_ruby line with:’

passenger_ruby /home/wayne/.rvm/bin/passenger_ruby;

Add a block like this to host your RoR site

server {
      listen 80; #the server will be running on this port
      server_name www.yourhost.com;
      root /home/deployer/your_rails_project/public;   # <--- be sure to point to 'public'!
      passenger_enabled on;
   }

Nginx init script

From: http://github.com/jnstq/rails-nginx-passenger-ubuntu

cd
git clone git://github.com/jnstq/rails-nginx-passenger-ubuntu.git
sudo mv rails-nginx-passenger-ubuntu/nginx/nginx /etc/init.d/nginx
sudo chown root:root /etc/init.d/nginx

More information on http://wiki.nginx.org/Nginx-init-ubuntu

MySQL

sudo apt-get install mysql-client mysql-server

Get the source for your rails app. unzip it in your home folder (or where ever you want to. But be sure to edit the nginx config as appropriate).

cd to-your-rails-app-folder
bundle install
rake db:setup RAILS_ENV=production

sudo /etc/init.d/nginx restart

Thats it!

October 22, 2010

Getting Started with EC2

Filed under: Uncategorized — Tags: , , — yasi8h @ 10:06 am

Amazon EC2 allows you to create and manage server instances in the cloud with ease. They are scalable and easy to setup. There are many AMIs (Amazon machine image (AMI)) that you can use to get started. AMIs are basically server images that contain a whole OS installation and more. For example some AMI’s may have a web server with php setup. You can think of it as a virtual host image. This makes things much easier in the long run. You can use one of many AMIs out there to get started with your new server, rather than having to start from scratch. You can also build your own AMIs.

Other than AMIs you have AKIs and ARIs. AKI stands for amazon kernel image and ARI stands for amazon ramdisk image. You can lunch an AMI with a AKI of your choice. Obviously these should match and you should be sure that they work together.

Interfacing with AWS

There are several ways you can interface and communicate with AWS. When it comes to EC2 for example you could use the AWS Management console, the command line tools or the API. If you are a human you would prefer using the management console which is a web interface or the command line tools.

AWS Management console is a web application and its pretty easy on newbies. Where as command line tools have a ton of commands that you take you sometime to memorize (if you can memorize them at all). However thanks to grate documentation from Amazon it shouldn’t be hard to find help with any interface that you choose to use.

Setting up the Command Line Tools

You will need to download and setup the command line tools on your machine. Command line tools are written in java so you will need java to make use of them. You will also have to setup some environment variables. After setting up the command line tools you will have to download your ec2 private key and the certificate and put them some where safe. You will also need to setup some environment variables to point to these.

For complete up to date instructions on how to do this on your OS please refer to http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/SettingUp_CommandLine.html

After setting everything up my environmental variables were set like the following:

export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home

export EC2_HOME=~/.ec2
export PATH=$PATH:$EC2_HOME/bin

export EC2_PRIVATE_KEY=~/.ec2/pk-LJLKJLDKFSD42DFS3DSFSDFDSFSD.pem
export EC2_CERT=~/.ec2/cert-JHJDSFJHFSDJKFHEUFHSJDFJ3DF3DFS98DF.pem

Setting up a SSH Key Pair

You will need to setup a ssh key pair so that you use it to login to server instances you lunch. You can create the key pair your self or let amazon do it for you. Refer the the guide for step by step instructions on how to do this.

Launching a Instance

Doing this with the AWS Management console is pretty straight forward. So i will focus on how to do it with the command line tools. Keep in mind that you get billed for the time that you are running your instances. So if you are only playing around EC2, be sure to terminate any instances you lunch after you are done.

Finding a suitable AMI

You can use the ec2-describe-images command to find a image that suites you. However just executing this command with no options will give you nothing. ec2-describe-images -a will give you all the available images. But be warned that its a lot of images, so it will take some time.

ec2-describe-images -o amazon –filter image-type=machine

would give you a list of images of machine type owned by amazon. For a full reference of all the available options for ec2-describe-images refer http://docs.amazonwebservices.com/AWSEC2/latest/CommandLineReference/ApiReference-cmd-DescribeImages.html

You can use grep to filter out the results and find interesting images.

ec2-describe-images -a –filter image-type=machine | grep rails | more

However i find it easier to use to AWS management console (AWSMC from here onwards) much easier for this task.

Whatever image you choose to lunch remember its id. As you need that to lunch the image. I am going to go with

ami-6b26ca02 bitnami-cloud/rubystack/bitnami-rubystack-2.0-3-rails3-linux.manifest.xml

Root Devices

When you are choosing an AMI you would notice that some of them has their root device as instance store while some of them has it as EBS (elastic block storage). The basic difference between these instances are that if one uses the instance store, it will basically loose all its data when you terminate it. However a image that uses EBS will remember its state. Note that whats in the ram will be destroyed in both cases.

Security Groups

One thing that confused me the most when i started working on a server that was hosted on ec2 was the existence of security groups. You can think of them as firewall policies, sets of rules on what ports are to be allowed and not on a given group. By default every port is blocked.

Its a good idea to add a security group before lunching any instances as you will have to specify a security group for the instance that you are lunching. And without specifying one you won’t be able to access the instance through ssh.

You can use ec2-describe-group to find out what groups you already have, and what the configurations are on those. In my case i was using my companies AWS account and there were some existing groups. The output looked something like the following.

yazs-MacBook-Pro:~ yasi8h$ ec2-describe-group
GROUP 139637636613 default default group
PERMISSION 139637636613 default ALLOWS all FROM USER 139637636613 GRPNAME default
PERMISSION 139637636613 default ALLOWS tcp 22 22 FROM CIDR 0.0.0.0/0
PERMISSION 139637636613 default ALLOWS tcp 80 80 FROM CIDR 0.0.0.0/0
GROUP 139637636613 Web Server Incoming HTTP
PERMISSION 139637636613 Web Server ALLOWS tcp 22 22 FROM CIDR 0.0.0.0/0
PERMISSION 139637636613 Web Server ALLOWS tcp 80 80 FROM CIDR 0.0.0.0/0
PERMISSION 139637636613 Web Server ALLOWS tcp 443 443 FROM CIDR 0.0.0.0/0
GROUP 139637636613 SSH Only Only allow incoming SSH
PERMISSION 139637636613 SSH Only ALLOWS tcp 22 22 FROM CIDR 0.0.0.0/0

There are three groups here and they all allow ssh from the whole of internet. If you want to create a security group you will need to use ec2-add-group.

ec2-add-group ladygaga -d “strictly for gaga fans only”

the above command will create a group called ladygaga with a description. Note that you can always use the default group rather than creating new ones.

ec2-authorize ladygaga -p 22 would open up port 22 (used for ssh).

Running an Instance

ec2-run-instances ami-6b26ca02 -k yf-keypair

this would run a instance with the specified AMI. The k option here specifies the ssh key pair we want to use to authenticate our self’s when logging in to the instance. When you execute this command you should see some output like the following.

yazs-MacBook-Pro:~ yasi8h$ ec2-run-instances ami-6b26ca02 -k yf-keypair
RESERVATION r-e3915f89 139637636613 default
INSTANCE i-8833e3e5 ami-6b26ca02 pending yf-keypair 0 m1.small 2010-10-22T07:53:33+0000 us-east-1c monitoring-disabled instance-store

The second field have the id for the instance we just lunched. We can use this to get the status of our instance.

ec2-describe-instances i-8833e3e5

the output would be something like

yazs-MacBook-Pro:~ yasi8h$ ec2-describe-instances i-8833e3e5
RESERVATION r-e3915f89 139637636613 default
INSTANCE i-8833e3e5 ami-6b26ca02 ec2-184-73-56-151.compute-1.amazonaws.com domU-12-31-39-09-25-31.compute-1.internal running yf-keypair 0 m1.small 2010-10-22T07:53:33+0000 us-east-1c monitoring-disabled 184.73.56.151 10.210.42.191 instance-store paravirtual

We can see that my instance is running now!. It might take a minute or two for your instance to be up and running. So give it sometime.

Wait, i think i forgot to tell AWS to assign this instance to the ladygaga security group. So lets terminate it and re launch it with the correct group assigned.

ec2-terminate-instances i-8833e3e5

Output

INSTANCE i-8833e3e5 running shutting-down

Note that terminating instances who’s root device is a instance node will make it loose all data. If you just need to restart your instance use

ec2-reboot-instances i-8833e3e5

Lets verify that its terminated

ec2-describe-instances i-8833e3e5

Output

yazs-MacBook-Pro:~ yasi8h$ ec2-describe-instances i-8833e3e5
RESERVATION r-e3915f89 139637636613 default
INSTANCE i-8833e3e5 ami-6b26ca02 terminated yf-keypair 0 m1.small 2010-10-22T07:53:33+0000 us-east-1c monitoring-disabled instance-store paravirtual

We can see that the instance is been terminated. Let’s lunch another and assigning it a security group.

ec2-run-instances ami-6b26ca02 -k yf-keypair -g ladygaga

After you have verified that it has started correctly. We can log in using SSH. To access it using SSH we need to know it’s public DNS name or the public ip. We can get this information by running

ec2-describe-instances i-f03eee9d

Output

yazs-MacBook-Pro:~ yasi8h$ ec2-describe-instances i-f03eee9d
RESERVATION r-95aa64ff 139637636613 ladygaga
INSTANCE i-f03eee9d ami-6b26ca02 ec2-184-72-142-168.compute-1.amazonaws.com ip-10-122-53-159.ec2.internal running yf-keypair 0 m1.small 2010-10-22T08:08:05+0000 us-east-1a monitoring-disabled 184.72.142.168 10.122.53.159 instance-store paravirtual

We can see that the public DNS name for this instance is ec2-184-72-142-168.compute-1.amazonaws.com. We can connect to it through ssh. But we will have to use the key pair we used when we initially created the instance, to authenticate our self’s.

yazs-MacBook-Pro:~ yasi8h$ ssh -i .ec2/yf-keypair.pem root@ec2-184-72-142-168.compute-1.amazonaws.com

for most systems you can login as root. But for some systems (some ubuntu AMIs require you to login as ubuntu) this can be different.

Now that you are logged in you can configure the system and have a lot of fun!

Availability Zones and Regions

If AWS EC2 is the cloud it consists of regions. These regions are located in different parts of the world. And within the regions you have multiple availability zones. If your server carters mainly for visitors from a specific region you could run your instance in that region. And to improve the availability of your application you could have instances of your application running in multiple availability zones. So in case one availability zone goes down, your application can still survive if its hosted on other availability zones.

You can view the regions that are available to your account by executing

yazs-MacBook-Pro:~ yasi8h$ ec2-describe-regions

Output

REGION eu-west-1 ec2.eu-west-1.amazonaws.com
REGION us-east-1 ec2.us-east-1.amazonaws.com
REGION us-west-1 ec2.us-west-1.amazonaws.com
REGION ap-southeast-1 ec2.ap-southeast-1.amazonaws.com

For a list of availability zones for a region

ec2-describe-availability-zones –region=eu-west-1

Output

AVAILABILITYZONE eu-west-1a available eu-west-1
AVAILABILITYZONE eu-west-1b available eu-west-1

You can specify which availability zone your instance should be in, when you are launching it.

ec2-run-instances ami-6b26ca02 -k yf-keypair -g ladygaga –availability-zone us-east-1c

Thats it. I learned a lot by writing this. Note that my main source of information for this blog post was the AWS official documentation. The official documentation seems to be very good. So if you ever need to know something google it up. If you need to get more information on the command line tools and the different arguments that they accept refer the command line reference here (http://docs.amazonwebservices.com/AWSEC2/latest/CommandLineReference/index.html).

And IMHO if you are new to AWS, its best to try things out using the AWSMC first before digging in to the command line. But once you get comfortable with using it. You could just use a combination of guessing, command line reference mentioned above and refer the in built help (ec2-command –help) to find your way through the command line tools.

October 16, 2010

Task Scheduling with Cron, RVM and Rails

Filed under: Uncategorized — Tags: , , , — yasi8h @ 4:00 am

I wanted to do something every hour in my rails app. Basically a scheduled task. So i looked around and there were some plugins. But i choose to go with plain old cron. This should be a very straight forward task. However there are some pitfalls to be aware of. Specially if you are using RVM which depends on some environmental variables that are set on the shell. I created a bash script that is called from corn as scheduled. If you do the same be sure to make the script executable. chmod +x your_script.sh

my crontab -e looks like this

# m h dom mon dow command
#task1
0,30 05-07 * * * /home/foobar/script task1
0,10,20,30,40,50 08-18 * * * /home/foobar/script task1
0,30 19-21 * * * /home/foobar/script task1
#task2
0,30 19-21 * * * /home/foobar/script task2
#clean up the logs # once a week every saturday, at 00:00 (midnight)
0 0 * * 6 /home/foobar/script task3

for clean code get the gist

I have scheduled three tasks here. I am calling the same script with different arguments.

The script.

Note the source statement in the beginning. This loads RVM. And i am using the rails runner to call the methods i want to. These are located in some model classes within my rails app. Using the runner is just one option, but there are many you can use. Take look at here for more information on this topic.
If you are interested in using a gem to do the scheduling for you. Take a look at this.
After writing this i found some more post on the net that shows some what more elegant and better ways of doing the same thing. I think you should definitely give them a read.

September 29, 2010

fixing mod_passenger.so: cannot open shared object file: Permission denied

Filed under: Uncategorized — Tags: , — yasi8h @ 1:22 am

Got this error when trying to start up apache. My config was as follows.

ruby 1.9
rvm
apache
centos 5.3
rails 3

How i got around this is by switching off selinux on the system! Not ideal but it works.

look at http://www.electrictoolbox.com/switch-off-selinux-centos-5/ on how to disable selinux on your system.

September 28, 2010

Installing rvm/ruby 1.9/mysql2/passenger on CentOS 5.3

Filed under: Uncategorized — Tags: , — yasi8h @ 2:40 am

Things will get a lot easier if you add some custom repos to your installation like http://fedoraproject.org/wiki/EPEL/FAQ#howtouse.

* Install git (sudo yum install git)
* Install curl (sudo yum install curl)
* If you want to install ruby 1.9 through rvm (meaning if you want to compile it by source) you need to install a newer version of autoconf (something thats higher than 2.6 where as CentOS 5.3 comes with 2.59).

wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.63.tar.gz
tar xvzf autoconf-2.63.tar.gz
cd autoconf-2.63
./configure –prefix=/usr
make
sudo make install
cd ..

from: http://www.openflowswitch.org/wk/index.php/CentOS_Install

* Install rvm (follow their official instructions).
* Install 1.8.7 first. Then go on to installing 1.9 (or whatever you want to. But additional rubies might have additional dependencies like jruby -> java).

* Installing mysql (sudo yum install mysql-server mysql mysql-devel ruby-mysql)

* Install chkconfig (sudo yum install chkconfig)

* start msql on startup (sudo /sbin/chkconfig –levels 235 mysqld on from:http://www.howtoforge.com/installing-apache2-with-php5-and-mysql-support-on-centos-5.3-lamp)

* Install the mysql2 gem (gem install mysql2)

* Install apache2 (sudo yum install httpd)

* Start apache on start up (sudo /sbin/chkconfig –levels 235 httpd on)

* Start apache and mysql (sudo /etc/init.d/mysql start, sudo /etc/init.d/httpd start)

* Install the needed deps for passenger (sudo yum install httpd-devel apr-devel )

* Note that you don’t actually need to install Apache Portable Runtime (APR) development headers its already there.

* Install passenger (follow the instructions on how to install passagner with rvm).

* I got a error while running apache with passenger. So to make it work i turned off selinux (look at this link on how to do that). Not ideal but it works :P.

* Done!

September 6, 2010

About OS X and MacBookPro…

Filed under: Uncategorized — Tags: , — yasi8h @ 6:16 am

I was asked to read up on Mac OS X by my new employer as i am going to be using it for the first time, starting next week. I’ve always wanted to get a Mac for its polished design rich UX, but felt its way overpriced.

The following is a summery of what i learned from my reading, about OS X and macs in general. I haven’t really used one yet so there will be a lot more things that i have to learn. And some of my opinions and attitudes might change after I actually use a mac for sometime.

Linux and OS X

I am familiar with Linux, Ubuntu to be more specific. I love this Debain based distro. It seems that OS X is basically Drawin with some frameworks and layers of code (a windowing system like X, and a file manager, set of APIs…etc) on top of it. Drawin is a open source (have some proprietary drivers in the Apple’s distribution) *nix OS that is developed and maintained by apple. Its based on the hybrid (monolithic + micro) XNU (X is Not Unix, sounds a bit familiar ugh? ;)) kernel. Darwin is POSIX compliant hence  it should be easy for me to get used to it since i am coming from a Linux background. Almost all the command line tools that you expect from a standard Unix system should be there. But what worries me the most is the lack of something like APT in Darwin. There seems to be several other package management systems for Darwin such as MacPorts, Fink…etc. But from what i read i don’t think they can match APT. After all APT have super cow powers ;). But the fact that i should be able to compile most open source apps that runs on Linux (or POSIX compliant Unix systems to be specific) on Darwin makes me feels good.  But then again, OS X shouldn’t be Linux, its a different OS with different pros and cons. I shouldn’t try to make it something that it is not.

Architecture

An overview of the OS X architecture (from Wikipedia).

I think the Classic API (the one which was used in older versions of Mac OS) is not supported any more in the latest versions of Mac OS X. A more up to date diagram can be found here on Apple’s developer portal.

I wrote this part after actually receiving a MacBook Pro

Package Management Systems

I don’t think os x have anything as good as apt-get :). But there are some package management systems like MacPorts and fink. I installed MacPorts and used it to get some utilities installed. It was a bit slow, after all it have to downloaded the sources and COMPILE them. But it managed to install the utilities without me having to interfere in any manner.

You can install software for Mac by downloading and running a “dmg” file. When you open a dmg file it gets ‘mounted’, and the OS asks you whether you want to run the software or install it. If you want to install it you need to drag the software icon to the application folder icon, on screen. Which is a bit confusing for me. I mean why not just give two buttons saying run and install?

GUI

Coming from gnome/windows background i find the OS X GUI a bit different. There are some fundamental differences in the GUI. But i think i am getting used to it pretty fast. As long as you have google there should be no reason for worry. I miss the maximise button that you have in windows/gnome…etc. Here you get the ‘+’ button but it doesn’t always maximise the window.

I find the dock annoying at times because it takes a lot of screen real estate. Hence i hide it and made its size smaller. I think i will feel comfortable with my new Mac with time. I need to use it, and tune it to my own needs. Just like any good system.

Keyboard and Mouse

The keyboard is a bit different from the PC keyboard. There is a additional command button. There is no more ctl + C and ctl + V but there is command + C and command + V :). I am using a MacBook Pro and the touch pad here took me a few minutes get used to. You can use some multi touch hand gestures to do things like scrolling, rotating, zooming…etc. It actually took me a while to find out (from a coworker) that you can do a click with two fingers to get the same effect of a control click. I like these features.

Availability of Software

Unlike for Linux you get most of the popular software for OS X. Its the second platform most software products choose to support. Which is sad (as a Linux user). I got all my favorite browsers, IDEs, VCSs …etc and IM clients installed on the Mac today and it was more or less pain less.

Getting ruby on rails up and running was a bit of a problem though. Ruby comes installed in OS X. But its a older version (1.8.7). I wanted to get the latest working with RVM. Which i did without much problems (to install RVM: bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head)). There were some problems when trying to install rails, sadly. I am still trying to figure out how to get it to work.

The Apple Factor

Everything about the MacBookPro is ‘cool’ :). Apple have thought a lot of design and UX. When designing their hardware and their software. Sometimes i find the UX has to much eye candy (for a example the dock). But all together they have done a fair job.

All in all i find it to be a please experience. Its not that hard for someone who was in Ubuntu/Windows to switch to Mac. Specially if you are coming from a *nix background you have all your unix tools (or at least most of them) available to you. Most of the free software out there that runs on Linux can be run on OS X.

I am thinking of getting some more software installed (like Textmate, RubyMine). I will be blogging about my experiences with time. So far it have been fun!

January 22, 2010

Thoughts about HP 2133 Mini-Note

Filed under: Uncategorized — Tags: , , — yasi8h @ 4:24 pm

On My Bed, Looking Smart 🙂

Slim and Looking Good

More Pictures on flickr

My dad got a HP 2133 Mini-Note as a gift (!!!, seriously, its me who should have got a gift like this 😛 ). He don’t really use it and i am the only one to spend some time with it. This is the first ever net book that i got my hands on. I expected a lot more from a netbook than what i got from 2133. I think this is due to the fact that the model i got was some  what a economic edition, it had Linux and thats good. But i think HP made my model as a low end one so needless to say it degraded the net book’s performance. Why do everybody have to us Linux users less RAM anyways?!#!!. It didn’t have a SSD, the cpu is a via and its not as powerful (i don’t want it to be as fast as my desktop cpu or even come close to it. but its still too slow for doing some web browsing and playing some music. it lags at times…etc) as i want it to be. And the battery don’t last that long. Plus it gets really hot!.

Any how now this model is suspended and is replaced by the newer 2140.

Following specs were obtained from the HP’s web site (http://h40059.www4.hp.com/hp2133/).

Specifications
Model number KX872AA (This is what i got) FF009AA
Operating system installed SUSE Linux Enterprise Desktop Genuine Windows Vista® Business
Processor Via C7-M (1.2G) Via C7-M (1.2G)
Memory 1024MB DDR RAM 2048MB DDR RAM
Network Support 56K Modem, 802.11b/g,Bluetooth 56K Modem, 802.11a/b/g,Bluetooth
Disk 120GB HDD 120GB HDD
Battery 3-Cell LiIon Battery 6-Cell LiIon Battery
Warranty 1 year 1 year
OS Linux VB OFC07 Ready

Simple breakdown of pros and cons as i see it.

Pros

  • Looks nice
  • Solid build
  • OK Keyboard
  • Small size
  • Came with Suse Linux pre installed! (i uninstalled it and installed Ubuntu straight away ;))
  • No Drivers-Missing problems with Linux. Almost (dynamic CPU frequency setting was not working on stock Ubuntu. I am sure this contributed to the cons about low battery life and too much heat) everything works with a default Ubuntu installation.

Cons

  • Processor is too slow
  • Didn’t come with a SSD
  • Gets really hot
  • Battery life is too short for a netbook
  • Heavier than it looks 🙂

I am sure i can make this useful in many ways, but its not the ideal net book i had in mind.

Older Posts »

Blog at WordPress.com.