Pubuntu, Portable Ubuntu

Pubuntu is a solution for those who needs to use Lincolinuxux and Windows at the same time. It’s an alternative to the visualization. Pubuntu is based on CoLinux(Cooperative Linux).

Cooperative Linux is the first working free and open source method for optimally running Linux on Microsoft Windows natively. More generally, Cooperative Linux (short-named coLinux) is a port of the Linux kernel that allows it to run cooperatively alongside another operating system on a single machine

Pubuntu works perfectly under Linux and it have a perfect integration with the desktop not filling all the screen like a virtual machine. Also you can carry it in a pendrive and execute it on any PC. Unfortunately it seems to be discontinued, so it is based on Ubuntu 10.04 and it only works for 32bits windows. Probably going directly to coLinux and dedicating to it some time anybody can use an updated image.

Here is a screen shot:

pubuntu

The Arduino Starter Kit

So two weeks ago I bought The Arduino Starter Kit. I have only basics knowledge about electronic devices so I think it could be a good idea. The kit consist in a Arduino Uno board, a breadboard, some components and a book to do 15 projects. The book is really good and let anybody to do the projects without any problem. Each project could be done 30-60 minutes. After doing the projects you could start your own projects, at kit  there are more components than necessary, so you can use them.

Opinion:ArduinoUno

The best:

  • The projects are so basic, so everybody can do all the projects following the book.
  • It’s a very easy start to know if you really like to play with hardware and create your own gadgets.
  • Arduino is a very good platform to create prototypes and test it for not too much money.
  • Cross-Platform (Windows, Mac and Linux)
  • The guide explain very good how the source code works.
  • All the code is Open-Source and the hardware schemes are also public.
  • There is a big community to help you.

The worst:

  • Don’t provide electronic information about why the components are connected like that. So to understand some schemes you will need look at the Internet.
  • To feeding the board you have an USB wire, but if you want a “wireless” device you will need to buy a batteries and the appropriate connector.
  • The projects are so easy that in only 2 weeks you could have done everything.
  • You can’t keep the projects, after doing one you have to destroy it disassemble it do the next.
  • To do other projects you will need to buy some sensors or actuators.

Why I talk about Arduino in this blog? Because it is all open-source and open-hardware.

 

Arduino Starter Kit

 

Bash (Bourne again shell), The use of alias

For those who often use the shell because it’s faster, because they likes it or because they can’t do the any stuff in other way , I’m going to give some advice about configuring your bash. For newbies, the bash is an advanced version of the shell. The screen where you type commands.

In your home directory “/home/user” there use to be a file named .bashrc . That file is executed every time you open a bash terminal. The best way to learn what you can do with this file is open it and read it. If you use Ubuntu you it is well commented. In this post I only will teach how to use aliases. It’s a very easy tool, and powerful in some cases.

First of all let see some predefined examples:Terminal

alias ls=’ls –color=auto’
alias grep=’grep –color=auto’
alias fgrep=’fgrep –color=auto’
alias egrep=’egrep –color=auto’
alias ll=’ls -alF’
alias la=’ls -A’
alias l=’ls -CF’

An alias will convert one command into another. In the alias written up the alias will add an option by default. So each time you write ls,  the real command to be executed is ls –color=auto .  In other cases it “create” a new command, like the ll case.

The cases seen above are basic, but you can automatize other things with this. For example, update your PC:

alias update_system=’sudo apt-get update; sudo apt-get dist-upgrade’

Or open some programs that you normally use at the same time:

alias work_android=’eclipse & firefox http://developer.android.com/sdk/index.html &’

Or show today syslog errors:

alias show_errors=’today=`date “+%b %d”`; grep ^$today /var/log/syslog | grep error’

Are you doing any task every day?, Could this be useful for you?

Arduino

After a long time without posting at my blog it’s time to restart. Let me avoid excuses and go straight to the point.

logo_arduino

I’ll give an introduction about Arduino. Arduino is a hardware platform that enable non-expert people to develop small projects with micro-controller. A micro-controller will let us to interact with both digital and analog sensors and actuators. Unlike a PC we don’t need a USB interface. With a PC motherboard we can also have access to I2C interface, but that is another topic. With arduino we have in one board the power supply connector, the programmer and a number of easy to use connectors. All of this without welding anything.

Why I talk about Arduino in this blog? Yes, it is Open Source and Open Hardware. All the schematics of their boards are public and the provide an opensource IDE to program the boards.

The business model in this case is easy to explain. The Arduino boards are made for people who don’t have much knowledge about electronic. So that people are not really interested in welding their own board. And probably if you want to weld your own Arduino board it will be more expensive than buying a prepared one. That’s the advantage of production in series.

