monotorrent api is great !

Monotorrent is really great thanks to the beautiful work of Alan.
I have read the code and it is really easy to understand.

Thanks to this beautiful Api it was very easy to add a lot of features to the core api.

So here is what I have added during the last month (with the help of Alan):

  • super-seeding (also known as the initial seeding) it permit to be faster when you have made a torrent and start to broadcast it on net…In this mode the rules to choose where I send piece are different
  • uTorrent peer exchange: exchange with the swarm the peers.
  • web seeding (getright specification only) This specification allow to download on web site with HTTP and FTP and do not need any script on server side (just a regular link). This specification contain a bonus which is just a nice to have : gap management but I have not implemented it. There is just some basic code on my branch in piece picker class.
  • libtorrent metadata support: you can receive the other metadata contain in the torrent file from other peer with this message. this features allow monotorrent to be tracker less. You just download the infohash with a magnetlink and get from other peers the torrent file.

I have code some other things which are not on trunk :

  • magnet link: this features is like the edonkey link. It is link to the libtorrent metadata features.
  • a basic work for gap management in piece picking process (getright specification)
  • Event and function to have chat message usable in lib. This will evolve to support Azureus chat message protocol
  • azureus protocol: I have just started it and it is far from compilable but will be soon ;) I need to do the negotiation protocol too!

In the big next TODO there are

Here you have a list of extension in protocol:

http://wiki.theory.org/BitTorrentSpecification#Reserved_Bytes (technical view)
http://www.bittorrent.org/beps/bep_0000.html#draft-beps (official draft)

A managed OS

We have ever heard about singularity the Microsoft project to make an OS in managed language. Most is done in managed mode but some part are done in asm.

And now, we have 2 projects in open source which try to make it all in manged way SharpOS and Cosmos

Both project have succeed to boot with virtual machine.

Cosmos have made a compiler which convert the IL(intermediate language) code in assembler code. So code is compile just in time but ahead of time. (The mono compiler can ever done it). I do not know if there are differences between mono AOT and Cosmos one…

SharpOS use another way. They build a PE file with MultiBoot header.

SharpOS have a great documentation to explain how it work, especially on boot time.

If you want to learned how work an OS there is another good project named SOS for Simple OS (fork from KOS) which is lead by a French Linux magazine. This is in C/C++ but you have a lot of documentation which come from articles in the magazine freely available. All article are in french but it can help if you want to help SharpOS or Cosmos and know nothing about kernel.

sharpos

html5 working draft published!

Since 1999, there is no new features in HTML language.

The language is really poor and have not evolved with the needs of user. To fix that, we can use javascript to manipulate the DOM but it is take a lot of lines of code to do small things. We have AJAX to have better performance by not refresh the whole page.

And we have Flash, Silverlight, Moonlight, XUL,… which are basically plug-in over your browser to add a lot of cool things to your browser.

And a lot of people talked about who will win … but we have forget the HTML standard which have not evolved during a long time. The working draft of HTML 5 seems very promising.

This is a working draft, so all can evolved but we can see what they want to do…

To sum up they add a lot of missing things witch is done with AJAX, javascript, …

So, I will try to sum up what we will have in this HTML5:

  • Document structure: section, header, footer, article, aside will be useful to cut your document in area
  • Multimedia flag: video, audio will replace the object flag and will be more easier to use and canvas will allow dynamic drawing (ever in Firefox 2)
  • forms: the specification of WHATWG show what will be done here. But nothing is currently in the working draft. But we can hope new input attributs: calendar, timepicker, email, … and repeater to avoid to have a list same flags…
  • new controls: Datagrid to make tabular or hierarchical set of rows of elements. progress and meter will be cool to show to user that he have to wait. it is better than a GIF or an Ajax progress bar. And we have some other things as command and menu
  • area post: it will replace Ajax for a lot of things… here we have datatemplate, rule and nest flag to manage the template dynamically. I have not understand all here but sounds promising….
  • storing data in database: but in local and this will be persistant during the session.
  • catch drag&drop without javascirpt ;-)

This draft will evolved maybe in good maybe in bad way but hope standard will bring a lot of missing things. I do not think we will have all features of flash/silverlight in HTML5 but we will get a lot of cool new things. We will still be far from rich browser plugin but we get lot of cool new things in standard…

libxml2.so issue with mono 1.2.6

If you have an issue on ubuntu to build monodevelop 0.18 because of an error with the libxml2.so, I have found a solution.

The error talked about gzopen64 which is not found. So I looked for it in google and find this bug report:

In fact, the bug come from a bad link with libz to check it just do

whereis libxml2 //to get where it is install.

For me it is in /usr/lib, so I do

ldd /usr/lib/libxml2.so.2

This give me this result:

linux-gate.so.1 => (0xffffe000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7e2c000)
libz.so.1 => /home/myuser/mono/lib/libz.so.1 (0xb7e17000) // this is the install folder of mono 1.2.6
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7df2000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7ca8000)
/lib/ld-linux.so.2 (0×80000000)

As you can see, the libz.so.1 is linked to my binary install of mono 1.2.6.

