Posts Tagged ‘Ubuntu’

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-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.


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

* Starts and hands off execution to the GTK main loop

* Example Objective-C function that prints some output

* 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);



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

//assign C-compatible pointer
myMainWindow = self;

//return pointer to this object
return self;

//start gtk loop

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


myMainWindow = NULL;

if(GTK_IS_WIDGET (button))
//clean up the button

if(GTK_IS_WIDGET (winMain))
//clean up the main window

[self destroyWidget];

[super dealloc];

void on_MainWindow_destroy(GtkObject *object, gpointer user_data)
//exit the main loop

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];



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:
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).

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 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


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.

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).

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.


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!


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 (

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.


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.


  • 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


  • 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).
Categories: GNOME, Tyler B, Ubuntu Tags: ,

One week, three distributions (Day 0)

October 15th, 2010 No comments

With the recent releases of Linux Mint Debian Edition, Ubuntu and Kubuntu 10.10 I am once again starting to feel that need to hop around and try something new out. That’s not to say that my current distribution of choice (Linux Mint 9) is a bad one, quite the opposite in fact. I am however curious to see what these new releases do, well, new. That being said I’ve set myself up a little experiment of sorts: try each distribution for two days each and on the 7th day choose the best from among the three. Now obviously this isn’t a very fair test, 48 hours is hardly enough to definitely test which of these distributions is truly the best. What it will, hopefully, show though is which distribution gives off the best first impression.

So buckle up and stay tuned, this week should hopefully be an interesting one.

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).

Accessing Windows 7 Shares from Ubuntu is a Pain

June 28th, 2010 16 comments

This blog post is about my experiences. If you hit this page from a search engine looking to fix this issue click here to skip to the solution.

Recently, I’ve been reorganizing my computers based on their usage. My old HTPC, has resumed its duties as my primary desktop/server, my Mac Mini has been attached to the my desktop through Synergy, my server was given to my brother for personal use, and his old computer – a nettop – is now being used as our new HTPC.

After a painful decision making process – a topic for another time, and another post – I decided that this nettop, named Apollo after the Greek god of many things including “music, poetry, and the arts” [as close as I could get to entertainment],  should run Ubuntu 10.4 with XBMC as the media center app. After testing it’s media playback capabilities from a local file, I was rather impressed. I set out to add a SMB share from within XBMC, and was prompted to add a username and password.

I wasn’t really expecting this, because Leviathan – my desktop/sever running Windows 7 – has public sharing turned on, as well as a guest account. I entered in my credentials, and was asked yet again for a username and password. After trying multiple times, I decided to quit XBMC and see if I could get Ubuntu to connect to the share. Here too, I was prompted for a username and password, again and again.

Next I headed to the terminal to run smbclient. This didn’t work either, as I was shown a message saying smbclient failed with “SUCCESS – 0”. I guess success shouldn’t be zero, so my next move was to attempt mounting the network share using CIFS. Again, I was met with repeated defeat.

Begrudgingly I took to the internet with my problem, only to find that there were many people unable to connect to their Windows 7 from Ubuntu. The suggestions ranged from registry hacks to group policy administration, none of which worked. One repeated suggestion however, was to un-install the Windows Live Sign-in Assistant. However, as a user of the Windows Live Essentials (Wave 4) Beta that was recently released – I had no such program. I did however have a similar application called the Windows Live Messenger Companion, which I chose to uninstall – again, to no avail.

However, I soon reasoned that perhaps whatever was blocking people using the Windows Live Sign-in Assistant was now being used within the actual Windows Live Messenger client or the other Windows Live Essentials apps that I’d recently installed. I started by uninstalling everything but Windows Live Messenger – because I really, really like the beta version. Alas, this did not help. Next I uninstalled the actual Windows Live Messenger client and voila – I was able to connect with no prompting for passwords at all. Because that makes -any- sense.

