Andreas – Joakal

January 13, 2012

Localhost Railsless Capistrano Tutorial, including recipe creation

Filed under: Web Development — Tags: , , , , — Andreas Markauskas @ 11:31 am

Unless you're deploying on rails, to a remote server and doing exactly what's assumed in Capistrano, the documentation is pretty unhelpful.

This tutorial will cover using Ubuntu, Git and going without Rails to deploy from another directory to another directory, all locally. You are not required to have ruby knowledge to understand this tutorial.

SSH and Git Install

If you have SSH client, server and Git, skip to Git Directory

sudo apt-get install openssh-client
sudo apt-get install openssh-server
sudo apt-get install git-core

Git Directory

Lets create a helloworld application

mkdir ~/helloworld
cd ~/helloworld

Create a brief text file for our repo to have.

echo "hello world" | sudo tee -a ~/helloworld/HelloWorld.txt
git init; git add .
git commit -a -m "This is our first commit"

Sweet, now lets quickly create our remoteworld directory. This will act as a remote server location.

cd ~
git clone ~/helloworld/.git ~/remoteworld/clone

You can view the clone example.

cd ~/remoteworld/clone

Capistrano Install

sudo apt-get install capistrano

Skip this command if you wish to use rails.

sudo gem install railsless-deploy --no-rdoc --no-ri

Capistrano Setup

Now set up a Capistrano directory, this will be in charge of deploying.

mkdir ~/capistrano
cd ~/capistrano
capify .

Create a recipes folder.

mkdir ~/capistrano/recipes

Skip this part if you wish to use rails.

rm -f Capfile
echo "require 'railsless-deploy'" | tee -a ~/capistrano/Capfile
echo "load 'config/deploy'" | tee -a ~/capistrano/Capfile

Now open the config/deploy.rb. I recommend making it look something like this.

# Ruby quote
## recipes ##
#require "recipes/nginx" # to only require a specific recipe
# grab all recipes in the folder
Dir[File.dirname(__FILE__) + '/../recipes/*.rb'].each {|file| require file }
## main config ##
set :application, "remoteworld"

## source control ##
set :repository, "~/helloworld/.git"
set :deploy_to, "~/remoteworld/"
set :scm, :git
# Or: 'accurev', 'bzr', 'cvs', 'darcs', 'git', 'mercurial', 'perforce', 'subversion' or 'none'

## misc ##
set :user, "andreas" # set this to whatever the remoteworld's user is
set :use_sudo, false # set use sudo to false for security reasons
default_run_options[:pty] = true # It solves 'pty ttl errors'. Not important.
set :deploy_via, :remote_cache # it compares deployed files with remote files to only implement changed files. Saves bandwidth.

## roles ##
#role :web, "your primary web-server here" #nginx, Apache, etc.
role :app, "localhost" # This may be the same as your web server.
#role :db, "your primary db-server here", :primary => true # This is where rails migrations will run
#role :db, "your slave db-server here"

