Archive

Archive for the ‘Open Source Software’ Category

Create a GTK+ application on Linux with Objective-C

December 8th, 2010 8 comments

As sort of follow-up-in-spirit to my older post I decided to share a really straight forward way to use Objective-C to build GTK+ applications.

Objective-what?

Objective-C is an improvement to the iconic C programming language that remains backwards compatible while adding many new and interesting features. Chief among these additions is syntax for real objects (and thus object-oriented programming). Popularized by NeXT and eventually Apple, Objective-C is most commonly seen in development for Apple OSX and iOS based platforms. It ships with or without a large standard library (sometimes referred to as the Foundation Kit library) that makes it very easy for developers to quickly create fast and efficient programs. The result is a language that compiles down to binary, requires no virtual machines (just a runtime library), and achieves performance comparable to C and C++.

Marrying Objective-C with GTK+

Normally when writing a GTK+ application the language (or a library) will supply you with bindings that let you create GUIs in a way native to that language. So for instance in C++ you would create GTK+ objects, whereas in C you would create structures or ask functions for pointers back to the objects. Unfortunately while there used to exist a couple of different Objective-C bindings for GTK+, all of them are quite out of date. So instead we are going to rely on the fact that Objective-C is backwards compatible with C to get our program to work.

What you need to start

I’m going to assume that Ubuntu will be our operating system for development. To ensure that we have what we need to compile the programs, just install the following packages:

  1. gnustep-core-devel
  2. libgtk2.0-dev

As you can see from the list above we will be using GNUstep as our Objective-C library of choice.

Setting it all up

In order to make this work we will be creating two Objective-C classes, one that will house our GTK+ window and another that will actually start our program. I’m going to call my GTK+ object MainWindow and create the two necessary files: MainWindow.h and MainWindow.m. Finally I will create a main.m that will start the program and clean it up after it is done.

Let me apologize here for the poor code formatting; apparently WordPress likes to destroy whatever I try and do to make it better. If you want properly indented code please see the download link below.

MainWindow.h

In the MainWindow.h file put the following code:

#import <gtk/gtk.h>
#import <Foundation/NSObject.h>
#import <Foundation/NSString.h>

//A pointer to this object (set on init) so C functions can call
//Objective-C functions
id myMainWindow;

/*
* This class is responsible for initializing the GTK render loop
* as well as setting up the GUI for the user. It also handles all GTK
* callbacks for the winMain GtkWindow.
*/
@interface MainWindow : NSObject
{
//The main GtkWindow
GtkWidget *winMain;
GtkWidget *button;
}

/*
* Constructs the object and initializes GTK and the GUI for the
* application.
*
* *********************************************************************
* Input
* *********************************************************************
* argc (int *): A pointer to the arg count variable that was passed
* in at the application start. It will be returned
* with the count of the modified argv array.
* argv (char *[]): A pointer to the argument array that was passed in
* at the application start. It will be returned with
* the GTK arguments removed.
*
* *********************************************************************
* Returns
* *********************************************************************
* MainWindow (id): The constructed object or nil
* arc (int *): The modified input int as described above
* argv (char *[]): The modified input array modified as described above
*/
-(id)initWithArgCount:(int *)argc andArgVals:(char *[])argv;

/*
* Frees the Gtk widgets that we have control over
*/
-(void)destroyWidget;

/*
* Starts and hands off execution to the GTK main loop
*/
-(void)startGtkMainLoop;

/*
* Example Objective-C function that prints some output
*/
-(void)printSomething;

/*
********************************************************
* C callback functions
********************************************************
*/

/*
* Called when the user closes the window
*/
void on_MainWindow_destroy(GtkObject *object, gpointer user_data);

/*
* Called when the user presses the button
*/
void on_btnPushMe_clicked(GtkObject *object, gpointer user_data);

@end

MainWindow.m

For the class’ actual code file fill it in as show below. This class will create a GTK+ window with a single button and will react to both the user pressing the button, and closing the window.

#import “MainWindow.h”

/*
* For documentation see MainWindow.h
*/

@implementation MainWindow

-(id)initWithArgCount:(int *)argc andArgVals:(char *[])argv
{
//call parent class’ init
if (self = [super init]) {

//setup the window
winMain = gtk_window_new (GTK_WINDOW_TOPLEVEL);

gtk_window_set_title (GTK_WINDOW (winMain), “Hello World”);
gtk_window_set_default_size(GTK_WINDOW(winMain), 230, 150);

//setup the button
button = gtk_button_new_with_label (“Push me!”);

gtk_container_add (GTK_CONTAINER (winMain), button);

//connect the signals
g_signal_connect (winMain, “destroy”, G_CALLBACK (on_MainWindow_destroy), NULL);
g_signal_connect (button, “clicked”, G_CALLBACK (on_btnPushMe_clicked), NULL);

//force show all
gtk_widget_show_all(winMain);
}

//assign C-compatible pointer
myMainWindow = self;

//return pointer to this object
return self;
}

-(void)startGtkMainLoop
{
//start gtk loop
gtk_main();
}

-(void)printSomething{
NSLog(@”Printed from Objective-C’s NSLog function.”);
printf(“Also printed from standard printf function.\n”);
}

-(void)destroyWidget{

myMainWindow = NULL;

if(GTK_IS_WIDGET (button))
{
//clean up the button
gtk_widget_destroy(button);
}

if(GTK_IS_WIDGET (winMain))
{
//clean up the main window
gtk_widget_destroy(winMain);
}
}

-(void)dealloc{
[self destroyWidget];

[super dealloc];
}

void on_MainWindow_destroy(GtkObject *object, gpointer user_data)
{
//exit the main loop
gtk_main_quit();
}

void on_btnPushMe_clicked(GtkObject *object, gpointer user_data)
{
printf(“Button was clicked\n”);

//call Objective-C function from C function using global object pointer
[myMainWindow printSomething];
}

@end

main.m