As a matter of interest, I installed the regular WLM non-beta client and made sure that the Windows Live Sign-in Assistant was installed, and tried to connect again. Not surprisingly, I was no longer able to connect to my Windows 7 shares. After un-installing the Windows Live Sign-in Assistant my shares were back up and I was mostly happy. Except that I couldn’t use the new Windows Live Messenger beta.

I can’t be sure if the other tinkering I did also helped clear up my problems, but as a recap here are the steps I recommend to access your Windows 7 shares from Ubuntu:

1) If you have the Windows Live Essentials (Wave 4) beta installed, you’ll have to uninstall all of the applications that come with this. For now, you can install the current version of Windows Live Messenger and the other Windows Live Essentials.

2) If you have Windows Live Messenger installed, or ANY of the Windows Live Essentials programs installed check to see if you have the Windows Live Sign-in Assistant installed. If so, uninstall it.

3) Hopefully, now you can enjoy your Windows 7 shares in Ubuntu

Important Note:

Beta software has this nasty habit of leaving beta status sooner or later. If this issue is not resolved when the newest version of Windows Live Messenger is officially released, you may not be able to use the Window Live Messenger client if you need your Windows 7 shares from Ubuntu. I would suggest using an application like Pidgin as your instant messenger, as it can also connect to the Windows Live Messenger service. Other options include Digsby, Miranda, and Trillian.

Originally posted on my personal website here.

Fixing gnustep-devel in Ubuntu 10.04

May 17th, 2010 No comments

When Ubuntu 10.04 was released it represented the most modern incarnation of Canonical’s premier Linux desktop distribution. However not all things were better in this release. For myself I immediately noticed a problem while trying to install the gnustep-devel development libraries for GNUstep and Objective-C. I was greeted with this oh so lovely error message:

Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming.
The following information may help resolve the situation:

The following packages have unmet dependencies:
gnustep-devel: Depends: but it is not installable
E: Broken packages

So essentially I was left with the following choice: install the missing package from the repository (which wasn’t there) or don’t install gnustep-devel. Thankfully it was pointed out to me that I could perhaps see if the package still existed in the Debian repository instead. So off to I went and after a quick search I found what I was looking for! I recalled reading somewhere that Ubuntu synchronizes with Debian testing (A.K.A. squeeze) at the start of every round of development, so I figured that would be the best package to grab. A short download and install later was finally on my system. With the dependencies now met it was a breeze to install the rest of the development files using a simple

sudo apt-get install gnustep-devel

And there you have it. By installing a single package from the Debian repository you too can get around the problem. For reference I have also filed a bug report with Ubuntu at Launchpad 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).

Installing Apache on Ubuntu 9.10

March 9th, 2010 2 comments

Tonight I decided that I’d like to be able to do some web development from home. The basic suite is called LAMP, which stands for Linux, Apache, MySQL, and PHP; the standard web developers toolkit. After a little bit of googling, I found this great guide from Tux Tweaks that walked me through the entire process. Once installed, my system hosted any files in the /var/www/ directory, and had MySQL and phpMyAdmin installed for database access.


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.

Coming to Grips with Reality

December 8th, 2009 No comments

The following is a cautionary tale about putting more trust in the software installed on your system than in your own knowledge.

Recently, while preparing for a big presentation that relied on me running a Java applet in Iceweasel, I discovered that I needed to install an additional package to make it work. This being nothing out of the ordinary, I opened up a terminal, and used apt-cache search to locate the package in question. Upon doing so, my system notified me that I had well over 50 ‘unnecessary’ packages installed. It recommended that I take care of the issue with the apt-get autoremove command.

Bad idea.

On restart, I found that my system was virtually destroyed. It seemed to start X11, but refused to give me either a terminal or a gdm login prompt. After booting into Debian’s rescue mode and messing about in the terminal for some time trying to fix a few circular dependencies and get my system back, I decided that it wasn’t worth my time, backed up my files with an Ubuntu live disk, and reinstalled from a netinst nightly build disk of the testing repositories. (Whew, that was a long sentence)

