Archive

Posts Tagged ‘software’

Impressions during developing my first application with Mono and Gtk# (GtkSharp)

2012/09/30 Comments off

Why Mono? Why Gtk?

Over the past couple of years I have been developing C# ASP.NET enterprise applications. So I am quite comfortable with the Microsoft stack.

That answers the first question: Mono gives me C# and the .NET stack.

On the other hand I have been using linux as a desktop environment on my home machine for over a decade. I am comfortable with using linux as my primary OS.

That answers the second question: Mono gives me access to Gtk, the graphics library of gnome, which is the default “desktop” in many linux distributions.

The App

I want to synchronize different Git repositories semi-automatically using a Gui.

  • Default behaviour of the automation can be loaded via a Json file.
  • Each entry describes a repository set to be synchronized.

The app is located at https://github.com/draptik/RepoSync

I also published a small demo application for gtk# and treeview: https://github.com/draptik/GtkSharpTreeViewDemo

Impressions

Monodevelop vs Visual Studio

I’ll keep it brief: If you’re used to Visual Studio and ReSharper, Monodevelop does not come close. On the other hand Monodevelop is a full C# IDE which works with linux. And Monodevelop can be used cross-plattform.

Gtk# API

The Gtk# API is not your typical .NET library. You will very soon notice that the origins are C/C++. This takes some getting used to if you have a .NET background.

Typically there are no return values. Instead Gtk# methods very often use the “out” keyword in .NET because that comes closer to the C++ implementation using pointers.

Here is an example:

## Mono Gtk# Code
bool someBool = false;
if (listStore.GetIterFirst (out iter)) {
do {
someBool = (bool) listStore.GetValue (iter, 0);
} while (someBool && listStore.IterNext (ref iter));
}
return someBool;

## Pseudo-C# Code
return listStore.ToList().Any(s => s.MyBoolProp);

From the .NET side, I don’t like the Gtk# API. I prefer methods having return values. I guess it is a matter of tast. If it would really bother me, I would write some wrappers around… ;-)

Maven-eclipse-plugin 2.6 might break wicket projects

2009/06/13 Comments off

Took me a while to find this, so I thought I’ll post it: Maven’s eclipse plugin version 2.6 does not work well with Wicket projects.

The problem with version 2.6 is that the Maven’s folder structure does not conform to Wicket’s folder structure. This seems to be fixed in version 2.7. Alternatively, you can use Maven-eclipse-plugin version 2.5.1.

See Martijn Dashorst’s blog and this thread on the wicket-user mailing list for details.

In short: If your pom.xml file contains

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-eclipse-plugin</artifactId>
	<version>2.6</version>
</plugin>

replace it with this

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-eclipse-plugin</artifactId>
	<version>2.5.1</version>
</plugin>

From 8.04 LTS to Jaunty Jackalone (Ubuntu 9.04): Software

2009/04/28 4 comments

The upgrade from the Ubuntu 8.04 LTS version to 9.04 (codename “Jaunty Jackalone” = JJ) was very smooth. It did NOT screw up the X-Server, SMB, Cups, NFS, SSH, USB, etc.  For me it was about a 3GB download.

The first thing I noticed was that a nasty gdm-login-screen-resolution bug was fixed by upgrading from 8.04 to 8.10.

Since each upgrade changes the default version of ones most used/favorite software, I will list those products I was concerned about most:

Sun Java (http://java.sun.com/)

  • OK: JJ comes with the current Java JRE and SDK version (1.6_13)

Eclipse (http://www.eclipse.org/)

  • Out-of-date: JJ comes with version 3.2 (2 years old). The current version is 3.4 (Ganymede). But since you can run Eclipse directly without compiling, this is no big deal.

GNU Emacs (http://www.gnu.org/software/emacs/)

  • GNU Emacs snapshot (=bleeding edge/developer version): OK: installing emacs-snapshot-gtk gives a current developer version  (build from 2009-04-05)
  • Emacs stable: Out-of-date: The current Emacs version is 22.3. JJ has Emacs version 22.2, although Emacs 22.3 was released 2008/09.

AUCTeX (http://www.gnu.org/software/auctex/)

  • Out-of-date: JJ comes with AUCTeX version 11.84. Version 11.85 was released 2008/02. I’ll have to install this manually.

R (http://www.r-project.org/)

  • OK: JJ has 2.9.0. The current version is 2.9.0.

TexLive (http://www.tug.org/texlive/)

  • Out-of-date: JJ comes with texlive-2007… Just download the current texlive-2008 from the texlive homepage and install it beside the Ubuntu texlive version.

Skype-Plugin for Pidgin’s Instant Messenger

  • I’ve already written a blog on some of the nice Pidgin features. After upgrading to JJ and seeing that Pidgin is used for internal messaging within Ubuntu, I am even more convinced that this is currently THE multi-protocol multi-plattform instant messenger to go with. Get the skype-plugin from http://eion.robbmob.com/ and install the Debian/Ubuntu skype4pidgin.deb file by executing “sudo dpkg -i skype4pidgin.deb”

GTKtalog (http://www.nongnu.org/gtktalog/)

  • Not present in JJ’s repositories. I’m very sad about this, because to my knowledge this is the only software for managing a CD/DVD collection which does not require a database. Although its user interface (Tck/Tk) is not-so-stylish-up-to-date, it has many features which I have grown accostumed to and which are lacking even in current high-end Disk-Manager programs.
Follow

Get every new post delivered to your Inbox.