To finish I will write a main file and function that creates the MainWindow object and eventually cleans it up. Objective-C (1.0) does not support automatic garbage collection so it is important that we don’t forget to clean up after ourselves.

#import “MainWindow.h”
#import <Foundation/NSAutoreleasePool.h>

int main(int argc, char *argv[]) {

//create an AutoreleasePool
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

//init gtk engine
gtk_init(&argc, &argv);

//set up GUI
MainWindow *mainWindow = [[MainWindow alloc] initWithArgCount:&argc andArgVals:argv];

//begin the GTK loop
[mainWindow startGtkMainLoop];

//free the GUI
[mainWindow release];

//drain the pool
[pool release];

//exit application
return 0;
}

Compiling it all together

Use the following command to compile the program. This will automatically include all .m files in the current directory so be careful when and where you run this.

gcc `pkg-config –cflags –libs gtk+-2.0` -lgnustep-base -fconstant-string-class=NSConstantString -o “./myprogram” $(find . -name ‘*.m’) -I /usr/include/GNUstep/ -L /usr/lib/GNUstep/ -std=c99 -O3

Once complete you will notice a new executable in the directory called myprogram. Start this program and you will see our GTK+ window in action.

If you run it from the command line you can see the output that we coded when the button is pushed.

Wrapping it up

There you have it. We now have a program that is written in Objective-C, using C’s native GTK+ ‘bindings’ for the GUI, that can call both regular C and Objective-C functions and code. In addition, thanks to the porting of both GTK+ and GNUstep to Windows, this same code will also produce a cross-platform application that works on both Mac OSX and Windows.

Source Code Downloads

Source Only Package
File name: objective_c_gtk_source.zip
File hashes: Download Here
File size: 2.4KB
File download: Download Here

Originally posted on my personal website here.




I am currently running a variety of distributions, primarily Linux Mint 17.
Previously I was running KDE 4.3.3 on top of Fedora 11 (for the first experiment) and KDE 4.6.5 on top of Gentoo (for the second experiment).
Check out my profile for more information.

Django Development on Ubuntu 10.04

December 8th, 2010 2 comments

When I’m not rocking out my ninja-like linux skillz here at The Linux Experiment, I like to spend my spare time working on SlightlySauced, a weekly round table podcast. When we started the show, we chose to host it on a simple Tumblr blog, because it offered a fast setup experience and didn’t require much additional configuration to work well enough for our purposes. In light of this week’s Tumblr outages, we’ve decided to move the show off of the cloud and onto the same hosting provider that this site resides on.

Since I find myself with a little bit of spare time recently, I’ve also decided to write a custom site for the show using Django, my new favourite web framework. If you’re interested in trying your hand at Django development (and honestly, if you’re doing web development of any kind, why haven’t you tried it yet?), you can follow along with my progress here.

Step 1: Installing MySql

Because Django is a Python-based web framework, it includes SQLite out of the box. My web host of choice provides solid MySQL support, so I’ve decided to swap out SQLite for MySql. This requires that I install a local MySQL server for development purposes. Ubuntu has posted some handy documentation that I followed loosely. I’ll repeat the relevant steps here for posterity and ease of use.

From your terminal, type:

sudo apt-get install mysql-server

During the installation process, you’ll be prompted to enter a password for MySql’s root user account. If your server is going to be public-facing, it’s a good idea to enter a strong password. If it’s just for development purposes, you can probably use something weaker and easier to type.

Once the installation has finished, check that your server is running by typing:

sudo netstat -tap | grep mysql

This command should output something like the following:

tcp     0     0     localhost:mysql     *:*     LISTEN 2556/mysqld

Note: This command didn’t actually work for me. I had to remove the pipe and type just

sudo netstat -tap

and then search the resulting list for the MySql entry. I found it easily enough, and was convinced that the daemon was running and waiting for clients.

Step 2: MySQL Workbench (Optional)

Once your MySql daemon is up and running, you could edit the /etc/mysql/my.cnf file to alter its configuration. Instead, I opted to use MySQL Workbench, a decent graphical management tool that is distributed by Oracle (the same folks who make MySql). I’ve used it extensively at work, so I’m familiar with it and comfortable with its quirks. If you care to use it, you’ll have to grab it from Oracle’s website, as it’s not in the Ubuntu repositories. Luckily, Oracle provides a Ubuntu 10.04 64-bit *.deb that can be easily installed with GDebi. For those who care about such things, MySQL Workbench is a fully OSS GPL-licensed product, so there’s no funny stuff going on with regards to licensing.

With MySQL Workbench up and running, you’ll be presented with a screen like this one:

Click on New Connection under the SQL Development column in the bottom left of the screen, and enter the connection details of your local MySql server. It should be available via the loopback IP 127.0.0.1 on port 3306. The default username is root, and the password is whatever you set during the installation process. Once you get access, you can create a new schema and fire a few commands at it to test your setup.

Head back over to the Home tab and click on New Server Instance under the Server Administration column at the bottom right of the screen. In the dialog that pops up, select Take Parameters from Existing Database Connection and hit Next a bunch of times. The resulting window is a full MySQL daemon monitoring window that details traffic, the number of connections to the server, etc. More importantly, it allows you to set up user accounts and change configuration variables from a handy graphical front end instead of wading through MySQL’s extensive configuration files.

I headed over to the Accounts tab and created a user account for Django. At this stage of development, you’ll want to give this account full root access to the database, as Django will automatically create and drop schemas and tables as you code your website. Once development is done, you can pare these down to only those that are necessary.

Step 3: Installing Django

Holy crap, that was a lot of work, and we haven’t even gotten our framework of choice installed yet! Let’s get on with that. The project has some excellent documentation on this issue. I’ll repeat the basic steps here for your convenience, but strongly suggest that you read through the full instruction set if you encounter any issues or want to perform a customized installation.

