Comic Downloader alpha stage

I wrote several Greasemonkey userscripts. However, the Javascript has its own limitation for security reason, especially when a website uses scripts from cross domain. As a result, Javascript cannot get the information, and my userscript fails to work. Therefore, I start another project, in order to solve the cross domain problem using Python, and targeted on Linux (Ubuntu).

The current development stage is alpha, and targeted only on one website, since the other websites I frequently visit still work with Greasemonkey userscript. The alpha stage of Comic Downloader is currently work in command-line. GUI feature will be added in future with PyGTK. Currently, the command-line is able to solve my problem for offline comic reading.

Feel free to visit the project page.


Running Mono (C#) pre-compiled by Linux in Windows

Finally, I success to run Mono with GTK# pre-compiled by Linux in Windows.

Firstly, make sure Windows is installed with

With the above installation, one can run the Mono application normally. I failed previously because I didn’t install GTK# for .NET.

However, when I run the application, there is a console window, which is annoyance. Thus, build the Mono application with

gmcs yoursource.cs -pkg:gtk-sharp-2.0 -target:winexe

By using “-target:winexe”, there will be no console window.

Yes, this is a light for me for cross-platform software development. Though I haven’t tried this on Mac OS X, but hopefully it works. I found that Mono is better than Java. Mono GTK# unlike Java Swing which cause me a lot of troubles. Java Swing though can run in cross-platform, it produces unexpected GUI differences. (Such as running GridBagLayout of Java in Ubuntu. One can give a try with Password Cipher Java Edition). I think I will move to Mono with GTK# instead of Java.

C, C++, Java, Python, Mono (C#)

Cross-platform programming language, is still a little bit far away from me. Recently, I ported Prayer Clock to other programming languages. One of the reasons is to learn more programming languages, another reason is trying to solve the cross-platform problem.

C and C++, my most preferred language(s), with the help of GTK+, can perform well in Windows and Linux. But I didn’t tried on Mac OS X. This is because it needs to be compiled on the OS, rather then cross-compilation. That is why, I ported it to Java before. Though Java claims be WORA (write once run anywhere), yet running in different OS might produce “some” problems, such as minimize to system tray in Linux. And, running on Mac OS X also does not minimize to the system tray as expected.

Then, I tried to port to Python recently. Translate the source code from C/C++ to Python is interesting. Especially when I am using PyGTK, translating from GTK+ user interface is really easy, since it is a scripting language, with dynamic data typing. I tried to use Python since it is running with an interpreter, thinking it is possible to run as cross-platform. Yet, I haven’t tried the PyPrayer Clock on Windows and Mac OS X. But I found that, running PyGTK on Mac OS X is not that easy as it is in Windows.

So, next try, I choose to use Mono (C#). I choose it instead of .NET Framework because firstly, .NET Framework is a bloatware for me; secondly, I prefer GTK# rather than Windows Forms. Translating the source code is even more easier, since C# similar to C, C++, and Java. Since I am using GTK#, GTK+ can be translated easily as well. After finish compiled on Linux (Ubuntu), I tried to install Mono in Windows, and tried to run the pre-compiled binary (by Linux) on Windows. However, fail! I thought since Mono is using .NET Compatibility Class Library, there should have no problem, but, it is still a little bit far for me.

Blog about Linux Mint

There is quite a long time that I do not submit any post. Today, I would like to talk about my experience of using Linux Mint.

Ubuntu, the number 1 open source OS (based on what I know from, I used it and I liked it. Because it has about 37000 precompiled packages (Wikipedia). Ubuntu is based on Debian, one of the major distribution just like Red Hat. Then, number 2 is Linux Mint. Linux Mint is based on Ubuntu. That means, from Debian to Ubuntu, from Ubuntu to Linux Mint. One might think that, the parent is better than the child, just like C is better than C++. But if you try to use C++, then you might like it as you like C.

Linux Mint is very similar to Ubuntu. The great differences are: 1) Linux Mint focuses on usability, and 2) it is community-driven. The ISO file is larger than Ubuntu, because it is not restricted to FLOSS. Therefore, the installation ISO file contains Sun Java and Adobe Flash (and others). After the installation, one needs not to download these packages. This is one of the feature I prefer more than Ubuntu.

The next thing I prefer more on Linux Mint is the GNOME panel (I personally prefer GNOME more than KDE). Linux Mint uses one panel at the bottom by default; yet Ubuntu uses two panels on top and bottom by default. Though they are customizable, I feel the design of Linux Mint is really better for me, because using two panels uses quite a lot of space for the applications’ window. Linux Mint panel’s main menu is similar to Windows’ start menu, which will be more familiar to the Windows users (like me).

The next thing I like, which both Linux Mint and Ubuntu have, is the Wubi (Windows-based Ubuntu Installer). However, Linux Mint called it Mint4Win. This is a really great feature. For example, since my computer has two partitions, one is Windows 7 and the other one is Recovery partition. I afraid installing Linux Mint or Ubuntu by creating more partitions will make an unrecoverable issue in future. Using Mint4Win, the partitions are remained. Yet one can still enjoy playing with Linux.

Besides that, one can also play with the LiveCD/DVD/USB with Linux Mint. But I found that Linux Mint does not provide syslinux as Ubuntu. So, I made the LiveUSB by my own. Though there is an error message during the boot as following:

vesamenu.c32: not a COM32R image

But one can continue booting by typing “live” then enter. This will run the command based on the syslinux.cfg file.

Try Linux Mint, and you might like it~