So when I check it, I see that this is a link file to libz.so.1.2.1 in the same folder.
So, I check my previous version of this lib
whereis libz

/usr/lib/libz.so.1

This file is a linked to libz.so.1.2.3.3.

Haha! Here we are, the version of ubuntu gutsy is 1.2.3.3 and the version of mono is 1.2.1.1. So I just change the link to point to the 1.2.3.3 lib. To do that you have a lot of solution.

You can copy/paste the file from /usr/lib to your mono/lib or and just change the link file libz.so.1 to link to the libz.so.1.2.3.3. (Or you can do the trick with ldconfig as said on the bug report.)

And now monodevelop build! You can enjoy all the new features ;)

rem: The other big issue I face of is boo build because it use nant and I do not found how to install deploy it as “make install”(copy assembly in gac and make pc file). So I use gacutil to install all dll but I miss the pc file ( package config). So, I have copy the old boo.pc from /usr/lib/pkg-config/ and change version and path to get the good boo install from my new mono 1.2.6 installation folder.

I hope this can help other people who try to have monodevelop 0.18 on ubuntu!

Merry Christmas!

ubuntu 7.10 released!

This is not official but will be in few hours now official…

Ubuntu released the 7.10.

My wife want to test linux. So I will install ubuntu on her PC to compare my suse with ubuntu ;)

user friendly installer

Since I have switch to linux, I have found a lot of things very useful and really better than windows on linux.

The only thing which stuck me everytime is looking for package, find it, and install it.

The idea of a centric application sharing server is great but why show to final user all library when he only search front a front end for example.

The search & install system is really slow because it will looking for package in all repository.

For example, I have looked a video viewer (Video lan ) and I have found all package about video ( gstream lib, …) whereas I only search a front end.

For me, yast must have a basic and an advance mode.

The basic mode will show you only front end with name,description and a small screenshot. Best is too show it by category and allow user to filter with a textbox. And when you install Yast select all needed missing dependencies.

And if you are looking for a library, you will have to switch to advanced mode where you have a lot of more technical information.

This system will be far user friendly than search in thousand answer to video player…

EDIT: gnome-app-install seems to answer to my need. But it is on ubuntu (apt) whereas I am on opensuse (rpm). I will search if there is a solution for suse else I will try ubuntu. I know that suse is better for configuration with yast but ubuntu   is far better for package management.

ironruby under mono

Today, I have made a patch to fix the rakefile of Microsoft team of IronRuby.

This patch allow ironruby to be compiled with mono with the basic rakefile.

You just have to use mono flag : “rake compile mono=1″.

You can found it on ironruby mailing list.

ironruby with mono

.NET advantage released!

For all people using .NET in your job, the basic controls/components of .NET are not enough sometimes and you have to develop components. you have a lot of .NET package on the .NET to help you.

With all this stuff, you extends the basic toolset with a lot of things and have not to reinvent the weel.

On of the most known package is NetAdvantage which contain a lot of controls, components, tools for ASP.NET and windows forms.

This new release bring new features:

  • Vista look-and-feel without WPF needs
  • Export PDF, XPS and Excel
  • Improve Visual Studio help integration
  • Improve AJAX support for WYSIWYG

source

help for suse

I have found a beautiful blog which talk about Suse Linux in French. It explain all basic and is great for newbies.

Thanks to this great blog, I have found a second great site named www.Kameleon-facile.org which can generate a script to add all repository easily!!

This script is generate for smart but you can just modify a little it for Yast by adding “zypper sa <URL> <name>” where URL is the URL you have and name is the name you want to attach to this repository.(Paid attention to have name in one word)

hello from linux !!

I have switch to Linux.

All I see is incredible far from what I have seen on Linux few years ago.

I run an OpenSuse 10.3 and all my bad point on Linux have disappear :

  • The starting time have now reduce to about 30 seconds thanks to the SUPER project
  • The delay and freeze that you have with yast have disappear… No need of smart!
  • The installation system in general have been really improve. A single click is just what you need to install nvidia non oss driver!

There is a lot of other things which is really user friendly. Like the small textbox which appear when you are in a folder and hit some key to find a file. You will not just search with first letter but with you can hit more than one letter to find what you search. Yast is a lot easier and faster than previous version. You have search engine everywhere to find what you search quicker.
EDIT:

this is my desktop ;)
desktop.png

yast:
yast

start menu:
start menu opensuse

control center:
control center open suse
With only a small time I can only conclude that MS Windows is far from what we have now on Linux. It is amazing! Few years ago, we have a system where you have to use console every-time you want to do something and here you have a real desktop with 3D effect!

fish in the cube ;)
fish cube

cool animation when you close a window:
cool animation when close window

The first thing I do is get my rsa key from my windows partition and get svn/compile Mono ;) It is faster than cygwin and easier ;)

Rem: all screenshot come from opensuse site because I have not found how done screenshots ^^ (will try with print screen tonight). But I install compiz fusion and I have the same effect ;)

Rem2: the only issue for moment is that I have no sound on flash player ( I have no sound for all at start but it is just because I have 2 sound card and I select the good one in admin panel)

Page suivante »