Since Django is a python-based framework, you’ll need to make sure that you have a compatible version of Python installed on your system. At the time of writing, Ubuntu 10.04 ships with Python version 2.6.5. Django only works with Python versions 2.4 through 2.7. If you’re not running Ubuntu 10.04, you can check which version you have installed by typing

python –version

in your terminal. Once you’ve ensured that you have a compatible Python version installed, type

sudo apt-get install python-django

in your terminal to install version 1.1.1 of the framework from your repositories. Once the installation has finished, you should check the installed version. Since Django lives inside of python, you’ll need to start a python terminal by typing

python

in your terminal. Once started, type

import django
print django.get_version()

If you don’t see any horrendous-looking error messages, you’re good to go. As a side note, if you type

apt-cache search django

you’ll see that the Ubuntu repositories include quite a few handy Django plugins and applications that you might want to use in your projects, including a URL shortener, a user-registration module, and a contact form. Each of these can be installed on your system and included in any Django project quite easily. I’ll probably end up using one or more in my project to save me some time.

Finally, you’ll need to install an extra database connector for python in order to use MySql from within Django. In Ubuntu 10.04, this package is called python-mysqldb.

Step 4: Write Some Code!

So you’re up and running. If you’re not familiar with Django, I suggest that you run through their online tutorial. It’s well-written and provides a great introduction to some of the stuff that the framework can do.

Whatever you do, have fun! In my experience, Django makes web development a pleasure because it takes care of a lot of the nitty-gritty crap for you and lets you get on with solving harder problems.

Let me know what you think in the comments.

Edit: Added an extra database connector package that’s necessary if you want to use MySql with Django.




On my Laptop, I am running Linux Mint 12.
On my home media server, I am running Ubuntu 12.04
Check out my profile for more information.

Samsung Captivate SGH-i896 Meets Linux

November 7th, 2010 2 comments

Yesterday, I picked up the newly launched (in Canada) Samsung Captivate. So far, I’m extremely impressed with the device. The super amoled display is gorgeous, the touch screen is responsive, and the UI is stunning to look at and use. Coming from a Blackberry Curve 8310, this phone is like a digital orgasm.

Once I finished gushing over how awesome this phone is, I decided to try and get it to interact with my Linux Mint 9 Isadora install. For now, I just want to be able to transfer images and music to and from the device, although later on, I’d like to get a development environment set up and try my hand at writing some apps.

My first try at getting the phone to play nicely with Linux was not successful. It took me a little bit of fooling around before I could figure it out, but here goes:

  • On the phone, navigate to Settings > Applications > USB Settings and make sure that ‘Ask on Connection’ is selected
  • Plug your phone into the a USB port, and when prompted, select ‘Mass Storage’ from the dialog that appears on the phone
  • At this point, if you open up your Computer in Nautilus, you should see an icon that says something like SAMSUNG SGH-I896, but you won’t be able to interact with it in any way
  • On the phone, grab the notification bar at the top of the home screen and drag it down
  • In the notifications area, tap USB Connected, and when prompted, select Mount from the dialog
  • Back in Nautilus, the icon under Computer should now say something like SAMSUNG SGH-I896: 14GB Filesystem, and you should be able to read and write to the card

With these steps complete, I was able to interact with the phone through the file system and from within Banshee and FSpot. I’m not sure why the phone won’t allow Linux to mount its storage devices by default when in Mass Storage mode, but this little work around seems to make it behave correctly.

Drop me a line in the comments if you have any Linux/Android compatibility questions, and I’ll do my best to help you out.




On my Laptop, I am running Linux Mint 12.
On my home media server, I am running Ubuntu 12.04
Check out my profile for more information.

VOIP with Linode, Ubuntu, Asterisk and FreePBX

October 29th, 2010 1 comment

Overview and Introduction

I’ve been dabbling with managing a VOIP server for the past year or so, using CentOS, Asterisk and FreePBX on a co-located server. Recently Dave and I needed to move to our own machine, and decided to use TEH CLOUD to reduce management and get a fresh start. There are hundreds of hosts out there offering virtual private servers (VPS’s). We’ve standardized on Linode for our small business for a few reasons. While I don’t want to sound like a complete advertisement, I’ve been incredibly impressed with them:

  • Performance. The host systems at Linode run at least 4-way 2GHz Xeon dual-core CPUs (I’ve seen higher as well) and you’re guaranteed the RAM you pay for. Pricing is generally based on how much memory you need.
  • Pricing. For a 512MB Linode, you pay $19.95 US per month. Slicehost (a part of Rackspace, and a Linode competitor) charges the same amount for a 256MB slice. Generally you want at least 512MB RAM for a Linux machine that’s not a test/development box.
  • Features. If you have multiple VMs in the same datacenter, you can assign them private IPs and internal traffic doesn’t count toward your bandwidth allowance. Likewise, bandwidth is pooled among all your VMs; so buying two VMs with 200GB bandwidth each gives 400GB for all your systems.

With full root access and the Linux distribution of your choice, it’s very easy to set up and tear down VMs.

Why VOIP?
When people hear VOIP, they generally assume either a flaky enterprise system with echoing calls or something like Skype. Properly configured, a VOIP system offers a number of really interesting features:

  • Low-cost long distance and international calling. The provider we use, voip.ms, offers outgoing calls for $0.0052 per minute to Canada and $0.0105/minute to the US on their value route.
  • Cheap phone numbers – direct inward dialing – are available for $0.99 per month in your region. These phone numbers are virtual and can be configured to do nearly anything you want. Incoming calls are $0.01/minute, and calls between voip.ms numbers are free.
  • Want to take advantage of cheap long distance from your cell phone? Set up a Direct Inward System Access path, which gives you a dial tone for making outgoing calls when you call a local number. Put your DID number on your My5 list, and you’re set to reduce bill overages.
  • Voicemail becomes much more useful when the VOIP server sends you an email with a WAV attachment and caller ID information.
  • Want to set up an interactive voice response menu, time conditions, blacklist telemarketers, manage group conferences or have witty hold music? All available with FreePBX and Asterisk.

