Saturday, February 26, 2011

Wednesday, February 23, 2011

Another great lecture by Richard Stallman (2007)

Richard Stallman's message is consistent and inspiring.  Although he has his detractors, humanity has benefited from his vision and stubbornness.

A wonderful talk by Mark Shuttleworth about the beginnings of Ubuntu

Listen for the line, "humour is more important than trademarks."

Tuesday, February 22, 2011

Monday, February 21, 2011

Install WordPress 3.0.1 On Ubuntu 10.10 Maverick Meerkat » Help Desk Screeds

This is one of the finest tutorials I have come across.

Install WordPress 3.0.1 On Ubuntu 10.10 Maverick Meerkat » Help Desk Screeds

I'll be playing with Wordpress on my Ubuntu 10.10 machine for a while.

Mastering Email

In our experience most small businesses consider it worthwhile to have a website and their own domain.  When it comes to email though, some business owners use their home addresses (e.g. someone@bigpond.net.au) for their business correspondence.  Others recognise the need to separate their business email from their personal, and use a completely separate account, which means logging into two accounts, etc.

Although the most important consideration in email is to find a method that works for you, we'd like you to consider the benefits of Clockwork PC's approach to email:

  1. It looks professional.  If you invested in making your website and business card look good, and took care to write attractive copy, you will appreciate that having an address like j.smith@yourdomain.com looks a lot better than j.smith@bigpond.net.au
  2. Unlimited addresses -- if you expand beyond a sole-trader, each employee can have his/her own address
  3. Privacy -- spammers won't have access to your personal address
  4. Almost no spam -- that's right, spam is a thing of the past for us
  5. Storage space -- each email address has 7GB of storage space
  6. Control -- as the owner of Clockwork PC I determine exactly which addresses emails will go to and have the power to look into any correspondence should the need arise
  7. Synchronisation with mobile devices -- we never have to plug our phones into our computers, they remain updated all the time
  8. One master account -- no-one at Clockwork PC needs to check more than his or her personal email.  I myself have about two dozen addresses, but I only ever check one, because all the others automatically forward to my central address.  It takes about 5 minutes to set up and you never have to worry about logging in to a second or third account again.

How do we achieve this?  We use Google Apps to administer our email domain.

For a small business that needs less than 50 full email accounts, Google Apps is free.  Moreover, we can also use a catch-all address to present an unlimited number of email addresses, the emails for which can be redirected accordingly.

If you would like to learn more about the following, feel free to get in touch with us via our Contact Page.

  • Using Gmail
  • Using Google Apps
  • Personalised email training

The Clockwork PC definition of a proficient Weebly user

Weebly is a great tool for getting a website up and running.  It has loads of features and is, as far as we're concerned at Clockwork PC, the easiest tool for building a website.  And if you become a Weebly guru, you'll learn how to do some amazing things.

Having said that, there are a few things you need to know about Weebly in order to use it proficiently.  Here is the Clockwork PC definition of a proficient Weebly user:

Elements
You have a Weebly account of your own to play around in.
You can drag and drop an element into the content space.
You can split the content space with the Two Column Layout element.
You can add a Contact Form.
You can add and populate a Photo Gallery or Slideshow.
You can upload a File.
You can add a Google Map and set a location of your choosing.
You can embed a YouTube video.
You can add a Forum.
You can add an Online Poll.
You can add an Online Bookings page.
You can add a Feed Reader.

Design
You can select a Design for your website.

Pages and Blog
You can add a Page.
You can delete a Pages.
You can edit a Pages.
You can copy (duplicate) a Page.
You can hide and reveal a Page by determining whether to show it in the Navigation Menu.
You can change the order of the Pages.
You can make a page a sub-page of another.
You can organise your pages hierarchically.
You know how to Password Protect a website.
You can add a Blog to your website.
You can draft a blog post.
You can publish a blog post.

Settings
You can change your site's address
You can change your Site Title
You can add a Site Description
You can add Meta Keywords to your site
You can add a Merchant account to your Ecommerce Settings
You can select the Currency
You can set whether to display a Mobile version of your site on mobile devices
You set a Theme Colour
You can download an Archive of your site
You can "Un-Publish" your site.

The Clockwork PC definition of a proficient Weebly user

Weebly is a great tool for getting a website up and running.  It has loads of features and is, as far as we're concerned at Clockwork PC, the easiest tool for building a website.  And if you become a Weebly guru, you'll learn how to do some amazing things.

Having said that, there are a few things you need to know about Weebly in order to use it proficiently.  Here is the Clockwork PC definition of a proficient Weebly user:

Elements
You have a Weebly account of your own to play around in.
You can drag and drop an element into the content space.
You can split the content space with the Two Column Layout element.
You can add a Contact Form.
You can add and populate a Photo Gallery or Slideshow.
You can upload a File.
You can add a Google Map and set a location of your choosing.
You can embed a YouTube video.
You can add a Forum.
You can add an Online Poll.
You can add an Online Bookings page.
You can add a Feed Reader.