If you are interested in manufacturing a device it is not a good idea to use an Arduino board. The Arduino board is complex and provide more stuff than you will need so it will be more expensive. But Arduino is a good idea for a prototype.

Next Posts I’ll talk about my experience with Arduino.

Users and contributtors

At the beginning of a software it is possible that the developers are the users because only they are interested in it. But, if the software pass from alpha version it is possible that some people interest in it.  We can difference between user and developers by its profile, but both of them can be contributors.

How a user can be a contributor? It is easy. Not all contribution is source code and a community is not only developers. That is why it is important to have users. So don’t misprise users for not having enough knowledge. Let see all the ways a user can help in a free software community:

  • Solving other users doubts:  All users use to have similar problems when they are using applications and they use to resolve them asking in forums or by their own. How do they solve problems is a useful information. And answering others users with the same problems is an important contribution.
  • Writing documentation, tutorials and guides: Every user need a tutorial to start using an application. To write a tutorial users don’t need technical knowledge, so they could write it and correct it.
  • Advertising(trough tweeter, blogs, forums, chats and other social networks): As I try to explain in this post, it’s important to have users, so every advertising system is welcome. With it developers and user could be attracted.
  • Moderating forums, wikis and other resources: A user, despite being only a user, could be an expert one, so they can perform tasks like moderating forums and wikis.
  • Giving new ideas about the development of new features: Users use to think differently than developers, and could be in different environments, so they will have new ideas about how the application could grow.
  • Beta testers and bugs reporting: For every application it is very important to have external beta tester. This is a basic rule of software, the developer couldn’t be a good tester. It is difficult for a tester to do thing for which the applications are not ready or they don’t have the environment to try the application as it should be. So having users and a bug tracking application could improve the application.

From now, if you are managing a community think in the value of the users, and take care of them, they are a useful resource.

Software Forge

A software forge is  development tool. They are specially useful for development communities. The main utility of a forge is to be include a version control software. But this is only one of the tools it can offer. This is the other tools a forge could include:

  • Version Control
  • Wiki
  • Forums
  • Mail-list management
  • Bug tracking

All this tools are integrated so the uses of a forge could save so time of manage all this technologies.

If you decide to use one, you have two possibilities. Download one an d install it in a server managed by yours, or using the hosting service. The easiest is to use is the second one. Here is a list of the most known software forges and its utilities:

Name Code hosting Code review Bug tracking Web hosting Wiki Translation system Shell server Mailing List NNTP Forum Build system Team Other features
Alioth Yes No Yes Yes No No Yes Yes No Yes No No Sample Code, Help Wanted, Anonymous FTP
Assembla Yes Yes Yes Yes Yes No Yes No No Yes Yes Yes FTP, Time Tracking, API
BerliOS Yes ? Yes Yes Yes ? Yes Yes ? Yes ? ? FTP, MySQL
Bitbucket Yes Yes Yes Yes Yes No No No No No No Yes OpenID
CodePlex Yes No Yes No Yes No No Yes No Yes No No Live ID
GitHub Yes Yes Yes Yes Yes No No No No No No Yes Public API[6], static web-page hosting[7]
Gitorious Yes Yes No No Yes No No No No No No Yes OpenID[n 5]
GNU Savannah Yes Yes Yes Yes No No Yes Yes Yes Yes No Yes Free software code base
Google Code Yes Yes Yes Yes Yes No No Yes Yes No No No
JavaForge Yes No Yes Yes Yes No No No No Yes Yes Yes Public remote API, Document management
java.net Yes ? Yes Yes Yes No No Yes No Yes Yes Yes
KnowledgeForge Yes Yes Yes Yes Yes No No Yes No Yes No Yes Written in Python. All code open source.
Launchpad Yes Yes Yes No No Yes No Yes Yes No Yes Yes Blueprints, Karma, Answer, Mail interface, public API, OpenID Provider, Download area, Non-project branch, this is opensource
openSUSE Build Service No No Yes No No No No No No No Yes No public API
OSOR.eu Yes No Yes Yes Yes No Yes Yes No Yes No ? Metrics, OSS Observatory, Communities, Webconference – only for projects sponsored by public administrators (or specific interest for)
Project Kenai Yes No Yes No Yes No No Yes No Yes No No Download area, IM Chatroom, public API, project website, extensive help, code can be hidden
SourceForge Yes No Yes Yes Yes No Yes Yes No Yes No No Marketplace, Jobs, Help Wanted, OpenID Relying Party, Download area
tigris.org Yes No Yes Yes Yes No No Yes No Yes No ? public API, extensive help
Transifex No No No No No Yes No No No No No Yes Translation service, runs on open-source software.