Continue reading for server setup details and security best practices…

Read more…




I am currently running various *BSD variants for this Experiment.
I currently run a mix of Windows, OS X and Linux systems for both work and personal use.
For Linux, I prefer Ubuntu LTS releases without Unity and still keep Windows 7 around for gaming.
Check out my profile for more information.
Categories: Asterisk, FreePBX, Jake B, Ubuntu Tags:

One week, three distributions (Day 7: Conclusions)

October 24th, 2010 No comments

Well it’s been an interesting week. I’ve gotten to try out three new distributions and share my thoughts with everyone here. My original goal was to see which one of these distributions offered the best first impression and declare that one as the ‘winner’. However in actually working my way through these great releases I have changed my mind somewhat.

What makes a great distribution great?

This is a very interesting question that I’m sure would generate a wide array of unique and passionate responses. Some prefer ease of use, while others demand nothing less than complete control over what they can tweak. There are people who swear by using nothing but open source solutions, while others are happy to add proprietary code into the mix as well. This is the great thing about Linux, we get so many choices which means we get to decided what we want.

Unfortunately this has also resulted in a bit of distribution zealotry; like choosing Ubuntu over Fedora, or Arch over OpenSUSE is somehow taking a side in some giant war. Instead of all of the infighting we should be celebrating the fact that when Ubuntu comes out with a new piece of user-friendly software, or Fedora introduces a new awesome technology, we can share and integrate it right into all distributions.

So what makes a great distribution great? A distribution is great because it works for you, it suites your needs, fits your personality and lets you do what you want to do. At the end of the day isn’t that what open source is about?

Final thoughts

OK enough of the preachy writing. I think that all of the distributions I have tested this week were very good. They each embody the spirit of open source in their own little ways.

Kubuntu 10.10

Awards: The most improved release. Most likely to recover lost KDE fans.

I was extremely impressed with this release. The folks over at the Kubuntu project deserve a huge round of applause for their continued work on this often forgotten Ubuntu sibling. This release is unlike any other that I’ve tried from Kubuntu, and I hope it marks a turning point in the distribution’s history. If the next release sees anywhere close to the improvement that this release did it may even unseat Ubuntu as the go to Linux release. If you haven’t tried out this release I urge you to give it a shot.

Ubuntu 10.0

Awards: The most refined. Most likely to be installed on a new Linux user’s computer.

Ubuntu makes a return from its last long-term support (LTS) release with this stellar offering. For a release that is meant to experiment with changes, which might eventually be incorporated into a future LTS release, this version feels as polished as ever. The new theme, font, store and integration features make this an absolutely solid release. If you’re an Ubuntu user I’m sure you have already upgraded. If you develop for a different distribution, this might still be worth looking into if only to steal the good parts for your release of choice. Either way I think this release of Ubuntu marks a whole new level of application integration on the Linux desktop and I am excited to see where they go next with it.

Linux Mint Debian Edition

Awards: The most advanced. Most likely to see the fastest improvement.

For people who have been using Debian for a while now this release will feel right at home. It combines the best parts of Debian testing, modern software, stability and thousands of packages, with the Linux Mint team’s renown ability to iron out the kinks in any Linux distribution. I think that this release will see so much improvement in the next couple of months that it has the potential to steal users away from other rolling release distributions with its easy to use desktop. While this current iteration does have some issues I hardly think that they are anything to run away from. For technical users looking for the newest stuff, while hoping avoiding the vast majority of headaches other distributions can cause, this one is for you.

My Choice

For me personally I have been very happy with Linux Mint 9 and look forward to version 10 when it ships later this year. Until then however I think I will be sticking with the one that most closely resembles my current set up. No not Linux Mint Debian Edition, but Ubuntu 10.10. That being said I do look forward to giving Fedora 14 and Linux Mint 10 a ride soon.




I am currently running a variety of distributions, primarily Linux Mint 17.
Previously I was running KDE 4.3.3 on top of Fedora 11 (for the first experiment) and KDE 4.6.5 on top of Gentoo (for the second experiment).
Check out my profile for more information.

One week, three distributions (Day 6: Linux Mint Debian Edition)

October 23rd, 2010 7 comments

To round out the week I installed the newly released Linux Mint Debian Edition (LMDE). Like the other posts I have made I will walk you through my first impressions as well as the general overall feel of the distribution.

Install

LMDE’s install is something quite different from the experiences I had with Ubuntu 10.10 and Kubuntu 10.10. While it is still a very polished installer (complete with a single slide slide-show even!) it does lack a couple of features that make it far less user friendly. Where the other installers basically held your hand in every way, LMDE requires at least some technical understanding in order to complete. For instance there is no friendly auto-partition step, instead LMDE leaves the user to do it manually with GParted. While hardly the end of the world it is enough of a challenge that you could no longer just hand this disc to your non-technical friend and let them have at it. However once that step is complete the installer is very straight forward and rips through the installation in a matter of minutes.

First boot and drivers (oh my!)

I have to say that my first impression of LMDE was a mixed one. On one hand it spewed text everywhere as it booted, which I assume came from its Debian heritage. On the other hand the boot was ridiculously fast. I know it’s been one of Canonical’s goals to make Ubuntu the fastest booting Linux distribution but I have to say that a stock install of LMDE (and maybe even Debian Testing) will easily give that claim a run for its money.

Once at my desktop I was presented with a very familiar Linux Mint set up. If you were to place this desktop next to Linux Mint’s Ubuntu derivative (Linux Mint 9 for instance) I would be very hard pressed to spot any differences.

Unfortunately one thing that was glaringly missing was the lack of the Ubuntu automatic driver detection and install system jockey. Without jockey I had to resort to Fedora-esque measures in order to install the correct driver which is necessary for correct display and power management on my laptop. For reference here are the steps I took in order to install the proprietary ATI driver and setup my X configuration:

1) Run the following command in order to make sure you have the most recent package list

$ sudo apt-get update

2) You may want to now install all available updates so that we start with the most recent kernel

$ sudo apt-get dist-upgrade

3) Install the kernel headers so that we can configure it to work with the ATI driver

$ sudo apt-get install linux-headers-2.6-$(uname -r | sed ‘s,.*-,,’)

4) Install the ATI driver and control panel

$ sudo apt-get install fglrx-control fglrx-driver

5) From there just follow the instructions on my post here in order to generate the new X configuration file and maybe even fix your vsync issues at the same time.

I have read that jockey is currently being ported and will appear in the LMDE repositories so hopefully this small issue will be solved quickly.

Rolling release = LOTS OF UPDATES

One of LMDE’s big selling points is that it is a rolling release, which means that you will continue to get new packages and updates on your system without having to reinstall at 6 month intervals like some other distributions. Strangely though LMDE does not ship with update checking enabled which I found kind of weird. A quick forced check later and I discovered why the team may have made that choice

That’s right, almost 500 updates… Almost every package on my newly installed machine had to be replaced updated. This is definitely a release for people looking for the newest software but could easily lead to update fatigue for everyone else.

32-bit working system vs PAE kernel broken system

One of the unfortunate things about this release is that it only comes in a 32-bit version. As I run a 64-bit processor with 4GB of RAM it irks me to know that I am not using the full potential of my system. I starting looking into Physical Address Extension (PAE) kernels as a solution to this problem. PAE kernels, for those who don’t know, use a system of memory indirection in order to allow a 32-bit processor access to more than 4GB of mappable memory. In the case of Linux the PAE kernel can map up to 64GB of RAM.

After a bit of googling I stumbled upon instructions to install a PAE kernel by simply installing the linux-image-686-bigmem meta-package. Unfortunately this quick fix, as most often is the case, didn’t exactly turn out well and actually broke my GDM system. Without GDM I was unable to log into my desktop and this experiment came to an end. In the interest of time I decided to just reinstall instead of trying to troubleshoot how to fix what I had inadvertently broken.

Software selection

The software selection in LMDE is impressive and in many ways is what Ubuntu’s used to be. Here you will find (pre-installed) Flash, the Java and Mono runtimes, an MP3 codec and even the Gimp. Everything, like the other Linux Mint releases, is designed to make it so that the user does not have to search for solutions to missing functionality.

Because this is a rolling release it doesn’t really make sense for me to review the included software as much as it does to just mention it. For web browsing LMDE, like Ubuntu, ships with Firefox. To send and receive e-mail it calls upon Firefox’s cousin Thunderbird. Instant messaging is handled by Pidgin and your music collection is controlled by Rhythmbox. F-Spot remains as the photo manager, unlike Ubuntu which replaced it with Shotwell, while Gwibber and Totem round out the release.

Conclusion

Currently Linux Mint Debian Edition is somewhat of an enthusiast’s release. It has the potential to be a great rolling release but it’s pretty obvious that right now it needs some work to get there. For instance, why when I updated my software, did my GDM background change to a Debian one? The team over at Linux Mint knows how to polish a distribution and so I’m confident that they will do the same for Debian Edition.

Pros:

  • Rolling release which means you always have the most recent software
  • Still has that Linux Mint charm to it

Cons:

  • The distribution still needs a bit of polish before I could see myself recommending it to all but seasoned Linux users
  • Being a rolling release might result in update fatigue



I am currently running a variety of distributions, primarily Linux Mint 17.
Previously I was running KDE 4.3.3 on top of Fedora 11 (for the first experiment) and KDE 4.6.5 on top of Gentoo (for the second experiment).
Check out my profile for more information.

One week, three distributions (Day 4: Ubuntu 10.10)

October 20th, 2010 3 comments

Continuing where we left off I am now ready to report my first impressions of Ubuntu 10.10. I should start by apologizing a little bit, this post is going up one day late (even though I had already finished writing most of it). With that out of the way let’s begin.

Install

The install, as one would expect, is exactly the same as the one featured in Kubuntu. As noted before I have nothing but praise for this installer and still think it is one of the best, if not the best, installer on any Linux distribution.

‘New’ Theme

The new theme found in this release of Ubuntu is beautiful. It’s hard to place exactly what makes this theme so nice but Canonical has done a wonderful job iterating the old theme from 10.04 and making some subtle changes that have an incredible overall effect.

This level of polish even extends to the new sound menu. Canonical has implemented new sound APIs which allow media players to integrated natively with the sound menu in a way that is just awesome.

Image Shamelessly Stolen Last Minute from Another Website

Heck even the calculator looks better with the new theme!

Software

As with my previous post, I decided to take a look through the default installed software and see how it presents Ubuntu as an all-in-one desktop experience.

Empathy (2.32.0)

The instant messaging client of champions… or at least those who thought Pidgin was too complicated. My understanding for why this client replaced Pidgin was that it was set to offer features (like audio and video calling) that Pidgin was simply too slow at incorporating. Up until this release that reasoning has been nothing more than a pipe dream in my experience. Yes some people have had better luck than others but I have never had it really work all that well. This time however I did get it to work and, after installing the Ubuntu Restricted Extras package, also got it to successfully negotiate a full video call with the proper Windows Live Messenger client.

Evolution (2.30.3)

First off I have to just say “wow”. The first time I used Evolution was back on Ubuntu 8.04 and I absolutely hated it. Now however I’m starting to sing a different tune. Evolution not only looks better but also performs better as well. It includes many features, like calendar and PGP integration, that my favourite e-mail client Thunderbird requires add ons to accomplish.

Furthermore it integrates completely into the Ubuntu message centre which is a nice touch. I can’t even get Thunderbird to minimize to the system tray on Linux. All told I must say that I’m very impressed with with this version of Evolution.

Gwibber (2.32.0.1)