Unfortunately, just as soon as I rebooted from the install, I found that my system lacked a graphical display manager, and that I could only log in to my terminal, even though I had explicitly told the installer to add GNOME to my system. I headed over to #debian for some help, and found out that the testing repositories were broken, and that my system lacked gdm for some unknown reason. After following their instructions to work around the problem, I got my desktop back, and once more have a fully functioning system.

The moral of the story is a hard one for me to swallow. You see, I have come to the revelation that I don’t know what I’m doing. Over the course of the last 3 months, I have learned an awful lot about running and maintaining a Linux system, but I still lack the ability to fix even the simplest of problems without running for help. Sure, I can install and configure a Debian box like nobody’s business, having done it about 5 times since this experiment started; but I still lack the ability to diagnose a catastrophic failure and to recover from it without a good dose of help. I have also realized something that as a software developer, I know and should have been paying attention to when I used that fatal autoremove command – when something seems wrong, trust your instincts over your software, because they’re usually correct.

This entire experiment has been a huge learning experience for me. I installed an operating system that I had never used before, and eschewed the user-friendly Ubuntu for Debian, a distribution that adheres strictly to free software ideals and isn’t nearly as easy for beginners to use. That done, after a month of experience, I switched over from the stable version of Debian to the testing repositories, figuring that it would net me some newer software that occasionally worked better (especially in the case of Open Office and Gnome Network Manager), and some experience with running a somewhat less stable system. I certainly got what I wished for.

Overall, I don’t regret a thing, and I intend to keep the testing repositories installed on my laptop. I don’t usually use it for anything but note taking in class, so as long as I back it up regularly, I don’t mind if it breaks on occasion; I enjoy learning new things, and Debian keeps me on my toes. In addition, I think that I’ll install Kubuntu on my desktop machine when this whole thing is over.  I like Debian a lot, but I’ve heard good things about Ubuntu and its variants, and feel that I should give them a try now that I’ve had my taste of what a distribution that isn’t written with beginners in mind is like. I have been very impressed by Linux, and have no doubts that it will become a major part of my computing experience, if not replacing Windows entirely – but I recognize that I still have a long way to go before I’ve really accomplished my goals.

As an afterthought: If anybody is familiar with some good tutorials for somebody who has basic knowledge but needs to learn more about what’s going on below the surface of a Linux install, please recommend them to me.

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.

Happy Ubuntu Day

October 29th, 2009 No comments

Oh come on, everyone else is doing it.

You can even visit us on Karmic Koala. What doesn't it do?

You can even visit us on Karmic Koala. What doesn't it do?

Love it or hate it Ubuntu is the most popular Linux distribution to date. While we at The Linux Experiment have not included it amongst our chosen distributions, many of us have had experience with it in the past and look forward to seeing the new features that have been lovingly baked into this release.

Congrats to Canonical et al. for delivering Karmic Koala, hopefully another great version of their staple distribution.

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).
Categories: Linux, Tyler B Tags: ,

The Shorter List

August 11th, 2009 No comments

In an earlier post I had said that I had narrowed down my list of potential Linux distros to a mere four contenders: Debian, Fedora, Linux Mint and Mandriva. I have since then decided that by the end of this week (or, if I’m lazy, early next week) I will have knocked this list down to my final choice. The way that I have chosen to do this is potentially the most annoying way possible: I plan on filling my post quotas by only removing one choice each post 😛

So without further ado lets kick one of these to the curb!

Debian, you are dead to me

Why I had considered it: Very stable, lots of support, lost of software, one of the oldest distros.

Why its just not making the cut: As I am somewhat familiar with Ubuntu and have read about its relation to Debian, I feel as though Debian is just simply not that different. Now before all of you bearded basement dwellers start telling me just how wrong I am, keep in mind that a large component of this experiment is about the perception of our selected distribution as well. I am sure Debian, like Ubuntu, will offer a great experience to those who use it, however I feel that my person use of it would almost be a violation of rule #1.