Design
You can select a Design for your website.

Pages and Blog
You can add a Page.
You can delete a Pages.
You can edit a Pages.
You can copy (duplicate) a Page.
You can hide and reveal a Page by determining whether to show it in the Navigation Menu.
You can change the order of the Pages.
You can make a page a sub-page of another.
You can organise your pages hierarchically.
You know how to Password Protect a website.
You can add a Blog to your website.
You can draft a blog post.
You can publish a blog post.

Settings
You can change your site's address
You can change your Site Title
You can add a Site Description
You can add Meta Keywords to your site
You can add a Merchant account to your Ecommerce Settings
You can select the Currency
You can set whether to display a Mobile version of your site on mobile devices
You set a Theme Colour
You can download an Archive of your site
You can "Un-Publish" your site.

The Clockwork PC definition of a Weebly guru

As you can see from our definition of a proficient Weebly user, there is a slight learning curve even on the easiest tool for building websites out there.  However, it is probably much easier than you think.

The beauty of Weebly is that once you attain proficiency, you can use it as a stepping stone to  the joys of HTML and CSS.  This is thanks to two wonderful features in Weebly:

1) The oh-my-goodness-I-can't-believe-they-included-this button, also known as Custom HTML:

With this button you can embed ANYTHING on your Weebly site.
2) The oh-my-goodness-I-can't-believe-they-included-this-as-well button, also know as Edit HTML/CSS
This button takes you into the heart and soul of your website.
With the power of these two features you can create a website, embed absolutely anything, and then tweak its layout to your heart's content.  By the time a Weebly guru is finished with his website there's probably just as much of his code as there is from Weebly.

For example:

You can change the background colour of your website
You can embed a YouTube playlist
You can embed a weather report
You can add a div
You can change the font to something like the Ubuntu font for your website

And much, much more.

Now it's true that even with all this Weebly is not as versatile as building your own site in Drupal or Joomla -- that almost goes without saying --, but Weebly is an excellent tool if you've been putting off getting a website because you don't have the time to build one "properly", or you'd like to develop your HTML/CSS skills on something fun and easy.

Mastering Email

In our experience most small businesses consider it worthwhile to have a website and their own domain.  When it comes to email though, some business owners use their home addresses (e.g. someone@bigpond.net.au) for their business correspondence.  Others recognise the need to separate their business email from their personal, and use a completely separate account, which means logging into two accounts, etc.

Although the most important consideration in email is to find a method that works for you, we'd like you to consider the benefits of Clockwork PC's approach to email:

  1. It looks professional.  If you invested in making your website and business card look good, and took care to write attractive copy, you will appreciate that having an address like j.smith@yourdomain.com looks a lot better than j.smith@bigpond.net.au
  2. Unlimited addresses -- if you expand beyond a sole-trader, each employee can have his/her own address
  3. Privacy -- spammers won't have access to your personal address
  4. Almost no spam -- that's right, spam is a thing of the past for us
  5. Storage space -- each email address has 7GB of storage space
  6. Control -- as the owner of Clockwork PC I determine exactly which addresses emails will go to and have the power to look into any correspondence should the need arise
  7. Synchronisation with mobile devices -- we never have to plug our phones into our computers, they remain updated all the time
  8. One master account -- no-one at Clockwork PC needs to check more than his or her personal email.  I myself have about two dozen addresses, but I only ever check one, because all the others automatically forward to my central address.  It takes about 5 minutes to set up and you never have to worry about logging in to a second or third account again.

How do we achieve this?  We use Google Apps to administer our email domain.

For a small business that needs less than 50 full email accounts, Google Apps is free.  Moreover, we can also use a catch-all address to present an unlimited number of email addresses, the emails for which can be redirected accordingly.

If you would like to learn more about the following, feel free to get in touch with us via our Contact Page.

  • Using Gmail
  • Using Google Apps
  • Personalised email training

The Clockwork PC definition of a proficient Weebly user

Weebly is a great tool for getting a website up and running.  It has loads of features and is, as far as we're concerned at Clockwork PC, the easiest tool for building a website.  And if you become a Weebly guru, you'll learn how to do some amazing things.

Having said that, there are a few things you need to know about Weebly in order to use it proficiently.  Here is the Clockwork PC definition of a proficient Weebly user:

Elements
You have a Weebly account of your own to play around in.
You can drag and drop an element into the content space.
You can split the content space with the Two Column Layout element.
You can add a Contact Form.
You can add and populate a Photo Gallery or Slideshow.
You can upload a File.
You can add a Google Map and set a location of your choosing.
You can embed a YouTube video.
You can add a Forum.
You can add an Online Poll.
You can add an Online Bookings page.
You can add a Feed Reader.

Design
You can select a Design for your website.