Now run this command in the same directory of your Capfile. This prepares the location for future deployments (You'll see later).

cd ~/capistrano
cap deploy:setup

Now it's ready for deployment. Start deploying.

cap deploy

If you get a request for password, it's the same as the user you specified in deploy.rb above.

This is what the process looked like to me.

	* executing `deploy'
	  * executing `deploy:update'
	 ** transaction: start
	  * executing `deploy:update_code'
	    updating the cached checkout on all servers
	    executing locally: "git ls-remote ~/helloworld/.git HEAD"
	  * executing "if [ -d ~/remoteworld/shared/cached-copy ]; then cd ~/remoteworld/shared/cached-copy && git fetch -q origin && git reset -q --hard 927b37dca3cdecb7fc2f35b08fa2a071446c9a75 && git clean -q -d -x -f; else git clone -q ~/helloworld/.git ~/remoteworld/shared/cached-copy && cd ~/remoteworld/shared/cached-copy && git checkout -q -b deploy 927b37dca3cdecb7fc2f35b08fa2a071446c9a75; fi"
	    servers: ["localhost"]
	    [localhost] executing command
	    command finished
	    copying the cached version to ~/remoteworld/releases/20120112221620
	  * executing "cp -RPp ~/remoteworld/shared/cached-copy ~/remoteworld/releases/20120112221620 && (echo 927b37dca3cdecb7fc2f35b08fa2a071446c9a75 > ~/remoteworld/releases/20120112221620/REVISION)"
	    servers: ["localhost"]
	    [localhost] executing command
	    command finished
	  * executing `deploy:finalize_update'
	  * executing "chmod -R g+w ~/remoteworld/releases/20120112221620"
	    servers: ["localhost"]
	    [localhost] executing command
	    command finished
	  * executing `deploy:symlink'
	  * executing "rm -f ~/remoteworld/current && ln -s ~/remoteworld/releases/20120112221620 ~/remoteworld/current"
	    servers: ["localhost"]
	    [localhost] executing command
	    command finished
	 ** transaction: commit

Have a look at remoteworld.

cd ~/remoteworld

There's three folders; current and releases (and .git if showing hidden files). Open the current folder.

cd ~/remoteworld/current

Everything looks the same as helloworld? Yep. Now go to helloworld.

cd ~/helloworld

Lets create a new file called HelloWorld.txt in that directory. Add inside: hello crazy world.

echo "hello crazy world" | sudo tee -a ~/helloworld/HelloWorld.txt

Add new changes to the git repo

git add .
git commit -a -m "this is our second commit"

Now run this command in the same directory of your Capfile.

cd ~/capistrano
cap deploy

Lets look at remoteworld/current again.

cd ~/remoteworld/current

Now the file HelloWorld.txt says it's a crazy world!

Lets roll it back. Go back to the directory with the Capfile.

cd ~/capistrano
cap deploy:rollback

Now back to remoteworld/current.

cd ~/remoteworld/current

The HelloWorld.txt got reverted!

What happened was that deploy:rollback sent a quick command remotely to use the previous release (hence the release folder full of releases!)

You should have now successfully installed capistrano and understand the basics.


Deploy for first time

	** [localhost :: out] fatal: could not create work tree dir '/home/andreas/remoteworld/shared/cached-copy'.: Permission denied

Most likely Capistrano attempted to use sudo by default which created the directories under root, not your user. Thus, when your user attempted to create the directory, it got denied.

If Capi fails and wants sudo (notable to clean up), disable use of sudo for Capistrano.

set :use_sudo, false

no tty present and no askpass program specified

Not sure how to explain it but setting this in deploy works

default_run_options[:pty] = true

Reference: the { buckblogs :here }: Capistrano 2.1

Your own recipe

Open a new file ~/capistrano/recipes/nginx.rb

A simple task to restart nginx on command.

unless Capistrano::Configuration.respond_to?(:instance)
  abort "This extension requires Capistrano 2"
Capistrano::Configuration.instance.load do
  namespace :nginx
    desc <<-DESC
	A general description blurb can go here. \
	Sends a command to target server to restart nginx.
	task :restart, :roles => :web do
	  sudo "/etc/init.d/nginx restart"
  end # End namespace
end # End Capistrano instance

It will be included via deploy.rb or individually: require "recipes/nginx"

cd ~/capistrano
cap nginx:restart

More tasks (including Postgresql) at Doing Bad Things with Capistrano - Skills Matter [PDF]

My guidelines for automating repetitive commands

  • Document the process. Can it be automated?
  • Is a recipe already online? People usually share with Github too.
  • A recipe per program is usually sufficient.
  • For one command that does a lot of other commands, I usually put it in the custom recipe.


You don't need to install RubyGems or Capistrano on the remote server, as you'll usually be deploying from your local machine.

Available Tasks

Navigate to the directory where the config folder and Capfile is and run the following command to see a list of available tasks.

cap -T

There's much more here: Basic guide of deploy options


There should be created directories:

  • ~/remoteworld/releases
  • ~/remoteworld/current (A symlink, not quite a folder)

It's Capi's way of allowing rollback with using a symlink and releases. Capi simply links the /release with /current. Which means if something crapped, rollback to a different /release folder.


Local - Run this immediately

cap deploy:rollback

This is a very fast task which will simply make your current symlink point to the previous release.

To re-deploy again:

cap deploy

Cleanup manually

Capi will have the last 5 releases by default. Run to cleanup

cap deploy:cleanup


Tutorial: Deploying WordPress with Capistrano -

Capistrano Handbook to lower barrier of entry to understanding Capistrano. Not railsless.

September 27, 2011

The social network killer? Like email

Filed under: Idea — Tags: — Andreas Markauskas @ 6:04 am

The big social networks have a lot of momentum, but there's almost no barriers to entry that the whole proprietary perceptions of it is silly. It'll fade out to smaller, easier and many networks eventually. There'll be shifts in perceptions as people will no longer ask for their friend's Facebook (or MySpace), in fact, it'll be easier as there's a more solid address like Esocial or social address may take over to be social network neutral word.

How to implement it

Before we go into alternatives, we need to define the core parts of social networks. The list in order of popularity according to my assumptions and one source:

  1. Posts - Whenever a person makes a post, all the friends can read it. Also known as status updates.
  2. Like - Akin to supporting, tweet, share or upvote, to indicate affirmation of something to friends.
  3. Media - Pictures, videos. They are uploaded by the users.
  4. Instant Messaging - Greetings, exchange pleasantries.
  5. Events - Birthday party, meeting, etc.
  6. Apps - Games, quiz, etc.
  7. Contacts - Friends, relationships, buddies, etc. Doesn't happen often but important nonetheless.
  8. Private Messages - Like email. Won't be explaining this.


Social networks send an email to users of the message but they have to simply log in to reply.


  • Universal post - it's sent out to all contacts automatically, like email.
  • No log in - users who get the message aren't required to log in. In fact, they can respond back immediately.

In a way, when a user creates a status update on the website, the website automatically sends it out to all the relevant contacts.

For example: "All those social networks actually send emails to their users that they have a message waiting for them to read. Can't I just read it without the hassle of logging in?"


Lets say, I saw Sunshine Trailer. I share by clicking one of the many social icons (as many as 329!). It's simple to share. In fact, as recently, it was made seamless by 'frictionless sharing' where just seeing a website page is enough for the website master to access your profile, post content, etc.

Although a bit alarming to some people, I heard that users have to enable it first because the company respects the users enough and resorted to allowing the early technology crowd investigate and promote the feature. Pretty cool!


Similar to the mailto: feature; Once pressed, the browser notifies the social network that seamlessly creates a post to all the contacts, much like sharing it. This requires extending browsers or creating a plugin to support a list of contacts including the main account. This is pretty difficult change since it requires maintaining plugins on as many browsers possible.

It can be further extended to support frictionless sharing by automatically posting content of interest to friends.

Otherwise, it can be re-posted.

For example, I go watch the Sunshine Trailer by the time I finish, every single one of my contacts know about it while I watched it!


It's a pretty mixed bag actually. Although users upload pictures and videos of their own, even tag them, they usually post external links instead.


All such personal media is stored on the website the user is associated with. It's even possible to tag all the media. After the user uploads and is ready, the media links are sent out as posts to the contacts. In fact, any user can go to it.

For privacy, the user can mark such content as private, thus requiring users of other social networks to either input a password or for less hassle, get session verified (between social networks).

For example, " posted a video about a Korean horror movie. Click here and it'll take you to"

Instant Messaging

Typically inside the browser, it's basic and some users have problems. It's pretty early technology but improving.


There's already many Instant Messengers, in fact, instant messaging is older than social networks. But there's a difference, they are not website-based but application-based.

Although there's many rapidly emerging 'website IMs', I don't know of one that can integrate with the social network website via session authentication.

It would work like this: I ( sees an online list of contacts. I send a "Hi" to We begin chatting on our own social networks.

What happens behind is that Joakal logs on, the online IM status is sent to other social networks and re-sends it every so often unless Joakal logs out or JS is disabled. Joakal sees a list of online contacts because the other social networks were sending status updates already. So Joakal saying "Hi" to Sarah, actually sends it to the other website to which Sarah gets notified. Otherwise it disappears into IM history list.

It would be pretty neat if Jabber or some protocol can be extended to allow more cross-platform instant messaging.

For example: "All those unaware social users are trapped." "I know right, you can't even talk to your friends from other websites." ""Sorry, for privacy reasons, we can not reveal your friends contact addresses." On the side there's a way to invite friends by putting in your email address and password!" "Selfish company motives for user privacy."


There's almost no standard for events. For users not involved with the social network, they are still invited but can't respond at all which is pretty standard.


Comply with iCalendar format standard. Allowing it to be easily shared to other calendars.

Creating an event would be pretty similar notifying users, but also acts much like making a post. People can immediately respond RSVP, etc from their account.

For example:

When: 21th of December, 5 PM (1000+)

Where: Christmas Party @ Patrick's sea house

RSVP'd - creator


Declined on 16th Dec 2011, 12:40PM (1000+): Hey guys, don't bring any glass booze cuz they break. on 16th Dec 2011, 2:03PM (1000+): I'm there! on 17 Dec 2011, 10:29AM (1000+): Sorry guys, I'll be at nz. have a good one. xmass!


Unfortunately, I don't have any strong ideas for integration because many social networks are likely to have their own idea of what's accessible, different applications, etc.


A very important part of social networks. Some people have suffered under the friend spam. But otherwise, the process is pretty easy as some social networks have claimed to have Proprietary(tm) methods of suggesting friends.

However, almost all of them will not give you a list of contacts. Some tout privacy reasons and most don't think it requires a feature. Cynical commentators say it's an attempt to frustrate users leaving the social network website.


The alternatives would be similar to the current social networks pretty much except that social networks will have an unique shared ID between between each other. So by removing a friend, it can alert the other social network. For those concerned about offending the other person but want to hide all association between each other, contacts can be hidden instead.

Secret handshake, or some kind of secret code. It's usually enough to say " my handshake is watermelon" to cut down on many requests or even separate them. The handshake can be changed later but approved relationships will have a much longer shared ID between social networks. This should cut down any shock of 'friend spam' on the magnitude of 'email spam'.

Lastly, there's a list of contacts of whom you can take with you to another website.

Other features


I'm not sure if IRC is a de-centralised protocol. I assume it can be set up in a jabber sort of way, albeit message intensive.

Here's how I assume it can be like: joins #patrick-moon-dot-com

* changes nick to Joakal

Patrick: ??

Sam: sigh I got banned by a pissed off moderator and now I cant talk to my friends on the website

Patrick: Did you try downloading your profile? Probably some contacts

Sam: That? I tried once but it was so impossible to fill out all these security questions so I couldn't finish it

Sam: Anyone?

Sam: No?

Sam leaves #patrick-moon-dot-com

Joakal: Hey Patrick, we on for this sat

Patrick: Hey, yep!

Other browser features

Allow @ in URL bar. Typing it in would bring the user to the public page. (Public, otherwise there will be a login.)

Subscription/following feature: Clicking it subscribes the person that person's feed. Useful for newsletters or notifying users.

Protocol support

Make each part of the core feature a protocol standard. Make social networks easy and standardised.

This can mean that the social experience can be integrated into the browser, desktop or mobiles. For example, with in my browser settings, it allows for getting updates, posts, instant messages, etc as instantly possible.

Backward compatibility

It's so important that even social networks have to rely on email to bring back users on notifications.

Good news everyone, because of the similarity to emails, everything can effectively become an email.

This is probably the most important feature; allow people to email back responses. This involves your friends without requiring them to be part of a social network. In a way, people see such messages may feel attracted to try out the new social network due to the simpleness of it.

Simply attempt to send a message to the other website. If they do not support it, then convert it into email instead.

Conversion table

Social Network Email
Posts, hierarchy list of old to new. Users get emails with a hierarchy of posts from new to old. Any responses from email users is compared and the difference is posted roughly with link to original.
Support Users can respond like posts above.
Media Unfortunately, email users can automatically authenticate via a unique private link. The social network can display who's re-sharing such passwords.
Instant Messaging Unfortunately, not possible.
Events Pretty close to the example above earlier. There are special links so that email users can indicate RSVP, Maybe, Decline or even post a response.

Summed up


  • Stronger privacy control (*)
  • Can easily back up pictures, videos, etc (*)
  • Independence of other social providers (*)
  • Should transform email hosts into social networks

(*) Depending on social provider


  • Less spam control. Need to consider evolved spam controls. However, the exclusiveness of social network for some people should prevent it.
  • Contact request spam. Look at suggested solution in contacts of secret handshake.

What's next?

Patience is pretty important.

  1. Use it and add friends to it, more and more people will become aware. It's not going to be fast, but it'll disseminate slowly.
  2. With a great viable alternative, websites integrate the functionality.
  3. A matter of waiting for publicity and/or failure of a dominant social network.

How would closed social networks fail?

  • Implode. Probably privacy, security or something particularly controversial.
  • Cultural reasons. A huge amount of the social aspects of society is a very dynamic and evolving sense of taste. The crazy custom profiles of MySpace may have given a strong boost to Facebook for the simplicity, but those people also want isolation, their own communities. A central location does make it very hard.
  • Independent services. People are wary of linking social information with other things because employers might not like what people do.

Can they adapt and implement everything here?

Yes, but they are likely to lose money because they no longer have the perception of the dominant social network. Some ways they can later monetise:

  • Enterprise and general packages
  • Keep using their platform, advertisements and all
  • Leverage their branding to be a good user choice

All of which means acknowledging that they are losing momentum with users preferring to go to more open social networks.

What can they do to stop the idea?

  • FUD. Pay PR companies to release 'concerns' to news agencies to scare users. Also create realistic looking posts and statements on blogs complaining. For example "your privacy is more at risk, what if your employer finds out?" "I got so much spam!" "So hard to use." "I don't want to hurt my friends by leaving "
  • Lobbying against government net neutrality laws that would prohibit ISPs from charging potential young competing websites higher internet costs. Then collude with the ISPs to make it difficult for websites to reach people.
  • Adopt vendor Lock-in strategies. Locking down the platform from allowing people to leave by making it so easy to talk to friends but so hard to bring those friends to other services.
  • Create proprietary standards and force enterprises and governments to adopt them.
  • Patent any such implementations or similar variants of, and it would be a shame if people ignored gangster legal cues.
  • Pay to remove this article and sign a confidentiality agreement.

Diaspora Attempt

I worry that in the the attempt to replace the dominant social networks with more open social networks, they're slowing down the adoption unintentionally because of the GPL-like restrictions of their licence. To describe it simply, Diaspora's licence is ANU-GPL-3.0 that says that if you as a website owner want to integrate Diaspora code into your website, you must make your code public. For example, with a propertiary email server, making it work with Diaspora would require the person to release the code and lose 'competitive business advantage' at exposing my spam controls. Another licence discussion at Diaspora.

For Diaspora to be adopted more easily and made far more useful (ISP email, iPhone core feature, etc), change the licence to something with more freedom unless your aim is a slow adoption despite the open ecosystem it offers. Otherwise and except for email backwards compatibility, it looks brilliant!


For those trying to create a social network; I encourage you to be open and backwards compatible (SMTP, etc) and reiterate as the official standard bodies adopt more social standards like the iCalendar standard.

If I create a social network, could I make as much profit as the major networks? Yes and no. By making it much more easier to set up, more people will be attracted to the social life on the internet. But at the same time, it's hard to attract them to my own social network server. It's for this reason that I'm working on other projects instead and leaving this up as an idea. In fact, if social networks were open and standardised (instead of closed or GPL'd projects), I would integrate it into my projects.

How would I do the social network killer? Like email.

You can discuss this on Reddit

More reading

June 28, 2011

Animal capitalist conservation or non-native tax

Filed under: Idea — Tags: , , , , — Andreas Markauskas @ 5:35 am

Promote native animals over environmentally unfriendly animals. This can be done through subsidies,
giving grants and assistance to breeders of native animals, while factoring in the cost for environmentally unfriendly animals (eg taxes).

As it stands, if someone purchases a bunny for example, the bunny might escape and can multiply fairly quickly and put pressure on the environment.

So lets see the potential:

  • Benefits
  • Problems
  • Market for native animals
    • Current market
    • Potential market
  • Industries
    • Current industries
    • Potential industries
  • Regulation and laws
  • Example campaign
  • Other notes


By having more competition and supply, the market would make conservation cheaper in terms of feed and research. That's the primary aim of this capitalist proposal.

Cultural tourism would get a boost as people overseas view Australia less of an European country but more of an Australian country with native animals integrating with people.

Accidental loss or deliberate release of native animals might be a boon by adding to the ecosystem over non-native animals. However, this is highly frowned upon by many conservations and zoo for a primary reason: unbalancing the ecosystem. But currently, a rabbit, dog, cat or even a camel could escape the enclosure and may multiply, putting pressure on the ecosystem.

Finally, the quoll won't be seen as a misspelling of quill/quell in my spell checker.


Premature allowance of native animals by law. People may take it upon themselves that the wildlife is up for grabs. This is fraught with many issues with the minimum: Non-domesticated, high stress, diseases and lack of understanding of creating a suitable habitat. This is illegal.

Accidental loss or deliberate release of native animals may be bad because it puts pressure on the ecosystem. This might be illegal.

Misunderstanding of keeping domesticated native animals. People might feed milk and vegetables to a quoll because it looks like a rabbit (Assumption) when it's actually a carnivore. This might be illegal under animal cruelty(?)

Illegal breeding to make a quick buck on the potential high insatiable demand. Poor welfare conditions among other problems are actually already illegal.


Chipping all domesticated animals. It would be easy for officers to determine if the animals are wild or domesticated.

Make select animals for sale with education of what's legal. For example, quolls are in such supply that only conservations and breeders are allowed to keep them.

Market for native animals

Current market

Native animals are not sold. However, there's an exception for some variety of native birds.

As for non-native animals, typically those are European animals. They are available for sale, adoption, trading and more.

Potential market

There's already some basic demand; people enjoy seeing them at the zoo, their currency and even in the backyard (We have had lizards much to the delight of my mother and unfortunately rabbits). With a good campaign and awareness to mitigate problems and create demand, the native animals would be prized very highly for a variety of uses. Here's some:

  • Food (Kangaroo is slowly becoming popular)
  • Pets (Wombats, quolls, lizards, etc)
  • Zoo (Increased selection of animals)
  • Conservation projects (Cheaper due to economies of scale)


  • Animal feed
  • Breeders
  • Veterinarian
  • Pet shops
  • Conservations
  • Zoo
  • Food industry

Current industries

Much like the current market, to cater for breeding animals for pets and food, those are typically European. Due to regulations, native animals are not considered at all.

Potential industries

With a new market to cater to, there's lots of potential for industry in terms of breeding, feed, veterinary services and much more.

Unfortunately for the non-native animal industry, it may see loss of potential. However, with a good conversion program I believe it's possible for industries to switch. Employment and business losses would be minimal.

Regulations and laws

Domestic pets

If a stray kitten lands on your door step; that's pretty adorable, you would probably get some special kitten milk and nurse it to health.

If a stray baby possum lands on your door step. That's many levels of scary because of strict government regulation of people interacting with
native animals. Seriously, a possum is not even endangered yet if you handle even a baby possum, you're liable for penalties.

I believe regulations should be relaxed and should be imposed on non-native animals gradually instead. While my example above may lead you to believe that the baby possum is wild, it could actually be domesticated and quite fine to have as a pet like a kitten.

"It is illegal to handle or interfere with any native animal, including possums without a permit." Living with Possums in South Australia - Strategy - Circular 38.4

Why is there regulation for such a common species? More here:


Conservations should not have exclusive rights to breed animals. Licensed animal breeders who also have the knowledge and know-how should be able to apply for a licence. Further, I believe that people should be allowed to have accidental breeding of native domesticated animals too.

Example campaign

This is how I would perceive it to work:

  1. Education.
    • People must realise that taking animals from the wildlife would be dangerous. Rabies, stress, potential injuries that can be fatal and more. Domesticated animals are more tame and good company. This also happens to European animals; I have heard from a friend about her timid dog being stolen.
    • Cats and puppies and rabbits are common themes in Europe and America but are not natural in Australia. They can destroy environment.
    • Possums, koalas, kangaroos are different to puppies, cats and rabbits. Some of them can eat as much as a dog, others have sensitive diets like eucalyptus for koalas. Advise interested buyers to talk to shops or a hotline
  2. Demand.
    • Create some demand by encouraging available animals to be used on TV shows with subtle effect of using native food.
    • Demand should be purely about available animals to prevent creating unnecessary demand for endangered or troubled species.
  3. Supply.
    • Get pet shops to allow preorders, brochure of legal changes (If the possum becomes legal, list it then).
    • Provide education to breeders and producers of what to supply with a strong long term plan to reduce 'business uncertainty' issues.
    • Offer subsidies to breeders and producers. This would make maintenance more cheaper. The subsidies can come from taxing non-native consumption, eg pet sales, feed, etc.

Other notes

There's savings in avoiding mandatory de-sexing. If the animal escapes, then shock and horror, it boosts the population.

Addendum (more reading)

Update:29th July 2010


For those that doubt wild animals can be domesticated and that cats, dogs, and other predominate domesticated animals are natural; here is a list here of animals domesticated in the last century: Domestication#Modern_instances. Even a cockroach can be domesticated!

Update:30th July 2010

More relevant links:

April 10, 2011

Inspirational #29

Filed under: Inspirational — Tags: , , , — Andreas Markauskas @ 11:21 pm

Weird shampoo physics, round ships, Neptune orbiting Earth and an evolving vehicle animation.

April 3, 2011

Inspirational #28

Filed under: Inspirational — Tags: , , , , , , — Andreas Markauskas @ 12:00 pm

A foundation dedicated to interstellar space travel, article of space launch reliabilitiy and videos of space craft

Older Posts »