Well there you have it! Debian is off the list leaving me with Fedora, Linux Mint and Mandriva. Who will survive to see the install screen? Stay tuned!

To be continued…

Debian! I Choose You!

August 6th, 2009 2 comments

After a little bit of research, I’ve chosen to use Debian as my distribution for the duration of the experiment. While the decision was more or less arbitrary, it was based on a few core ideals:

  1. The Social Contract: These guys believe in free software to such an extent that they wrote up a social contract that governs the user experience with Debian, ensuring that the system and it’s derivatives will forever remain free for use, distribution, and modification. As a part of the contract, they define their use of the term free software to ensure that nobody can question their motives. Although I run a lot of free software on a daily basis, I’ve always been locked into proprietary software and formats in one way or another. It will be interesting to try and figure out how to emulate my current workflow in its entirety with free and open-source software.
  2. A Solid System: Debian is known to be such a solid distribution that Ubuntu (currently the most popular Linux distribution around) uses it as a basis for each of their own releases, and then backports any fixes that they make into the Debian stream. Further, Debian is available as one of three code forks (unstable, testing, and stable), allowing the user to choose from a rock solid stable experience, a less stable one that supports the latest packages, or a potentially buggy one that runs along the bleeding edge of new development.
  3. 100% Community Driven: Unlike other distributions, Debian development is not backed or sponsored by a corporate entity of any kind – it is simply an organization of (almost 1200) like-minded people working towards a common goal through the power of the internet. You really can’t get a better taste for the ideals of open-source software in any other distribution.
  4. Huge User Community: Check out this massive list of people and organizations that currently use Debian as their distribution of choice.
  5. Lots O’ Warez: The stable distribution of Debian contains thousands upon thousands available packages. With access to all of this software, replacing my current setup should be fairly easy (although it might require a bunch of research).