Pages and Blog
You can add a Page.
You can delete a Pages.
You can edit a Pages.
You can copy (duplicate) a Page.
You can hide and reveal a Page by determining whether to show it in the Navigation Menu.
You can change the order of the Pages.
You can make a page a sub-page of another.
You can organise your pages hierarchically.
You know how to Password Protect a website.
You can add a Blog to your website.
You can draft a blog post.
You can publish a blog post.

Settings
You can change your site's address
You can change your Site Title
You can add a Site Description
You can add Meta Keywords to your site
You can add a Merchant account to your Ecommerce Settings
You can select the Currency
You can set whether to display a Mobile version of your site on mobile devices
You set a Theme Colour
You can download an Archive of your site
You can "Un-Publish" your site.

The Clockwork PC definition of a Weebly guru

As you can see from our definition of a proficient Weebly user, there is a slight learning curve even on the easiest tool for building websites out there.  However, it is probably much easier than you think.

The beauty of Weebly is that once you attain proficiency, you can use it as a stepping stone to  the joys of HTML and CSS.  This is thanks to two wonderful features in Weebly:

1) The oh-my-goodness-I-can't-believe-they-included-this button, also known as Custom HTML:

With this button you can embed ANYTHING on your Weebly site.
2) The oh-my-goodness-I-can't-believe-they-included-this-as-well button, also know as Edit HTML/CSS
This button takes you into the heart and soul of your website.
With the power of these two features you can create a website, embed absolutely anything, and then tweak its layout to your heart's content.  By the time a Weebly guru is finished with his website there's probably just as much of his code as there is from Weebly.

For example:

You can change the background colour of your website
You can embed a YouTube playlist
You can embed a weather report
You can add a div
You can change the font to something like the Ubuntu font for your website

And much, much more.

Now it's true that even with all this Weebly is not as versatile as building your own site in Drupal or Joomla -- that almost goes without saying --, but Weebly is an excellent tool if you've been putting off getting a website because you don't have the time to build one "properly", or you'd like to develop your HTML/CSS skills on something fun and easy.

Johannesburg Stock Exchange to move to Linux - The H Open Source: News and Features

usSome people, when hearing about free open source software (FOSS) find it hard to understand how you can make a living from it, when by definition it is freely available.

The reasoning goes that source code is intellectual property and therefore the way you make money is akin to inventing a gadget -- take out a patent, get it mass-produced, and collect percentage on every sale. This is how Microsoft makes its money from Windows and MS Office.

However, as we can see from the decision by the Johannesburg Stock Exchange's decision to move to Linux, FOSS is not merely for tinkerers and hobbyists.

But to understand the power of Linux and free open source software in general, we need to make the following distinctions:

1) Making money from something vs. making money with something
2) Patent vs. copyright

Making money with or from something.

In the world of proprietary software you make money through software vendors, e.g. retail stores, online stores. The software is packaged and sold as a product. The makers of the software receive a percentage of each sale. All pretty straightforward: they make money from the software.

In the world of free open source software you don't profit (or profiteer) from selling software, because it is typically freely available as a download to anyone with an internet connection. (Or in the case of Ubuntu, anyone who requests a CD) So, in order to make money, you have to provide a service to those wishing to use the software. The greatest example of this method is Red Hat, which makes its operating system freely available and offers its expertise in configuration and technical support. What makes Red Hat truly remarkable is that it competes with its own fully functional free product. This stands in contrast to giving a limited version of your own product and offering the full version as part of a complete package. According to the New York Stock Exchange, Red Hat is doing just fine, making its money with, not from, its software.

Patent vs. Copyright

Until the late 1970s, the idea that the source code to software could be considered intellectual property was almost non-existent. However, by the 1980s this notion had taken hold and the earlier practice of including source code with software had effectively become extinct. Thanks to the efforts of influential persons like Richard Stallman and Linus Torvalds, and the combined contributions of millions of enthusiasts around the world, there is an entire eco-system of free and open source software, which benefits all computer users, even those who do not use free software.[firefox story]

As we can see from the news about the Johannesburg Stock Exchange, free open source software such as Linux can be used to create salable software such as the Millenium Exchange. However, this does not mean that the makers of Millenium Exchange have a patent on the algorithms upon which this system is based. Rather, they own the copyright to the system itself and the brand that they have built up. A very simple illustration of this difference is that no-one in his right mind would say he has a patent on the concept of a blade with a handle, but Victorinox most certainly has the right to determine whether a swiss army knife may carry its logo, because it is the copyright holder of the Victorinox brand.

And here at Clockwork PC, we put this approach to software into practise. All of the software we use, from the operating systems (Ubuntu and Puppy Linux) to our browsers (Firefox and Chromium), from our video editors (Openshot and Kdenlive) to our media players (Rhythmbox), all come from the eco-system of free open source software. We donate to these projects when possible and contribute feedback and reports. But we do not sell software and encourage our clients to weigh up the respective benefits and costs of free open source software vs. those of proprietary software.