This table was extracted from wikipedia: http://en.wikipedia.org/wiki/Comparison_of_open_source_software_hosting_facilities

Name Code hosting Code review Bug tracking Web hosting Wiki Translation system Shell server Mailing List NNTP Forum Build system Team Other features
Alioth Yes No Yes Yes No No Yes Yes No Yes No No Sample Code, Help Wanted, Anonymous FTP
Assembla Yes Yes Yes Yes Yes No Yes No No Yes Yes Yes FTP, Time Tracking, API
BerliOS Yes ? Yes Yes Yes ? Yes Yes ? Yes ? ? FTP, MySQL
Bitbucket Yes Yes Yes Yes Yes No No No No No No Yes OpenID
CodePlex Yes No Yes No Yes No No Yes No Yes No No Live ID
GitHub Yes Yes Yes Yes Yes No No No No No No Yes Public API[6], static web-page hosting[7]
Gitorious Yes Yes No No Yes No No No No No No Yes OpenID[n 5]
GNU Savannah Yes Yes Yes Yes No No Yes Yes Yes Yes No Yes Free software code base
Google Code Yes Yes Yes Yes Yes No No Yes Yes No No No
JavaForge Yes No Yes Yes Yes No No No No Yes Yes Yes Public remote API, Document management
java.net Yes ? Yes Yes Yes No No Yes No Yes Yes Yes
KnowledgeForge Yes Yes Yes Yes Yes No No Yes No Yes No Yes Written in Python. All code open source.
Launchpad Yes Yes Yes No No Yes No Yes Yes No Yes Yes Blueprints, Karma, Answer, Mail interface, public API, OpenID Provider, Download area, Non-project branch, this is opensource
openSUSE Build Service No No Yes No No No No No No No Yes No public API
OSOR.eu Yes No Yes Yes Yes No Yes Yes No Yes No ? Metrics, OSS Observatory, Communities, Webconference – only for projects sponsored by public administrators (or specific interest for)
Project Kenai Yes No Yes No Yes No No Yes No Yes No No Download area, IM Chatroom, public API, project website, extensive help, code can be hidden
SourceForge Yes No Yes Yes Yes No Yes Yes No Yes No No Marketplace, Jobs, Help Wanted, OpenID Relying Party, Download area
tigris.org Yes No Yes Yes Yes No No Yes No Yes No ? public API, extensive help
Transifex No No No No No Yes No No No No No Yes Translation service, runs on open-source software.

Creative Commons

reative Commons is not a license, as a lot of people use to think. It is an non-profit organisation. This organisation objective is to release license with the copyleft philosophy. The copyleft philosophy is based on giving the right to copy to the user instead of reserve it to the author, editor, or anyone else.

The software mustn’t be licensed under CC license because they are written for non-technical works. They can be used for books, pictures, music, photography, and also can be used for manuals and tutorials. Legally you can use it for software, but it is not recommended. If you are looking for free license for software you can take a while reading about GPL, BSD, Apache….

CC licenses reserve or left different rights:

Attribution: This right is always reserved. This right is common for all CC license, Most countries reserve this right  to the author independently of the license. Of course all derived works must respect this attribution.

Share-Alike: All the copies and derived works must have the same license of original one.

No-Derivatives: You can copy the work always with the same license, but you cannot use is for derived works.

No-Commercial: The work and it’s derived works cannot be used for commercial purposes.

The CC license use to combine the rights. So this are all the possible CC license:

Attribution (CC-BY)
Attribution Share Alike (CC-BY-SA)
Attribution No Derivatives (CC-BY-ND)
Attribution Non-Commercial (CC-BY-NC)
Attribution Non-Commercial Share Alike (CC-BY-NC-SA)
Attribution Non-Commercial No Derivatives (CC-BY-NC-ND)

As I said at the CC is a organitation that create copyleft licenses. This organisation does a contribution to all the world because most of the writers, artists, musicians didn’t know about laws and licenses. So CC gave to the community legal texts to allow them to share their works without needing have law knowledge. It’s usually that if you distribute any work, by default, you have all rights reserved, so it’s very important to add the license to the works.

One important benefit of CC is the unification of copyleft licenses. This is good thing because this allow to combine different works to create a new one under the same license. Without this there could be some restrictions avoiding this type o combination.

We have to be thankful to CC organisation to allow everybody to share their works legally.

Oficial Web:

http://creativecommons.org/