Gwibber is Ubuntu’s answer to all of your social media sources. It has the ability to combine all of your feeds, from Twitter to Facebook, in one convenient location. From there you can easily catch up on what your friends are doing and interact with them, all from one easy to use centralized location.

Unfortunately this universal nature is exactly where the Gwibber experience starts to fail. Because it works with everything it often fails to excel at anything in particular. Because of that I just don’t see myself using this application all that often. It is nice that it integrates into the Ubuntu message centre though.

Firefox (3.6.10)

Ubuntu’s default web browser is Firefox which, let’s be honest, I’m sure you know all about. I will say one thing about this browser though; I hope Firefox 4 improves the speed significantly or I think it will continue to lose users to Chrome.

Transmission (2.04)

For downloading torrents Ubuntu 10.10 continues to ship with the Transmission BitTorrent client. It is a more or less unremarkable client that places a large emphasis on simplicity. It is also the only BitTorrent client I know that warns you not to pirate things.

It also might just be me but for some reason this version of Transmission seems to have more features than I remember.

Rhythmbox (0.13.1)

This version of Rhythmbox contains the Ubuntu One music store which I decided to poke around in for a bit. It seems to be a full capable store with many popular artists.

Unfortunately I did manage to make it crash in a rather hilarious way…

Yes that’s right, the Ubuntu One music store is being run off of a Microsoft IIS web server.

Rythmbox the program also suffers from some annoying issues which were well covered by Jon on one of his previous post. One that particularly annoys me is the encoding options. As long as you stick to the defaults the application is very easy to use, but the second you want to adjust the settings you get stuck trying to decipher GStreamer command line options.

Totem Movie Player (2.32.0)

For video playback we get stuck with Totem. Its not that I think it’s the worst video player in the world, it’s just that it doesn’t do anything particularly well. Back when I was using Kubuntu’s Dragon Player I felt the same way but at least Dragon Player was able to provide video playback devoid of various vsync issues. To be fair though this might be an issue with Compiz vs KWin and not directly related to the video software.

PiTiVi (0.14.5)

PiTiVi, besides having a horrible name, is actually a very good piece of software. It is essentially a Windows Movie Maker clone and makes no excuses for it, which in this case is probably a good thing. Within just a couple of minutes of never using the program before I was able to import the two free clips that come with Ubuntu, one movie and one song, strip the audio from the movie clip and replace it with the song’s audio. One button click later my movie was rendered in glorious 1080p. That’s a lot of p’s!

For those wanting a bit more power, the software also seems capable of rendering to any (logical) combination of containers and codecs you might have installed on your system.

Ubuntu Software Centre (3.0.4)

And finally the big one. This release brings with it the first paid application to the new app store. This has already  been written about quite a lot, and while I think its a good thing, I do have some issues with it. The biggest issue that I have is that with only one application in the store people will probably never check it out again, even if new applications are added later. In my opinion what they should have done was created a beta program that people could opt into and test the store out. That would have given Canonical the feedback they need while still not spoiling the store for potential future users.

Conclusion

This release of Ubuntu is a solid one and deserves much praise. While I could give or take on some of the default included software, but then again who couldn’t, I do think that this release has an overall polish that simply hasn’t been as strong in previous releases. This is what Ubuntu 10.04 should have been from the start and makes me look forward to what is still yet to come.

Pros:

  • An unparalleled polish and sheen that no other distribution has
  • An updated software roster that is showcases some of the best Linux application-desktop integration I have ever seen

Cons:

  • While the polish is nice there really isn’t that much difference from 10.04
  • The Ubuntu Software Centre store release may have been a bit premature



I am currently running a variety of distributions, primarily Linux Mint 17.
Previously I was running KDE 4.3.3 on top of Fedora 11 (for the first experiment) and KDE 4.6.5 on top of Gentoo (for the second experiment).
Check out my profile for more information.
Categories: GNOME, Tyler B, Ubuntu Tags: ,

One week, three distributions (Day 2: Kubuntu 10.10)

October 17th, 2010 3 comments

As noted in my previous post I have decided to try out a mini experiment wherein I test out three recently released distributions (Kubuntu 10.10, Ubuntu 10.10 and Linux Mint Debian Edition) giving each 48 hours to leave me with either a brilliant or terrible first impression. First on the docket was Kubuntu 10.10.

Install

Kubuntu’s installer is absolutely beautiful. It is simple, sleek and gorgeous. As you work your way through the very simple wizard system it begins to copy files in the background which makes the whole install process much faster than in previous iterations. I’m not exaggerating in the least when I say that this is perhaps the best Linux installer I have ever used.

‘New’ Desktop

When I first booted into the desktop I was very pleasantly surprised. I haven’t used KDE since version 4.3 when I had given up on it because, while beautiful and functional, there were just too many rough edges. It seems to be an Internet cliché at this point but I am going to throw it out there anyway: KDE 4.5 is the KDE release you have been waiting for. Most, if not all, of the rough edges that have plagued the 4.x series in the past have been ironed out and replaced with extremely user friendly, soft and presentable windows and options that just make sense.

For instance the new network connection interface is stupidly simple. If you can’t figure out how to connect to a network (hint: you just click on it) perhaps you shouldn’t be using a computer in the first place.

All of these refinements are accented by the new notification system that not only provides a universal area for all program events, but also fixes almost all of my complaints about the previous versions. You can now scroll through the notifications, instead of watching them grow off-screen, and you can even filter by the individual applications that are generating said notifications. Think of it like a unified e-mail inbox versus individual account inboxes.

Along similar lines the new, subtle, system tray notifications are simply awesome. Take a look at this screen-shot of the animated file copy indicator.