With the release of KDE 4.3 today, I’ve also decided to try using it as my display manager (mostly because it looks really pretty, and I like pretty things). Now I can only hope that Debian has the drivers for my laptop:

  • Motherboard: IBM ThinkPad R52 (Product#: 1859B7U) with Mobile Intel Alviso-G i915GM Chipset
  • Processor: Mobile Intel Pentium M 740, 1733 MHz (13 x 133)
  • RAM: 758 MB  (DDR2 SDRAM)
  • Video: Mobile Intel(R) 915GM/GMS,910GML Express Chipset Family  (128 MB), Intel GMA 900
  • Audio: Analog Devices AD1981B(L) @ Intel 82801FBM ICH6-M – AC’97 Audio Controller [B-1]
  • Storage Controller: Intel(R) 82801FBM Ultra ATA Storage Controllers – 2653 with AE9GMGLK IDE Controller
  • Disk Drive: FUJITSU MHV2040AH  (40 GB, 5400 RPM, Ultra-ATA/100)
  • Optical Drive: MATSHITA DVD/CDRW UJDA770  (DVD:8x, CD:24x/24x/24x DVD-ROM/CD-RW)
  • Ethernet: Broadcom NetXtreme Gigabit Ethernet
  • Wireless: Intel(R) PRO/Wireless 2200BG Network Connection  (
  • USB Controller: Intel 82801FBM ICH6-M – USB Universal Host Controller [B-1]
  • BIOS: IBM 70ET69WW (1.29 )
  • Battery: Sony IBM-92P1089

So Many Fruity Flavours…

July 30th, 2009 No comments

I think that I’m the only member of the group with absolutely zero experience with Linux. Sure, I’ve used TightVNC to check the status of a Ubuntu-based file server, and I may even have dropped a live CD into my machine once or twice before in vain attempts to save my files from a bricked Windows install, but I have roughly zero actual experience with any of the distributions. Due to my lack of knowledge and the antique laptop that I’ll likely be using during the experiment, I’ve decided to stick to one of the more popular distributions to ensure ease of use and a wide base of drivers to draw from. So far, the Top Ten Distributions page over at DistroWatch has been very helpful, and I’ve managed to narrow my choice down to just a few of the hundreds of available flavours of Linux (ordered by my current preference):

  • Debian: Over 1000 developers, 20 000 packages, and no corporate backing – the definition of open source community development
  • Fedora: Strictly adheres to the free software philosophy; used by Linus Torvalds himself (If that ain’t street cred…)
  • openSUSE: A pretty looking desktop, with corporate backing from Novell.

While doing my research, I have purposely avoided Ubuntu Linux and it’s variants, as they seem to be “the” distribution of choice these days. To really get a taste of what it’s like to make the switch from Windows with zero previous experience, I’ve decided to stay away from Ubuntu. It’s just too common, and I’m non-conformist as can be.

The Search Begins

July 29th, 2009 1 comment

100% fat free

Picking a flavour of Linux is like picking what you want to eat for dinner; sure some items may taste better than others but in the end you’re still full. At least I hope, the satisfied part still remains to be seen.

Where to begin?

A quick search of Wikipedia reveals that the sheer number of Linux distributions, and thus choices, can be very overwhelming. Thankfully because of my past experience with Ubuntu I can at least remove it and it’s immediate variants, Kubuntu and Xubuntu, from this list of potential candidates. That should only leave me with… well that hardly narrowed it down at all!

Seriously... the number of possible choices is a bit ridiculous

Seriously... the number of possible choices is a bit ridiculous

Learning from others’ experience

My next thought was to use the Internet for what it was designed to do: letting other people do your work for you! To start Wikipedia has a list of popular distributions. I figured if these distributions have somehow managed to make a name for themselves, among all of the possibilities, there must be a reason for that. Removing the direct Ubuntu variants, the site lists these as Arch Linux, CentOS, Debian, Fedora, Gentoo, gOS, Knoppix, Linux Mint, Mandriva, MontaVista Linux, OpenGEU, openSUSE, Oracle Enterprise Linux, Pardus, PCLinuxOS, Red Hat Enterprise Linux, Sabayon Linux, Slackware and, finally, Slax.

Doing a both a Google and a Bing search for “linux distributions” I found a number of additional websites that seem as though they might prove to be very useful. All of these websites aim to provide information about the various distributions or help point you in the direction of the one that’s right for you.

Only the start

Things are just getting started. There is plenty more research to do as I compare and narrow down the distributions until I finally arrive at the one that I will install come September 1st. Hopefully I can wrap my head around things by then.

Choices, choices, and more choices!

July 29th, 2009 2 comments

Howdy, everyone! Dana here with what looks like the very first blog post on all of The Linux Experiment. Let me take the time to welcome you here; we have high hopes for the site, and hope you enjoy the process every bit as much as we’re hoping to.

As you know (or may not know!), Linux comes in a wide variety of “flavours”, also known as distributions. Each distribution has its own little personality; some are built for users with no Linux experience and are very user-friendly out of the box, while others require you to compile the kernel itself before you can do anything useful with it. Sounds fun, right?

Part of the challenge we face before the September 1st deadline is picking a distribution to install as our operating system of choice for the four months to follow. As documented in the Rules section of this site, we’re not allowed to install any distribution we’ve touched before – which knocks out a few for me, even though I have limited overall Linux experience.

A few that I’ve been considering so far:

Fedora 11 – this is far and away my front-runner. Reading up, I’m intrigued by its improved open-source driver support, and I’ve heard wonderful things about the new version just released in June.

Slackware – my grandfather’s distribution of choice. Never toyed with it, but he seems amused enough.

Knoppix – I’ve used Debian, but not this one.

I pose the question to you, the reader – what would you have me do? Do you have any input on any of these, or maybe some that I didn’t list? Let me know!