Sometimes proprietary software is the best option for a business, but increasingly, thanks to the rapid advance of free open source software, this is becoming less and less true.

Why I do not use Hotmail

If Hotmail is your primary email service and it works for you, that's fine. But I would recommend that you consider Gmail for the following reasons:

1) Superior spam filter
2) Excellent, time-saving keyboard shortcuts
3) Excellent synchronisation with smart phones (Android, iPhone, Blackberry)
4) Excellent synchronisation with your desktop client (Thunderbird, Outlook) via IMAP
5) Excellent search engine
6) Excellent filters

What do you think?

Use Cloud Computing To Keep Up And Stay Protected

Here at Clockwork PC our goal is to help smaller businesses enjoy the benefits of computing to the full. In the past, certain capabilities were only available to companies with a sizable IT infrastructure, but as this article indicates, cloud computing is now something that even individuals should consider.

What Cloud Computing Means For the Real World - PCWorld Business Center

To be clear, there are different forms of cloud computing, and some of them do require an entire IT department to maintain. However, if you use Gmail or Hotmail, use Google Docs, or have a Dropbox account, then you are already using cloud computing.

Why do we use this web-based services? I suggest the following:

Firstly, convenience.
Secondly, security.

Now the convenience of having access to your data from anywhere in the world is impossible to argue against. Shared documents, email on the go, remote access to your files are becoming commonplace in all but the most conservative of work places because it just makes sense.

Against this convenience some argue, very importantly, that this poses a risk to the security of your data. What if the server that your documents live gets cracked? What if it stops working? What if you lose your password?

These are all serious questions and the only responsible answer is to have another layer of back-up and security, in the form of a protected local copy. For example, if you use Gmail, you can keep a local copy of your email on a computer with Mozilla Thunderbird installed. That way you can enjoy the great advantages of Gmail, and should it become inaccessible to you one day, you would have a local copy of all your correspondence, which you could synchronise with a new account if need be.

At Clockwork PC we specialise in providing these kinds of commonsense, low-cost solutions to smaller businesses so that you can enjoy the benefits of an IT department without the costs.

How to get the newest version of Xcowsay (1.3) working on Ubuntu

Xcowsay is a great little program that brings the joy of a talking cow to your desktop.
Sadly, the newest version is not in the repositories even in Ubuntu Maverick, and I haven't found a PPA either.

Luckily, we're using Linux here, so we can compile it ourselves.

The following is a BASH script I wrote to take care of it for you.

To use it:

  1. Download the tarball of xcowsay and save it to your desktop
  2. Copy and paste all the red text into gedit or your favourite text editor 
  3. Save the file as to your desktop as xcowsay_install.sh
  4. then open a terminal and type the following:

cd ~/Desktop
chmod +x xcowsay_install.sh
./xcowsay_install.sh

And that's it!
Try it out by typing in the terminal:

xcowsay "hello world"



#       Copyright 2011 Clockwork PC
#       
#       This program is free software; you can redistribute it and/or modify
#       it under the terms of the GNU General Public License as published by
#       the Free Software Foundation; either version 2 of the License, or
#       (at your option) any later version.
#       
#       This program is distributed in the hope that it will be useful,
#       but WITHOUT ANY WARRANTY; without even the implied warranty of
#       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#       GNU General Public License for more details.
#       
#       You should have received a copy of the GNU General Public License
#       along with this program; if not, write to the Free Software
#       Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
#       MA 02110-1301, USA.
#      



clear
echo "Now let's install the newest version of xcowsay (1.3)"


echo "3"
sleep 1
echo "2"
sleep 1
echo "1"
sleep 1


sudo cp /media/DATA/CPC/Scripts/xcowsay-1.3.tar.gz /usr/local/src/xcowsay-1.3.tar.gz
sudo apt-get install libgtk2.0-dev
cd /usr/local/src/ && 
sudo tar zxvf /usr/local/src/xcowsay-1.3.tar.gz &&
sudo /bin/bash /usr/local/src/xcowsay-1.3/configure && 
sudo make && 
sudo make install


echo "3"
sleep 1
echo "2"
sleep 1
echo "1"
sleep 1


sudo cp $HOME/CPC/Scripts/xcowsay-1.2.tar.gz /usr/local/src


# Install libgtk2.0-dev (Necessary Package)
sudo apt-get install libgtk2.0-dev


# Fix Any Problems
sudo apt-get -f install


# Extract And Compile Xcowsay
cd /usr/local/src/ && 
sudo tar zxvf /usr/local/src/xcowsay-1.2.tar.gz &&
sudo /bin/bash /usr/local/src/xcowsay-1.2/configure && 
sudo make && 
sudo make install


echo "That's it, it's all installed."
(gnome-terminal -x xcowsay --monitor=0 --cow-size=large "That's it, it's all installed." &);(gnome-terminal -x mplayer ~/Videos/Sound_effects/moo.wav) &&