Its a bit hard to see in the screen-shot but the white pie in the upper right is actually the progress indicator. Unlike in GNOME where you get either a file copy dialog, or a motionless tray icon, I now have no clutter and yet full functionality. You couldn’t make a better system for displaying the information needed. “But what if I want to see more information?” Like everything else, this indicator is fully integrated into the notification system and a single click brings up the progress bar and file copy information. I suppose the point that I’m trying to get across is that this KDE release has done a lot of work in doing away with the clutter that you don’t really care to see 9 times out of 10.

Driver installation is once again handled by jockey, just like in Ubuntu. This time however I had absolutely no issues with it crashing or just not working unexpectedly.

‘New’ Software

I also decided to try out the default software selection to see what had changed. Plus I figured this would be a non-bias way to get a real first impression/feel of the distribution.

Software Management

KPackageKit has always been a sore part of (EDIT: the KDE SC) Kubuntu for me. It ‘worked’ but it was far from intuitive, helpful and, sometimes, even useful. The new KPackageKit is an entirely different story. It is far more like a mix between Synaptic and the Ubuntu Software Center and it pulls it off beautifully.

You can now browse by category or search by application (not just package) name. In addition it now also features a list of installed software which is something so painfully obvious that it is hard to believe that this functionality hadn’t existed previously. These three changes alone have completely reinvented KPackageKit in my opinion. I now almost look forward to opening it up to find new software, whereas in previous releases I would go straight to the command line just to avoid it.

Browser

The browser that ships with Kubuntu 10.10 is rekonq 0.6.1, which is essentially a re-spin of Konqueror but instead of using the KHTML rendering engine it uses the faster and more compatible WebKit. While there is nothing overly special about this browser it does feel very Chrome-like and was good enough that I never even bothered to switch to anything else.

One nice thing about it is that it integrates seamlessly into the KWalletManager password store. It also did an excellent job of prompting me to install all of the proprietary codecs so that I could watch YouTube or whatever. The only low point was a lack of a Moonlight plugin but I assume that is probably forthcoming.

Instant Messaging

The default instant messenger is Kopete 1.0.80 which is a fine instant messenger that integrates nicely into the notification system. The real problem with Kopete however is that it simply hasn’t seen nearly as much improvement as the rest of the distribution’s software. If you showed me the Kopete that shipped with KDE 4.3 and the one in KDE 4.5 I couldn’t tell you the difference. From my tests (using the Windows Live Messenger service) I didn’t see anything new. Oddly enough, just like the last time I used Kopete, this version recognizes my laptop’s webcam but there is no option to use it anywhere inside of a chat. Don’t get me wrong, I’m sure a lot of work has been put into Kopete since 4.3 but the problem is I would never know it.

KMail

KMail, now at version 1.13.5, once again takes the e-mail duties for KDE and once again I find it to be far too complicated, cluttered and messy. Sure it is very function and has a boat load of options but at the end of the day I just want to read my e-mail. A good e-mail client should be invisible to the user and KMail is certainly not.

KTorrent

I’ve always liked KTorrent and this release (version 4.0.3) is no different. If you don’t feel like messing around and just want things to work then default settings are perfect. But if you like to tweak your settings at all KTorrent offers every major feature that you’re looking for.

Amarok

I’ll be honest, I don’t really like Amarok and never have. That being said I was determined to give it a fair try and I found it to be a very functional media player. I still do think that it is a bit too complicated for the average person though. What do I mean by this? Well for example why do I have to right click and then choose a menu option to listen to my music? Why doesn’t double click just do it?

One area where Amarok does excel is in its music importing wizard. It is very simple and full of sensible defaults that makes ripping tracks from a CD super simple. Kubuntu ships with Amarok version 2.3.2.

Dragon Player

Like GNOME’s Totem, KDE’s Dragon Player (version 2.0) is a no fuss video playback application. There really isn’t much to say about this as it is a very feature lean and purpose focused player. I do however have to give it a special mention; I never had a single vsync issue while using Dragon Player (even with my troublesome ATI graphics card). Not even VLC can say the same without some fiddling around in the options menu.

Kontact

Kontact 4.4.6 is KDE’s answer to Microsoft Outlook. It provides e-mail, calendar, tasks, RSS and more by basically displaying a single user interface that joins together KMail, Akregator, KOrganizer and more in a single window. While this is an excellent way to achieve the end result it does unfortunately mean that the user experience suffers a bit when each application chooses to do things slightly different from one another. Again this is one area that I didn’t notice much difference from the last time I used it.

Conclusion (Konclusion?)

This Kubuntu release is so much improved its hard to believe it was done by the same people who have worked on the previous iterations (I mean that as a compliment… somehow ;)). If you’ve been put off by KDE in the past or even if you’re just looking for a modern KDE distribution then I highly recommend checking this release out.

Pros:

  • A huge improvement over previous releases
  • Lots of refinements that make using it a pleasure

Cons:

  • Some of the KDE software (not the desktop) could still use some work
  • Plasmas are cool and all but I don’t think they are quite as amazing as the KDE team keeps pushing them to be



I am currently running a variety of distributions, primarily Linux Mint 17.
Previously I was running KDE 4.3.3 on top of Fedora 11 (for the first experiment) and KDE 4.6.5 on top of Gentoo (for the second experiment).
Check out my profile for more information.
Categories: KDE, Kubuntu, Tyler B Tags: ,

Do something nice for a change

October 6th, 2010 1 comment

Open source software (OSS) is great. It’s powerful, community focused and, lets face it, free. There is not a single day that goes by that I don’t use OSS. Between Firefox, Linux Mint, Thunderbird, Pidgin, Pinta, Deluge, FileZilla and many, many more there is hardly ever an occasion where I find myself in a situation where there isn’t an OSS tool for the job. Unfortunately for all of the benefits that OSS brings me in my daily life I find, in reflection, that I hardly ever do anything to contribute back. What’s worse is that I know I am not alone in this. Many OSS users out there just use the software because it happens to be the best for them. And while there is absolutely nothing wrong with that, many of these individuals could be contributing back. Now obviously I don’t expect everyone, or even half for that matter, to contribute back but I honestly do think that the proportion of people who do contribute back could be much higher.

Why should I?

This is perhaps the easiest to answer. While you don’t have to contribute back, you should if you want to personally make the OSS you love even better.

How to I contribute?

Contributing to a project is incredibly easy. In fact in the vast majority of cases you don’t need to write code, debug software or even do much more than simply use the software in question. What do I mean by this? Well the fact that we here on The Linux Experiment write blog posts praising (or tearing to shreds supplying constructive criticism) to various OSS projects is one form of contributing. Did I lose you? Every time you mention an OSS project you bring attention to it. This attention in turn draws more users/developers to the project and grows it larger. Tell your family, write a blog post, digg stories about OSS or just tell your friends about “this cool new program I found”.

There are many other very easy ways to help out as well. For instance if you notice the program is doing something funky then file a bug. It’s a short process that is usually very painless and quickly brings real world results. I have found that it is also a very therapeutic way to get back at that application that just crashed and lost all of your data. Sometimes you don’t even have to be the one to file it, simply bringing it up in a discussion, such as a forum post, can be enough for others to look into it for you.

Speaking of forum posts, answering new users’ questions about OSS projects can be an excellent way to both spread use of the project and identify problems that new users are facing. The latter could in turn be corrected through subsequent bug or feature requests. Along the same lines, documentation is something that some OSS projects are sorely missing. While it is not the most glamorous job, documentation is key to providing an excellent experience to a first time user. If you know more than one language I can’t think of a single OSS project that couldn’t use your help making translations so that people all over the world can begin to use the software.

For the artists among us there are many OSS projects that could benefit from a complete artwork makeover. As a programmer myself I know all to well the horrors of developer artwork. Creating some awesome graphics, icons, etc. for a project can make a world of difference. Or if you are more interested in user experience and interface design there are many projects that could also benefit from your unique skills. Tools like Glade can even allow individuals to create whole user interfaces without writing a single line of code.

Are you a web developer? Do you like making pretty websites with fancy AJAX fluff? Offer to help the project by designing an attractive website that lures visitors to try the software. You could be the difference between this and this (no offense to the former).

If you’ve been using a particular piece of software for a while, and feel comfortable trying to help others, hop on over to the project’s IRC channel. Help new users troubleshoot their problems and offer suggestions of solutions that have work for you. Just remember: nothing turns off a new user like an angry IRC asshat.

Finally if you are a developer take a look at the software you use on a daily basis. Can you see anything in it that you could help change? Peruse their bug tracker and start picking off the low priority or trivial bugs. These are often issues that get overlooked while the ‘full time’ developers tackle the larger problems. Squashing these small bugs can help to alleviate the 100 paper cuts syndrome many users experience while using some OSS.

Where to start

Depending on how you would like to contribute your starting point could be pretty much anywhere. I would suggest however that you check out your favourite OSS project’s website. Alternatively jump over to an intermediary like OpenHatch that aggregates all of the help postings from a variety of projects. OpenHatch actually has a whole community dedicated to matching people who want to contribute with people who need their help.

I don’t expect anyone, and certainly not myself, to contribute back on a daily basis. I will however personally start by setting a recurring event in my calendar that reminds me to contribute, in some way or another, every week or month. If we all did something similar imagine the rapid improvements we could see in a short time.




I am currently running a variety of distributions, primarily Linux Mint 17.
Previously I was running KDE 4.3.3 on top of Fedora 11 (for the first experiment) and KDE 4.6.5 on top of Gentoo (for the second experiment).
Check out my profile for more information.

Trying out the Chakra Project

August 24th, 2010 1 comment

After a little bit of pressure from the people responding to my previous post (My search for the best KDE Linux distribution), I have finally given in and tried out Chakra. The Chakra Project starts with Arch Linux as a base but, instead of forcing you to build your own distro piece of piece, Chakra comes more or less pre-packaged.

Installation

The installation was one of the best I’ve ever seen. For alpha software this distribution’s first point of interaction is already very polished – even warning me that it is not stable software and might therefore eat my hamster.

The install process even let me decide to install some very useful packages, like Microsoft Core TTF Fonts and Adobe Flash, right away. Even the Language & Time step was incredible, offering a rotating globe that I could drag around and manipulate.

The only issue I had was trying to create a disk partition to install the OS to. This was because I was trying this out inside of VirtualBox, and the virtual hard disk did not have any partitions on it whatsoever. There is a bug and (thankfully) work-around for this known issue with their Tribe installer, and after reading a quick walk-through I was once again ready to install.

The Desktop

The desktop is standard KDE version 4.4.2 after install. Opening up Pacman (or is it Shaman?) showed me a list of brand new software that I could install, including the newest KDE 4.5. One of Project Chakra’s great strengths will be in this rolling release of new software updates. The concept of installing once and always having the most up-to-date applications is very intriguing.

Unfortunately, as with most alpha software, Shaman is still pretty buggy and often crashed whenever I tried to apply the updates. Also unfortunate is that Shaman started a trend of applications simply crashing for no reason. I don’t want to give this distribution a bad reputation, because it is still pre-release software, but I think it goes without saying that the developers have some bug squashing to do before a stable release will be ready. Something I found rather strange is that the current default software selection that Chakra ships with includes two different browsers, Konqueror and rekonq, but no office software whatsoever.

Google Chrome much?

Final Thoughts (for now!)

The Chakra Project looks very promising, albeit very unpolished at the moment. If they can manage to fix up the rest of the distribution, getting it just as polished feeling as the installer, this will definitely be one to look out for. I look forward to trying it out again once it hits a stable release.




I am currently running a variety of distributions, primarily Linux Mint 17.
Previously I was running KDE 4.3.3 on top of Fedora 11 (for the first experiment) and KDE 4.6.5 on top of Gentoo (for the second experiment).
Check out my profile for more information.
Categories: KDE, Linux, Tyler B Tags: , , ,