echo "5"
sleep 1
echo "4"
sleep 1
echo "3"
sleep 1
echo "2"
sleep 1
echo "1"
sleep 1
"""

Python, BASH, and XKCD: Part 2

My little script is coming along nicely.  Unfortunately blogger doesn't respect the spacing, so you'll have to rework the spacing for yourself at the moment, but it'll give you a chance to examine the code.

To make full use of it you will need the following:

  1. sudo apt-get install espeak*
  2. Install the latest version of xcowsay from the website, which involves compiling it unfortunately (I have a bash script that will take care of it for you though)
  3. A picture of a sandwich called sandwich.jpg
  4. EITHER have the JPG located at /media/DATA/Pictures/sandwich.jpg OR change line 37
  5. Python installed, obviously, but if you use Linux that should be installed out of the box
Limitations:
  1. Unless you spell it exactly as it reads in the text, i.e. all lower case, no punctuation, it will read it as not being equal to either "make me a sandwich" or "sudo make me a sandwich".
  2. You have to manually close the JPG of the sandwich in order to allow the script to finish.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#       untitled.py
#       
#       Copyright 2011 Clockwork PC
#       
#       This program is free software; you can redistribute it and/or modify
#       it under the terms of the GNU General Public License as published by
#       the Free Software Foundation; either version 2 of the License, or
#       (at your option) any later version.
#       
#       This program is distributed in the hope that it will be useful,
#       but WITHOUT ANY WARRANTY; without even the implied warranty of
#       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#       GNU General Public License for more details.
#       
#       You should have received a copy of the GNU General Public License
#       along with this program; if not, write to the Free Software
#       Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
#       MA 02110-1301, USA.
#       

import os
import time

sudo_command = "sudo make me a sandwich"
running = True

while running:
request = (raw_input('What do you want? '))

if request == "sudo make me a sandwich":
print "OK"
os.system("gnome-terminal -x xcowsay --time=1 --cow-size=large --monitor=0 'OK... Here you go'")
os.system("espeak 'OK... Here you go'")
os.system("gpicview /media/DATA/Pictures/sandwich.jpg")
time.sleep(2)
"""How do I get it to kill gpicview?"""
os.system("gnome-terminal -x xcowsay --cow-size=large --monitor=0 'That is all you will get from me.  Cheerio!'")
os.system("espeak 'That is all you will get from me. Cheerio!'")
running = False

if request != "sudo make me a sandwich":
if request == "make me a sandwich":
print "Make it yourself"
os.system("gnome-terminal -x xcowsay --time=1 --cow-size=large --monitor=0 'Make it yourself'")
os.system("espeak 'Make it yourself'")
else:
print "Mate, bugger off"
os.system("gnome-terminal -x xcowsay --time=1 --cow-size=large --monitor=0 'Mate, bugger off'")
os.system("espeak 'Mate, bugger off'")

"""if request == "sudo make me a sandwich":
print "OK"
os.system("espeak OK")
elif request == "make me a sandwich":
print "Make it yourself"
os.system("espeak 'Make it yourself'")
else:
print "Fuck off"
os.system("espeak 'Mate, bugger off'")"""

Python, BASH, and XKCD: Part 1

OK, I had a bit of free time and I've been meaning to play with Python for a bit.
I'm deciding to use XKCD's famous joke about sudo to write a Python script that uses raw input and loops etc.


You'll need to have espeak installed, but if you run Ubuntu (or any other major Linux distribution) that should be pretty easy.


To install in Ubuntu:
sudo apt-get install espeak*


Here is my first draft:


#!/usr/bin/python


import os


sudo_command = "sudo make me a sandwich"
request = (raw_input('What do you want? '))


if request == "sudo make me a sandwich":
 print "OK"
 os.system("espeak OK")
elif request == "make me a sandwich":
 print "Make it yourself"
 os.system("espeak 'Make it yourself'")
else:
 print "Mate, bugger off"
 os.system("espeak 'Mate, bugger off'")

Absolutely wonderful news from NZ

I've been saying it for a long time, schools spend too much money on their IT infrastructure, and Albany Senior High School from northern Auckland proves it:

NZ school ditches Microsoft and goes totally open source - schools, New Zealand, Microsoft, linux.conf.au, Linux, open source, education - Open Source - Techworld

With wonderful solutions such as Userful and an entire eco-system of open source applications available to every major Linux distribution out there, there is no justification for schools to run on proprietary software.

Moreover, there is a popular, false argument:

Despite the dominance of Windows, teachers and students were largely receptive to using the software, Brennan said. The main area of objection was over the use of particular packages. "There's a perception that students should train with real-world products," Brennan said, but that was outweighed by the advantages of being able to give every student access to any software they needed, rather than having to restrict use because of limited licences, especially in specialist areas such as music.

Brennan is correct, but he should have gone further. The fallacious argument that learning to use one program effectively locks someone out of another, similar program might make sense to people who did not grow up with computers, but not to those who have been using them from a young age. However, as Brennan says, using open source makes computing resources available to all the children.

A child who uses LibreOffice at school will not take long to adjust to Microsoft Office, nor will a child who uses GIMP (GNU Image Manipulation Program) at school need more than a brief course to become accustomed to Photoshop, if he or she decides to get training in it after school. And besides all of these applications are getting better all the time, and more and more smaller businesses understand the overwhelming advantages of using open source software.

So not only does a child benefit from a generalist computer education with open source software, but it is most certainly feasible that having trained in LibreOffice, GIMP, Inkscape, etc. might actually be advantageous when it comes to getting a job. At the very least, having experience in the above is much better than having none at all on account of not being able to afford the licence fees.

Robot waiters: the end of customer service as we know it?

Many depictions of the future include robots performing jobs like waiting on tables and cleaning the streets. A group of students from Bangkok University in Thailand are using Linux to bring us one rude step closer to such a world.

Bangkok University Students Develop Waiter Robot

The question remains whether they might make the waiter robots too realistic and program them to get orders wrong sometimes and avoid eye contact with you when you want to change your order.

LXer: 6 of the Best Free Linux Point-of-Sale Software

Many businesses are already using Linux Point-of-Sale software. This list illustrates yet again that there are plenty of reasons to consider alternatives to Windows-based POS software:

LXer: 6 of the Best Free Linux Point-of-Sale Software

What do you think? What is your experience with POS software?

How to use Weebly to create a brilliant eBay listing

If you've sold on eBay, you know that the easy, unrewarding way of describing your listing is by simply adding text:

Where, oh where, shall I begin?
Now, you could use professional templates or master the desktop software out there, and there's nothing wrong with that.  However, if you use Weebly, there is a way to make your listing look great, with just a little tweaking to get it just right.

You will need:

  1. A Weebly account
  2. An eBay account
  3. A browser that allows you to view the source code of a web page (e.g. Firefox)
  4. A text editor capable of finding and replacing search terms (e.g. gedit in Linux, Notepad in Windows)
First, create a page in Weebly and make it look beautiful:

Don't you want to read more?
Next, publish your page.


Now go to your published page,



And then jump into the source code.  Find the section that says:

And copy everything between and the end of the content:

Paste this code into a text editor, and follow this example:


Obviously, you need to substitute http://www.yourownurl.com

And there you go: now all you have to do is paste this text into the empty description box in eBay and you have a professional listing!


Why Gmail is my first and only choice

One of the first questions I ask when I meet a client is, "what do you use for email?" Usually it's Outlook, sometimes Hotmail, occasionally Gmail.

This article illustrates yet again why Gmail is my first, and only choice, even if you use a desktop client such as Outlook, or even better, Thunderbird.

How To Quickly Find Messages With Attachments In Gmail

Gmail is incredibly powerful webmail and thanks to Google's generous inbox allotment you never really need to delete your emails unless you really want to.

I will write a separate post soon listing the main reasons why you should strongly consider making Gmail part of your email setup.

I love Google Command Line (googlecl)

Here's how to add a year's worth of networking events to Google Calendar in one fell swoop in Linux:

1) Open your terminal (ctrl+alt+T in Ubuntu)

cd ~/Documents/bin #where I keep shell scripts
gedit networking2011.sh

[Now enter your input using Google Calendar's Quick Add syntax]

  • start with #!/bin/bash
  • For ease of reference put the location as commented header
  • add --verbose to see the magic happening when you execute the file
  • Below is my schedule as an example:

#!/bin/bash



#Maroondah


google calendar add "Your Business Online workshop at Council Offices 304A Maroondah Highway, Ringwood 2011-05-25 09:00-14:00" --verbose
google calendar add "TRAVEL to Council Offices 304A Maroondah Highway, Ringwood 2011-03 08:00-09:00" --verbose


#Kingston


google calendar add "Starting Your Business workshop at Kingston City Council 1230 Nepean Highway, Cheltenham 2011-02-23 12:30-17:30" --verbose
google calendar add "TRAVEL to Kingston City Council 1230 Nepean Highway, Cheltenham 11:30-12:30" --verbose


google calendar add "Your Business Online at Kingston City Council 1230 Nepean Highway, Cheltenham 2011-08-10 17:30-22:30" --verbose
google calendar add "TRAVEL to Kingston City Council 1230 Nepean Highway, Cheltenham 2011-08-10 16:00-17:00" --verbose


google calendar add "Marketing For Growth workshop at Kingston City Council 1230 Nepean Highway, Cheltenham 2011-08-24 16:30-21:30" --verbose
google calendar add "TRAVEL to Kingston City Council 1230 Nepean Highway, Cheltenham 2011-08-24 15:30-16:30" --verbose


#Richmond


google calendar add "Climbing The Mountain To Business Growth at Richmond Town Hall, 333 Bridge Road, Richmond 2011-03-30 17:30-21:00" --verbose
google calendar add "TRAVEL to Richmond Town Hall, 333 Bridge Road, Richmond 2011-03-30 16:30-17:30" --verbose


google calendar add "Business Planning Basics Seminar at Richmond Town Hall 333 Bridge Road, Richmond 2011-03-16 17:30-21:00" --verbose
google calendar add "TRAVEL to 333 Bridge Road, Richmond 2011-03-16 16:30-17:30" --verbose


#Melbourne


google calendar add "Business Planning Basics seminar at Small Business Information Centre 113 Exhibition Street, Melbourne 2011-02-23 17:15-20:30" --verbose
google calendar add "TRAVEL to Small Business Information Centre 113 Exhibition Street, Melbourne 2011-02-23 16:15-17:15" --verbose


google calendar add "Skills For Growth at Southern Cross Building Level 27, 121 Exhibition Street, Melbourne 2011-03-07 09:30-15:00" --verbose
google calendar add "TRAVEL to Southern Cross Building Level 27, 121 Exhibition Street, Melbourne 2011-03-07 08:30-09:30" --verbose


#Knox
google calendar add "Networking Seminar at Knox City Council 511 Burwood Highway, Wantirna South 2011-07-20 17:30-21:00" --verbose
google calendar add "TRAVEL to Knox City Council 511 Burwood Highway, Wantirna South 2011-07-20 16:00-17:30" --verbose


#Malvern


google calendar add "Your Business Online workshop at Malvern Town Hall 1251 High Street, Malvern 2011-05-31 17:30-22:30" --verbose
google calendar add "TRAVEL to Malvern Town Hall 1251 High Street, Malvern 2011-05-31 16:30-17:30" --verbose


google calendar add "Networking Seminar at Malvern Town Hall 1251 High Street, Malvern 2011-08-18 17:30-22:30" --verbose
google calendar add "TRAVEL to Malvern Town Hall 1251 High Street, Malvern 2011-08-18 16:30-17:30" --verbose


#St Kilda


google calendar add "Green Your Business, Grow Your Business seminar at St Kilda Town Hall 2011-03-23 17:30-21:00" --verbose
google calendar add "TRAVEL to St Kilda Town Hall 2011-03-23 16:30-17:30" --verbose


#Brunswick


google calendar add "Building Successful Brands Learning Lunch at Brunswick Business Incubator, 420 Victoria Street, Brunswick 2011-02-09 11:30-14:30" --verbose
google calendar add "TRAVEL to Brunswick Business Incubator, 420 Victoria Street, Brunswick 2011-02-09 10:30-11:30" --verbose


google calendar add "Greening Your Business Learning Lunch at Brunswick Business Incubator, 420 Victoria Street, Brunswick 2011-03-09 11:30-14:30" --verbose
google calendar add "TRAVEL to Brunswick Business Incubator, 420 Victoria Street, Brunswick 2011-03-09 10:30-11:30" --verbose


google calendar add "'Selling Online Made Easy' Seminar at Brunswick Business Incubator, 420 Victoria Street, Brunswick 2011-03-23 09:30-13:30" --verbose
google calendar add "TRAVEL to Brunswick Business Incubator, 420 Victoria Street, Brunswick 2011-03-23 08:30-09:30" --verbose


google calendar add "Introduction to E-Business Seminar at Brunswick Business Incubator, 420 Victoria Street, Brunswick 2011-02-23 09:30-13:30" --verbose
google calendar add "TRAVEL to Brunswick Business Incubator, 420 Victoria Street, Brunswick 2011-02-23 08:30-09:30" --verbose


google calendar add "Introduction to E-Business Seminar at Brunswick Business Incubator, 420 Victoria Street, Brunswick 2011-05-28 09:30-13:30" --verbose
google calendar add "TRAVEL to Brunswick Business Incubator, 420 Victoria Street, Brunswick 2011-05-28 08:30-09:30" --verbose


Now your file is almost ready.  Back to the terminal:

chmod +x events2011.sh
./events2011.sh

And there you go.  That's it.

Here's how it turned out for me:

clockworkpc@dell-inspiron-1564:~/Documents/bin/google$ ./events20110128.sh

Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'Your Business Online workshop at Council Offices 304A Maroondah Highway, Ringwood 2011-05-25 09:00-14:00']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-Your 0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'TRAVEL to Council Offices 304A Maroondah Highway, Ringwood 2011-03 08:00-09:00']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-TRAVE0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'Starting Your Business workshop at Kingston City Council 1230 Nepean Highway, Cheltenham 2011-02-23 12:30-17:30']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-Start0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'TRAVEL to Kingston City Council 1230 Nepean Highway, Cheltenham 11:30-12:30']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-TRAVE0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'Your Business Online at Kingston City Council 1230 Nepean Highway, Cheltenham 2011-08-10 17:30-22:30']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-Your 0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'TRAVEL to Kingston City Council 1230 Nepean Highway, Cheltenham 2011-08-10 16:00-17:00']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-TRAVE0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'Marketing For Growth workshop at Kingston City Council 1230 Nepean Highway, Cheltenham 2011-08-24 16:30-21:30']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-Marke0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'TRAVEL to Kingston City Council 1230 Nepean Highway, Cheltenham 2011-08-24 15:30-16:30']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-TRAVE0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'Climbing The Mountain To Business Growth at Richmond Town Hall, 333 Bridge Road, Richmond 2011-03-30 17:30-21:00']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-Climb0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'TRAVEL to Richmond Town Hall, 333 Bridge Road, Richmond 2011-03-30 16:30-17:30']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-TRAVE0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'Business Planning Basics Seminar at Richmond Town Hall 333 Bridge Road, Richmond 2011-03-16 17:30-21:00']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-Busin0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'TRAVEL to 333 Bridge Road, Richmond 2011-03-16 16:30-17:30']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-TRAVE0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'Business Planning Basics seminar at Small Business Information Centre 113 Exhibition Street, Melbourne 2011-02-23 17:15-20:30']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-Busin0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'TRAVEL to Small Business Information Centre 113 Exhibition Street, Melbourne 2011-02-23 16:15-17:15']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-TRAVE0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'Skills For Growth at Southern Cross Building Level 27, 121 Exhibition Street, Melbourne 2011-03-07 09:30-15:00']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-Skill0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'TRAVEL to Southern Cross Building Level 27, 121 Exhibition Street, Melbourne 2011-03-07 08:30-09:30']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-TRAVE0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'Networking Seminar at Knox City Council 511 Burwood Highway, Wantirna South 2011-07-20 17:30-21:00']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-Netwo0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'TRAVEL to Knox City Council 511 Burwood Highway, Wantirna South 2011-07-20 16:00-17:30']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-TRAVE0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'Your Business Online workshop at Malvern Town Hall 1251 High Street, Malvern 2011-05-31 17:30-22:30']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-Your 0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'TRAVEL to Malvern Town Hall 1251 High Street, Malvern 2011-05-31 16:30-17:30']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-TRAVE0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'Networking Seminar at Malvern Town Hall 1251 High Street, Malvern 2011-08-18 17:30-22:30']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-Netwo0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'TRAVEL to Malvern Town Hall 1251 High Street, Malvern 2011-08-18 16:30-17:30']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-TRAVE0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'Green Your Business, Grow Your Business seminar at St Kilda Town Hall 2011-03-23 17:30-21:00']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-Green0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'TRAVEL to St Kilda Town Hall 2011-03-23 16:30-17:30']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-TRAVE0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'Building Successful Brands Learning Lunch at Brunswick Business Incubator, 420 Victoria Street, Brunswick 2011-02-09 11:30-14:30']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-Build0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'TRAVEL to Brunswick Business Incubator, 420 Victoria Street, Brunswick 2011-02-09 10:30-11:30']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-TRAVE0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'Greening Your Business Learning Lunch at Brunswick Business Incubator, 420 Victoria Street, Brunswick 2011-03-09 11:30-14:30']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-Green0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'TRAVEL to Brunswick Business Incubator, 420 Victoria Street, Brunswick 2011-03-09 10:30-11:30']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-TRAVE0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u"'Selling Online Made Easy' Seminar at Brunswick Business Incubator, 420 Victoria Street, Brunswick 2011-03-23 09:30-13:30"]
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-'Sell0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'TRAVEL to Brunswick Business Incubator, 420 Victoria Street, Brunswick 2011-03-23 08:30-09:30']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-TRAVE0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'Introduction to E-Business Seminar at Brunswick Business Incubator, 420 Victoria Street, Brunswick 2011-02-23 09:30-13:30']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-Intro0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'TRAVEL to Brunswick Business Incubator, 420 Victoria Street, Brunswick 2011-02-23 08:30-09:30']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-TRAVE0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'Introduction to E-Business Seminar at Brunswick Business Incubator, 420 Victoria Street, Brunswick 2011-05-28 09:30-13:30']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-Intro0, status: 201, reason: Created
Gdata will be imported from /usr/lib/pymodules/python2.6/gdata/__init__.pyc
Your pythonpath: None
Initialized googlecl.service.BaseServiceCL
missing_reqs: ['src']
Option convert: True
Option delimiter: ,
Option hostid: clockworkpc@dell-inspiron-1564
Option src: [u'TRAVEL to Brunswick Business Incubator, 420 Victoria Street, Brunswick 2011-05-28 08:30-09:30']
Option user: alexandergarber
Option verbose: True
args: []
Loaded token from file
Successfully set token
ID: insert-TRAVE0, status: 201, reason: Created