<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-13199395</id><updated>2012-01-23T02:47:57.051+01:00</updated><category term='Seguridad'/><category term='Miscelanea'/><category term='CSharp'/><category term='Mono'/><category term='Ingenieria'/><category term='Politica'/><category term='WebDev'/><category term='Programacion'/><category term='General'/><category term='Mozilla'/><category term='SoftwareLibre'/><title type='text'>knocte :: MonoTema</title><subtitle type='html'>El oráculo de la noosfera se llamará MonoZilla, determinación que surgirá tras la homeostasis.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default?start-index=101&amp;max-results=100'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>107</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-13199395.post-367415989764873783</id><published>2011-05-08T17:09:00.006+02:00</published><updated>2011-05-08T18:22:12.653+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>#gtk#</title><content type='html'>The title of this post is the name of the &lt;a href="irc://irc.gnome.org/#gtk#"&gt;GimpNet IRC channel&lt;/a&gt; that some people are recently using to talk about the &lt;a href="http://www.mono-project.com/GtkSharp"&gt;.NET bindings of gtk+&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I had never seen this channel with people in it at all in the past. I guess the recent interest comes from the fact that &lt;a href="http://github.com/mono/gtk-sharp"&gt;gtk-sharp master&lt;/a&gt; is already targeting Gtk+ 3.x API and some people are starting to use it to port things.&lt;br /&gt;&lt;br /&gt;One example is &lt;a href="http://live.gnome.org/Hyena"&gt;Hyena&lt;/a&gt;, the awesome library that Gnome projects F-Spot, Banshee and PdfMod use (am I missing some other?). I started the port some weeks ago and all I have received is positive feedback, encouragement, and also a lot of help! For example Olivier Dufour (which I guess he will be recently known as one of the superstars that brought DVD support to Banshee -- work finished but still unmerged) who helped with accessibility and warnings, and Mike Kestner (father/maintainer of all these GAPI-based *-sharp bindings) which helped reviewing my patches to the binding and fixing other issues I reported (and of course for making huge efforts, in the first place, to have the bindings ready for the 3.x cycle, with even some GObject-Introspection experimentation, which I guess is still in the early stages and not enabled yet).&lt;br /&gt;&lt;br /&gt;Stay tuned for the progress! (as new contributors have expressed interest in helping out soon). &lt;a href="http://git.gnome.org/browse/hyena/log/?h=gtk3"&gt;Branches&lt;/a&gt; are being created so you can join the effort if you feel like (&lt;a href="https://bugzilla.gnome.org/buglist.cgi?type0-0-4=substring;short_desc=gtk3;field0-0-0=product;type0-0-1=substring;field0-0-1=component;field0-0-4=longdesc;value0-0-2=gtk3;query_format=advanced;type0-0-3=substring;value0-0-3=gtk3;field0-0-3=status_whiteboard;value0-0-4=gtk3;short_desc_type=allwordssubstr;field0-0-2=short_desc;value0-0-1=gtk3;type0-0-0=substring;value0-0-0=gtk3;product=banshee;product=f-spot;product=hyena;product=pdfmod;type0-0-2=substring"&gt;bugs in bugzilla too&lt;/a&gt;, to track what's pending).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-367415989764873783?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/367415989764873783/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=367415989764873783&amp;isPopup=true' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/367415989764873783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/367415989764873783'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2011/05/gtk.html' title='#gtk#'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-8863638604843760461</id><published>2011-04-11T18:50:00.004+02:00</published><updated>2011-04-11T19:03:26.769+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>Calling hackers who care about Android+Banshee</title><content type='html'>If you care about the neat feature about synchronizing metadata to your device using Banshee, and you have an Android device, you may be interested to hear that I created a patch for it, and it was recently reviewed requesting some changes &lt;a href="https://bugzilla.gnome.org/show_bug.cgi?id=589196"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Unfortunately my Android phone broke completely (don't ask me the details...) so I cannot work on the patch anymore. Anyone wants to continue the work?&lt;br /&gt;&lt;br /&gt;If yes, go ahead and ask me anything you want, I'm usually in &lt;a href="irc://irc.gnome.org/banshee"&gt;irc://irc.gnome.org/banshee&lt;/a&gt; with the "knocte" nickname, or you could also ask the question on the channel if I'm not there, there are usually awesome contributors there that will try to help. If you haven't ever coded for banshee, check the &lt;a href="http://banshee.fm/contribute/write-code/"&gt;Contributing&lt;/a&gt; page first.&lt;br /&gt;&lt;br /&gt;BTW, kudos to all the people involved in the Banshee v.2.0 release!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-8863638604843760461?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/8863638604843760461/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=8863638604843760461&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/8863638604843760461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/8863638604843760461'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2011/04/calling-hackers-who-care-about.html' title='Calling hackers who care about Android+Banshee'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-3744630166363800545</id><published>2011-04-10T23:10:00.004+02:00</published><updated>2011-04-11T12:55:56.150+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>WTF reduction</title><content type='html'>My first &lt;a href="https://github.com/jagregory/fluent-nhibernate/pull/12"&gt;patch&lt;/a&gt; to FluentNHibernate was just merged upstream!&lt;br /&gt;&lt;br /&gt;What it basically does is a bit of what I call WTF reduction: you will no longer get a confusing message like "For property 'Foo' expected 'Bar' of type 'Bar' but got 'Bar' of type 'Bar'" when unit testing your entities' properties.&lt;br /&gt;&lt;br /&gt;AFAIK the next release will include this, and will be the first one to link to the new version of NHibernate, 3.0, which I've found that works very well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-3744630166363800545?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/3744630166363800545/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=3744630166363800545&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/3744630166363800545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/3744630166363800545'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2011/04/wtf-reduction.html' title='WTF reduction'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-2997438258855427096</id><published>2011-03-27T16:49:00.003+02:00</published><updated>2011-03-27T16:55:05.430+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>RT: MEF vs MonoAddins</title><content type='html'>Just re-posting in my blog an interesting &lt;a href="http://groups.google.com/group/mono-addins/browse_thread/thread/ce31aac5c79414a1#msg_976d08e8e357fe6e"&gt;email&lt;/a&gt; that was sent to the &lt;a href="http://www.mono-project.com/Mono.Addins"&gt;MonoAddins&lt;/a&gt; &lt;a href="http://groups.google.com/group/mono-addins"&gt;list&lt;/a&gt;, comparing these two Addin frameworks:&lt;br /&gt;&lt;br /&gt;&amp;gt; Can you give a short summary on why you replaced MEF with Mono.Addins?&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Basically it came down to maturity.  Mono.Addins seems far more stable and mature than MEF.  The MEF documentation was lacking, inconsistent and out of date in a lot of places.  But all that could be worked around, and for the first few internal versions of our app, MEF was servicing us just fine.&lt;br /&gt;&lt;br /&gt;Then our addins became a bit more complex.  We needed to package them up with multiple files, ideally distribute them as an archive, host them online in a plugin exchange, allow them to be discovered and installed easily.  Essentially this page covers features in Mono.Addins that made us switch rather than implementing a lot of the same things using MEF ourselves:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://monoaddins.codeplex.com/wikipage?title=Creating%20and%20Managing%20Add-in%20Packages&amp;referringTitle=Programming%20Guide"&gt;http://monoaddins.codeplex.com/wikipage?title=Creating%20and%20Managing%20Add-in%20Packages&amp;referringTitle=Programming%20Guide&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;At the time as well MEF had issues on Mono on linux.  This might have been a problem with how we were using it, but it just turned out easier to plonk Mono.Addins in instead.  Was an easy migration and has a lot more power and features straight out of the box (and it worked on Linux).&lt;br /&gt;&lt;br /&gt;Your millage may vary, and your needs are probably different.  MEF might be an awesome tool for your requirements.  It is a little simpler to get up and running and requires less engineering to support it (which was one of the reasons we used it first off).&lt;br /&gt;&lt;br /&gt;Hope that helps,&lt;br /&gt;&lt;br /&gt;Michael&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-2997438258855427096?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/2997438258855427096/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=2997438258855427096&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/2997438258855427096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/2997438258855427096'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2011/03/rt-mef-vs-monoaddins.html' title='RT: MEF vs MonoAddins'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-6523353404955169440</id><published>2010-09-08T18:26:00.002+02:00</published><updated>2010-09-08T20:05:29.714+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='Ingenieria'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>Version Tolerant Serialization with Mono</title><content type='html'>&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/sGCqd6qXqP0&amp;rel=0&amp;color1=0xb1b1b1&amp;color2=0xd0d0d0&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/sGCqd6qXqP0&amp;rel=0&amp;color1=0xb1b1b1&amp;color2=0xd0d0d0&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;(Zoot Woman - Lonely By Your Syde)&lt;br /&gt;&lt;br /&gt;During the last months I've kept working {with|on} Mono, but not working for Novell anymore.&lt;br /&gt;&lt;br /&gt;Today I'm proud to blog about a bit of work I've done &lt;strong&gt;on&lt;/strong&gt; Mono towards a better Binary Serialization experience:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;mono-api-info&lt;/strong&gt; command now can output ABI instead of API if you append the flag &lt;strong&gt;--abi&lt;/strong&gt;. It has been useful for us in LindenLab while working on binary serialization compatibility between versions (already upstream!, so will be available in Mono v2.8, even with a new man page).&lt;br /&gt;&lt;br /&gt;If you ever wondered why your .NET code is no longer capable of deserializing some old binary object you had in your servers, instead of fixing the problem in a case-by-case basis, you can now see the whole picture by just diffing the output of mono-api-info --abi from your current and old codebase! A small TODO that I haven't completed yet is to deal with automatic properties (because we still don't use them) so that would be an exercise for the reader!&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Fix for upstream Mono to act as .NET in regards to &lt;a href="http://msdn.microsoft.com/en-us/library/ms229752(VS.80).aspx"&gt;Version Tolerant Serialization&lt;/a&gt;, a patch to which I have just added a lot more unit tests (soon to be pushed hopefully).&lt;br /&gt;&lt;br /&gt;You can see the patch of this quite old mono bug &lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=324144"&gt;here&lt;/a&gt;. Disclaimer: to be honest you will only need the previous --abi tool if you use a Mono version prior this fix, because from my testing VTS in MS.NET works as if every new field had an &lt;a href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.optionalfieldattribute.aspx"&gt;[OptionalField]&lt;/a&gt; attached! (At least the BinaryFormatter, the TODO here for the reader is to test the SoapFormatter ;) )&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;On a totally unrelated note: kudos to the MonoDevelop team for making such a great releases lately (and fixing the bugs I report so promptly). I've been testing it the last months on Windows and I can say it's a great experience to see your favorite IDE working cross-platform and making you not depend on VS anymore if you need to work on Windows from time to time (I know the Express versions are free, and are great! but they do not support plugins :( ). BTW, I've been lately experimenting with the C language support in this IDE, and have had some problems, but the real culprit seems to lay behind some wierd behaviour of my &lt;strong&gt;gdb&lt;/strong&gt; in opensuse. Taking advantage that I'm in opensuse planet, can I do a couple of lazyweb requests?:&lt;br /&gt;&lt;br /&gt;a) If you're quite familiar with gdb, can you take a look at these 2 bugs in case it rings any bell for you? &lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=588175"&gt;BNC#588175&lt;/a&gt;, &lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=459274"&gt;BNC#459274&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;b) Can you try to reproduce those bugs in openSUSE 11.3? (I haven't migrated yet from 11.2 because I fear about the HALlessness of it :) )&lt;br /&gt;&lt;br /&gt;PS: Wondered why the video on the top? Well, I like the trend that some people have about posting random photos in their blog posts even when they may be completely unrelated, but in my case I love music so I figured this would suit better. Of course I would rather embed a WebM video or, even better, something that can preview a song (without video) in a "normally-lower-quality-than-what-you-can-buy" way, so if you have any hints, those are welcome! I especially mention the latter in this case because the Album version of the song above is much much better (synth pop FTW!).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-6523353404955169440?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/6523353404955169440/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=6523353404955169440&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/6523353404955169440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/6523353404955169440'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2010/09/version-tolerant-serialization-with.html' title='Version Tolerant Serialization with Mono'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-4526389134176332057</id><published>2010-07-06T16:10:00.002+02:00</published><updated>2010-07-06T16:19:05.810+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='Ingenieria'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><category scheme='http://www.blogger.com/atom/ns#' term='WebDev'/><title type='text'>Mono? What?</title><content type='html'>Really sad to read this:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.aaronstannard.com/post/2010/07/03/NET-Culture-Shock-Why-NET-Adoption-Lags-Among-Startups.aspx"&gt;.NET Culture Shock: Why .NET Adoption Lags Among Startups&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Especially sad to find that Mono is not mentioned in the article.&lt;br /&gt;&lt;br /&gt;Especially super sad to find that Mono &lt;strong&gt;is&lt;/strong&gt; mentioned in the comments, but in a negative way.&lt;br /&gt;&lt;br /&gt;Hey Mono community, help me reply all this nonsense.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-4526389134176332057?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/4526389134176332057/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=4526389134176332057&amp;isPopup=true' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/4526389134176332057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/4526389134176332057'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2010/07/mono-what.html' title='Mono? What?'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-8062591794030435278</id><published>2010-02-06T17:10:00.005+01:00</published><updated>2010-02-09T15:06:29.103+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Miscelanea'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>3G Roaming</title><content type='html'>Spanish providers:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.movistar.es/particulares/roaming/datos.html"&gt;Movistar&lt;/a&gt;. Summary: 50€ monthly, 50 MB limit, every country. Pending question: what is the 10€ connection fee?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.vodafone.es/empresas/tarifas/empresas/precios/planes_datos/roaming/"&gt;Vodafone&lt;/a&gt;. Summary: 75€ monthly, 100 MB limit, only some countries. Pending question: what if the country is not listed in the coverage list?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://empresas.orange.es/internacional_y_roaming/roaming/belgica.html"&gt;Orange (example: Belgique)&lt;/a&gt;. Summary: 30€ monthly (mobile internet connection, not USB powered), 100MB limit, limited coverage (URL is example for Belgique, other countries may have different conditions).&lt;br /&gt;&lt;br /&gt;Yoigo (no info on the web about 3G roaming, yes from their customer service: 1705): 0.003 € per KB in EU and other european countries, 0.009 for the rest; that is, no plain fare.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Dear lazyweb: any better 3G roaming rates with the providers in your country?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-8062591794030435278?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/8062591794030435278/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=8062591794030435278&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/8062591794030435278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/8062591794030435278'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2010/02/3g-roaming.html' title='3G Roaming'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-2983286978822324718</id><published>2009-06-01T00:47:00.006+02:00</published><updated>2009-06-08T16:08:04.787+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>It's all about synchronization</title><content type='html'>It's been a while since I &lt;a href="http://knocte.blogspot.com/2006/06/ifolder-no-tan-bonito-como-lo-pintan.html"&gt;first blogged&lt;/a&gt; about iFolder. At that time it was a bit unstable and I didn't have a good experience overall with it. Unfortunately the development of new features stopped, but there were a lot of fixes to improve its stability, which made into the version 3.7. Unfortunately again, this version was not released on the open, but now Novell has &lt;a href=""&gt;rectified&lt;/a&gt; and iFolder is gaining momentum again (especially because it's the only really open source alternative to DropBox or UbuntuOne!).&lt;br /&gt;&lt;br /&gt;Who could have imagined at that time, that 3 years later I would not only be working for Novell, but also be able to contribute to it at normal work hours! Yes, this is &lt;a href="http://en.wikipedia.org/wiki/ITO"&gt;ITO&lt;/a&gt;, and our team spent a week hacking on other projects. In my case, I worked with the awesome guys &lt;a href="http://www.decriptor.com/"&gt;Stephen Shaw&lt;/a&gt; and &lt;a href="http://blog.carrion.ws/"&gt;Mario Carrión&lt;/a&gt;. We managed to create an iFolder appliance for the server based on openSUSE 11.1, very easy to install thanks to SUSE Studio and to a new OBS repository where we packaged a preview of Mono 2.4.2 and some fixes needed to make it work.&lt;br /&gt;&lt;br /&gt;We even created some demos! (Sorry for the quality of the sound, we had some problems when recording them)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mono-a11y.org/videos/ito-2009/iFolder1.ogv"&gt;The first one&lt;/a&gt;: setting up the appliance.&lt;br /&gt;&lt;a href="http://www.mono-a11y.org/videos/ito-2009/iFolder2.ogv"&gt;The second one&lt;/a&gt;: creating a user and using the Linux iFolder client.&lt;br /&gt;&lt;br /&gt;Now, the next two videos are intended to show the second part of our work on that innovation week: new features.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mono-a11y.org/videos/ito-2009/iFolder3.ogv"&gt;The third one&lt;/a&gt;: automatic/immediate local detection of changes, server side trash can.&lt;br /&gt;&lt;a href="http://www.mono-a11y.org/videos/ito-2009/iFolder4.ogv"&gt;The fourth one&lt;/a&gt;: automatic/immediate remote synchronization of changes.&lt;br /&gt;&lt;br /&gt;How cool is that? Unfortunately, the patches still need work and cleanup (help welcome!), but I plan to do it soon and/or on next hack week.&lt;br /&gt;&lt;br /&gt;Before coming back to hacking on iFolder, I wanted to finish some stuff am working on for Banshee, which is also about synchronization! Look at this &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=389550"&gt;bug&lt;/a&gt; for more details. Yes! bidirectional Rating synchronization, not only from Banshee to the iPod but from the iPod to Banshee. The patch is working fine for me, be sure to give it a go and provide some feedback. Thanks!&lt;br /&gt;&lt;br /&gt;Another thing I have on my TODO list is integrate some old mono-based GPL ed2k library into monsoon, now that it's getting MonoAddins support! (Lately there's been many people &lt;a href="http://knocte.blogspot.com/2005/09/cierran-el-ncleo-del-cliente-p2p.html"&gt;asking me&lt;/a&gt; for the source code.) And now that I talk about monotorrent, how cool would be to make iFolder work with this awesome library??&lt;br /&gt;&lt;br /&gt;PS: Hello PlanetSUSE! First post. Hola Planeta GnomeHispano ;)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;UPDATE Jun-08-2009&lt;/strong&gt;: It seems someone &lt;a href="http://lists.ximian.com/pipermail/mono-list/2009-June/042658.html"&gt;wants to resurrect&lt;/a&gt; the lphant kernel as well, but using WPF! (WTF?): &lt;a href="http://sourceforge.net/projects/hathi/"&gt;http://sourceforge.net/projects/hathi/&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-2983286978822324718?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/2983286978822324718/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=2983286978822324718&amp;isPopup=true' title='6 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/2983286978822324718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/2983286978822324718'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2009/06/its-all-about-synchronization.html' title='It&apos;s all about synchronization'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-1701207951063828434</id><published>2009-03-30T23:59:00.001+02:00</published><updated>2009-03-31T04:09:44.776+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mozilla'/><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='Ingenieria'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><category scheme='http://www.blogger.com/atom/ns#' term='WebDev'/><title type='text'>I14Y happens</title><content type='html'>Some years ago, I started to get familiarized with abbreviations like 'l10n', 'i18n' when I started contributing to the translation efforts of Mozilla &amp; Firefox under the &lt;a href="http://www.proyectonave.es/"&gt;NAVE Project&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Some months later I came to know the new term 'a11y', and I started to see it in a lot of places. By that time, I only associated it with the web development world. Terms like "Unobstrusive JavaScript" were very related to it (and I even created an "AJAXy" library called &lt;a href="http://amuse.berlios.de/"&gt;AMUSE&lt;/a&gt; for this purpose).&lt;br /&gt;&lt;br /&gt;Now let's talk about the next one: I14Y. This concept is present when things like this happen: "I can open an (Microsoft's)OpenXML file with some (Novell's) edition of (Sun's)OpenOffice". Or even more weird things: "I can manage my (Apple's)IPod thanks to a (Microsoft's).NET-powered application called (Novell's)Banshee". Or even more awesome ones: "I can use (Sun?'s)Orca screen reader to control my (Microsoft's)Windows.Forms-powered applications in my (Novell's)SUSE Linux Box!".&lt;br /&gt;&lt;br /&gt;So, yeah, we made &lt;a href="http://www.mono-project.com/Accessibility:_Release_Notes_1.0"&gt;it&lt;/a&gt;! Along with the awesome releases of &lt;a href="http://www.mono-project.com/news/archive/2009/Mar-30.html"&gt;Mono 2.4 and MonoDevelop 2.0&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now, guess what's the word?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-1701207951063828434?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/1701207951063828434/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=1701207951063828434&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/1701207951063828434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/1701207951063828434'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2009/03/i14y-happens.html' title='I14Y happens'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-6174024406639106650</id><published>2009-02-04T06:48:00.009+01:00</published><updated>2009-02-04T16:14:45.224+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>My first .NET runtime wishlist item</title><content type='html'>Heh, I came up with this while coding a &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=570312"&gt;patch for Banshee&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;public class TestStaticInits&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;public static readonly X var = new X ("Hello" + world);&lt;br /&gt;&amp;nbsp;&amp;nbsp;private static string world = " World";&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class X&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;public X (string s)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine (s);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public override string ToString () { return "Bye"; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class WishList&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;public static int Main(string[] args)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine (TestStaticInits.var.ToString ());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Shouldn't this print Hello World instead of just Hello? Basic initializations should have more priority than those involving constructors :)&lt;br /&gt;&lt;br /&gt;At least it works if you replace the second &lt;strong&gt;static&lt;/strong&gt; with &lt;strong&gt;const&lt;/strong&gt;... But this confused me a bit for a while. So definitely something the compiler could warn about (ok, Gendarme is another candidate too).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;UPDATE&lt;/strong&gt;: And anyway, if we accept that our runtime is not so clever, it should give a NRE instead of printing Hello, right? You cannot concatenate a string with null. So is this a .NET bug?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;UPDATE&lt;/strong&gt;: Doh! I could have sworn that I got a lot of NRE's in the past when coding this &lt;code&gt;Console.WriteLine ("Hey" + null);&lt;/code&gt; (I mean, when using a var and not protecting against null). Thanks for all the comments.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-6174024406639106650?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/6174024406639106650/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=6174024406639106650&amp;isPopup=true' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/6174024406639106650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/6174024406639106650'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2009/02/my-first-net-runtime-wishlist-item.html' title='My first .NET runtime wishlist item'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-1935182561501568761</id><published>2008-12-26T22:10:00.006+01:00</published><updated>2009-02-16T21:36:02.671+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>On open source software and technical support: the reality</title><content type='html'>I was curious about some discussion threads posted in &lt;a href="http://www.linkedin.com"&gt;LinkedIn&lt;/a&gt;'s &lt;a href="http://www.linkedin.com/groups?home=&amp;gid=43875&amp;trk=anet_ug_hm"&gt;Open Source group&lt;/a&gt;. &lt;a href="http://www.linkedin.com/groupAnswers?viewQuestionAndAnswers=&amp;gid=43875&amp;discussionID=805053&amp;goback=%2Eanh_43875"&gt;One&lt;/a&gt; had the following content:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;br /&gt;Is 2009 The year of "supported open source" Do you agree or disagree ?&lt;br /&gt;&lt;br /&gt;I have to admit having worked on both sides of the fence the biggest trend we are now experiencing on web related project requirements is the shift to "supported open source technology"...&lt;br /&gt;&lt;br /&gt;The days of 6 figure plus licence fees are now over "phew" our clients thankfully quote...&lt;br /&gt;&lt;br /&gt;Old versus New&lt;br /&gt;&lt;br /&gt;Interwoven / Vignette versus Alfresco / MySource Matrix ?&lt;br /&gt;Salesforce versus Sugar CRM ?&lt;br /&gt;Documentum / Trim versus Alfresco / Sharepoint Integrated CMS's&lt;br /&gt;&lt;br /&gt;What are your thoughts fellow CM Professionals ? Don't just take my word for it... http://cmswatch.com/Feature/189&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;I read some interesting opinions below, such as this one from Tony Wasserman:&lt;br /&gt;&lt;em&gt;&lt;br /&gt; To me, the issue here is adoption and use of open source software by companies and governments for activities that are essential to their businesses. One of the key corporate criteria for that type of software acquisition is availability of long-term 24x7 support, including service level agreements for problem resolution. These CIO's and other decision-makers just don't accept the idea that they can post their issues on a forum and that someone will post a reply. They want a toll-free telephone number to call with the assurance that someone knowledgeable will answer and address the issue.&lt;br /&gt;&lt;br /&gt;For example, while small companies and the technically knowledgeable will download and install the Drupal CMS (and its underlying components), the corporate buyer, by contrast, will go to Acquia, gladly paying for support. As a better example, many of the installations of open source software in corporate environments are being done through consultants and system integrators, such as Wipro, Infosys, Accenture, and IBM.&lt;br /&gt;&lt;br /&gt;So now the next question is whether the demand for open source software will increase in 2009. For that, I would give a qualified "yes". Startups have been building their companies on open source software for most of this decade, and will continue to do so, but they are not spending a lot of money on support, consulting, and training services. Developers in companies of all sizes have also long used open source software packages and libraries, including Eclipse, NetBeans, JBoss, MySQL, and hundreds of others, again without much money changing hands.&lt;br /&gt;&lt;br /&gt;For enterprise applications, companies have already made substantial investments in existing proprietary software from Oracle, SAP, Microsoft, and other vendors, so it is hard for them to justify replacing it. The enterprise opportunities for open source come with new applications, and with growing companies that need these applications.&lt;br /&gt;&lt;br /&gt;So I think that there will be growing revenue in 2009 for the system integrators providing open source support and services, as well as some money for the vendors of commercialized open source products, such as Zenoss, Groundwork, and other infrastructure packages. I think that the growth for the application packages is probably a little further out, though I would make an exception for OpenOffice.org , which has already seen a lot of acceptance.&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Or this one from Glenn A. Curry:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;br /&gt;Tony brings up an interesting issue. That of access to tech support. But our experience has been that the tech support available from commercial software manufacturers is in many cases worse than nonexistent. Not all have 24x7. And even if there is someone that answers the phone, there typically is little value in talking to them.&lt;br /&gt;&lt;br /&gt;In trying to resolve software issues for our customers, we are most often given answers like "just keep reinstalling it till it works". Or they want security settings reduced because their interface is sloppy. Or they just flat give bad answers. The extremely poor level of phone support so often found is incredible. The battle required to move up the chain to someone that actually has a clue is frustrating and costly to the customer as they have to pay for our time while on the phone.&lt;br /&gt;&lt;br /&gt;e.g. we spent days dealing with Sage on a Peachtree upgrade. Their solution (besides the before mentioned "just keep reinstalling it, that usually makes it work eventually") was to run as administrator all the time to get around a security problem. Eventually we found the problem and solved it with some port mapping. It was a common problem based on discussions on techie sites. AFAWK it is still a problem for them. We sure are not going to tell them how to fix THEIR bad software design for free. And noe one there had a clue.&lt;br /&gt;&lt;br /&gt;And I won't even begin to list the massive Microsoft tech support nightmares.&lt;br /&gt;&lt;br /&gt;Just because a company claims 24x7 tech support, does not mean it has an actual usable value.&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;So, without trying to be devil's attorney, I gave my opinion:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;br /&gt;I think Tony and Glenn raise good points about support, but I would like to arise a third point, that maybe contrasts with them. The issue is not about support itself, but about what does "support" mean in open source software:&lt;br /&gt;&lt;br /&gt;1) Yes, in open source, there's no monopoly about technical support, and this is always a good thing, except for the cases in which it can be seen wrongly as bad quality, because:&lt;br /&gt; a) It may happen that there's no company behind an open source project, just one or some developers, and it's a bit awkward to ask them for support if they're not professionally gathered in some way. Besides, if the developer base is so small, it's going to be difficult to find another company which gives you support if they don't know much about the product.&lt;br /&gt; b) It may happen that the developer-base is spread around many companies (for example: OpenOffice, the Linux kernel), so the company that needs support is normally confused as to which one is the best one to request support. This is awkward to a company which normally considers a product to come from "just one company".&lt;br /&gt;&lt;br /&gt;2) Propietary software may mean a monopoly in regards to technical support but, let's face it: many incompetent people working inside companies just prefer some provider to blame if something goes wrong: "we're stuck in this issue because Oracle (or put you're favorite propietary software company here) technical support sucks", and it's not their fault anymore. If they had chosen an open source software solution, they may be accused of:&lt;br /&gt; a) Not choosing the best provider for technical support.&lt;br /&gt; b) Not fixing the issue themselves, since, if you have the code, it's just a matter of time to solve it, right?&lt;br /&gt;&lt;br /&gt;Well, just trying to be realistic. Of course I advocate open source (I work on it on a daily basis), but just wanted to give some clues about why it's not getting the success it should have.&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;In general, the (2) point and (2a) in particular, is very similar to the reason why still incompetent but huge companies survive on the market: I've heard many cases of people just buying Oracle or Accenture because they're the most expensive. If all goes wrong, it's impossible they would be accused of selecting the wrong provider if they selected the most expensive one, right?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;UPDATE 16-FEB-2008&lt;/strong&gt;: Even though the above given problems about choosing open source solutions, here's a nice guide to try to overcome them: &lt;a href="http://www.freesoftwaremagazine.com/articles/convince_management/"&gt;Convincing Management To Approve Free Software&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-1935182561501568761?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/1935182561501568761/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=1935182561501568761&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/1935182561501568761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/1935182561501568761'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2008/12/on-open-source-software-and-technical.html' title='On open source software and technical support: the reality'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-2937351421421065172</id><published>2008-10-16T06:57:00.013+02:00</published><updated>2010-09-14T21:17:23.873+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Politica'/><category scheme='http://www.blogger.com/atom/ns#' term='Miscelanea'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Hilarious, but true (ninja crisis, a.k.a. how to hack the economy)</title><content type='html'>&lt;div&gt;&lt;object width="420" height="336"&gt;&lt;param name="movie" value="http://www.dailymotion.com/swf/k7n6PY3vxFUQWVHSpY&amp;related=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.dailymotion.com/swf/k7n6PY3vxFUQWVHSpY&amp;related=1" type="application/x-shockwave-flash" width="420" height="336" allowFullScreen="true" allowScriptAccess="always"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.dailymotion.com/video/x684wa_the-last-laugh-george-parr-subprime_fun"&gt;The Last Laugh - George Parr - Subprime - subtitulos&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update 01-NOV-2008&lt;/strong&gt;: &lt;a href="http://leopoldoabadia.blogspot.com/search/label/+%20ANEXO%201%20Crisis%20NINJA"&gt;Awesome explanation of the current crisis here (in Spanish, sorry)&lt;/a&gt; (not so hilarious).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update 22-OCT-2009&lt;/strong&gt;: Seems like the crisis is morphing into a really scary potential problem of inflation, especially in USA. Now that my salary is in USD instead of euros, I'm kind of pissed off. Some interesting links (sorry, some in Spanish):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://meneame.net/story/el-dolar-fantasma"&gt;El dólar fantasma&lt;/a&gt;&lt;br /&gt;&lt;a href="http://meneame.net/story/volvemos-nuevo-al-patron-oro"&gt;¿Volvemos de nuevo al patrón oro?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://meneame.net/story/pasara-dolar-deja-ser-moneda-referencia-euro-sustituto"&gt;¿Qué pasaría si el dólar dejara de ser moneda de referencia? ¿El euro, el substituto?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.negociame.com/story/ee-uu-miedo-la-hiperinflacion"&gt;EEUU, miedo a la hiperinflación&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.negociame.com/story/fiebre-oro-convierte-pandemia"&gt;La fiebre del oro se convierte en pandemia&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;These news contrast with this other article: &lt;a href="http://www.negociame.com/story/se-acerca-la-deflacion-espana"&gt;¿Se acerca la deflación a España?&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;But in general I think that a lot of clues and interpretations from the film "Zeitgeist Addendum" are really happening. I recommend you to watch it.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update 23-AUG-2010&lt;/strong&gt;: Following the line about the fears about dollar inflation or just its hegemony, I would like to copy-paste a news article that somehow was said to be censored, then appeared in &lt;a href="http://www.rebelion.org/"&gt;Rebelion.org&lt;/a&gt;, and then it somehow &lt;a href="http://www.rebelion.org/noticia.php?id=111333"&gt;disappeared&lt;/a&gt;. I don't know the reason for them to remove it (maybe it's indeed because it's false, I don't know), but that's an excercise for the reader. Here it is, so it doesn't get lost through the World Wide Web (if my blog is the last place where it survives, maybe I should send it to WikiLeaks! :D) :&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Ernesto Carmona&lt;br /&gt;Argenpress&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;La moneda estadounidense tiene sus días contados como rectora de las transacciones internacionales y como divisa para conservar las reservas de los países. Cada vez hay más conciencia de que los bancos centrales del mundo están apuntalando directamente al criminal sistema financiero de EEUU al transferirle sus reservas a cambio de Bonos del Tesoro y otros papeles. La transferencia de reservas alivia el eterno déficit fiscal y financia las guerras que siempre está emprendiendo el complejo militar-industrial alojado en el Pentágono. El Proyecto Censurado de la Universidad Sonoma State de California nominó este tema para su probable inclusión en el ranking anual de las 25 noticias más censuradas en 2009/2010, que se publicarán en el libro Censored 2011, como todos los años por la editorial Seven Stories de Nueva York.&lt;br /&gt;&lt;br /&gt;Los grandes medios mundiales no han informado que ya existen varias iniciativas concretas para reemplazar al dólar de EEUU como moneda global. Se han venido adoptando acuerdos para sepultar al billete verde –no difundidos por la gran prensa– en la Conferencia de Comercio y Desarrollo de la ONU (UNTACD, por su sigla en inglés), en los 9 países ALBA de América Latina y en 6 naciones de Asia, incluida Rusia; Irán también quiere desembarazarse del dólar, mientras la misma urgencia se ha planteada en otros foros internacionales.&lt;br /&gt;&lt;br /&gt;Acuerdos históricos&lt;br /&gt;&lt;br /&gt;En septiembre de 2009, la Conferencia UNTACD propuso crear una nueva moneda que sustituya al dólar como reserva y rediseñar el “estilo Bretton Woods” del actual sistema monetario internacional. Esta iniciativa para una nueva divisa conduciría a la mayor revisión monetaria desde la Segunda Guerra Mundial. (El complejo hotelero de Bretton Woods (Nueva Hampshire) sirvió de sede a la Conferencia Monetaria y Financiera de la ONU que en 1944 estableció las reglas en las relaciones comerciales y financieras de los países industrializados del mundo de postguerra y decidió la creación del Banco Mundial y del Fondo Monetario Internacional y el uso del dólar como moneda internacional).&lt;br /&gt;&lt;br /&gt;Las naciones de todo el orbe parecen haber alcanzado su límite en subvencionar las aventuras militares de Estados Unidos. Las reuniones de junio de 2009 en Ekaterimburgo, Rusia, con la presencia de líderes mundiales como el presidente chino Hu Jintao, el ruso Dmitri Medvedev y otros altos funcionarios de las seis naciones de la Organización de Cooperación de Shangai (China, Rusia, Kazajstán, Kirguizistán, Tayikistán y Uzbekistán), también adoptaron la primera medida formal de socios comerciales importantes de EEUU para sustituir el dólar como moneda de reserva del mundo. Si tienen éxito, el valor del dólar caerá dramáticamente en picada y el costo de importaciones como el petróleo se elevará súbitamente y el imperio de EEUU no podrá continuar sus guerras. Además, China ha estado negociando tratos con Brasil y Malasia para valorar su comercio en yuanes chinos, mientras Rusia anuncia que comenzará a negociar en rublos y divisas locales. Además, Rusia, India, Paquistán e Irán están formando un área financiera oficial y militar para intentar forzar la salida de EEUU de Eurasia.&lt;br /&gt;&lt;br /&gt;También 9 países latinoamericanos estuvieron de acuerdo en la creación de una moneda regional, el sucre, para dejar atrás el uso del dólar estadounidense. Los 9 miembros del ALBA (Alianza Bolivariana para los Pueblos de Nuestra América), un bloque izquierdista concebido por el presidente venezolano Hugo Chávez, en una reunión cumbre efectuada en octubre de 2009 en Bolivia, se comprometieron a seguir avanzando en el uso del sucre, la nueva unidad de cuenta que sustituye al dólar estadounidense como moneda en su comercio intrarregional. El nuevo medio de pago no monetario llamado Sucre, sigla de Sistema Unificado de Compensación Regional de Pagos, comenzó a desarrollarse a principios de 2010 como unidad de cuenta convencional (no en papel moneda), entre los estados miembros del ALBA (Venezuela, Bolivia, Cuba, Ecuador, Nicaragua, Honduras, Dominica, San Vincent/Antigua y Barbuda). El bloque también llamó a reemplazar el Centro Internacional para Resolución de Disputas sobre Inversiones (ICSID, por su sigla en inglés) del Banco Mundial, cuyos arbitrajes sobre desencuentros en contrataciones internacionales han involucrado a naciones miembros ALBA en una ciénaga de conflictos con algunas grandes empresas petroleras transnacionales. La mayoría de los miembros ALBA ya se retiraron de la organización, y Ecuador anunció que también saldrá del grupo.&lt;br /&gt;&lt;br /&gt;Sistema financiero criminal&lt;br /&gt;&lt;br /&gt;Entre los pocos medios que divulgaron esta historia, el británico www.Telegraph.co.uk tituló "La ONU quisiera que una nueva moneda global sustituya al dólar". El redactor de economía Edmund Conway escribió el 7 de septiembre de 2009 que la propuesta UNCTAD constituye "la revisión más grande del sistema monetario del mundo desde la Segunda Guerra Mundial” y añadió que “ésta es la primera vez que una institución multinacional importante ha postulado tal sugerencia”. Dijo que “una cantidad de países, incluyendo China y Rusia, sugirieron sustituir al dólar como moneda de la reserva de mundo en un informe radical de la Conferencia de la ONU sobre Comercio y Desarrollo”. El informe de la ONU indicó que “el sistema de divisas y regulación de capitales que amarra a la economía mundial no está funcionando correctamente, y es en gran parte responsable de las crisis financieras y económicas”.&lt;br /&gt;&lt;br /&gt;“El reemplazo del dólar por una moneda artificial solucionaría algunos de los problemas relacionados con el potencial de los países que enjugan grandes déficits y ayudaría a la estabilidad”, dijo Detlef Kotte, uno de los autores del informe. Las propuestas incluidas en el informe anual UNCTAD contienen las sugerencias más radicales nunca formuladas para rediseñar el sistema monetario global.&lt;br /&gt;&lt;br /&gt;“El imperio estadounidense está arruinado”, escribió el 15 de junio de 2009 el columnista Chris Hedges, en www.TruthDig.com y www.CommomDreams.Org. Comentando las reuniones en Ekaterimburgo (antes Sverdlovsk, Rusia), de los presidentes chino Hu Jintao, el ruso Medvedev y otros altos funcionarios de las seis naciones de la Organización de Cooperación de Shangai, Hedges aseguró que “Barack Obama y la clase criminal de Wall Street, ayudados por medios corporativos que continúan vendiendo puerta a puerta chismes fatuos y basura que hacen pasar como noticias, mientras aguantamos la crisis económica más grande de nuestra historia, pueden habernos engañado, pero el resto del mundo sabe que estamos arruinados. Y se maldicen estas naciones si van a continuar apoyando para mantener a flote un dólar inflado y sostener los déficits presupuestarios federales masivos, hinchados por encima de 2 billones de dólares, que financian la expansión imperial de EEUU en Eurasia y nuestro sistema de capitalismo de casino. Nos tienen agarrados por la garganta. Están a punto de apretar”.&lt;br /&gt;&lt;br /&gt;El “reemplazo del dólar por una moneda convencional solucionaría algunos de los problemas relacionados con el potencial de los países que enjugan grandes déficits y ayudaría a la estabilidad,” dijo Kotte. Aunque muchos economistas hayan señalado que la crisis económica se debió al mal funcionamiento del sistema monetario establecido en los acuerdos de Bretton Woods, hasta ahora ninguna institución importante, incluyendo al G20, ha levantado una alternativa.&lt;br /&gt;&lt;br /&gt;Nota:&lt;br /&gt;Esta noticia censurada surgió de la investigación de los estudiantes Nicole Fletcher, de Sonoma State University; Krystal Alexander, del Indian River State College; y Bridgette Grillo, del Diablo Valley College. Fue validada por los académicos Ronald López, de Sonoma State University; Elliot D. Cohen, del Indian River State College; y Mickey Huff, del Diablo Valley College.&lt;br /&gt;&lt;br /&gt;Fuentes de Proyecto Censurado:&lt;br /&gt;&lt;br /&gt;–“The American Empire Is Bankrupt” Chris Hedges, TruthDig.com, June 15, 2009 http://www.truthdig.com/report/item/20090614_the_american_empire_is_bankrupt/ or http://www.commondreams.org/view/2009/06/15-0&lt;br /&gt;&lt;br /&gt;–“De-Dollarization: Dismantling America’s Financial-Military Empire :-The Yekaterinburg Turning Point” Prof. Michael Hudson, Global Research, June 13, 2009 http://www.globalresearch.ca/index.php?context=va&amp;aid=13969&lt;br /&gt;&lt;br /&gt;–“Iran and Russia nip at US global dominance” Fred Weir, The Christian Science Monitor, June 16, 2009 http://www.csmonitor.com/2009/0616/p06s12-woeu.html&lt;br /&gt;&lt;br /&gt;–Telegraph Media Group&lt;br /&gt;&lt;br /&gt;http://www.telegraph.co.uk/finance/currency/6152204/UN-wants-new-global-currency-to-replace-dollar.html&lt;br /&gt;&lt;br /&gt;http://www.nytimes.com/2009/07/08/world/europe/08pope.html&lt;br /&gt;&lt;br /&gt;http://www.bloomberg.com/apps/news?pid=20601087&amp;sid=aeFVNYQpByU4&lt;br /&gt;&lt;br /&gt;–Latin American Leftists Tackle Dollar with New Currency&lt;br /&gt;&lt;br /&gt;Source: Agence France-Presse, October 17, 2009&lt;br /&gt;&lt;br /&gt;URL: http://www.commondreams.org/headline/2009/10/17-3&lt;br /&gt;&lt;br /&gt;Ernesto Carmona, periodista y escritor chileno, consejero nacional del Colegio de Periodistas y jurado internacional del Proyecto Censurado.&lt;br /&gt;&lt;br /&gt;Fuente: www.argenpress.info/2010/08/noticias-censuradas-los-dias-del-dolar.html&lt;br /&gt;&lt;br /&gt;rCR&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update 06-SEPT-2010&lt;/strong&gt;: The initiatives mentioned in the last article to replace the american dollar are starting to arise, like &lt;a href="http://www.elblogsalmon.com/mercados-financieros/fmi-propone-abandonar-al-dolar-y-cambiarlo-por-el-bancor"&gt;this one from the IMF&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update 14-SEPT-2010&lt;/strong&gt;: &lt;a href="http://www.attac.es/de-lo-que-no-se-habla-sobre-la-crisis/"&gt;&lt;/a&gt;Awesome article (in Spanish again) that explains the big picture and tells why the crisis we have been told about is only the symptom of a real and much deeper problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-2937351421421065172?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/2937351421421065172/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=2937351421421065172&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/2937351421421065172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/2937351421421065172'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2008/10/hilarious-but-true.html' title='Hilarious, but true (ninja crisis, a.k.a. how to hack the economy)'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-4439402429179237681</id><published>2008-09-07T22:22:00.000+02:00</published><updated>2008-09-08T02:38:41.424+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mozilla'/><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><category scheme='http://www.blogger.com/atom/ns#' term='Seguridad'/><category scheme='http://www.blogger.com/atom/ns#' term='WebDev'/><title type='text'>Hackweeks</title><content type='html'>I'm going to give a brief summary of what I've done in the past weeks (and specially previous week (last one in August), sponsored by Novell as &lt;strong&gt;The Hackweek&lt;/strong&gt; - a form of ITO, in which you can hack at working hours and not only spare time!&lt;br /&gt;&lt;br /&gt;I was not so lucky as most of my teammates, who spent the week on the wonderful offices (as they say) of Novell Utah. Maybe if I was in the states already... but well, I had recently an interview in the US Embassy which was the last step of my visa process, so I hope that at least I can make it for the Gnome Boston Summit!&lt;br /&gt;&lt;br /&gt;So, firstly I thought of dedicating my week to &lt;a href="http://idea.opensuse.org/content/ideas/party-extension-for-banshee-youtubeflash-streaming-mixed-with-current-music-in-the-user-s-library"&gt;this task&lt;/a&gt; that I submitted to the ideas website, but in the end realized it would be a ton of work to complete without help, and nobody joined me so I decided to learn to use &lt;a href="http://en.opensuse.org/Build_Service"&gt;OpenSuseBuildService&lt;/a&gt; in order to &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=369200"&gt;package Bugzilla&lt;/a&gt;, &lt;a href="http://www.bugzilla.org/"&gt;a pretty complex server side software&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Fortunately, I've learnt a lot this week, especially thanks to all the people in &lt;a href="irc://irc.freenode.net/#openSUSE-buildservice"&gt;irc://irc.freenode.net/#openSUSE-buildservice&lt;/a&gt; (above all, darix) and some people from &lt;a href="http://www.mono-project.com/Accessibility:_Team"&gt;my team&lt;/a&gt; (&lt;a href="http://gnuray.blogspot.com/"&gt;Ray Wang&lt;/a&gt; and &lt;a href="http://www.decriptor.com/"&gt;Stephen Shaw&lt;/a&gt;). I could also contact the author of the RPM file for Fedora (who was formerly working for Red Hat), and he's willing to help on joining efforts, as OBS is cross-distribution.&lt;br /&gt;&lt;br /&gt;Unfortunately, packaging is a complex task and I didn't finish the package. The &lt;a href="http://lists.opensuse.org/opensuse-buildservice/2008-08/#00204"&gt;documentation is a bit incomplete&lt;/a&gt; and having past experience in packaging is a plus that I didn't have. It's awesome that inside our &lt;a href="http://www.mono-project.com/Accessibility:_Team"&gt;UIA Team&lt;/a&gt; we have exclusive resources dedicate to this, because it would be impossible to do from just the developer side.&lt;br /&gt;&lt;br /&gt;One of the difficulties I found is finding packages I needed. I could find some of them (BTW, using &lt;a href="http://packages.opensuse-community.org/"&gt;Webpin&lt;/a&gt; is cool for searching on SUSE software repositories, including &lt;a href="http://packman.links2linux.org/"&gt;Packman&lt;/a&gt;; except for the fact that doesn't enhance one-click-install) but not all so then I'll have to help on providing packages for some CPAN Perl modules, contributing to the &lt;a href="https://build.opensuse.org/project/show?project=devel:languages:perl"&gt;devel:languages:perl&lt;/a&gt; official repo.&lt;br /&gt;&lt;br /&gt;On the way of learning OBS, I also filed bugs and feature requests (not only to OBS, but also to Banshee! as I have been using it a lot lately at the same time I hack and I even cooked some small patches):&lt;br /&gt;&lt;br /&gt;OBS:&lt;br /&gt;&lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=420004"&gt;Usability issues in project creation page&lt;/a&gt;&lt;br /&gt;&lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=420031"&gt;Link to "My projects" fails if no home:login project has been created yet&lt;/a&gt;&lt;br /&gt;&lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=420035"&gt;New option for uploading the tarball&lt;/a&gt;&lt;br /&gt;&lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=420840"&gt;ChangeLogs parsing is too strict: lines beginning with tab are not recognized, only one date format is accepted&lt;/a&gt;&lt;br /&gt;&lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=421707"&gt;OBS should not allow to create a package named "packageand"&lt;/a&gt;&lt;br /&gt;&lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=421709"&gt;The spec parser should detect the use of a miscplaced packageand(_:_) keyword&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Banshee:&lt;br /&gt;&lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=546234"&gt;No such file or directory errors while importing&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=549414"&gt;Cannot empty some ID3 tag fields&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=550238"&gt;Importing songs without album metadata breaks artist navigation on the iPod&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=528493"&gt;Banshee inserts deduced fictional text on metadata&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=533218"&gt;Should try to locate correct album (and download its cover) in case no album is supplied on metadata&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The patches are quite simple so I hope they get committed soon! Clearly Banshee devs and contributors are doing an amazing work, I'm specially amazed by the &lt;a href="http://jeffreystedfast.blogspot.com/2008/08/banshee-now-playing-animations.html"&gt;Moonlight effects&lt;/a&gt;, the &lt;a href="http://gburt.blogspot.com/2008/08/muinshee.html"&gt;Muinshee&lt;/a&gt; front-end and the effort that it seems is being dedicated to bring &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=385965"&gt;Library Sync &amp;amp; Refresh&lt;/a&gt; for 1.4. I wish them all the best success.&lt;br /&gt;&lt;br /&gt;So let's get back to packaging. Firstly I thought I had found some limitations in OBS or rpm systems because the lack of proper "dual dependency" support. In the past when I installed Bugzilla manually (and updated it to newer versions) I found it a bit hard to do it, specially to deal with DB creation and upgrade. I wanted to make this process easier for the potential rpm user, but without limiting the choice of the DB engine used (as now Bugzilla supports MySQL, PostgreSQL, and Oracle, although the latter was not on my scope). It turns out that it's really hard to apply virtual-provides rules for these cases, as we should stablish more sub-dependencies depending on the db engine you choose, such as perl-DBD-mysql or perl-DBD-Pg, and because it would cause inconsistent situations in case someone in the future replaces his DB-engine with the alternative one (as in theory it should work at the dependencies-level without warning). For references, you may be interested in reading &lt;a href="http://lists.opensuse.org/opensuse-buildservice/2008-09/#00005"&gt;the whole thread about it in the BuildService mailing-list&lt;/a&gt;, whose last message includes a possible hack to workaround these problems using patterns (although I don't like to use patterns for solving something like this).&lt;br /&gt;&lt;br /&gt;Even discarding the dream about solving this at a package level, it's difficult to solve it at an app level that wouldn't involve reading manuals. My idea was to modify Bugzilla upstream in order to avoid running manually a local script for its initialization, and replace it with a nice web front-end (even if it's only allowed to be run locally). That would cause problems because normally the webserver user doesn't have enough permissions to create files and the database tables and initial data (I'm sure there's always a solution that also doesn't expose security problems, but it's hard to find it as it's noticed in &lt;a href=""&gt;this thread in bugzilla devel newsgroup&lt;/a&gt;; so, help is truly welcome).&lt;br /&gt;&lt;br /&gt;Maybe the easier and fastest solution is a mixture of both worlds, that is, having a web front-end that asks you the initial configuration, and the form submission process just writes it in a local XML and tells the admin to open a console and run a script as root to finish the process. But even with this solution I guess we should need something to detect at runtime (which should be cross distribution) if some package is installed (which also checks the version). I guess there's already some of that capabilities used in the bugzilla's script checksetup.pl, so I would reuse them. However, in case it finds a problem, there's no way for the application to request installation of a package directly to your OS (but I've attended to a PackageKit conference in last Guadec in which I heard something about this possibility in the future!).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-4439402429179237681?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/4439402429179237681/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=4439402429179237681&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/4439402429179237681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/4439402429179237681'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2008/09/hackweeks.html' title='Hackweeks'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-5503028668099620722</id><published>2008-07-08T15:48:00.000+02:00</published><updated>2008-07-08T14:36:28.736+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>Subversion 1.5.0 highlights and some MD hacking</title><content type='html'>Subversion 1.5.0 has been recently released (June the 19th) and I'm surprised with the tons of great stuff it brings. Some highlights:&lt;br /&gt;&lt;em&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A common problem in older versions of Subversion was the way in which svn update handled incoming copies and moves.&lt;br /&gt;Consider this scenario: &lt;strong&gt;Harry runs svn move foo bar; svn commit, and meanwhile Sally makes local changes to 'foo', and then runs svn update.&lt;/strong&gt; In earlier versions of Subversion, the server would send down a completely new file 'bar', and unversion the file 'foo' (if it had no uncommitted changes, Subversion would remove it entirely.) From Sally's point of view, her changes seem to be lost; the newly added 'bar' file has the older content, and the file 'foo' has been taken out of version control.&lt;br /&gt;In Subversion 1.5, the client and server both attempt to be smarter about this. The server doesn't send a whole new file during the update, but rather instructions to copy something that likely already exists in the working copy. So Sally's 'foo' file is copied to 'bar' (with local edits intact!).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Merge tracking means Subversion keeps track of what changes have been merged where. This reduces the overhead involved in maintaining branches, and gives users a way to inquire what changes are merged — or are available to be merged — on different lines of development.&lt;br /&gt;Example (one of the improvements in place): Merging changes from (say) trunk to a branch no longer requires that you specify the revision range. Instead, each time you want to sync up with trunk, you can just do:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;   $ cd BRANCH_WORKING_COPY&lt;br /&gt;   $ svn merge URL_TO_TRUNK&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Subversion will figure out what changes from URL_TO_TRUNK have not yet been merged and pull in just those changes. When it's time to merge the branch back to trunk, do this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;   $ cd TRUNK_WORKING_COPY&lt;br /&gt;   $ svn merge --reintegrate URL_TO_BRANCH&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Sparse checkouts (via new --depth option): Many users have very large trees of which they only want to checkout certain parts. In previous versions of Subversion, checkout -N was not really up to this task. Subversion 1.5 introduces the --depth option to the checkout, and other subcommands.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Conflict resolution is now done interactively by the command-line client for the update/switch/merge subcommands.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Relative URLs and @peg revisions for svn:externals.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Don't you think this is AMAZING? This means we almost got full/real MOVE support and that merging is taking the best ideas from DVCS systems (yes, we lack yet local commits).&lt;br /&gt;&lt;br /&gt;To get up to speed with DVCS features I would also add &lt;a href="http://svn.haxx.se/users/archive-2008-07/0056.shtml"&gt;pending commits feature&lt;/a&gt; although there are concerns and people seem to prefer it to be implemented upstream in bug tracking tools.&lt;br /&gt;&lt;br /&gt;Well, I guess you already may have noticed I don't like current DVCS tools (at least the most popular), by a different set of (a little bit subjective, I know) set of reasons:&lt;br /&gt;&lt;br /&gt;- Git: it's implemented in an unmanaged language (yeah SVN too, but at least the latter is cross-platform!).&lt;br /&gt;- Bazar &amp; Mercurial: they're implemented in a "too-managed" language (yeah sorry I dislike dynamically typed languages very much, especially for big developments that need to have a long life; yeah, refactorings are a pain with these ones, although I don't know the test coverage they may have...).&lt;br /&gt;&lt;br /&gt;Maybe &lt;a href="http://code.google.com/soc/2008/mono/appinfo.html?csaid=E6D8A717A88A7632"&gt;Git#&lt;/a&gt; (&lt;a href="http://code.google.com/soc/2008/mono/about.html"&gt;Mono SoC2008&lt;/a&gt;) is the answer? (I don't know the progress of this project.)&lt;br /&gt;&lt;br /&gt;I was discussing about this yesterday with &lt;a href="http://jprosevear.org/"&gt;JP&lt;/a&gt;, and when I talked to him about this SVN 1.5.0 he said "too late!". Ermmm, what?, Gnome hasn't switched to DVCS yet so, why too late? Maybe because it's imminent? I don't know. Sincerely, there is much contradiction about how people approach migrations... Today I've been attending for almost an hour a meeting about Gnome Mobile, and one thing that was arised is the lack of flexibility and ease of use of the Gtk+ toolkit, as opposed to other toolkits. People were concerned about it and wanted to fix it, and nobody wanted to give up pushing Gtk+ just because it's old. Then, why doing this for Subversion? Subversion is very mature, and their devs have demonstrated to be worried about its lack of flexibility wrt the new distributed ways of work, so they are fixing it, they are *supporting* us. And however at Guadec here it seems everybody wants to push for the migration (but only taking care of doing the correct decision, i.e., select the 1 from the 3 we all know, but why not considering just to update to new SVN and wait a bit more to see where we go?&lt;br /&gt;&lt;br /&gt;Well, now that I'm talking about Subversion, I'm going to talk you about a couple of features I worked on recently (and committed today), as my first ITO day, in the Subversion Addin of MonoDevelop: &lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=394434"&gt;revert to revision, and revert changes from a revision&lt;/a&gt;. The mandatory screenshot (you get to this dialog when requesting the Log inside the Version Control contextual menu):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_z_GNcrzxywM/SHNEgoJeZYI/AAAAAAAAABk/7YD7sz99K4I/s1600-h/Revert%5BTo%5DRevision.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_z_GNcrzxywM/SHNEgoJeZYI/AAAAAAAAABk/7YD7sz99K4I/s400/Revert%5BTo%5DRevision.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5220591720376198530" /&gt;&lt;/a&gt;&lt;br /&gt;This reduces the need of having a console open when coding with the MonoDevelop IDE, which is a thing that many developers request.&lt;br /&gt;&lt;br /&gt;Another feature I completed is the new pattern for searching in many files inside MonoDevelop: &lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=323396"&gt;Current project&lt;/a&gt; (previously we only had "Whole solution", "Directories" and "Open files"):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_z_GNcrzxywM/SHNGpH2u0UI/AAAAAAAAABs/S3qaDW-pm70/s1600-h/CurrentProject.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_z_GNcrzxywM/SHNGpH2u0UI/AAAAAAAAABs/S3qaDW-pm70/s400/CurrentProject.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5220594065349726530" /&gt;&lt;/a&gt;&lt;br /&gt;Enjoy them! (Currently on SVN.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-5503028668099620722?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/5503028668099620722/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=5503028668099620722&amp;isPopup=true' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/5503028668099620722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/5503028668099620722'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2008/07/subversion-150-highlights-and-some-md.html' title='Subversion 1.5.0 highlights and some MD hacking'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_z_GNcrzxywM/SHNEgoJeZYI/AAAAAAAAABk/7YD7sz99K4I/s72-c/Revert%5BTo%5DRevision.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-2237988660736534673</id><published>2008-06-30T19:23:00.003+02:00</published><updated>2010-01-19T19:35:48.130+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Miscelanea'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>PreGuadecs events</title><content type='html'>Yes! I'm going to &lt;a href="http://2008.guadec.es/"&gt;GuadecES&lt;/a&gt; this week and to &lt;a href="http://2008.guadec.org/"&gt;GUADEC&lt;/a&gt; next week! I'll be giving one talk in both, talking about our  &lt;a href="http://www.mono-project.com/Accessibility"&gt;Novell's accessibility project&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;But this weekend has been not less exciting than Guadecs promise to be! I'm not used to blog about personal things but I can't resist to try to make someone laugh a bit!&lt;br /&gt;&lt;br /&gt;Firstly, on Saturday I went to &lt;a href="http://en.wikipedia.org/wiki/Rock_In_Rio"&gt;Rock In Rio&lt;/a&gt; festival in Madrid. Many concerts, specially I liked Mando Diao and Carlinhos Brown. Here I'm in the place where Mando Diao played:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://photos-c.ak.facebook.com/photos-ak-sf2p/v258/77/4/611632658/n611632658_735986_2794.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;It's amazing how big this "Rock City" is. It's like being in a recreational park, but with many scenarios for concerts.&lt;br /&gt;&lt;br /&gt;The band El Canto del Loco also played but I didn't like them very much. Also, guess who was playing when I fell asleep:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://photos-h.ak.facebook.com/photos-ak-sf2p/v258/77/4/611632658/n611632658_735999_7368.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Tokio_Hotel"&gt;Tokio Hotel&lt;/a&gt;! I didn't know this band but actually had already heard their &lt;a href="http://www.youtube.com/watch?v=kfMnM5Y2rw8"&gt;most famous song&lt;/a&gt;, which happens to have the same name of a program that I'm using very much lately: &lt;a href="http://anonsvn.mono-project.com/source/trunk/monsoon/"&gt;Monsoon&lt;/a&gt;. That song is not that bad but they had to play it the last one in order to prevent the people from fleeding in the first run. The band leader is actually a kind of vain awful transvestite!:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://assets.mtv.es/system/assets/gallery_images/0074/8921/__image_.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Now a cronicle about sunday: although I used to be a member of the &lt;a href="http://es.wikipedia.org/wiki/Leo_Bassi"&gt;Leo Bassi&lt;/a&gt;'s AntiFootball League  (I may be the only spaniard that doesn't like soccer) I went to see the Spain VS Germany match with some friends. Anyways, what I like about soccer is when you really feel you belong to a team, not in the case of those football clubs that play in the Spanish league: if I ever encourage Real Madrid to win a day in my life, that day will be a day in which there are only Madrid-born players in the team, not others (of course this hasn't got anything to do with racism, it's just that I think the competition is more interesting this way, and also because I'm not interested in players being bought and sold by astronomic quantities...). Well, in case you don't know, &lt;a href="http://www.iht.com/articles/2008/06/29/sports/29vienna.php?WT.mc_id=glob_mrktg_lead&amp;WT.mc_ev=click"&gt;we won&lt;/a&gt;, and we went to the center of Madrid to celebrate it. Since I haven't got any &lt;a href="http://en.wikipedia.org/wiki/Image:Flag_of_Spain.svg"&gt;rojigualda&lt;/a&gt; flag (just &lt;a href="http://en.wikipedia.org/wiki/Image:Flag_of_the_Second_Spanish_Republic.svg"&gt;republicans&lt;/a&gt;) or red t-shirts, I had to mix with the people like if I was an orange dutch!:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://photos-g.ak.facebook.com/photos-ak-sf2p/v258/77/4/611632658/n611632658_736014_3056.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;To finish the post, I just want to give a link to a very special song that I've come to know recently (I can't stop playing it!):&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/RSSK96Qfv9w&amp;hl=en"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/RSSK96Qfv9w&amp;hl=en" type="application/x-shockwave-flash" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;CatPeople - Behind&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-2237988660736534673?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/2237988660736534673/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=2237988660736534673&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/2237988660736534673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/2237988660736534673'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2008/06/preguadecs-events.html' title='PreGuadecs events'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-3708458078171097110</id><published>2008-06-10T17:38:00.004+02:00</published><updated>2008-06-10T21:11:26.159+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>WTF</title><content type='html'>How can I clear the list of elements of a Gtk.ComboBox??? It doesn't seem to be a way, but maybe if I'm able to get the number of elements... After an hour searching, when I was going to give up, I just found &lt;a href="http://mail.gnome.org/archives/nautilus-list/2005-November/msg00075.html"&gt;this&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;  combo_box =&lt;br /&gt;    GTK_COMBO_BOX (NAUTILUS_NAVIGATION_WINDOW (window)-&gt;view_as_combo_box);&lt;br /&gt;  /* Clear the contents of ComboBox in a wacky way because there&lt;br /&gt;   * is no function to clear all items and also no function to obtain&lt;br /&gt;   * the number of items in a combobox.&lt;br /&gt;   */&lt;br /&gt;  model = gtk_combo_box_get_model (combo_box);&lt;br /&gt;  g_return_if_fail (GTK_IS_LIST_STORE (model));&lt;br /&gt;  store = GTK_LIST_STORE (model);&lt;br /&gt;  gtk_list_store_clear (store);&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Clearly, we need some improvements in Gtk+ API. I'd bet it's much easier with &lt;a href="http://www.mono-project.com/MWF"&gt;MWF&lt;/a&gt; unfortunately. At least, the developer that coded this was kind enough to file a &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=324899"&gt;bug&lt;/a&gt;, which BTW is 3 years old and, of course, still not fixed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-3708458078171097110?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/3708458078171097110/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=3708458078171097110&amp;isPopup=true' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/3708458078171097110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/3708458078171097110'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2008/06/wtf.html' title='WTF'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-628234887210510310</id><published>2008-05-10T23:59:00.007+02:00</published><updated>2010-09-16T15:07:21.876+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mozilla'/><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='Ingenieria'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>A new community devolopment model?</title><content type='html'>&lt;!--img src="http://superalumnos.net/files/images/chequeAdsense.preview.jpg" /--&gt;&lt;br /&gt;&lt;img src="http://ajaxwidgets.com/Default.aspx?imgId=7b818ff2-6fb8-4cd8-8a85-fc08238d4418" /&gt;&lt;br /&gt;&lt;h4 id="ANewCommunityDevModel-long"&gt;Long story&lt;/h4&gt; (Go to the &lt;a href="#ANewCommunityDevModel-short"&gt;short story&lt;/a&gt; if you're too lazy to read a lot.)&lt;br /&gt;&lt;br /&gt;Some time ago I &lt;a href="http://knocte.blogspot.com/2006/09/el-software-libre-ms-comercial-que.html"&gt;wrote&lt;/a&gt; about the usual confusion between the terms "commercial" and "propietary". FLOSS &lt;strong&gt;is&lt;/strong&gt; commercial software because it's not only driven by the generosity of some developers with their spare time. A FLOSS developer can be paid by a software company, either by being employed (the most common case currently) or either by a consultancy/bounty basis. And there are still even &lt;a href="http://www.db4o.com/about/productinformation/whitepapers/db4o%20Whitepaper%20-%20db4objects%20and%20the%20Dual%20Licensing%20Model.pdf"&gt;open source companies which still indirectly refer to FLOSS as non-commercial&lt;/a&gt; when they compare both most popular development models nowadays by saying "open source VS commercial software".&lt;br /&gt;&lt;br /&gt;And why the bounty system is not so popular? Well, because:&lt;br /&gt;1) It's very project-driven: bounties are usually published in means very related to the project. This can be considered an advantage because only motivated/interested developers will apply, but sometimes the project is too small, too recent or not very popular, or with a lot of similar projects around.&lt;br /&gt;2) There's no strong system to manage the bounty in respect to requirements, secure payment, trust system between parts, etc.&lt;br /&gt;3) Many people don't advocate for it (or they advocate for a bounty system that works as a task exchange without money intervention: &lt;em&gt;I fix this for you if you fix this for me&lt;/em&gt;) because, we know, one of the reasons of the excellence of free software is because developers love what they do without rewards. (But IMHO one of the big downsides is also because there are also important tasks in a project that nobody likes to do. Besides, I think people tend to spend less spare time on free software as their age grows.)&lt;br /&gt;&lt;br /&gt;An exception to the 1st item could be &lt;a href="http://www.bountycounty.org/"&gt;bountycounty.org&lt;/a&gt;: a site that tries to announce bounties from free software projects. However, it seems to be an initiative that hasn't got much audience (the last bounty is 2 years old), either because the people that offer bounties forget to notify to this system, or, maybe because in the end the bounty development model doesn't work in FLOSS?&lt;br /&gt;&lt;br /&gt;Well, I don't think this is the case, because there's a bounty system that is succeeding, and which is also an exception to the (2) item of the above list: Google Summer of Code.&lt;br /&gt;&lt;br /&gt;However, GSoC has the following disadvantages to be "complete" for this matter:&lt;br /&gt;a) Only students can apply.&lt;br /&gt;b) All projects happen in the same time-frame and have the same duration (a summer).&lt;br /&gt;c) All bounties are the same for each developer.&lt;br /&gt;d) A concrete company controls all the process (because, it's true, they put the money).&lt;br /&gt;&lt;br /&gt;But we need something similar to GSoC (similar in the "It Works" aspect) and that saves these problems and is not a mere "announcement" site like BountyCounty.org.&lt;br /&gt;&lt;br /&gt;Some initiatives have appeared that tried to solve these situation: BountySource.com and SourceForge.net marketplace. The common problem to both is that they try to solve it by attracting the developers to host their projects, so this causes big and mature projects not to apply (because they have currently good hosting solutions, or are self-hosted, like Mozilla projects for instance).&lt;br /&gt;&lt;br /&gt;One of the ideas is to implement a bounty system in our bug tracking system software, like &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=124096"&gt;Bugzilla&lt;/a&gt;. If I had time and liked Perl more, I would try to contribute something for it. Maybe we're in the chicken-egg problem here: we need a bounty system for that task.&lt;br /&gt;&lt;br /&gt;Surprisingly, there's already a general purpose web-based service for this task: &lt;a href="http://www.rentacoder.com/"&gt;RentACoder.com&lt;/a&gt;. But I haven't seen any free software projects using it, because it seems very focused on propietary developments.&lt;br /&gt;&lt;br /&gt;And then &lt;strong&gt;it happened&lt;/strong&gt;: Some weeks ago a new FLOSS-oriented service was born: &lt;a href="http://www.fossfactory.org/"&gt;FOSS Factory&lt;/a&gt;. I wanted to start using it by publishing some mini-bounties (which hopefully would grow if other people are interested, similarly to voting systems in Bug Tracking software), but I got disappointed when even the project creation had a cost. But yesterday I received this e-mail:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;br /&gt;Andres G. Aragoneses,&lt;br /&gt;&lt;br /&gt;Thanks so much for your interest in FOSS Factory!  As one of our early adopters, I wanted to keep you in the loop on two very important developments.&lt;br /&gt;&lt;br /&gt;First, in response to user feedback, we've removed all costs for creating FOSS Factory projects!  Instead, we now charge a 5% transaction fee on payouts.  This aligns our interests with yours by ensuring that we will only make money if your projects succeed.  It also enables developers to post their own projects without having to spend money.&lt;br /&gt;&lt;br /&gt;Second, we recently released our website source code under a FOSS license.  You can now download the code from http://www.fossfactory.org/get-source.php.  Our primary reason for doing this was so that we could take advantage of our own system to help improve the site.  In case you're interested, we've already posted a few bounties for improvements that we haven't had time to implement ourselves: http://www.fossfactory.org/project.php?p=p30&amp;tab=subprojects.  Please feel free to participate.&lt;br /&gt;&lt;br /&gt;If you have any questions or concerns, please either reply to this message, or email me directly at jjgignac {at} fossfactory {dot} org.  Your feedback is very important to us!&lt;br /&gt;&lt;br /&gt;Sincerely,&lt;br /&gt;&lt;br /&gt;John-Paul Gignac&lt;br /&gt;President and Founder&lt;br /&gt;FOSS Factory Inc.&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Unfortunately, there's a 5% transaction charge for each bounty, but hey, we need to support their service! Also, the software is PHP based, so I won't likely spend time on improving it (you know, I already fled from PHP and Perl some years ago ;) ).&lt;br /&gt;&lt;br /&gt;But I like the initiative and I'll start to publish the bugs/features I consider interesting to have, but have no time/interest to hack on. Here are the first ones (take in account that, if every voter of the bug payed 10$, the bounty would be enough attractive for a developer I guess, because they are not very complicated):&lt;br /&gt;&lt;br /&gt;- Thunderbird/Seamonkey feature &lt;strong&gt;&lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=11048"&gt;Auto-watch threads you've posted to&lt;/a&gt; (21 votes)&lt;/strong&gt;&lt;br /&gt;- Thunderbird/Seamonkey regression &lt;strong&gt;&lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=11048"&gt;Allow edit of unsent message (Unsent folder messages should open to a compose window when double click)&lt;/a&gt; (26 votes)&lt;/strong&gt;&lt;br /&gt;- Bugzilla's feature (or fix for highly confusing workflow for newcomers) &lt;strong&gt;&lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=11368"&gt;Move all bug activity onto main bug screen&lt;/a&gt; (17 votes)&lt;/strong&gt;&lt;br /&gt;- Banshee's feature (currently handled by an outdated addin AFAIK) &lt;strong&gt;&lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=361210"&gt;Banshee needs a way to cleanup (remove stale tracks)&lt;/a&gt; (reporter+4CC; no voting system in BGO)&lt;/strong&gt;&lt;br /&gt;- Banshee's feature (patch proposed but I guess someone should make it apply to trunk) &lt;strong&gt;&lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=421376"&gt;[Patch] Automatically scan music folders for new songs&lt;/a&gt; (reporter+6CC; no voting system in BGO)&lt;/strong&gt;&lt;br /&gt;- Gnome's bug (someone wrote a patch but not sure if it will finally make it for 2.24...) &lt;strong&gt;&lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=47893"&gt;The ``Replace File'' dialog should display the two file sizes, times, etc.&lt;/a&gt; (reporter+23CC; no voting system in BGO)&lt;/strong&gt;&lt;br /&gt;- Monsoon's crazy feature (maybe implies the creation of a new Gtk widget) &lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=378750"&gt;&lt;strong&gt;When the option "Minimize to notification area on close" is not enabled, we should have a new widget on the title bar for that action&lt;/strong&gt;&lt;/a&gt; (just me)&lt;br /&gt;- Real fix for Mono's issue (because we already have a workaround) &lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=375987"&gt;&lt;strong&gt;System.Windows.Forms dependency on GTK makes code to crash if it uses ATK# and GTK_MODULES contains 'atk-bridge'&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The last of the issues affected &lt;a href="http://www.mono-project.com/Accessibility"&gt;our project&lt;/a&gt; until we found a workaround overriding environment variables. If we reach our milestones properly and nobody has fixed it at that time, we could have a try! Now we still have &lt;a href="http://www.mono-project.com/Accessibility:_Mapping_UIA_to_ATK"&gt;tons of work&lt;/a&gt; which Calvin and the team have perfectly outlined. Unfortunately I haven't helped in this doc effort because I was busy debugging the issues I mentioned in my last post, which turned out to be an invalid bug (but at least gave me an idea for a &lt;a href="http://nestor.babuine.net/?p=36"&gt;Gendarme Rule&lt;/a&gt;) and a GAPI parser bug that Mike fixed) and because on thursday afternoon I was affected by &lt;a href="http://automorphic.blogspot.com/2008/03/fevers-and-hacking-go-together-like.html"&gt; some small rock ;)&lt;/a&gt; and probably was the cause of me trying to debug something I didn't correctly updated on Friday (and maybe because of our dumb deployment methodology that &lt;a href="http://mkestner.blogspot.com/"&gt;Mike&lt;/a&gt; has already blamed). Well, I'll talk about this in a later entry...&lt;br /&gt;&lt;br /&gt;&lt;h4 id="ANewCommunityDevModel-short"&gt;Short story&lt;/h4&gt;Maybe this day will be remembered in the Free Software community as the day in which a first software draft is presented in order to fill some &lt;a href="http://nat.org/2005/january/#bountysystem"&gt;awesome ideas from devs like Nat Friedman&lt;/a&gt; about a general-purpose bounty system:&lt;br /&gt;&lt;h3&gt;&lt;a href="http://www.fossfactory.org/"&gt;FOSS Factory&lt;/a&gt;&lt;/h3&gt;&lt;br /&gt;Especially interesing is their &lt;a href="http://www.fossfactory.org/why.php"&gt;reasonings&lt;/a&gt; for its creation.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update 12-AUG-2009&lt;/strong&gt;: Another interesting service I found (while reading the comments of &lt;a href="http://tieguy.org/blog/2009/08/12/state-of-the-art-for-bounties/"&gt;this blog entry&lt;/a&gt;) is &lt;a href="http://www.cofundos.org/"&gt;COfundOS.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update 10-MAY-2010&lt;/strong&gt;: Wow, it seems that a new project was born, which is getting a lot of press and support, to fund projects (but any kind of projects, not only software). It's called Kickstart and it's key feature is that people can pledge for a project but if it doesn't reach the amount required, the people are never charged. I wonder if there should be an option to have projects not have a deadline (more suitable to bugs in bugzillas ;) ). And after reading the &lt;a href="http://www.kickstarter.com/help/faq"&gt;FAQ&lt;/a&gt; I still cannot figure out how they judge if a project was successfull...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update 16-SEP-2010&lt;/strong&gt;: Over the last months I've been still thinking about all this and wondering why the FossFactory project didn't really see much adoption. Other initiatives such as Kickstart have had some success (for example the Diaspora is an example of a software project that just released something thanks to this kind of funding) but it doesn't fit very well to how small unit-of-progress would be rewarded (i.e. small bugs in bug tracking systems as opposed to whole projects) so I guess there's still some hope in micro-payment systems for this.&lt;br /&gt;&lt;br /&gt;And indeed there is. It turns out that I joined some months ago a new company that has an internal system to reward in this way (all is explained &lt;a href="http://en.wikipedia.org/wiki/Linden_Lab#Corporate_Culture"&gt;here&lt;/a&gt; -- the Love Machine), and even our CEO went away some months to develop this sole idea as &lt;a href="http://www.lovemachineinc.com/"&gt;a separate company&lt;/a&gt;. Now, the way he decided to pursue it is very interesting: develop a workflow system of little rewards that companies can adopt with their employees (or with their "contractors", because with this workflow they actually don't need to have fixed salaries... --which may be good or bad, and is subject for another discussion).&lt;br /&gt;&lt;br /&gt;I don't know much about the success of that project actually. But what I know now is that a new service around the same idea was recently born is really having a lot of adoption, because it's actually not a product that can be deployed in a company, but just a product that is deployed by a company which hosts the service, and then &lt;strong&gt;anyone&lt;/strong&gt; can send or receive micro-payments about &lt;strong&gt;anything&lt;/strong&gt; so it's not a service from a company to a company but from a company to an end-user. And the real good idea behind this is that their micro-payment system makes them be the intermediary between you and the grant-receivers you want to donate to, every month. You don't ever need again to pay N subscriptions to donate to N causes/organizations you like, you just subscribe to them, and then every month (actually everyday) you decide where your money goes too.&lt;br /&gt;&lt;br /&gt;Didn't I explain it correctly? Well, go to see the video which is more than a thousand words and more than a million images: &lt;a href="http://flattr.com/"&gt;FLATTR&lt;/a&gt;. &lt;- Click here and then click on Watch The Video.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-628234887210510310?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/628234887210510310/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=628234887210510310&amp;isPopup=true' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/628234887210510310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/628234887210510310'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2008/05/new-community-devolopment-model.html' title='A new community devolopment model?'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-7349654879373348139</id><published>2008-05-06T16:18:00.005+02:00</published><updated>2008-12-23T23:37:37.290+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Miscelanea'/><category scheme='http://www.blogger.com/atom/ns#' term='Mozilla'/><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><category scheme='http://www.blogger.com/atom/ns#' term='WebDev'/><title type='text'>Now Gnash &amp; SWFdec are to Flash what Mono is to .NET</title><content type='html'>And we have to thank the cool &lt;a href="http://www.osnews.com/story/19703/Adobe_Launches_Open_Screen_Project"&gt;Adobe's Open Screen Project&lt;/a&gt; for this. Why is this positive (extracted originally from &lt;a href="http://barrapunto.com/comments.pl?sid=76487&amp;cid=1039558"&gt;here&lt;/a&gt;)?&lt;br /&gt;&lt;br /&gt;1) Projects that seek to implement this standard (like &lt;a href="http://www.gnu.org/software/gnash/"&gt;Gnash&lt;/a&gt;), won't have to do reverse engineering anymore (unless the spec is not enough for some things, or the official Adobe software contradicts the specs because of bugs/typos).&lt;br /&gt;&lt;br /&gt;2) These projects will provide implementations for architectures that are not supported by the official Adobe propietary software.&lt;br /&gt;&lt;br /&gt;3) The implementations will no longer be considered risky because of future patents or intellectual property violations.&lt;br /&gt;&lt;br /&gt;But, BEWARE:&lt;br /&gt;&lt;br /&gt;a) this doesn't mean that Flash is now free/open source. This only means that projects like Gnash are analogous as Mono right now: they are open source projects that follow a standard published by a company with an open spec.&lt;br /&gt;&lt;br /&gt;b) this doesn't mean that any flash content is patent-free either, because you can still embed proprietary formats inside it like MP3.&lt;br /&gt;&lt;br /&gt;What I'll do now is start supporting Gnash, firstly by testing it and reporting any bugs I find. Fortunately I have &lt;a href="http://software.opensuse.org/search"&gt;some packages ready for OpenSUSE&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;This news is positive, of course, but now let me give my technical opinion of this technology:&lt;br /&gt;&lt;br /&gt;- The programming languages you can use with it are very few (some months ago I think the only one was ActionScript, which has the majority of limitations of JavaScript) and still today AFAIK there's no statically typed language you can use.&lt;br /&gt;- AFAIK it's not accessible (and I mean for disabled people and for automation technologies like search-engine-bots).&lt;br /&gt;&lt;br /&gt;However, with Moonlight, you already know that you can use C# with it so the first of these disadvantages doesn't affect it. And in respect to the last item, well, the second phase of my project in Novell is bring accessibility support to it so this item will be hopefully solved soon.&lt;br /&gt;&lt;br /&gt;Will this mean the end of the Flash monopoly? Will this force Adobe to open its software too?&lt;br /&gt;&lt;br /&gt;BTW, is Moonlight/Silverlight one of the reasons for publishing Flash specs freely? All I can see is that in Adobe they are start to changing their minds quickly. One of the most important facts of this is the liberation of the Tamarin project, which has supposed a big step forward in the Mozilla community (FYI, &lt;a href="http://ejohn.org/blog/why-tamarin-instead-of/"&gt;the Mono VM was also a candidate for the Tamarin current job&lt;/a&gt;, but unfortunately wasn't considered in the end).&lt;br /&gt;&lt;br /&gt;Well, and how's the progress of the first phase of the A11Y project? We're progressing slowly, but hopefully cooking the base for the ton of work we already lack. Many issues are because we needed to complete Atk#, and other ones are appearing which may be related with the runtime (hopefully not, but here they are if you want to have a look: &lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=386802"&gt;386802&lt;/a&gt;, &lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=387221"&gt;387221&lt;/a&gt;). I have to thank &lt;a href="http://mkestner.blogspot.com/"&gt;Mike Kestner&lt;/a&gt; for all his help in this side (thanks to him I'm learning a lot about bindings, and about how delicate :) are the glib/gtk/atk bindings in particular; I love when someone is so meticulous for maintaining a project!), and &lt;a href="http://automorphic.blogspot.com/"&gt;Sandy&lt;/a&gt; for all the help on the bridge (which recently got a nice refactoring, but I already got some additional ideas I need to share...). &lt;a href="http://mgorse.freeshell.org/"&gt;Mike Gorse&lt;/a&gt; seems to progress a lot (and now &lt;a href="http://blog.floopily.org/2008/04/23/codethink-d-bus-based-accessibility/"&gt;there will be cooperation with CodeThink as well on the CORBA-&gt;DBUS migration!&lt;/a&gt;), and &lt;a href="http://blog.carrion.ws/"&gt;Mario&lt;/a&gt; is starting with us these days, welcome Mario! Unfortunately I don't deal too much with the rest of the &lt;a href="http://www.mono-project.com/Accessibility:_Team"&gt;team&lt;/a&gt; (Brian, Calen, Neville, Ray) but they seem very busy too all the time!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update 23-DEC-2008&lt;/strong&gt;: I have tested Gnash on OpenSUSE 11.1 and the Firefox plugin doesn't work with YouTube :( However, according to the comments of &lt;a href="http://blogs.gnome.org/otte/2008/12/18/on-loneliness/"&gt;this blog post&lt;/a&gt;, SWFdec is a much better alternative (so I have changed the title of this entry).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-7349654879373348139?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/7349654879373348139/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=7349654879373348139&amp;isPopup=true' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/7349654879373348139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/7349654879373348139'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2008/05/now-gnash-is-to-flash-what-mono-is-to.html' title='Now Gnash &amp; SWFdec are to Flash what Mono is to .NET'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-8367466944988222925</id><published>2008-04-09T11:46:00.001+02:00</published><updated>2008-04-09T12:39:48.340+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='Ingenieria'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><category scheme='http://www.blogger.com/atom/ns#' term='WebDev'/><title type='text'>Mono news FROM/FOR the Spanish side</title><content type='html'>[&lt;a href="#MonoNewsFromFor-en"&gt;English version below&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;DESDE&lt;/strong&gt;: Me enorgullece comunicar que finalmente el &lt;a href="http://planeta.mono-hispano.org/"&gt;Planeta Mono-Hispano&lt;/a&gt; ha resucitado! Felicitaciones a toda la gente involucrada en que esto saliera adelante.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;PARA&lt;/strong&gt;: Si estás terminando tu carrera de Ingeniería Superior en Informática en la &lt;a href="http://www.fi.upm.es/"&gt;UPM&lt;/a&gt; (donde yo la hice también), conozco una profesora que está buscando un alumno para hacer un &lt;a href="http://es.wikipedia.org/wiki/Proyecto_fin_de_carrera"&gt;PFC&lt;/a&gt; en el que tendrá que usar &lt;strong&gt;Silverlight/Moonlight&lt;/strong&gt;, así que si estás interesado, ponte en contacto conmigo!&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;&lt;br /&gt;&lt;h4 id="MonoNewsFromFor-en"&gt;[English version]&lt;/h4&gt;&lt;br /&gt;&lt;strong&gt;FROM&lt;/strong&gt;: I'm glad to tell that finally the &lt;a href="http://planeta.mono-hispano.org/"&gt;Mono-Hispano Planet&lt;/a&gt; has resurrected! Congratulations to all the guys involved in making this happen.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;FOR&lt;/strong&gt;: If you are finishing your &lt;a href="http://en.wikipedia.org/wiki/Engineer%27s_degree"&gt;engineer's degree&lt;/a&gt; in Computer Science at the &lt;a href="http://www.fi.upm.es/"&gt;UPM university&lt;/a&gt; (where I did in the past), I know a teacher that is looking for a student to do his &lt;a href="http://es.wikipedia.org/wiki/Proyecto_fin_de_carrera"&gt;PFC&lt;/a&gt; (how do you guys call this en English?) using &lt;strong&gt;Silverlight/Moonlight&lt;/strong&gt;, so if you're interested, contact me!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-8367466944988222925?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/8367466944988222925/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=8367466944988222925&amp;isPopup=true' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/8367466944988222925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/8367466944988222925'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2008/04/mono-news-fromfor-spanish-side.html' title='Mono news FROM/FOR the Spanish side'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-7880093591505053933</id><published>2008-04-02T11:55:00.012+02:00</published><updated>2010-09-16T02:34:41.535+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Politica'/><category scheme='http://www.blogger.com/atom/ns#' term='Miscelanea'/><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>Fines and NGOs</title><content type='html'>My flatmates and I are moving to another place. Actually, it's a place that is very close to the previous one, so we will still live in the center of Madrid. Basically the place is a bit better, with less traffic noise, and we now have a big terrace to enjoy the summer better!&lt;br /&gt;&lt;br /&gt;However, the move is turning a bit irritating because it has coincided with the Q1 timeline of &lt;a href="http://www.mono-project.com/Accessibility:_Team"&gt;our&lt;/a&gt; &lt;a href="http://www.mono-project.com/Accessibility:_Roadmap"&gt;project&lt;/a&gt; and I'm becoming crazy trying to give my best with both things. This move was planned even before I joined Novell; if I had joined before, maybe I would have preferred to stay in the previous place because now it's very likely that I move to Cambridge (&lt;a href="http://en.wikipedia.org/wiki/Massachusetts"&gt;MA&lt;/a&gt;) on October of this year.&lt;br /&gt;&lt;br /&gt;It happened also that in the &lt;a href="http://www.mono-project.com/Accessibility:_UiaAtkBridge#Acceptance_tests"&gt;last step&lt;/a&gt; of our brand new &lt;a href="http://www.mono-project.com/Accessibility:_UiaAtkBridge"&gt;Bridge&lt;/a&gt; (let's call it proof of concept for now), we had a very strange &lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=375987"&gt;crash&lt;/a&gt; (you need GLib# and ATK# from SVN to build the testcase) just because we referenced in the last moment to the &lt;a href="http://www.mono-project.com/SWF"&gt;SWF&lt;/a&gt; library. &lt;a href="http://automorphic.blogspot.com/"&gt;Sandy&lt;/a&gt; did a wonderful work &lt;a href="http://www.mono-project.com/GDB"&gt;debugging&lt;/a&gt; it thanks to the help of &lt;a href="http://pages.infinit.net/ctech/poupou.html"&gt;Sebastien&lt;/a&gt; and &lt;a href="http://blog.sublimeintervention.com/index.html"&gt;Geoff&lt;/a&gt;, and we now are certainly sure that this problem comes from the fact that SWF happens to depend on GTK for a very specific feature related to colours.&lt;br /&gt;&lt;br /&gt;We have for now two alternatives to fix this:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Drop this dependency (&lt;a href="http://jpobst.blogspot.com/"&gt;Jonathan Pobst&lt;/a&gt; pointed out he would be glad to find a way of making the colours functionality not depend on GTK).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Change GTK+ initialization in order to detect the existance of another library for managing ATK (very similar to Gail).&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;The latter will be the one I'll look at (because it seems easier, but a bit more less comfortable regarding packaging, because we would depend on GTK from SVN), so if you happen to think of another one, we will be happy to listen to your suggestion.&lt;br /&gt;&lt;br /&gt;Well, now you would ask: why the title of this blog entry. Well, it turned out that yesterday when I came back from another trip for carrying furniture, as I was very concerned with this issue, I turned on the laptop to keep on working on it (that was when we figured out the cause of the issue, discussing it on &lt;a href="irc://irc.gnome.org/monodev"&gt;#monodev&lt;/a&gt; and &lt;a href="irc://irc.gnome.org/mono-a11y"&gt;#mono-a11y&lt;/a&gt; channels), and I went to sleep at 2 AM, forgetting completely that I had my car badly parked (in order to take out the sofas in the closest place to the building), so this morning has happened to be a pain in the ass because the police has put me a fine.&lt;br /&gt;&lt;br /&gt;And then I had a fantastic idea about fines that I didn't want to forget, which would be awesome if the government approved it because:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It would avoid the fact that many people claim: the city's councils are lately having an overwhelming increase of traffic fines, just with the sole reason of collecting more money, making the police busy with this instead of tracking &lt;strong&gt;real&lt;/strong&gt; crimes.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;It would allow the people not to feel so bad about having to pay such a high penalty, without loosing the real motivation of penalties: education.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Of course I don't want to pretend that I should not pay the fine, but my suggestion is: what if this money was given to the &lt;a href="http://en.wikipedia.org/wiki/NGO"&gt;NGO&lt;/a&gt; of your choice? Recently I got contacted by some people from the &lt;a href="http://en.wikipedia.org/wiki/World_Wide_Fund_for_Nature"&gt;WWF&lt;/a&gt; organization and was still wondering if subscribing to this one or to &lt;a href="http://en.wikipedia.org/wiki/GreenPeace"&gt;GreenPeace&lt;/a&gt; (I would also support Obama, but I think I can't because I'm not american ;) ). And now I realise I will pay for a fine more money that I would give for a one-year subcription to a NGO like these ones...&lt;br /&gt;&lt;br /&gt;And now two questions to the readers (wow, I admire you if you have read until here):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Does anyone recommend me a specific NGO that is worth being a member of?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Does anyone recommend me a way to send this suggestion to the politicians? Do they have a bugzilla.congress.gov?&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update 21-JUL-2008:&lt;/strong&gt; I'm a bit worried about &lt;a href="http://www.escolar.net/MT/archives/2008/07/%C2%BFdonde-esta-el-progresismo-de-obama.html"&gt;these Obama's statements&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update 16-SEP-2010:&lt;/strong&gt; Talking again about fines, compare what other governments do to &lt;a href="http://www.cookingideas.es/un-mayordomo-que-te-aparca-la-bici-y-la-deja-niquelada-siempre-que-la-estaciones-en-lugar-prohibido-20100914.html"&gt;what the Danish government does&lt;/a&gt; (sorry, link in Spanish).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-7880093591505053933?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/7880093591505053933/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=7880093591505053933&amp;isPopup=true' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/7880093591505053933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/7880093591505053933'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2008/04/fines-and-ngos.html' title='Fines and NGOs'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-2762678306290193547</id><published>2008-03-24T18:20:00.000+01:00</published><updated>2008-03-24T18:35:22.488+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>Unmanaged documentation hard to manage</title><content type='html'>I'm not supposed to deal much with low level technologies (unmanaged code, C language...), but in order to test things from the beginning to allow myself understand things better, I'm dealing with Atk for later translating code to C#+Atk#.&lt;br /&gt;&lt;br /&gt;One of the things I hate more is not having the excellent refactoring options that the modern IDE's nowadays can provide. For example, how do I know where is some element defined (in my code? in a reference? in which reference?)? Sometimes I find myself copy-pasting a function into another empty test project and start adding references to it until it compiles. Someone would say: hey but there's a lot of documentation out there! Really? Take this example:&lt;br /&gt;&lt;br /&gt;Function: g_type_class_ref&lt;br /&gt;- It smells like a Glib/Gobject function.&lt;br /&gt;- Surprisingly, calling it in a &lt;a href="http://monoport.com/7934"&gt;test project&lt;/a&gt; that has a reference to glib &lt;a href="http://monoport.com/7933"&gt;doesn't work&lt;/a&gt;.&lt;br /&gt;- More surprisingly, calling it in a test project that has a reference to glib and atk works.&lt;br /&gt;- Mmmm, but it doesn't smell like an ATK component, right? Maybe atk ref already depends on the lib I'm looking for...&lt;br /&gt;- Let's &lt;a href="http://www.google.com/search?q=g_type_class_ref&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;aq=t&amp;amp;rls=org.mozilla:en-US:official&amp;amp;client=firefox-a"&gt;google it...&lt;/a&gt;&lt;br /&gt;- WTF! the majority of links provided are forums, not docs.&lt;br /&gt;- Finally got &lt;a href="https://www.linux-foundation.org/dbadmin/browse/int_single.php?Iname=g_type_class_ref"&gt;one from the LinuxFoundation&lt;/a&gt;, which tells me something about a libgobject-2.0 thingy... but that lib is not in my system.&lt;br /&gt;- Anyway, the page redirects me to the "Gobject 2.6.2 Reference Manual"...&lt;br /&gt;- But! it's a broken link which ends on main gtk.org doc page.&lt;br /&gt;- Well, then, let's look for "site:gtk.org g_type_class_ref"... No results!&lt;br /&gt;&lt;br /&gt;Ok ok, this is not C language fault, but how do you guys get to know these type of things? I hope you don't download all the source code of all these libs and grep for the word you're looking for... :D&lt;br /&gt;&lt;br /&gt;Please make me feel dumb if you want to reply, and I will learn one more interesting thing today :)&lt;br /&gt;&lt;br /&gt;In managed code with an IDE, you just have to right-click on the method and select "Go to definition" and if the method is found in a binary reference, there are different behaviours depending on the IDE you use, if you use VS2005 or later, you get an Object Browser that shows you the API of the library, and with MonoDevelop it tries to use the debugging symbols for showing the source code or otherwise it shows a &lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=369712"&gt;minibug&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;SOLUTION of the QUIZ: I had to look for the library 'gobject-2.0', not libgobject-2.0. Of course, &lt;a href="http://lightvortex.livejournal.com/"&gt;Mike Gorse&lt;/a&gt; was the &lt;em&gt;unmanaged&lt;/em&gt; expert that made me feel dumb! :D&lt;br /&gt;&lt;br /&gt;SOLUTION to avoid the QUIZ to other people in the future: &lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=369927"&gt;bug 369927&lt;/a&gt;. Mmmm, it has been closed as WONTFIX, maybe the unmanaged side of things should not get easier :)&lt;br /&gt;&lt;br /&gt;Another mini-quiz that I solved also recently comes from the &lt;strong&gt;managed world&lt;/strong&gt;. Do you know how static constructors work? They get called automatically whenever the code flow comes in the type where they lay. Example:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;public static class MainClass&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;public static void Main(string[] args)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine("begin");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new StaticCtorTest(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new StaticCtorTest(2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine("end");&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class StaticCtorTest&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;public StaticCtorTest(int initValue)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine("Normal ctor");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.initValue = initValue;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;  &lt;br /&gt;&amp;nbsp;&amp;nbsp;static StaticCtorTest()&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine("Static ctor");&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;private int initValue;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;What's the output of this test? This:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;begin&lt;br /&gt;Static ctor&lt;br /&gt;Normal ctor&lt;br /&gt;Normal ctor&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now, what happens if we drop the custom constructor? We can still create objects from our class, but using the implicit empty constructor:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;public static class MainClass&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;public static void Main(string[] args)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine("begin");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new StaticCtorTest();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new StaticCtorTest();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine("end");&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class StaticCtorTest&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;static StaticCtorTest()&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine("Static ctor");&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;private int initValue;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Output:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;begin&lt;br /&gt;Static ctor&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This constructor can only be called when no other constructors have been defined. Example: the following code will give a compiler error:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;public static class MainClass&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;public static void Main(string[] args)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine("begin");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new StaticCtorTest(); //The type `StaticCtorTest' does not contain a constructor that takes `0' arguments(CS1729)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine("end");&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class StaticCtorTest&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;public StaticCtorTest(int initValue)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine("Normal ctor");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.initValue = initValue;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;  &lt;br /&gt;&amp;nbsp;&amp;nbsp;static StaticCtorTest()&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine("Static ctor");&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;private int initValue;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Ok, but here comes the surprise. What happens if, instead of using a class, you use a struct?&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;public static class MainClass&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;public static void Main(string[] args)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine("begin");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;new StaticCtorTest();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine("end");&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public struct StaticCtorTest&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;public StaticCtorTest(int initValue)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine("Normal ctor");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;this.initValue = initValue;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;  &lt;br /&gt;&amp;nbsp;&amp;nbsp;static StaticCtorTest()&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine("Static ctor");&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;private int initValue;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;What happens is that you don't receive any compiler error, and thus you may think that the static constructor is being called, however, the output:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;begin&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;WTF! This stupid thing made &lt;a href="http://mkestner.blogspot.com/"&gt;mkestner&lt;/a&gt; and me feel like crazy, wondering if any JIT optimization would kill our call in the GLibSharp bindings.&lt;br /&gt;&lt;br /&gt;Fortunately, with this little research and &lt;a href="http://lists.ximian.com/pipermail/mono-patches/2008-March/112897.html"&gt;his help&lt;/a&gt;, all was solved and I can keep on concentrating on how to complete &lt;a href="http://www.mono-project.com/AtkSharp"&gt;Atk#&lt;/a&gt; in order to get my &lt;a href="http://anonsvn.mono-project.com/source/trunk/uia2atk/src/samples/managed/atkSharpHelloWorld/"&gt;toplevel-with-n-children sample&lt;/a&gt; to work, and finishing the &lt;a href="http://www.mono-project.com/Accessibility:_UiaAtkBridge"&gt;documentation&lt;/a&gt; that is still in a draft stage.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-2762678306290193547?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/2762678306290193547/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=2762678306290193547&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/2762678306290193547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/2762678306290193547'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2008/03/unmanaged-documentation-hard-to-manage.html' title='Unmanaged documentation hard to manage'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-4619604347234313246</id><published>2008-03-11T23:34:00.009+01:00</published><updated>2009-02-17T03:10:52.268+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>Cambridge hacking</title><content type='html'>I'm excited to be joining &lt;a href="http://www.novell.com/"&gt;Novell&lt;/a&gt;, to work on some .NET 3.x libraries implementation on the &lt;a href="http://www.mono-project.com/"&gt;Mono stack&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I started to get things up and running for my new role in &lt;a href="http://calvinrg.blogspot.com/"&gt;Calvin&lt;/a&gt;'s &lt;a href="http://www.mono-project.com/Accessibility:_Team"&gt;A11Y Team&lt;/a&gt; last week in the Boston/Cambridge office, where the Microsoft+Novell interoperability lab is located, and had a great time meeting the other members of the team.&lt;br /&gt;&lt;br /&gt;After all the planning and organizative meetings, we started on the hacking phase (look ma, no UML! ;) ), which I will be tracking in blog entries like this. So let's start:&lt;br /&gt;&lt;br /&gt;As I will have to use Windows OS to test things from time to time, I firstly decided to set up virtualization. I decided to switch from VMWare to VirtualBox this time (given that the latter is open source) and it's happenning to be tricky because:&lt;br /&gt;- Drag'n'drop doesn't work yet.&lt;br /&gt;- Copy/paste doesn't work yet.&lt;br /&gt;- You have to add your user to the group vboxusers.&lt;br /&gt;- You have to launch the vbox kernel module (I don't know why the RPM didn't prepare this on the installation phase):&lt;br /&gt;&lt;code&gt;sudo /etc/init.d/vboxdrv setup&lt;/code&gt;&lt;br /&gt;- For sharing data between the guest and the host (given that DnD doesn't work), you can share resources with this command:&lt;br /&gt;&lt;code&gt;VBoxManage sharedfolder add Vista11y -name VmShare -hostpath /home/knocte/Desktop/VmShare&lt;/code&gt;&lt;br /&gt;But trying to access it via the path &lt;code&gt;\\vboxsvr\VmShare&lt;/code&gt; wasn't working! I wondered if it was related to the network interfaces so I looked at it and:&lt;br /&gt;- Network interface was not working in the first place (NAT type). I then added a new network interface (internal type) and Vista recognized it but couldn't install the drivers itself.&lt;br /&gt;- It seems I can find the drivers on some place on the internet, but what's first? the egg or the hen? Because I need to pass those files to the OS guest... oh dear, it seems that I can convert a ZIP file to an ISO file but... this is becoming...&lt;br /&gt;- Let's do this stuff later... maybe it's worth reconsidering &lt;a href="http://knocte.blogspot.com/2006/02/windowsxp-en-suse-con-qemu.html"&gt;Qemu again&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I've also studied the UIA API:&lt;br /&gt;&lt;br /&gt;- http://en.wikipedia.org/wiki/Microsoft_UI_Automation&lt;br /&gt;- http://msdn2.microsoft.com/en-us/library/ms747327(printer).aspx&lt;br /&gt;- http://msdn2.microsoft.com/en-us/library/ms788733(printer).aspx&lt;br /&gt;- http://accessinteropalliance.org/docs/Introducing_IAccessibleEx.doc&lt;br /&gt;- http://download.microsoft.com/download/5/e/1/5e168e97-91dd-4ca3-ac7e-2131aec8cd1b/Overview_UIA.pdf&lt;br /&gt;&lt;br /&gt;And Gnome A11Y:&lt;br /&gt;&lt;br /&gt;- http://library.gnome.org/users/gnome-access-guide/2.20/&lt;br /&gt;- http://live.gnome.org/Accessibility/Developers&lt;br /&gt;- http://live.gnome.org/Accessibility/GetInvolved&lt;br /&gt;- http://live.gnome.org/GAP/AtkGuide&lt;br /&gt;&lt;br /&gt;Things that surprised me?&lt;br /&gt;&lt;br /&gt;a) Neither GAIL (Gnome Accessibility Implementation Library) nor ATK (Accessibility ToolKit) where named here: http://www.gnome.org/projects/ . But suddendly discovered that:&lt;br /&gt;b) &lt;a href="http://blogs.sun.com/wwalker/entry/gail_migrated_into_gtk"&gt;GAIL is now part of Gtk+ (which could explain statement [a]) and ATK is toolkit independent&lt;/a&gt;, however:&lt;br /&gt;c) GAIL still resides in its separate &lt;a href="http://svn.gnome.org/svn/gail/trunk/"&gt;SVN path&lt;/a&gt; (which contradicts statement [b1])&lt;br /&gt;d) Suddendly wondered about ATK+KDE (given the independence mentioned in statement [b2]) and came out with this: http://accessibility.kde.org/developer/atk.php), however:&lt;br /&gt;e) ATK is GObject based (which makes [b2] difficult)&lt;br /&gt;f) ATK seems to be considered a part of GTK+ (which contradicts [b2]), as said here: http://live.gnome.org/GAP/AtkGuide&lt;br /&gt;&lt;br /&gt;Thus, this set of statements surrounds a big WTF.&lt;br /&gt;&lt;br /&gt;I installed also some tools that are going to be needed for my work:&lt;br /&gt;- Orca (already installed).&lt;br /&gt;- LSR (didn't found any RPM package named this way, so I downloaded from &lt;a href="http://svn.gnome.org/svn/lsr/trunk/"&gt;SVN&lt;/a&gt;), which stands for Linux Screen Reader.&lt;br /&gt;- Accerciser (didn't find a package in normal repositories, but found one OpenSUSE extra repository that contained &lt;a href="http://software.opensuse.org/ymp/home%3Ahpjansson%3A11.0-testing/openSUSE_10.3/accerciser.ymp"&gt;it&lt;/a&gt;, thanks OBS community!). I could say this application is the analogy to DOM Inspector in the Mozilla environment, but oriented to accessibility. Surprisingly you can discover that still many native Gnome applications are not accessible when running it (like NetworkManager, the new OpenSUSE updater, or Accerciser itself; or maybe the latter was disabled by default in order to not cause strange recursive behaviours...). You can read more about it &lt;a href="http://www.linuxjournal.com/article/9991"&gt;in this LinuxJournal article&lt;/a&gt; or in its &lt;a href="http://live.gnome.org/Accerciser"&gt;Gnome page&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'm still in the HelloWorld hunting phase, dealing with Atk# and stuff related. On the way, I've been using MonoDevelop a bit and just filed 5 bugs:&lt;br /&gt;- &lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=368597"&gt;Wrong location of caret in the new managed editor&lt;/a&gt;&lt;br /&gt;- &lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=368625"&gt;Special output from mcs not parsed correctly&lt;/a&gt;.&lt;br /&gt;- &lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=368755"&gt;References dialog on a C project should not show managed libs&lt;/a&gt;&lt;br /&gt;- &lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=368799"&gt;Protected constructor is shown on autocompletion list&lt;/a&gt;&lt;br /&gt;- &lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=368804"&gt;Issues with paths in a C project&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(Don't get me wrong, MonoDevelop team is doing an unbeatable work, but I usually find cosmetic errors and cannot avoid saving them in Bugzilla to enable them to polish it more and more.)&lt;br /&gt;&lt;br /&gt;Better than start coding blindly I'm still finding examples on which I can base my first steps. For example:&lt;br /&gt;- the file &lt;a href="http://svn.gnome.org/svn/evolution/trunk/a11y/widgets/ea-combo-button.c"&gt;ea-combo-button.c&lt;/a&gt; file from Evolution, mentioned on a11y-dev mailing list.&lt;br /&gt;- an &lt;a href="http://bugzilla.abisource.com/attachment.cgi?id=4459&amp;action=view"&gt;unfinished patch&lt;/a&gt; made by my teammate Mike Gorse, that implements Atk accessibility on some Abiword bits (hosted on &lt;a href="http://bugzilla.abisource.com/show_bug.cgi?id=4736"&gt;Abiwords Bugzilla&lt;/a&gt;).&lt;br /&gt;- the Mozilla module &lt;a href="http://lxr.mozilla.org/seamonkey/source/accessible/src/"&gt;Accessible&lt;/a&gt; where &lt;a href="http://lxr.mozilla.org/seamonkey/source/accessible/accessible-docs.html"&gt;resides either MSAA and ATK interface layers&lt;/a&gt; (thanks Calvin for the guidance).&lt;br /&gt;- GAIL source code that I just mentioned.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;TODOLIST:&lt;br /&gt;- Play more with Accerciser&lt;br /&gt;- Play more with ORCA&lt;br /&gt;- Finish reading &lt;a href="http://live.gnome.org/GAP/AtkGuide"&gt;this huge doc&lt;/a&gt; about GAIL and ATK.&lt;br /&gt;- After finishing getting some &lt;a href="http://library.gnome.org/devel/atk/unstable/index.html"&gt;ATK&lt;/a&gt; examples running, convert them to manage code using &lt;a href="http://anonsvn.mono-project.com/source/trunk/gtk-sharp/atk/"&gt;Atk#&lt;/a&gt; (BTW thanks mkestner for all the help I'm getting from you to start ).&lt;br /&gt;- Read &lt;a href="http://www.oatsoft.org/Software/windowcatcher/view"&gt;WindowCatcher&lt;/a&gt; source code  (thanks for the link Calvin) in order to get some UIA examples running.&lt;br /&gt;&lt;br /&gt;Non-hacking TODOLIST:&lt;br /&gt;- Figure out how to change my Bugzilla's account email (already done it, but I keep getting emails to my old account).&lt;br /&gt;- Get a new keyboard from my laptop: I don't want to loose my beloved Spanish keys :)&lt;br /&gt;&lt;br /&gt;Another TODOLIST that is not related to a11y but is not non-hacking either is:&lt;br /&gt;- Figure out why the hell OpenSUSE 10.3 won't wake up after hibernating in my new T61P (I guess it's related with the NVidia proprietary drivers... :( ). But it seems &lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=327601"&gt;I'm not the only one&lt;/a&gt;.&lt;br /&gt;- Figure out how to make the fingerprint reader work with OpenSUSE (anyone with a driver out there??).&lt;br /&gt;&lt;br /&gt;But the one I wish more is to pass this first phase (in which you seem to test and read many things but don't get any useful code at all) as quickly as I can, in order to feel more productive.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;UPDATE 11-MAR-2008&lt;/strong&gt;: &lt;a href="http://permalink.gmane.org/gmane.comp.gnome.accessibility.devel/2923"&gt;This&lt;/a&gt; clarifies part (c) of my WTF.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;UPDATE 06-APR-2008&lt;/strong&gt;: It turns out that GuestAdditions is not an addon for your VirtualBox software (that's what I understood when I saw an RPM on my OpenSUSE that had this name), but a software that you have to install on the Operating System you're emulating with VirtualBox. Now the clipboard is working, but not the DragNDrop or the network (although I found the driver and installed it, it seems that it can't contact the router or the DHCP server).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;UPDATE 07-APR-2008&lt;/strong&gt;: Installing again the guest OS in a new VM, install the Guest additions as the very first step, and then configuring the network connection with the driver provided in the GuestAdditions ISO image (letting the default settings for Networks: just one NAT-based), fixed all the problems! (The only feature I miss is DragNDrop.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;UPDATE 14-APR-2008&lt;/strong&gt;: Finally fixed the SharedFolders issue! You have to do this (apart from adding the shared folder with the VBox command line or GUI):&lt;br /&gt;&lt;br /&gt;- Share the folder on the host via SMB (Yast -&gt; Network Services -&gt; Samba Server =&gt; enable user shares; reboot; right-click on a folder -&gt; Sharing options).&lt;br /&gt;- Install the *last version of GuestAdditions* (the one that comes with your version of VirtualBox; beware: reinstall it when you upgrade your VirtualBox). Install it via menu Devices -&gt; Install Guest Additions... in your virtual machine window. Beware: guest additions neads a clean restart, if you reboot it and get an error on boot, you will need to reinstall it.&lt;br /&gt;- In the virtual machine window, go to menu Devices -&gt; Shared Folders and set up the same folder you just shared in SMB.&lt;br /&gt;- Disable UAC in VISTA through msconfig.&lt;br /&gt;- Not try to explore \\vboxsvr\ or something like that, because name resolution doesn't work. This only works through the virtual drive mapping opening a command line (Start Menu &amp;gt; All Programs &amp;gt; Accessories &amp;gt; Right click on Command-Prompt, and run it as an administrator) : net use x: \\vboxsvr\vmshare (it's not case sensitive, &lt;strong&gt;but spell it correctly! it's vbox&lt;em&gt;svr&lt;/em&gt;, not vbox&lt;em&gt;srv&lt;/em&gt;&lt;/strong&gt;).&lt;br /&gt;&lt;br /&gt;For the record, I'm not SURE if all of these three steps are required (maybe the key is just one of them) because I have just tried to disable Samba sharing and it seems to be working too (maybe it will no longer work when I restart the session??? I hate being a sysadmin, this should be made easier...). And it seems that the UAC stuff is only needed if you don't launch the command-prompt as and admin (I don't want to be sure about this, I don't want to test it, I don't want to loose more time on this).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-4619604347234313246?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/4619604347234313246/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=4619604347234313246&amp;isPopup=true' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/4619604347234313246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/4619604347234313246'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2008/03/cambridge-hacking_11.html' title='Cambridge hacking'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-3218104001256342721</id><published>2008-03-02T18:29:00.008+01:00</published><updated>2008-04-23T12:52:55.322+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Politica'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>La falacia del voto útil</title><content type='html'>Lo que empezó como una actualización sobre mi entrada &lt;a href="http://knocte.blogspot.com/2007/07/quejndote-mejoras-el-mundo.html"&gt;"Quejándote mejoras el mundo"&lt;/a&gt;, en la que quería yo quejarme también de la ley electoral que regulariza la distribución de escaños en el sistema electoral español (y el cual tiene implicaciones muy graves, como que beneficia a los partidos mayoritarios y a los nacionalismos territoriales), acabará siendo esta entrada en la que hablaré de lo que los partidos mayoritarios (que hacen gala del triste bipartidismo que existe en nuestro país) hacen al tergiversar el concepto del &lt;strong&gt;voto útil&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Para empezar, me referiré a un buen artículo en el que se denuncia el problema que se da como consecuencia de aplicar el &lt;a href="http://es.wikipedia.org/wiki/Sistema_D%27Hondt"&gt;sistema D'Hondt&lt;/a&gt;: &lt;a href="http://lamiradadelmendigo.blogspot.com/2008/02/lo-que-vale-tu-voto.html"&gt;"Lo que vale tu voto"&lt;/a&gt;, en el que explica cómo nuestro voto es más valioso en función del partido al que votes (pero no por ser un partido concreto, sino dependiendo de su resultado global electoral).&lt;br /&gt;&lt;br /&gt;Este mencionado artículo tiende a ser engañoso, aunque no dice ninguna falsedad, ¿por qué? Porque el hecho de que un voto de IU valga cuatro veces menos que uno del PSOE no es algo "siempre verdad", sino sólo verdad para la distribución de votos resultante de las elecciones pasadas. ¿Cómo puedo demostrar esto? Pues simplemente imagínese que todos los votantes de IU hubieran votado al PSOE, ¿tendría el congreso más diputados de lo habitual como consecuencia de esto? NO. Por lo tanto, el hecho de que, de forma resultante global tras las elecciones, un voto de un partido valga más que otro, es consecuencia únicamente de que, por casualidad (o por cualquier otra razón) las personas que han votado más al partido menos favorecido han estado en regiones donde la distribución de población es mayor que en otras (ya que, como bien se explica en &lt;a href="http://www.asueldodemoscu.net/?p=1379"&gt;este otro artículo&lt;/a&gt;, hay diputados con mayor representación poblacional que otros, como consecuencia de que se intenta dar igual representatividad a una región que a otra independientemente de su número de habitantes). Por lo tanto, y esto lo digo precisamente para sacarle de su error a mucha gente, si votas a PSOE en lugar de IU (por poner un ejemplo de dos partidos) no estás optando por el voto útil. El voto útil es una falacia.&lt;br /&gt;&lt;br /&gt;El argumento del voto útil sólo se puede sustentar por dos situaciones: o bien cuando un partido es tan minoritario que no llega ni siquiera a 1 escaño (y por tanto su electorado se reparte entre los mayoritarios), cosa que no ocurre con IU, o bien solamente para el número de votos sobrantes tras hacer la división por escaños (cantidad que puede ser despreciable; y además esto le ocurre a cualquier partido; sólo que los mayoritarios lo recuperan en mayor o menor medida, COSA QUE ES LA QUE TENDRÍA QUE CAMBIAR).&lt;br /&gt;&lt;br /&gt;Además, que a causa del falso argumento del voto útil la gente opte por una opción política mayoritaria (por ejemplo votar al PSOE en lugar de IU) puede incluso tener consecuencias aún más graves y que el elector no pretendía, por ejemplo:&lt;br /&gt;&lt;em&gt;&lt;br /&gt;MADRID: Elige 35 diputados, 1 más que en 2000&lt;br /&gt;Participación: 72,1% (+ 6,8). Votaron 407.581 personas más&lt;br /&gt;El Partido Popular perdió 49.195 votos, el Partido Socialista ganó 521.464 votos e Izquierda Unida trasvasó 57.071 votos, previsiblemente en favor del PSOE&lt;br /&gt;&lt;br /&gt;¿Cuántos votos le faltaron a Izquierda Unida para no perder su escaño?&lt;br /&gt;Como el último diputado se atribuyó al PP, necesitaba conseguir (92.743-75.036)*3 = 53.121 votos más. Si los restamos a los del PSOE, tendremos:&lt;br /&gt;Si IU hubiera trasvasado 3.949 votos respecto al año 2000, el PP habría perdido 3 escaños, el  PSOE habría ganado 4, e IU conservaría el mismo número de escaños que entonces.&lt;br /&gt;&lt;br /&gt;Conclusión: El llamado voto útil benefició a la derecha regalándole un escaño de Izquierda Unida&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;No sólo pueden ocurrir consecuencias indeseables, sino que el cambio de voto sólo sirva para cambiar un escaño (y por tanto el concepto de voto útil en este caso se erige sólo para robar votos). Ejemplo:&lt;br /&gt;&lt;em&gt;&lt;br /&gt;MÁLAGA&lt;br /&gt;Elige 10 diputados&lt;br /&gt;Participación: 65% (+ 6,9). Votaron 88.897 personas más&lt;br /&gt;El Partido Popular ganó 15.433 votos, el Partido Socialista ganó 85.529 votos e Izquierda Unida trasvasó 5.541 votos, previsiblemente en favor del PSOE&lt;br /&gt;&lt;br /&gt;¿Cuántos votos le faltaron a Izquierda Unida para no perder su escaño?&lt;br /&gt;Como el último diputado se atribuyó al PSOE, necesitaba conseguir (61.293-47.182)*1 = 14.111 votos más. Si los restamos a los del PSOE, tendremos:&lt;br /&gt;Si IU hubiera ganado 8.570 votos respecto al año 2000, el PP seguiría perdiendo 1 escaño a favor del PSOE, e IU conservaría el mismo número de escaños que entonces.&lt;br /&gt;&lt;br /&gt;Conclusión: El llamado voto útil debilitó la opción a la izquierda del PSOE capaz de condicionar su política en sentido social.&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Estos últimos dos estudios hipotéticos sobre las elecciones de 2004 han sido extraídos de una &lt;a href="http://www.iuexiste.es/docs/votoutil.pps"&gt;presentación&lt;/a&gt; elaborada y disponible por el nuevo sitio web de IU &lt;a href="http://www.iuexiste.es/"&gt;http://www.iuexiste.es/&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualizacion 16/MAR/2008&lt;/strong&gt;: No dejeis de apuntaros a esta &lt;a href="http://www.firmasonline.com/1Firmas/camp1.asp?C=1255"&gt;interesante iniciativa&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualizacion 23/ABR/2008&lt;/strong&gt;: Interesante este &lt;a href="http://www.elpais.com/graficos/espana/Reparto/escanos/sistema/proporcional/elpgranac/20080310elpepunac_1/Ges/"&gt;grafico que muestra lo que seria el congreso de tener un sistema electoral proporcional&lt;/a&gt;. Ademas de la que mencione en la actualizacion anterior, tambien hay otra &lt;a href="http://www1.izquierda-unida.es./leyelectoral.htm"&gt;iniciativa de IU&lt;/a&gt; (pobres, habria que prestarles un buen disenyador experto en usabilidad, porque el formulario no se ve el boton de Enviar y hay que pulsar en las barras de desplazamiento para descubrirlo).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-3218104001256342721?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/3218104001256342721/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=3218104001256342721&amp;isPopup=true' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/3218104001256342721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/3218104001256342721'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2008/03/la-falacia-del-voto-til.html' title='La falacia del voto útil'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-6443076339354140436</id><published>2008-02-02T13:50:00.000+01:00</published><updated>2008-02-02T14:54:16.140+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Politica'/><category scheme='http://www.blogger.com/atom/ns#' term='Miscelanea'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Montes es INOCENTE y además BUEN PROFESIONAL</title><content type='html'>Era imposible que no mencionara en mi blog esta impresionante y buenísima noticia acerca del fin del calvario de un compañero de trabajo de mi madre en el hospital Severo Ochoa: el juicio no sólo le ha declarado inocente, sino que ha determinado que tampoco hubo mala praxis, por tanto, queda demostrado el espectáculo bochornoso y teatral que montaron Aguirre, Lamela y Cía hace varios meses para desprestigiar la sanidad pública de la Comunidad de Madrid.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.soitu.es/soitu/imagenes/2008/01/29/tveldescodificador/1201588841_494657_fotonoticia_normal_0.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Fue una maniobra política, para destituir a "médicos rojos" de sus puestos de responsabilidad en el hospital. Pero es que lo peor es que no les van a devolver sus puestos, a pesar de que las palabras de Aguirre exactas fueron: "ha sido una destitución disciplinaria y si el caso les declara inocentes volverán a ostentar sus puestos". Ahora Aguirre dice que fue una destitución organizativa, pero las cadenas informativas más neutrales sacan las primeras declaraciones que he mencionado, de archivo, después de las actuales y la hacen quedar como una auténtica subnormal.&lt;br /&gt;&lt;br /&gt;Hay otras cadenas que, al menos, no han tenido los huevos de NO DAR la noticia, pero al loro a cómo la han dado: lean por favor &lt;a href="http://www.soitu.es/soitu/2008/01/29/tveldescodificador/1201588841_494657.html"&gt;este artículillo para más información&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www2.elplural.com/politica/detail.php?id=17370"&gt;Y otro artículo interesante&lt;/a&gt; en donde sale Montes hablando de su intención de demandar a Lamela.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-6443076339354140436?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/6443076339354140436/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=6443076339354140436&amp;isPopup=true' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/6443076339354140436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/6443076339354140436'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2008/02/montes-es-inocente-y-adems-buen.html' title='Montes es INOCENTE y además BUEN PROFESIONAL'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-5844889534776445272</id><published>2008-02-01T17:14:00.001+01:00</published><updated>2008-03-02T18:23:16.373+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>Entry test</title><content type='html'>[&lt;a href="#entryTest-en"&gt;English version below&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;No estoy muerto :)&lt;br /&gt;&lt;br /&gt;Esta es una entrada que coloco aquí para un futuro test de borrado/creación de entradas en RSS. Podréis deducir también que dentro de poco empezaré a traducir entradas (tanto nuevas como antiguas), aunque sólo las técnicas.&lt;br /&gt;&lt;br /&gt;Noticias frescas se avecinan.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--&lt;br /&gt;&lt;br /&gt;&lt;h4 id="entryTest-en"&gt;[English version]&lt;/h4&gt;&lt;br /&gt;I'm not dead :)&lt;br /&gt;&lt;br /&gt;This is an entry test that I place here for a future test about removal/creation of RSS entries. You'll deduce then also that soon I'll begin to translate posts (some of the old ones too), but only the technical ones.&lt;br /&gt;&lt;br /&gt;Fresh news are coming soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-5844889534776445272?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/5844889534776445272/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=5844889534776445272&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/5844889534776445272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/5844889534776445272'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2008/02/entry-test.html' title='Entry test'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-3362916020026619995</id><published>2007-10-29T23:09:00.000+01:00</published><updated>2007-11-02T12:32:54.122+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mozilla'/><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>¿Por qué aún no me he pasado a los DVCS?</title><content type='html'>Antes era por vagancia de probar algo nuevo, pero ahora tengo &lt;a href="http://blog.red-bean.com/sussman/?p=79"&gt;argumentos&lt;/a&gt; :D. Además, suficiente que ya he conseguido cambiar el chip de MS Source-Safe a Subversion de bastante gente, como para ahora ir cambiándolo de nuevo. Subversion promete mucho en sus próximas versiones, sobre todo porque promete algo del estilo "lo mejor de los dos mundos", el eterno concepto. Un repositorio centralizado pero con funcionalidades de los repositorios distribuidos.&lt;br /&gt;&lt;br /&gt;No soy del grupo del 80% del que se habla en el artículo que he enlazado, pero convivo con muchos compañeros que sí lo son, y por tanto considero de crucial importancia la simplicidad, la compatibilidad con Windows, y la disponibilidad de una GUI (en este caso me inclino ciertamente por el 80%, o no conquistaremos el escritorio en la vida).&lt;br /&gt;&lt;br /&gt;Y para terminar el artículo, ejemplos. Proyectos importantes como &lt;a href="http://www.mono-project.com/"&gt;Mono&lt;/a&gt;, KDE y SourceForge.NET se pasaron de CVS a Subversion, y ahí se han quedado. &lt;a href="http://www.mozilla.org/"&gt;Mozilla&lt;/a&gt; sigue con CVS pero van a cambiar a Mercurial (DVCS), a pesar de lo &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=329639"&gt;pesado&lt;/a&gt; que he sido ;)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 31-OCT-2007&lt;/strong&gt;: Al final me he leído todos los comentarios de la entrada y la verdad he encontrado algunos brillantes, hasta el punto de que quizás me hayan convencido de que sí algún día tendría que probar los DVCS, además de seguir muy de cerca al rey de los CVCS: Subversion.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 02-OCT-2007&lt;/strong&gt;: Acerca de la conversión VSS-&gt;SVN que he mencionado, me gustaría poner un enlace a &lt;a href="http://codicesoftware.blogspot.com/2007/11/agile-vs-corporate-decisions.html"&gt;una historia&lt;/a&gt; con la que me siento muy identificado.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-3362916020026619995?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/3362916020026619995/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=3362916020026619995&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/3362916020026619995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/3362916020026619995'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2007/10/por-qu-no-me-he-pasado-los-dvcs.html' title='¿Por qué aún no me he pasado a los DVCS?'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-3644772738653564821</id><published>2007-10-28T23:21:00.000+01:00</published><updated>2007-10-28T23:24:24.361+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>CallerWatchDog, in case of fire</title><content type='html'>Últimamente en mi trabajo había que refactorizar (o más bien, tirar a la basura y rehacer) cierto código que implementaba reintentos de llamadas a webservices usando recursividad (con el peligro que ello conlleva, de aumento de memoria por uso de la pila; y más sabiendo que podía hacerse sin recursividad) y ningún tipo de reutilización en el comportamiento del reintento.&lt;br /&gt;&lt;br /&gt;Me he pasado gran parte del fin de semana implementando un "CallerWatchdog" que se encargará de hacer este trabajo de manera más eficiente: sin recursividad, sin usar threads adicionales, usando Timers en lugar de Thread.Sleep (de manera que otro Thread pueda matar mi proceso sin obtener excepciones), etc.&lt;br /&gt;&lt;br /&gt;Esto me va a permitir cargarme un fichero inmantenible de 3.000 líneas que aún sobrevivía tras el paso de los años. Desde luego que cuando lo haga, y pueda comprobar que la refactorización funciona, va a ser bastante gratificante.&lt;br /&gt;&lt;br /&gt;No es que suela ser habitual lo de hacer horas extras (ni siquiera típico cuando hay que apagar algún "fuego", a excepción de la iniciativa propia), pero ya que deduzco que seguramente no me las pagarán, me voy a tomar la libertad de liberar, válgame la redundancia, esta pequeña porción de trabajo hecho en mi tiempo libre. Al fin y al cabo, lo voy a modificar ligeramente para que se adapte al sistema de logs de mi empresa, así que no veo ningún tipo de problema en ello (máxime cuando, como ya sabrá mucha gente, es factible saltarse las restricciones de la GPL siempre que el que lo hace sea el propio autor).&lt;br /&gt;&lt;br /&gt;Lo podéis encontrar &lt;a href="http://monoport.com/5245"&gt;en esta entrada de MonoPort&lt;/a&gt;. Al final del todo encontraréis ejemplos de su uso.&lt;br /&gt;&lt;br /&gt;Lo que más me gusta de mi solución es que, a pesar de ser tremendamente genérica (válida para cualquier tipo de método que no tenga más de un parámetro, con lo que podemos encapsular cualquier cosa que use más mediante objetos o estructuras), no me he saltado la estaticidad de tipos mediante reflection, sino que he utilizado delegados y tipos genéricos. Seguramente este tipo de cosas son más fáciles de hacer en un lenguaje dinámicamente tipado, pero sinceramente no creo que valga la pena arriesgar el resto del sistema sólo por este tipo de funciones genéricas puntuales.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-3644772738653564821?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/3644772738653564821/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=3644772738653564821&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/3644772738653564821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/3644772738653564821'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2007/10/callerwatchdog-in-case-of-fire.html' title='CallerWatchDog, in case of fire'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-3290906911474480070</id><published>2007-10-08T10:34:00.000+02:00</published><updated>2008-01-02T16:47:19.859+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>Curiosidades sobre lenguajes</title><content type='html'>Como buen seguidor del omnipresente lenguaje C#, me complace mucho enlazar a un artículo muy interesante que nos introduce a una palabra clave del lenguaje bastante poco conocida, e infrautilizada: &lt;a href="http://www.alteridem.net/2007/08/22/the-yield-statement-in-c/"&gt;yield&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Por supuesto, éste lenguaje no es perfecto, y prueba de ello son algunas voces que &lt;a href="http://www.atrevido.net/blog/2007/09/06/Complicated+Functions+In+LINQ+To+SQL.aspx"&gt;critican&lt;/a&gt; &lt;a href="http://www.atrevido.net/blog/2007/09/05/Calling+Custom+Methods+In+LINQtoSQL.aspx"&gt;bastante&lt;/a&gt; &lt;a href="http://www.atrevido.net/blog/2007/08/02/C+Frustration.aspx"&gt;la nueva versión 3.0&lt;/a&gt;, que incluye bastantes modificaciones sobre todo debidas a LINQ. &lt;a href="http://www.atrevido.net/blog/2007/09/05/C+30+And+LINQ+Misunderstandings.aspx"&gt;Algunos de estos cambios nos traen capacidades típicas de los lenguajes funcionales&lt;/a&gt;, y aquí voy a enlazar a un blog que incorpora una serie de artículos para que poco a poco vayamos &lt;a href="http://www.atrevido.net/blog/2007/08/16/Practical+Functional+C+Part+III+Loops+Are+Evil.aspx"&gt;cambiando el chip&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;En otro orden de cosas, y ya que éstamos hablando de lenguajes, me gustaría mencionar algo de VB.NET (a pesar de que se ha criticado bastante, &lt;a href="http://knocte.blogspot.com/2006/05/ms-razones-para-odiar-el-visual-basic.html"&gt;por mí&lt;/a&gt; y &lt;a href="http://www.atrevido.net/blog/2007/08/22/Reason+52+Against+Visual+Basic+Nothing+In+Visual+Basic.aspx"&gt;por otros&lt;/a&gt;): según &lt;a href="http://rolfkvinge.blogspot.com/2007/10/vb-10.html"&gt;este blog&lt;/a&gt;, están pensando funcionalidades para la nueva versión, y en esa misma entrada Rolf (el desarrollador del compilador de VB de &lt;a href="http://www.mono-project.com/"&gt;Mono&lt;/a&gt;) propone bastantes cosas interesantes (algunas para que el VB deje de ser tan basura, y otras para que siga teniendo las [pocas] ventajas sobre otros lenguajes). Yo también he comentado algo en la entrada, con mi &lt;em&gt;wishlist&lt;/em&gt; particular.&lt;br /&gt;&lt;br /&gt;Y hablando de wishlists, en breves días publicaré también una lista de cambios que me gustaría se incorporaran en la próxima versión de C# (está basada en la 2.0, pero como ya sale la 3.0, tendré que actualizarlo...).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización [unos minutos después de publicar]&lt;/strong&gt;: Ya que estamos, también voy a hablar de Java. No hay que olvidar que en &lt;a href="http://knocte.blogspot.com/2005/06/antifud-mononet.html"&gt;mi AntiFUD de Mono&lt;/a&gt; pongo a éste lenguaje en un pedestal (sobre todo por su reciente liberación, gracias a Sun), aunque sigo pensando que tiene inconvenientes con respecto a C#/Mono. En general, lo que opino se puede resumir en lo mismo que opina &lt;a href="http://zbowling.com/"&gt;Zac Bowling&lt;/a&gt; (un desarrollador de Mono) en &lt;a href="http://zbowling.com/blog/2007/10/08/including-java-in-standards/"&gt;este artículo&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Honestly, I believe Java has a lot of inherit issues that pretty much can’t get fixed without breaking most backward compatibility (too many things to cite here), which is why I contribute to and support Mono and .NET. For the record though, I don’t hate Java though, and I spend a good amount of time at work developing in it. It just seems like there are so many better alternatives.&lt;br /&gt;&lt;br /&gt;One of the only things good about it all is that at least Java isn’t entirely proprietary anymore (although good many of the common libraries, frameworks, and implementations remain that way).&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización [unas horas después de publicar]&lt;/strong&gt;: También me vienen a la mente mis queridos lenguajes de programación de tipado dinámico, los de las tres P's y la R: Perl, Python, PHP, Ruby.&lt;br /&gt;&lt;br /&gt;Me parece genial que estén surgiendo iniciativas para que estos lenguajes compilen a código CIL de .NET, para que así haya interoperabilidad entre todos (IronPython, IronRuby, ...). Pero sigo pensando que no deberían usarse para cosas medianas-grandes, por los problemas que dan en el medio-largo plazo.&lt;br /&gt;&lt;br /&gt;Y es que los avances en la informática no hacen más que dar la razón a la gente que opta por cosas como Java o .NET, plataformas mucho más evolucionadas. Ejemplo de ello es, pongamos, el hecho de que PHP en su próxima versión &lt;a href="http://enterprise.phpmagazine.net/2005/11/namespaces_for_php6_the_intern.html"&gt;vaya a soportar namespaces&lt;/a&gt;, o que &lt;a href="http://barrapunto.com/articles/07/06/20/1055242.shtml"&gt;Python, en su próxima versión, vaya a soportar una condición de compilación opcional para hacerlo estáticamente tipado&lt;/a&gt;. ¿Es que no se dan cuenta que constantemente están poniendo funcionalidades que ya tienen C# y Java de hace mucho?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 22-OCT-2007&lt;/strong&gt;: Me ha encantado &lt;a href="http://debackerl.wordpress.com/2007/10/20/thoughts-about-ribbon-sharp-and-gnome/"&gt;una entrada de otro desarrollador de Mono&lt;/a&gt; que opina de forma similar a mí: Gnome3 debería estar basado en Mono, quitando C++ y C, sustituyendo Python por IronPython, Ruby por IronRuby, etc...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 31-OCT-2007&lt;/strong&gt;: Para que se entienda mejor lo que quiero decir sobre los lenguajes estáticamente tipados, es decir, los derroteros por los que han derivado las conversaciones en esta entrada, voy a citar texto de &lt;a href="http://joeshaw.org/2007/10/28/496"&gt;una entrada de Joe Shaw&lt;/a&gt;, uno de los desarrolladores de Beagle:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;And lastly, having worked with Trow on a reasonably big desktop Python app, we wanted a strongly typed language. Writing real applications in Python requires a discipline that unfortunately most people (including myself) are unwilling to adhere to, and this easily leads to buggy and hard to maintain programs. You have to be very diligent about unit tests and code coverage for every line of code, because you can’t rely on the compiler to catch errors for you. We had been burned by this a bit, and wanted to get back to a strongly typed, but still easy to use language that integrated well with the desktop.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 17-DIC-2007&lt;/strong&gt;: Proyecto super cursioso a destacar: &lt;a href="http://xircles.codehaus.org/projects/quaere"&gt;LINQ para Java&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 02-ENE-2008&lt;/strong&gt;: Super interesante &lt;a href="http://tirania.org/blog/archive/2007/Dec-28.html"&gt;esta entrada de Miguel de Icaza&lt;/a&gt; en la que habla de benchmarking de plataformas de desarrollo, y de la que me gustaría citar un fragmento:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;ul&gt;&lt;li&gt;Close to the metal languages are the first tier (C, C++, D, Pascal, even Eiffel).&lt;/li&gt;&lt;li&gt;(...)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I just noticed that Eiffel is on the first tier, performance wise, but has pretty much all the properties and features of the third tier (garbage collection, strong typing, bounds checking). This means that you get the best of both world with it (and Eiffel's compiler is now also open source).&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Conclusión A: ¿no es Eiffel acojonante? Creo que voy a dejar de usar Mono...&lt;br /&gt;&lt;br /&gt;Conclusión B: Va a ser importante eso del "static typing" si también lo dice Miguel de Icaza ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-3290906911474480070?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/3290906911474480070/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=3290906911474480070&amp;isPopup=true' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/3290906911474480070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/3290906911474480070'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2007/10/curiosidades-sobre-lenguajes.html' title='Curiosidades sobre lenguajes'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-3262865489418624789</id><published>2007-10-04T01:12:00.001+02:00</published><updated>2008-04-14T02:08:19.251+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Politica'/><category scheme='http://www.blogger.com/atom/ns#' term='Miscelanea'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Tenemos un problema</title><content type='html'>Tenemos un problema en este país: la monarquía.&lt;br /&gt;&lt;br /&gt;Voy a reproducir una &lt;a href="http://tercerainformacion.es/3i/article2122.html"&gt;noticia&lt;/a&gt; como llamamiento a la manifestación:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;Desde esta mañana circula por correo electrónico y sms la convocatoria anónima de una concentración ciudadana para el próximo Viernes 5 de octubre, a las 21:30h en la Plaza del Rey de Madrid. El llamamiento es para protestar por la "cruzada contra cualquier expresión crítica hacia la monarquía".&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;El texto de la convocatoria denuncia que "de unos meses a esta parte estamos siendo testigos de una cruzada contra cualquier expresión crítica hacia la monarquía. Sus últimos episodios consistieron en el secuestro y enjuiciamiento de la revista El Jueves por un chiste sobre la corona, la persecución de las personas que quemaron una foto de los reyes, y la identificación posterior de la gente que realizó otra quema colectiva de fotos".&lt;br /&gt;&lt;br /&gt;"Estos episodios evidencian que la libertad de expresión se está viendo amenazada, persiguiendo y cercenando toda posibilidad de cuestionamiento de la monarquía. Hemos decidido plantear una movilización que recoja los dos elementos simbólicos de ambos episodios, el fuego y el sentido del humor", según la información que ha recibido TerceraInformacion.es.&lt;br /&gt;&lt;br /&gt;"Expulsemos a la monarquía de nuestra vida cotidiana, quememos sus distintas expresiones y hagámoslo con sentido del humor. Para ello hemos decidido quedar para hacer una quema colectiva de los reyes de la baraja española (oros, copas, espadas o bastos), incluso hay quien está planteando quemar a los reyes magos, a Aragorn y su retorno del Rey, a Pelé o al mismo Elvis… Vamos, que os invitamos a hacer un ejercicio de imaginación y escapar de las imágenes a las que nos tienen acostumbrados los telediarios", expone el correo electrónico de la convocatoria.&lt;br /&gt;&lt;br /&gt;La convocatoria via e-mail y sms hace un llamamiento a los ciudadanos para "hacer de esta movilización un verdadero ’órdago a la grande’ ".&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;No sé si es manifestación legal o no, pero independientemente de eso, la policía no puede disolver una manifestación si es pacífica.&lt;br /&gt;&lt;br /&gt;Y al hilo de esto, reproduzo un artículo de &lt;a href="http://www.faro.org.es/"&gt;FARO&lt;/a&gt; con el que me he sentido muy identificado:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;Tenemos un problema con nuestra policía. Tenemos un problema con cómo nos torturan, tenemos un problema con la naturalidad con la que mienten ante unos jueces acostumbrados a desear oír esas mentiras. Tenemos un problema, y hay que buscar alguna solución, empezando por llamar a cada cosa por su nombre.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Sí, lo sé, no es cierto… en realidad tenemos muchos problemas: casi todos los políticos nos roban y luego se ríen en nuestras narices como en lo más sórdido de la Edad Media; entonces se comportaban como dioses, con sus sillas de posta, su altanería y modales 'refinados', y hoy hacen exactamente lo mismo, a bordo de esos Audi A6 y A8 con los cristales oscurecidos, que tanto les gustan y que muchos de nosotros interpretamos como un derroche que se traduce en una enseñanza pública Realmente mala y una sanidad pública en Franco retroceso (perdón por las mayúsculas intencionadas).&lt;br /&gt;&lt;br /&gt;Pero hoy no quería hablar de eso. Tampoco quisiera hablar de los malditos tipos de interés variable, incardinados en una 'política monetaria' que en realidad solo beneficia a quienes poseen alguno de esos yates que utilizan para cenar, tras pasar la tarde en el golf y la mañana en misa.&lt;br /&gt;&lt;br /&gt;No, no quiero hablar de todas esas cosas… ni siquiera del hecho de que nuestros mercenarios, hartos de un secuestro masivo que ya dura más de siete décadas, se dediquen a genocidear caucásicos, caribeños, persas o indo-asiáticos… no. El problema al que hoy quisiera dedicar algunas líneas es bien distinto:&lt;br /&gt;&lt;br /&gt;Nosotros, el Pueblo, tenemos un problema con 'nuestra' policía; con quien les manda, y también con quien les controla.&lt;br /&gt;&lt;br /&gt;Ocurre, que entre aquellos a quienes pagamos el sueldo, se entremezcla una piara de abusones que con el tiempo, se han acostumbrado a justificar su 'razón' en el abuso de la fuerza, y pocas veces al revés. Tenemos un problema: tenemos que soportar que individuos con un arma reglamentaria al cinto nos golpeen, nos insulten, traten de humillarnos, y nos provoquen… pasándose la Constitución por el forro de los cojones (sí, esa mala redacción, salida de la mano de un chusquero con apellidos compuestos, impuesta bajo amenaza de repetir en 1978 lo que ya hicieran en 1936, y 'refrendada' mediante un 'proceso electoral' en el que se votó a una única opción —omitiendo deliberadamente la totalidad de las propuestas alternativas que bullían en el seno de la ciudadanía—, en fin, todo muy "democrático").&lt;br /&gt;&lt;br /&gt;Hablo de la impunidad, de lo cotidiano de atropellar los derechos civiles y políticos… hablo de la normalidad con que algunos ven el recurso a la tortura, hablo del feo vicio de mentir en sede judicial, de la generalización de la práctica de 'fabricar pruebas', de todo eso… y de tantas otras cosas que todo el mundo sabe y de las que pocas veces oiremos hablar.&lt;br /&gt;&lt;br /&gt;Opino yo, que a lo mejor el asunto tiene su raíz en nuestra curiosa forma de transitar de la primera a la segunda fase del franquismo. Probablemente, si a la muerte del terrorista que nombró al rey de España, hubiéramos iniciado un verdadero proceso de democratización del país, hoy no nos encontraríamos como nos encontramos.&lt;br /&gt;&lt;br /&gt;El hecho es —por hablar con sencillez—, que tenemos un estamento judicial que causa sonrojo en el extranjero (se nos teme aún más que al país del "Expreso de medianoche"). Lo que digo es tan cierto, que cualquiera que disponga de cinco minutos para 'jugar' en el Google, puede comprobar lo que opinan en la OSCE de nuestros pequeños aprendices de Adolf, con toga.&lt;br /&gt;&lt;br /&gt;¿Y eso qué tiene que ver? Pues muy fácil: si todo depende del criterio de un juez, y la mayoría de ellos son, como todos sabemos que son… he aquí una explicación del curioso respeto que ciertos hotentotes sienten por nuestros derechos constitucionales.&lt;br /&gt;&lt;br /&gt;Quizá se arreglaría con sentencias ejemplares, o a lo mejor se podría resolver incluyendo una asignatura de filosofía en los planes de estudio de las academias de policía. Imagino que alguien con una mínima capacidad para razonar, debería comprender que no es civilizado agredir a personas inocentes, que demás le pagan el sueldo, valiéndose para ello de las porras y el resto material que sus propias víctimas le han puesto en la mano, con la ilusa esperanza de que les brinde seguridad y protección.&lt;br /&gt;&lt;br /&gt;Volviendo a la Historia: basta darse un garbeo por las transiciones de verdad que se han llevado a cabo en países como Alemania, Sudáfrica, Argentina o Chile, para concluir que en España nos hemos saltado algunos pasos. Pasos, como el de obligar a la Empresa de Brujos Romanos a que se busque las habichuelas por si misma —y de paso, que se mantenga alejada de nuestra infancia—; pasos, como el de abundar en la separación de poderes… o incluso cosas más evidentes: como el hecho inexplicable, de ponerse a redactar una Constitución, omitiendo el detalle de que antes se debe abrir un Proceso Constituyente.&lt;br /&gt;&lt;br /&gt;A la vista de lo ocurrido en Malasaña, en la Gran Vía, en la comisaría de los Mossos d'Esquadra, en la Puerta del Sol, en la Glorieta de Bilbao, y en tantos y tantos otros lugares, cabe suponer que uno de los pasos que se quedaron en el tintero, fue el de una formar una Comisión de la Verdad, que se encargara de depurar los mayores crímenes (y a los mayores criminales) de los primeros 40 años del franquismo.&lt;br /&gt;&lt;br /&gt;Ojo, que nadie se asuste, no pretendo encarcelar a los hijos de la gran puta que se lo merecen, no, no es eso, no es eso… pero convendréis conmigo, que no estaría de más conocer el nombre de quienes apretaron el gatillo contra Grimau —aunque solo sea por respeto a su familia—, o mejor aún: identificar a aquellos que, simulando ejercer de jueces, ensuciaban el nombre de la Justicia, haciendo las veces de meros intérpretes de un sistema legal viciado desde su origen.&lt;br /&gt;&lt;br /&gt;No es eso, no es eso… no pretendo encarcelar a esos hijos de la gran puta… pero sí quisiera al menos saber quienes son, y apartarles para siempre de nuestras Instituciones Públicas. Lo mismo me da si están enchufados en los consejos de administración de empresas públicas malvendidas a los amigos, o si ensucian hoy algún escaño en el Senado. No me importa en cual de lo tres poderes vegetan... no les quiero entre rejas, les quiero en la puta calle.&lt;br /&gt;&lt;br /&gt;¿Por qué? Porque así como nadie come en el sitio donde defeca, no podemos esperar Democracia precisamente de aquellas personas en quienes reside la esencia de lo contrario.&lt;br /&gt;&lt;br /&gt;Tenemos un problema: una preocupante proporción de miembros de los cuerpos y fuerzas de seguridad del Estado está compuesta por delincuentes reincidentes. Cosa que además de provocar inseguridad en la ciudadanía, ensucia el buen nombre de sus instituciones y desprestigia a sus compañeros honrados. Iba a escribir 'delincuentes comunes' pero no, no es nada común delinquir amparado en una fuerza concebida para luchar contra el crimen. Es zafio, grotesco, vulgar, soez, vil… que un policía agreda a un inocente e indefenso ciudadano, es una falta de respeto a la civilización.&lt;br /&gt;&lt;br /&gt;Es tan natural, que todo padre o madre saben bien de lo que hablo: las criaturas tienden a hacer todo lo que se les permita. Con la policía ocurre exactamente lo mismo, y puesto que nuestro sistema judicial padece de vergüenza sistémica, anclado en el pasado… y escorado a la ultra-estribor… nuestros 'profesionales de las armas', como si de niños se tratara, hacen todo cuanto se les permite. Es decir, todo. &lt;br /&gt;&lt;br /&gt;Del mismo modo que para apagar un fuego se debe dirigir el extintor hacia la base de las llamas, para acabar con la impunidad, para concluir con esta burla al Estado de Derecho, es necesario introducir elementos de supervisión en la actuación del Poder Judicial y los cuerpos y fuerzas de seguridad del Estado. Esta supervisión no debe traducirse únicamente en aumentar el control político (jodiendo aún más la separación de poderes), no, no es eso, no es eso… lo que necesitamos es mayor transparencia, verificabilidad, luz, libertad de expresión, limitar —por ejemplo— los abusos en la práctica de declarar secretas aquellas actuaciones judiciales que producen vergüenza ajena.&lt;br /&gt;&lt;br /&gt;Necesitamos policías mejor formados en criterios humanistas, con verdadero espíritu de servicio a los demás. Necesitamos más y mejores instrumentos de control de la función pública; mayor transparencia y participación de la ciudadanía en la Administración de Justicia.&lt;br /&gt;&lt;br /&gt;La policía no merece tener en su seno a semejantes individuos. La judicatura no merece verse sometida a semejante descrédito intestino. La clase política no merece verse representada por individuos que ven obstáculos donde no debería haber más que propuestas ciudadanas a tratar con el debido respeto al juego democrático. La policía, la judicatura y la clase política deberían recuperar el Alto Honor que los ciudadanos esperamos de nuestras instituciones públicas.&lt;br /&gt;&lt;br /&gt;Que nadie se confunda, no pretendo meter a todos en el mismo saco, "generalizar es malo" ¿recuerdan? Sé muy bien que entre esos pocos seres deleznables, hay un buen número de buenos profesionales. Por eso mismo, por el respeto a esos policías, jueces y políticos honestos… por el mayor respeto que sin duda merece el común de la ciudadanía, ruego, por favor, hagan algo, porque estamos con la mierda al cuello.&lt;br /&gt;&lt;br /&gt;Necesitamos que alguien vigile al vigilante.&lt;br /&gt;&lt;br /&gt;De lo contrario, todo seguirá como en los últimos setenta años, habrá miedo, silencio, palizas, gritos, fábulas jurídicas, vergüenza ajena, temor, violencia, corporativismo, pruebas falsas, heridos, familias destrozadas… y ciudadanos que teman a sus gobernantes, en lugar de justo lo contrario.&lt;br /&gt;&lt;br /&gt;¡Salud y Justicia!&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 19-NOV-2007&lt;/strong&gt;: Parece que &lt;a href="http://meneame.net/story/no-pegueis-mas-aqui-hay-camaras"&gt;el problema persiste&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 09-DIC-2007&lt;/strong&gt;: &lt;a href="http://meneame.net/story/unas-conexiones-repiten-desde-hace-anos-militares-policias-aparecen-en"&gt;¡¡Qué mal huele todo!!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 14-ABR-2008&lt;/strong&gt;: &lt;a href="http://www.youtube.com/watch?v=naJbK4fAFgg"&gt;Otro video de brutalidad policial&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-3262865489418624789?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/3262865489418624789/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=3262865489418624789&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/3262865489418624789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/3262865489418624789'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2007/10/tenemos-un-problema_04.html' title='Tenemos un problema'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-7531165195766890758</id><published>2007-10-03T23:19:00.000+02:00</published><updated>2007-10-04T01:02:57.285+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Miscelanea'/><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>Microsoft publica (que no libera) el código fuente de la librería de clases de .NET</title><content type='html'>Según &lt;a href="http://tirania.org/blog/archive/2007/Oct-03.html"&gt;la nota en el blog de Miguel de Icaza&lt;/a&gt;, &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx"&gt;Microsoft  publica el código fuente de las librerías de clases de .NET&lt;/a&gt; bajo una licencia no libre, al más puro estilo de Sun cuando en el pasado publicó las fuentes de Java sin liberarlo del todo.&lt;br /&gt;&lt;br /&gt;Si alguien todavía pensaba que en esto de las plataformas de desarrollo no había competencia, no dejará de sorprenderle este hecho, cuya iniciativa seguramente esté basada en las ventajas que ofrece la competencia (Sun) a los desarrolladores con esta posibilidad.&lt;br /&gt;&lt;br /&gt;Gracias a .NET (y/o &lt;a href="http://www.mono-project.com/"&gt;Mono&lt;/a&gt;) se libera Java, y gracias a Java, se va liberando .NET. ¿Curioso no? ¿Llegará el día en el que Microsoft publique o libere las fuentes de Windows? :)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;P.D.: Para el que no le ha quedado del todo claro: no, no se puede incluir código de Microsoft en Mono. Incluso ocurre que cualquiera que haya mirado el código de MS &lt;a href="http://www.mono-project.com/Contributing#Special_Note"&gt;tiene prohibido&lt;/a&gt; ya por siempre ser colaborador del proyecto Mono. Esta cuestión la han tildado algunos &lt;a href="http://www.eweek.com/article2/0,1895,2191754,00.asp"&gt;tremendistamente&lt;/a&gt; como dando a entender que este movimiento es de Microsoft precisamente, para poner una trampa al software libre de .NET. Pero, me pregunto yo, por esa regla de tres, habría ocurrido lo mismo cuando Sun publicó el código fuente de Java, ¿no? Sin embargo, proliferaron sin problemas implementaciones alternativas de Java.&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-7531165195766890758?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/7531165195766890758/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=7531165195766890758&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/7531165195766890758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/7531165195766890758'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2007/10/microsoft-publica-que-no-libera-el.html' title='Microsoft publica (que no libera) el código fuente de la librería de clases de .NET'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-1863684867012109762</id><published>2007-09-19T02:58:00.000+02:00</published><updated>2007-10-24T12:00:31.713+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Politica'/><category scheme='http://www.blogger.com/atom/ns#' term='Miscelanea'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>PP: quién te ha visto y quién te ve</title><content type='html'>Soy un acérrimo detractor de toda bitácora que no haga más que simplemente citar otra noticia, sobre todo aquellos que lo que suelen hacer es poner únicamente un enlace en una entrada (¡como si no tuvieran carpeta Marcadores!); sin embargo: &lt;a href="http://www.internautas.org/html/4478.html"&gt;hoy no lo puedo evitar&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 21/SEP/2007&lt;/strong&gt;: &lt;a href="http://espana.barrapunto.com/es/07/09/19/1132234.shtml"&gt;Más medios se han hecho eco&lt;/a&gt; (básicamente haciendo un llamamiento en plan "no nos chupemos las pollas todavía...").&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 24/OCT/2007&lt;/strong&gt;: Bueno, en ciertos aspectos el partido avanza, pero &lt;a href="http://www.20minutos.es/noticia/294155/0/rajoy/cambio/climatico/"&gt;en otros no&lt;/a&gt;. Y &lt;a href="http://www.20minutos.es/noticia/295523/0/esperanza/aguirre/clima/"&gt;menudos pretextos&lt;/a&gt; sueltan luego...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-1863684867012109762?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/1863684867012109762/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=1863684867012109762&amp;isPopup=true' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/1863684867012109762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/1863684867012109762'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2007/09/pp-quin-te-ha-visto-y-quin-te-ve.html' title='PP: quién te ha visto y quién te ve'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-6428419921842339808</id><published>2007-08-11T22:22:00.003+02:00</published><updated>2010-01-19T19:42:45.994+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>Vala: ¿lo mejor de los dos mundos (C &amp; C#)?</title><content type='html'>Charlando con mi colega &lt;a href="http://jpalanco.nevega.com/wordpress/"&gt;José Ramón&lt;/a&gt;, me comentó algo sobre un proyecto que iba a ser considerado como el "asesino" de &lt;a href="http://www.mono-project.com/"&gt;Mono&lt;/a&gt;. La verdad, si algún proyecto iba a tener tamaña tarea, me pregunto cómo no escogieron un nombre más "vistoso".&lt;br /&gt;&lt;br /&gt;Y es que "&lt;a href="http://live.gnome.org/Vala"&gt;Vala&lt;/a&gt;" es un nuevo proyecto de &lt;a href="http://www.gnome.org/"&gt;Gnome&lt;/a&gt; que pretende coger lo mejor de los dos mundos entre un lenguaje nativo, sin orientación a objetos, con aritmética de punteros y rápido (C) y un lenguaje administrado, orientado a objetos, sin aritmética de punteros, y en el que la eficiencia suele considerarse como algo menor (por tener un JIT que lo compila al iniciar, y un runtime que lo gestiona, y lo monitoriza con un recolector de basura).&lt;br /&gt;&lt;br /&gt;¿Qué coge Vala de cada uno?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;De C#: También es orientado a objetos y tiene administración automática de la memoria (sin punteros, sin necesidad de destruir los objetos explícitamente).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;De C: No necesita runtime, ni recolector de basura.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Y cualquiera se preguntaría, ¿cómo es posible? Pues porque Vala tiene un compilador cuya salida no es código máquina ni código intermedio, sino código C, lo que es muy interesante.&lt;br /&gt;&lt;br /&gt;También es interesante la discusión que ha suscitado el tema en &lt;a href="http://www.osnews.com/"&gt;OSNews&lt;/a&gt;, de la que destaco &lt;a href="http://www4.osnews.com/comments/18411#comment_261635"&gt;este comentario&lt;/a&gt; por si no ha quedado del todo claro de lo que este proyecto es capaz.&lt;br /&gt;&lt;br /&gt;Y yo me pregunto lo siguiente:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;¿En qué se diferencia esto de la compilación &lt;a href="http://www.mono-project.com/AOT"&gt;AOT de Mono&lt;/a&gt;? (Aunque de todas formas, al parecer la compilación AOT no está completa porque no soporta genéricos. La gente de &lt;a href="http://www.sharpos.org/"&gt;SharpOS&lt;/a&gt; parece que tenían en mente terminar de pulir estas cosas.)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;¿Por qué no escogieron hacer un compilador de C# a C, en lugar de crear un lenguaje nuevo?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;¿Qué opina &lt;a href="http://tirania.org/blog/"&gt;Miguel de Icaza&lt;/a&gt; de todo esto? :)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Hay una cosa que no me gusta de Vala: al parecer es estáticamente tipado para tipos primitivos, pero es dinámicamente tipado para clases/objetos. ¿Volvemos al &lt;a href="http://mareksafar.blogspot.com/2007/06/c-30-implicitly-typed-local-variables.html#comment-4322192593632674447"&gt;Lazy Programming&lt;/a&gt;? :(&lt;br /&gt;&lt;br /&gt;Lo que yo haría si fuera Miguel de Icaza, es contratar a esta gente para que hicieran un compilador similar a Vala, pero para C#. Con eso podrían hacer que Gnome y otros detractores de lenguajes de alto nivel, usasen una API tan establecida y útil como la de Mono, además de ofrecer interoperabilidad con este lenguaje. O mejor aún, que hicieran un compilador que convirtiese IL a C. Y me repito ¿no es esto el AOT? (No digo que sea lo mismo que el AOT, sino que el AOT consigue lo mismo.)&lt;br /&gt;&lt;br /&gt;Aunque ahora que lo pienso, ¿por qué el AOT soporta tan pocas arquitecturas? Porque compila directamente a nativo, en lugar de a C. A lo mejor habría que reescribir el AOT de Mono con este nuevo &lt;em&gt;approach&lt;/em&gt; de manera que se reutilizara el tan estable y poderoso GCC.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualizacion 25-MAY-2008&lt;/strong&gt;: Antes de nada quería agradecer a los que han publicado comentarios en esta entrada, pues han sido muy reveladores.&lt;br /&gt;&lt;br /&gt;Y ahora queria rectificar algunas cosas que he dicho (y que sin embargo ningún comentario me había advertido):&lt;br /&gt;a) Ahora que he estado trabajando unos meses con gcc (para hacer ciertas cosas de bajo nivel en mi nuevo proyecto en Novell) voy a dejar de considerar "todo poderoso" al gcc porque le he encontrado bugs graves (de parseo y de análisis semántico).&lt;br /&gt;b) Resulta que Vala no es dinámicamente tipado, ¡es estáticamente tipado! Lo que ocurrió es que confundí su inferencia de tipos con la dinamicidad de tipos al ver un ejemplo de codigo. Pero gracias a &lt;a href="http://zee-nix.blogspot.com/2008/05/why-vala.html"&gt;esta entrada&lt;/a&gt; he salido de mi error (y &lt;a href="http://live.gnome.org/Vala/GTKSample"&gt;aquí un ejemplo de codigo&lt;/a&gt; que recibe un Gtk.TreeView como parámetro de un método).&lt;br /&gt;c) Con lo descubierto en el punto (b) me he quedado bastante entusiasmado con el proyecto. Aun asi, creo que sigue siendo interesante un runtime que gestione tu flujo de codigo, por lo que seguiré usando Mono en general. Sin embargo, para cualquier pieza de software que requiera permanecer en el nivel bajo (bien por rendimiento, o bien para ser "wrapeado" por otros lenguajes) consideraré seriamente empezar a usar Vala, y dejar de usar C de una vez por todas. De hecho opino que la industria debería empezar a reescribir todo lo que esta hecho en C a este lenguaje.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-6428419921842339808?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/6428419921842339808/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=6428419921842339808&amp;isPopup=true' title='6 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/6428419921842339808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/6428419921842339808'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2007/08/vala-lo-mejor-de-los-dos-mundos-c-c.html' title='Vala: ¿lo mejor de los dos mundos (C &amp; C#)?'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-131065790408853678</id><published>2007-08-07T09:58:00.015+02:00</published><updated>2008-11-26T19:08:16.699+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Miscelanea'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>N95: primeras decepciones</title><content type='html'>&lt;p&gt;Bueno, pues &lt;a href="http://knocte.blogspot.com/2007/01/una-de-gadgets.html"&gt;al final&lt;/a&gt; me lo he comprado, y la he &lt;strong&gt;cagado&lt;/strong&gt;. ¿Por qué?&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;El WiFi funciona fatal. De momento no me ha funcionado con ninguna red cifrada (ni WEP ni WPA), sólo redes no cifradas.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;El GPS requiere de conexión WiFi (esperemos que sólo para descargarse una versión local de los mapas de mi zona, a ver cuánto puede almacenar en la tarjeta de 4GB que me he comprado, espero que mucho más que la comunidad de Madrid).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;El navegador web va algo lento y no es capaz de visualizar PNG's.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Por lo demás bien, pero ya tengo una espinita clavada y no sé si llevarlo al servicio técnico a que me solucionen lo de las WLAN. He leído en foros, y al parecer este problema a Nokia se la suda. Bien pues tengo 2 años de garantía para decidir si me la suda a mí o no, no voy a pasarle esto a Nokia.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 21-ABR-2008&lt;/strong&gt;: He actualizado el software del móvil (vía Windows, puajj, a ver cuándo Nokia se digna a portar todo a Linux, ahora que han comprado Tolltrech) y hay novedades: el programa de GPS es mucho mejor porque ahora puede conectarse por wifi para bajarse los mapas (aunque el GPS en sí sigue yendo mal y lo voy a llevar a reparar). He conseguido entrar a alguna red wifi cifrada, pero no a todas. El navegador parece que ya muestra PNGs. Próximamente contaré cómo va la conexión a internet con tarifa plana permanente y sin límite que me voy a poner con el N95 gracias a Yoigo.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 6-MAY-2008&lt;/strong&gt;: Parece que no es que el GPS estuviera roto, es que hay que pagar una suscripción a Nokia, ¡¡qué hijos de puta!! ¿Y por qué en los GPS que compras en los coches no hay que hacerlo? Y lo más importante, ¿cómo son tan hijos de perra de esconder esto tan bien en las especificaciones? Incluso en la página de soporte de Nokia no viene claro hasta que llegas &lt;a href=""&gt;aquí&lt;/a&gt;, donde se puede ver &lt;a href="http://www.nokia.es/NOKIA_SPAIN_20/Services/Nokia_Maps/flash/maps_upgrade_to_navigation_tutorial.swf"&gt;este vídeo&lt;/a&gt;. Además no pone el precio, ¿se dignarán a pedirme el nº de tarjeta de crédito sin decirme lo que me van a cobrar? Bueno, al menos he hecho otra actualización de software y las redes wifi seguras ya funcionan (aunque poniendo la clave en Hexadecimal), aunque estoy tan decepcionado que estoy por vender este maldito móvil del demonio.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 6-MAY-2008&lt;/strong&gt;: La anterior actualización la había escrito guiado por unos auténticos incompetentes profesionales de PhoneHouse que me indicaron que el servicio de GPS era de pago. Lo que es de pago es el servicio de guiado por voz!!!!!!!!!!!!!!!$·%)/·)·$/%$)(·%?)·"!ª!!!!!!!! Ahora mismo relleno una hoja de reclamaciones para esta gente tan poco informada (del propio centro Nokia de soporte, es acojonante).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 1-JUN-2008&lt;/strong&gt;: Ya me han reparado el móvil, se supone, y el GPS parece que funciona más veces que antes, pero no tantas, y lo voy a volver a llevar. ¡Además ahora no funciona el botón de subir el volumen! En fin, en otro orden de cosas, he conseguido conectarme por 3G con él, con Linux (OpenSUSE) y la cojonuda tarifa de Yoigo de 1'20 € al día sin límite de descarga, y va muy bien, como una ADSL de hace unos años (en cuanto a que va un poco más despacio y es algo más inestable, el MSN a veces se cae... pero en fin, incluso YouTube funciona bien y rápido). Los detalles de mis divagaciones técnicas sobre esto están en los comentarios de &lt;a href="http://www.saghul.net/blog/2007/05/26/howto-utilizar-un-nokia-n70-yoigo-como-modem-en-gnulinux/"&gt;esta entrada&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 3-JUL-2008&lt;/strong&gt;: Voy a poner las instrucciones concretas para conseguir hacer funcionar todo este ecosistema (de keywords bluetooth opensuse11 Nokia N95 Yoigo 3G) en lugar de citar enlaces:&lt;br /&gt;&lt;br /&gt;Configurar el Bluetooth del teléfono para activarlo y ponerlo un nombre.&lt;br /&gt;En OpenSUSE ya viene algo en el system tray para gnome con el símbolo de bluetooth. Botón derecho en él: Browse Device.&lt;br /&gt;Saldrá el elemento con nuestro nombre: lo seleccionamos y damos a Connect.&lt;br /&gt;En el móvil saldrá un mensaje para que pongamos un número aleatorio de seguridad, lo ponemos (12345 por ejemplo).&lt;br /&gt;Luego en el portátil saldrá una pantalla para poner este número, lo ponemos (12345), ya están enlazados.&lt;br /&gt;Luego saldrá una pantalla de error con "Couldn't display obex://[...]/&lt;br /&gt;La dirección que aparece donde los puntos suspensivos es la de nuestro móvil &amp;lt;-- a partir de ahora (BDADDR)&lt;br /&gt;Instalamos el paquete kdebluetooth.&lt;br /&gt;Ejecutamos el siguiente comando:&lt;br /&gt;sdptool browse (BDADDR) | grep -iA 11 "^Service Name: Dial-up"&lt;br /&gt;Allí saldrá una línea con "Channel:" y apuntamos ese número &amp;lt;-- a partir de ahora [CHANNEL]&lt;br /&gt;(Hay que tener cuidado!!! Porque si reiniciamos el teléfono parece que el CHANNEL cambia.)&lt;br /&gt;Ahora necesitamos establecer un canal para nuestro teléfono, para hacerlo en esta sesión:&lt;br /&gt;sudo rfcomm bind rfcomm0 (BDADDR) (CHANNEL)&lt;br /&gt;Para hacerlo en subsiguientes, añadir el siguiente texto en el fichero &lt;br /&gt;rfcomm0 {&lt;br /&gt;        # Automatically bind the device at startup&lt;br /&gt;        bind yes;&lt;br /&gt;&lt;br /&gt;        # Bluetooth address of the device&lt;br /&gt;        device (BDADDR);&lt;br /&gt;&lt;br /&gt;        # RFCOMM channel for the connection&lt;br /&gt;        channel (CHANNEL);&lt;br /&gt;&lt;br /&gt;        # Description of the connection&lt;br /&gt;        comment "My N95";&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Ahora nuestro dispositivo es /dev/rfcomm0 &amp;lt;-- a partir de ahora  (DEVFILE).&lt;br /&gt;&lt;br /&gt;Ahora instalamos el paquete pppd (llamado smpppd en opensuse).&lt;br /&gt;&lt;br /&gt;Ahora editamos como root (con sudo) el fichero /etc/wvdial.conf y le metemos este contenido:&lt;br /&gt;&lt;br /&gt;[Dialer Defaults]&lt;br /&gt;Init1 = ATZ&lt;br /&gt;Init2 = ATQ0 V1 E1 S0=0 &amp;C1 &amp;D2 +FCLASS=0&lt;br /&gt;Init3 = AT+CGDCONT=1,"IP","internet"&lt;br /&gt;Modem Type = USB Modem&lt;br /&gt;Baud = 460800&lt;br /&gt;New PPPD = yes&lt;br /&gt;Modem = (DEVFILE)&lt;br /&gt;ISDN = 0&lt;br /&gt;Phone = *99***1#&lt;br /&gt;Username = "internet"&lt;br /&gt;Password = "internet"&lt;br /&gt;Stupid Mode = 1&lt;br /&gt;Ask Password = 0&lt;br /&gt;Dial Command = ATDT&lt;br /&gt;Compuserve = 0&lt;br /&gt;Force Address =&lt;br /&gt;Idle Seconds = 3000&lt;br /&gt;DialMessage1 =&lt;br /&gt;DialMessage2 =&lt;br /&gt;Auto DNS = 1&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ahora arrancamos pppd con:&lt;br /&gt;su&lt;br /&gt;service smpppd start&lt;br /&gt;&lt;br /&gt;Ahora desactivamos el networkManager (botón derecho -&amp;gt; desactivar Enable Wireless o el tipo de red que tengamos).&lt;br /&gt;&lt;br /&gt;y marcamos con el comando:&lt;br /&gt;&lt;br /&gt;sudo wvdial&lt;br /&gt;&lt;br /&gt;(Es posible que al hacer esto, salga algo en el móvil, si es así le damos a Aceptar en el móvil.)&lt;br /&gt;&lt;br /&gt;Y ya está, desactivamos la opción File-&amp;gt;Work offline de Firefox y a navegar.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 26-NOV-2008&lt;/strong&gt;: Ahora que vivo en EEUU, los parámetros del fichero de configuración wvdial han cambiado (operador: AT&amp;T):&lt;br /&gt;&lt;br /&gt;[Dialer Defaults]&lt;br /&gt;Modem = /dev/rfcomm0&lt;br /&gt;Baud = 921600&lt;br /&gt;Init1 = ATZ&lt;br /&gt;Init2 = ATQ0 V1 E1 S0=0 &amp;C1 &amp;D2 +FCLASS=0&lt;br /&gt;Init3 = AT+CGDCONT=1,"IP","WAP.CINGULAR"&lt;br /&gt;Phone = *99***1#&lt;br /&gt;Username = WAP@CINGULARGPRS.COM&lt;br /&gt;Password = CINGULAR1&lt;br /&gt;Stupid Mode = 1&lt;br /&gt;Auto DNS = 1&lt;br /&gt;&lt;br /&gt;Por cierto, mucho cuidadito con navegar más de 1 minuto sin contratar el plan "plano" de datos, porque a mí por hacer una mínima prueba se me ha chupado 12 dolares... ¡¡Hijos de puta!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-131065790408853678?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/131065790408853678/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=131065790408853678&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/131065790408853678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/131065790408853678'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2007/08/n95-primeras-decepciones.html' title='N95: primeras decepciones'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-517660464935572643</id><published>2007-07-12T16:37:00.004+02:00</published><updated>2008-03-02T19:49:46.573+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Politica'/><category scheme='http://www.blogger.com/atom/ns#' term='Miscelanea'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Quejándote mejoras el mundo</title><content type='html'>Creo que todos estamos de acuerdo en que sentados en nuestro sofá no vamos a mejorar nada en absoluto las cosas que nos preocupan.&lt;br /&gt;&lt;br /&gt;Por eso voy a dedicar esta mini-entrada a este tipo de gente que lo da todo por quejarse y quejarse y no parar de quejarse:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Michael Moore: &lt;a href="http://www.youtube.com/watch?v=JpKoN40K7mA"&gt;sistema sanitario americano&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Becarios ICEX: &lt;a href="http://www.20minutos.es/noticia/257983/0/icex/becarios/extranjero"&gt;precariedad laboral&lt;/a&gt;.&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Fuckowski: ¿España va bien? &lt;a href="http://www.despacho101.com/press/que-les-pasa-a-los-jovenes"&gt;Juventud en España&lt;/a&gt;, &lt;a href="http://www.despacho101.com/press/a-emilio"&gt;fuga de cerebros...&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Ingenieros de primera: &lt;a href="http://ingenierosdeprimera.com/?q=node/21"&gt;¿desaparición de la ingenierías en informática?&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Estos han sido los mejores ejemplos que he encontrado.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 17-FEB-2008&lt;/strong&gt;: Después de leer &lt;a href="http://lamiradadelmendigo.blogspot.com/2008/02/lo-que-vale-tu-voto.html"&gt;esto sobre la ley d'Hondt&lt;/a&gt; ("Lo que vale tu voto"), me gustaría quejarme también tal como hace el autor del artículo.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 02-MAR-2008&lt;/strong&gt;: Sustituida la actualización del 20-FEB-2008 de esta entrada por una nueva entrada: &lt;a href="http://knocte.blogspot.com/2008/03/la-falacia-del-voto-til.html"&gt;La falacia del voto útil&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-517660464935572643?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/517660464935572643/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=517660464935572643&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/517660464935572643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/517660464935572643'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2007/07/quejndote-mejoras-el-mundo.html' title='Quejándote mejoras el mundo'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-3670387447353997864</id><published>2007-07-02T19:37:00.001+02:00</published><updated>2007-07-09T09:31:13.575+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>Preventing NHibernate prostitution with NUnit</title><content type='html'>He decidido que más pronto o más tarde migraré el blog al idioma inglés. Pero poco a poco, jejeje, así que de momento sólo los títulos de las entradas.&lt;br /&gt;&lt;br /&gt;Hoy vamos a hablar de un test unitario que me he montado, que sirve para que los poco experimentados programadores no utilicen NHibernate mal. ¿Y cómo podrían usarlo mal? Pues saltándose a la torera las facilidades que presta NHibernate con respecto a la conversión del modelo relacional en modelo de objetos, lo que a la larga conlleva código inmantenible y estéticamente una mezcla de código que genera un grado espaghetti 8 sobre 10.&lt;br /&gt;&lt;br /&gt;¿Y cómo pueden saltárselo a la torera? Metiendo propiedades ID en el código (reflejando las foreign keys) cuando deberían ser referencias a otros objetos de NHibernate. Es decir:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;    [Serializable]&lt;br /&gt;    public class IrmAgent : IrmObject&lt;br /&gt;    {&lt;br /&gt;        private int iId;&lt;br /&gt;        private int? iIdGroup;&lt;br /&gt;        private string sContactPerson;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        /// &lt;summary&gt;&lt;br /&gt;        ///    Default constructor.&lt;br /&gt;        /// &lt;/summary&gt;&lt;br /&gt;        public IrmAgent()&lt;br /&gt;        {&lt;br /&gt;            this.Id = 0;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public override int Id&lt;br /&gt;        {&lt;br /&gt;            get { return this.iId; }&lt;br /&gt;            set { this.iId = value; }&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        public virtual int? IdGroup&lt;br /&gt;        {&lt;br /&gt;            get { return this.iIdGroup; }&lt;br /&gt;            set { this.iIdGroup = value; }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public virtual string ContactPerson&lt;br /&gt;        {&lt;br /&gt;            get { return this.sContactPerson; }&lt;br /&gt;            set { this.sContactPerson = value; }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;En lugar de usar la propiedad para el grupo como un objeto:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;    [Serializable]&lt;br /&gt;    public class IrmAgent : IrmObject&lt;br /&gt;    {&lt;br /&gt;        private int iId;&lt;br /&gt;        private IrmGroup oGroup;&lt;br /&gt;        private string sContactPerson;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        /// &lt;summary&gt;&lt;br /&gt;        ///    Default constructor.&lt;br /&gt;        /// &lt;/summary&gt;&lt;br /&gt;        public IrmAgent()&lt;br /&gt;        {&lt;br /&gt;            this.Id = 0;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public override int Id&lt;br /&gt;        {&lt;br /&gt;            get { return this.iId; }&lt;br /&gt;            set { this.iId = value; }&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        public virtual IrmGroup Group&lt;br /&gt;        {&lt;br /&gt;            get { return this.oGroup; }&lt;br /&gt;            set { this.oGroup = value; }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public virtual string ContactPerson&lt;br /&gt;        {&lt;br /&gt;            get { return this.sContactPerson; }&lt;br /&gt;            set { this.sContactPerson = value; }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Y pensaréis, ¿cómo puedo detectar la cagada del primer código? Pues si pudiera diseñar un algoritmo para ello seguramente habría inventado ya la IA, así que lo único que puedo hacer es un algoritmo que "huela" algo sospechoso.&lt;br /&gt;&lt;br /&gt;Y esta vez voy a usar &lt;a href="http://monoport.com/3524"&gt;MonoPasteBin&lt;/a&gt; porque sino el coloreado de código en el blog es muy feo :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-3670387447353997864?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/3670387447353997864/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=3670387447353997864&amp;isPopup=true' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/3670387447353997864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/3670387447353997864'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2007/07/preventing-nhibernate-prostitution-with.html' title='Preventing NHibernate prostitution with NUnit'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-8366885233886973945</id><published>2007-06-30T15:00:00.000+02:00</published><updated>2007-07-05T17:10:05.107+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>I hate code folding</title><content type='html'>Me ha sorprendido que al darle a buscar la frase "I hate code folding" en Google no obtuviera ningún resultado. ¿Realmente soy la única persona en el mundo que odia el &lt;em&gt;&lt;a href="http://en.wikipedia.org/wiki/Code_folding"&gt;Code Folding&lt;/a&gt;&lt;/em&gt;?&lt;br /&gt;&lt;br /&gt;Pues nada, a partir de ahora Google sí devolverá un resultado: el de esta entrada. La cual se va a convertir en un manifiesto en contra de las &lt;em&gt;regions&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;Realmente, ¿qué tiene de bueno poder agrupar una serie de bloques bajo un nombre determinado? Cuando abro un fichero con código, lo primero que quiero hacer es leer código, no tener que pinchar en un estúpido widget con un [+] para poder verlo. Menos mal que &lt;a href="http://www.monodevelop.org/"&gt;MonoDevelop&lt;/a&gt; aún no soporta esta funcionalidad (pero VStudio sí, ¡qué horror!) y mejor que no la soporte nunca.&lt;br /&gt;&lt;br /&gt;Mucha gente puede pensar a partir de mis comentarios que lo que tendría que pasar es que mi IDE favorito que implemente esta funcionalidad pudiera ser configurable para mostrar las regions de entrada abiertas en lugar de cerradas. Pero en ese caso, me reitero, ¿de qué sirven?&lt;br /&gt;&lt;br /&gt;Entendedme, no es que esté en desacuerdo en que la gente pueda coger y ocultar la implementación de un método, viendo sólo su prototipado, para así ver la clase de una forma más global y general (si lo hace así con el resto de los métodos), pero ¿las regiones que puede escribir el propio programador de que sirven? Sirven, de hecho, para provocarle malos hábitos. De siempre es sabido que cuanto menos código tenga una clase o un método, más intuitivo y mejor escrito y modular es un código, ¿y cuando son útiles las regions? ¡Cuando el código es completamente farragoso, largo y poco estructurado! (aka spaghetti code).&lt;br /&gt;&lt;br /&gt;¿Y poder ocultar la implentación de una clase entera? También lo veo inútil, porque yo tiendo a escribir una clase por fichero (aunque C# soporte varias, me gusta la rigidez de Java en ese sentido), cosa que parece más fácil de entender de cara a programadores que en el futuro tengan que entender tu código.&lt;br /&gt;&lt;br /&gt;Conclusión: el único "ocultamiento" de código que me gustaría, sería aquel que pudiera alternar entre (a) Ver el código tal cual, (b) Ver sólo los prototipos de tus métodos de tu clase.&lt;br /&gt;&lt;br /&gt;PD: Muchas gracias a todos los amigos y lectores de mi blog que me han animado a continuarlo. No es que hubiera querido dejar de escribir, sino que estos meses me ha resultado imposible sacar tiempo para escribir en él (a pesar de tener muchos artículos casi listos para publicar, pero aún en modo borrador), por cuestiones de intenso (aunque motivador) trabajo y de mudanza. De todos modos, sí he escrito alguna que otra actualización a entradas ya existentes, cosa que sólo se puede dar uno cuenta fácilmente si utiliza la suscripción RSS.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 05-JUL-2007&lt;/strong&gt;: Resulta que hoy he encontrado otro inconveniente en esto del Code Folding junto con un compañero de trabajo. ¡Un bug de VStudio al buscar texto con el editor de VB.NET! Si la region no estaba abierta, VStudio engañaba al usuario diciéndole que el texto no se podía encontrar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-8366885233886973945?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/8366885233886973945/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=8366885233886973945&amp;isPopup=true' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/8366885233886973945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/8366885233886973945'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2007/06/i-hate-code-folding.html' title='I hate code folding'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-1345260724421675611</id><published>2007-03-23T11:19:00.000+01:00</published><updated>2007-04-03T15:59:32.389+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>PriorityReaderWriterFifoLock</title><content type='html'>El nombre de esta entrada es el lock de mis sueños.&lt;br /&gt;&lt;br /&gt;Para quien no lo sepa, en .NET hay varias maneras de establecer regiones de exclusión mutua entre threads para que se bloqueen al acceder a ciertas zonas del flujo de código  para evitar condiciones de carrera.&lt;br /&gt;&lt;br /&gt;Últimamente en el curro tuve problemas con un bloque lock(){}, para acabar descubriendo que el sistema de espera de los threads bajo esa directiva &lt;a href="http://www.thescripts.com/forum/thread403528.html"&gt;no es FIFO&lt;/a&gt;, ni tampoco lo es &lt;a href="http://msdn2.microsoft.com/en-us/library/system.threading.semaphore.aspx"&gt;la API de Semaphore&lt;/a&gt;, lo que puede dar problemas en caso de que tengamos cantidades ingentes de threads esperando (inanición).&lt;br /&gt;&lt;br /&gt;Creo que lo he resuelto momentáneamente gracias al maravilloso &lt;a href="http://www.codeproject.com/cs/threads/prioritylock.asp"&gt;PriorityLock&lt;/a&gt;, aunque aún así me surgen dudas de si realmente es una pila FIFO para los threads con prioridad de acceso equivalente (lo he puesto como pregunta en su "foro").&lt;br /&gt;&lt;br /&gt;De aquí me viene la idea de PriorityReaderWriterFifoLock. Si algún día tengo tiempo, modificaré esta librería para, primero, asegurarme del tema del FIFO que ya he comentado y, segundo, añadir soporte de acceso n-lectores-OR-1-escritor a la vez que se respete el tema de las prioridades.&lt;br /&gt;&lt;br /&gt;PD: Aprovecho la entrada para dar la enhorabuena a &lt;a href="http://wizito.is-a-geek.net/blog/"&gt;Néstor [ Wizito ]&lt;/a&gt; por su pedazo de proyecto de &lt;a href="https://listas.hispalinux.es/pipermail/mono-hispano/2007-February/008003.html"&gt;framework de componentes basado en Mono (aka Babuine)&lt;/a&gt;. A ver cuándo puedo salir de este bache de tiempo-libre-cero y jugueteo un poco con ello ;)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 03-ABR-2007&lt;/strong&gt;: Acojonantemente útil &lt;a href="http://monotorrent.blogspot.com/2007/04/i-was-just-talking-to-guy-about-some-if.html"&gt;el método que propone Alan McGovern&lt;/a&gt; para utilizar los ReaderWriterLocks de manera que no tengamos la desventaja que se tenía frente al &lt;em&gt;lock&lt;/em&gt; de poder introducir &lt;em&gt;deadlocks&lt;/em&gt; debido a su distinta sintaxis de utilización.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-1345260724421675611?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/1345260724421675611/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=1345260724421675611&amp;isPopup=true' title='4 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/1345260724421675611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/1345260724421675611'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2007/03/priorityreaderwriterfifolock.html' title='PriorityReaderWriterFifoLock'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-8081697946299260464</id><published>2007-03-05T21:46:00.002+01:00</published><updated>2009-02-11T00:58:48.407+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Politica'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Vergüenza de políticos</title><content type='html'>A riesgo de generalizar (puesto que existen &lt;a href="http://ciberderechos.barrapunto.com/article.pl?sid=07/02/08/1643245&amp;amp;from=rss"&gt;honrosas excepciones&lt;/a&gt;), los políticos siempre me han parecido seres despreciables, que sólo se mueven por el interés personal y que viven únicamente para saciar su sed de poder.&lt;br /&gt;&lt;br /&gt;Pero es que todavía me repugnan más este tipo de personas después de ver estos dos vídeos:&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://video.google.com/videoplay?docid=-5339441096272983547&amp;amp;hl=es"&gt;El primero&lt;/a&gt;. Un ejemplo de lo respetuosos que pueden llegar a ser los integrantes del congreso con la palabra de un portavoz de un partido minoritario (no hace falta ver el vídeo entero, con ver el primer minuto se vislumbra toda su plenitud).&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://www.elmundo.es/especiales/2007/02/comunicacion/quintero_garcia/index.html"&gt;El segundo&lt;/a&gt;. La entrevista censurada de Jose María García, el cual me deja patidifuso si realmente todo lo que dice es verdad. Aquí se demuestra con toda crudeza la forma de vida de estos personajes, no sólo políticos, sino enchufados por los políticos, altos cargos y demás lindezas. Se mueven sólo por rencillas, egoísmos, y nunca por el bien general de la sociedad o la honradez. Una muestra absoluta del tipo de valores que suelen defender en realidad.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 09-DIC-2007&lt;/strong&gt;: Y &lt;a href="http://www.elmundo.es/elmundo/2007/11/10/videos/1194716971.html"&gt;vergüenza también&lt;/a&gt; de los que no deberían ser políticos (porque no han sido elegidos por ningún ciudadano). Al hilo de este tema, citaré un texto de Higinio Polo (licenciado en Geografía e Historia y Doctor en Historia contemporánea por la Universidad de Barcelona; ha publicado numerosos trabajos y ensayos sobre cuestiones políticas y culturales, y colabora habitualmente en diversos medios de comunicación):&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;br /&gt;&lt;strong&gt;La irremediable decadencia de la monarquía española&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;Ante los incidentes de la XVII cumbre iberoamericana, la complaciente prensa española se ha apresurado a centrar la responsabilidad por el enfrentamiento entre los representantes de España y Venezuela en las palabras del presidente venezolano, pasando de puntillas por el deslucido y zafio papel de Juan Carlos de Borbón. Todos los periódicos españoles de corte han cerrado filas para defender al monarca, llegando los editorialistas de El País a considerar que Juan Carlos de Borbón “estuvo en su papel”, aunque se traicionaban después al mostrar su preocupación por los continuos incidentes que protagoniza, mostrando su deseo de que “la figura del rey no debería estar por más tiempo en el primer plano político.”&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Sin embargo, pese a la insistencia de esa prensa cortesana, para España lo más relevante de la cumbre iberoamericano no han sido las acusaciones del presidente venezolano Chávez al expresidente español José María Aznar. Lo que debería hacer reflexionar a los ciudadanos son las duras acusaciones que hicieron los representantes de varios países a las empresas españolas y a determinados comportamientos de su diplomacia. Porque, por ejemplo, está demostrado que la embajada española en Caracas recibió, en 2002, instrucciones precisas del presidente Aznar para apoyar el golpe de Estado en Venezuela, en connivencia con Washington. Lo que debería preocupar en España son las palabras de Daniel Ortega, acusando a la diplomacia española de interferir en los procesos electorales de Nicaragua, y de colaborar con la derecha de ese país para evitar el triunfo electoral del Frente Sandinista. Como debería ser motivo de gran preocupación las denuncias realizadas contra Unión Fenosa, acusada de utilizar métodos gansteriles en América Latina. Y debería preocupar que el presidente Néstor Kirchner haya criticado con suma dureza el irresponsable proceder de las empresas españolas en Argentina. Porque lo relevante del enfrentamiento de Santiago de Chile es que muestra el progresivo distanciamiento entre una parte importante de América Latina y España, por la avidez y la rapiña de las empresas españolas. Pero sobre todo eso, la prensa española ha pasado hasta ahora de puntillas.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;La apresurada recopilación hecha en España, en varias cadenas de televisión, uniendo arbitrariamente algunas intervenciones de Chávez con la intención de presentarlo como un dirigente pendenciero, choca con la extrema amabilidad con que se ha tratado a otros presidentes,&lt;br /&gt;empezando con Bush y acabando con José María Aznar. Esa prensa española, que se rasga las vestiduras ante el calificativo de “fascista” lanzado por Chávez a Aznar, no respondió de igual forma cuando éste insultó a Chávez, como recordó en la cumbre chilena el vicepresidente cubano Carlos Lage. Aznar ha llamado a Chávez “nuevo dictador”, ha hablado de una supuesta “vuelta al nazismo”, ha denunciado el “enorme peligro para América Latina” que supone Venezuela, ha acusado al presidente venezolano de ser un defensor del “abuso, la tiranía y el empobrecimiento”, entre otras muchas expresiones semejantes. Aznar, además, apoyó un golpe de Estado para derribar a Chávez e instaurar una dictadura militar. Ante todo eso, ¿cómo espera la prensa española que califique el presidente venezolano a Aznar?&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Esa era la realidad en Santiago de Chile, y, ante ella, Juan Carlos de Borbón pretendió hacer callar a Chávez. ¿Por qué se sintió ofendido Juan Carlos de Borbón ante las críticas de Chávez a Aznar? ¿Cómo cree el monarca que debe calificarse a un expresidente que apoyó un golpe militar para destruir las instituciones democráticas venezolanas? ¿Por qué sintió como un ataque la descripción del vergonzoso comportamiento de las multinacionales españolas en América Latina, denunciadas no sólo por Chávez, sino también por Correa, el presidente de Ecuador; por el nicaragüense Ortega y el boliviano Morales, e incluso por un presidente tan moderado como el&lt;br /&gt;argentino Kirchner?&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Porque lo más relevante de la escena de Santiago de Chile no fue el lenguaje más o menos diplomático de los participantes en la reunión, lo trascendente no fue la pasión o los calificativos utilizados, aunque retumben ahora en unas reuniones que con frecuencia se han desarrollado bajo montañas de palabras llenas de retórica vacía, y entre los parabienes, besamanos y lisonjas a los que tan aficionado es Juan Carlos de Borbón, acostumbrado a que, en España, todos le rían las gracias. Lo relevante es la distancia, que se ensancha, entre una América Latina que, con justicia, quiere salir de la pobreza y unas empresas que, como hizo el monarca, se comportan con maneras de matón de taberna.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;¿Porque, quién se ha creído que es Juan Carlos de Borbón para actuar como lo hizo? ¿Acaso cree que tiene autoridad sobre los presidentes y los pueblos de América Latina? ¿Tal vez se ha creído su propia leyenda, inventada por los servicios de la incalificable Casa Real, que sigue insistiendo en el gran prestigio de Juan Carlos de Borbón? Para empezar, el monarca español era el único jefe de Estado presente en la cumbre chilena que no ha sido elegido por su pueblo. El propio Rodríguez Zapatero, que insistía en la defensa de Aznar con el argumento de que había sido elegido democráticamente en su día, se traicionaba, puesto que tenía a su lado a Juan Carlos de&lt;br /&gt;Borbón, de quien no recordó lo mismo.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;El gesto airado de Juan Carlos de Borbón intentando hacer callar al presidente venezolano, usurpando las funciones de quien presidía la sesión, hablando fuera de tono, y auséntandose después de la sala con manifiesta mala educación y falta de cintura diplomática, en el momento preciso en que se criticaba la actuación de las multinacionales españolas, muestra la verdadera condición de este monarca, no en vano forma parte de esos círculos empresariales que le han financiado caprichos vergonzosos. Acostumbrado a que le rían las gracias, las bromas chocarreras, los comentarios insulsos, ese “excelente profesional”, como le definen sus aduladores, se ha revelado como un individuo sin modales, que se siente molesto cuando se denuncian las prácticas corruptas de las empresas españolas en América.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;La incompetencia y grosería mostrada por Juan Carlos de Borbón, cuyo rostro tras el incidente delataba su incomodidad, la inocultable vergüenza, es la enésima muestra de que España no puede soportar por más tiempo a un jefe de Estado semejante, que los españoles merecen tener una república entre otras, abandonando ya la pesada herencia del franquismo, impuesta a los ciudadanos hace ya treinta años. Porque esa actitud suya no es nueva. ¿No se recuerda acaso el gesto del monarca levantando el índice en un desagradable gesto chulesco ante la protesta de ciudadanos en el País Vasco? ¿No se recuerdan sus groserías previas al desfile de octubre? Ése es el monarca español, complaciente con la gran empresa, envuelto en turbios negocios que le aseguran rentas millonarias, despreocupado con los problemas reales de los españoles, un hombre que dedica casi todo su tiempo a sus relajos privados, impasible ante la corrupción que gangrena a España. Juan Carlos de Borbón, tan complaciente con Bush o con los reyes de Arabia o de Marruecos, es incapaz de decirle al presidente norteamericano la más mínima palabra contraria a la infame agresión contra Iraq que ha causado centenares de miles de muertos, pero pierde, sin embargo, los papeles ante una fundada acusación contra un expresidente español.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;La deplorable y patética escena representada por el monarca, perdiendo los estribos, es una prueba más de que España no debe continuar soportando una monarquía antidemocrática e inútil, aunque los ciudadanos del país no deben sentirse avergonzados, porque Juan Carlos de Borbón no los representa. Quienes han hecho de la adulación al monarca español un apostolado y un negocio, pontificando sobre el “benéfico papel” que Juan Carlos de Borbón tiene como representante de España, pueden comprobar ahora que ese monarca apenas sirve para otra cosa que para intercambiar bromas irrelevantes en reuniones y para mantener a toda su familia a costa del presupuesto público, y que, además, se comporta como un bocazas de taberna. Los tiempos están cambiando, porque, aunque lo lamente el editorialista de El País, cuando están empezando a quebrarse todos los muros construidos para sostener la gran mentira de una monarquía impuesta, estamos asistiendo también a la irremediable decadencia de Juan Carlos de Borbón y al anuncio de la III República española.&lt;/p&gt;&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Higinio Polo es licenciado en Geografía e Historia y Doctor en Historia contemporánea por la Universidad de Barcelona. Ha publicado numerosos trabajos y ensayos sobre cuestiones políticas y culturales, y colabora habitualmente en medios como la revista El Viejo Topo, el periódico Mundo Obrero y Rebelión.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 10-FEB-2008&lt;/strong&gt;: Genial chiste sobre políticos: &lt;a href="http://historiasdelahistoria.com/2009/02/09/la-pregunta-del-millon/"&gt;La pregunta del millón&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-8081697946299260464?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/8081697946299260464/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=8081697946299260464&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/8081697946299260464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/8081697946299260464'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2007/03/verguenza-de-politicos.html' title='Vergüenza de políticos'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-1056327164671075252</id><published>2007-01-17T22:52:00.000+01:00</published><updated>2007-01-31T11:21:20.850+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><title type='text'>Microsoft miente acerca de sus estándares</title><content type='html'>Al parecer Microsoft quiere seguir el camino del formato &lt;a href="http://es.wikipedia.org/wiki/OpenDocument"&gt;OpenDocument&lt;/a&gt;, el cual se ha convertido en el primer estándar abierto &lt;a href="http://es.wikipedia.org/wiki/Organizaci%C3%B3n_Internacional_para_la_Estandarizaci%C3%B3n"&gt;ISO &lt;/a&gt;que define la especificación formal para un documento de texto elaborado por un programa ofimático. Este contenido se guarda en un subformato XML comprimido, y, como no podía ser menos, Microsoft acude raudo y veloz a nombrar a su estándar "OpenXML", como queriendo dar a entender a la gente poco informada de que su estándar será el único que sea XML y sea abierto. ¿Dónde está especificado en el nombre que es un estándar para documentos ofimáticos? Con ese nombre podría servir para cualquier cosa.&lt;br /&gt;&lt;br /&gt;Pero en fin, eso no es lo grave del asunto. El problema es que, para empezar, en sus programas ofimáticos no dan soporte de OpenDocument. En realidad, no podemos quejarnos de eso, ellos harán lo que quieran con sus programas, aunque en este caso parece una maniobra de boicot para abrir más puertas a su &lt;em&gt;venidero estándar&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;Para continuar, quieren que su estándar OpenXML (ya bendecido por el comité &lt;a href="http://es.wikipedia.org/wiki/ECMA"&gt;ECMA&lt;/a&gt;) se convierta también un estándar abierto ISO, al igual que ha ocurrido con OpenDocument. Pero hay una diferencia enorme entre los dos casos, pues en el caso de OpenXML, estamos ante un estándar que ni siquiera se le puede calificiar como tal, pues, &lt;a href="http://www.robweir.com/blog/2006/01/how-to-hire-guillaume-portes.html"&gt;como ya ha denunciado un desarrollador&lt;/a&gt; (que debe estar trabajando para lograr la interoperabilidad de OpenXML en OpenOffice.org), hay partes del documento que no son públicas en absoluto. Es decir, que no es un estándar abierto.&lt;br /&gt;&lt;br /&gt;Algunos ejemplos para demostrar estas afirmaciones, extraídos del enlace ya facilitado al blog del desarrollador, son las partes del estándar en las que se obliga a la aplicación que lo implemente a imitar el comportamiento de aplicaciones antiguas de Microsoft. Esto obliga a que los desarrolladores tengan que utilizar técnicas de ingeniería inversa para "desvelar" estas partes ocultas del estándar y poder implementarlas; algo que, a todas luces, no es el procedimiento normal por el cual se pretende publicar un estándar para que un tercero pueda implementarlo.&lt;br /&gt;&lt;br /&gt;Los casos que más me han llamado la atención han sido los que se alude a una versión de Word para Macintosh de hace 14 años, y otro incluso en el que se pide emular el comportamiento de la aplicación WordPerfect (que no es ni siquiera de Microsoft) de hace 16 años.&lt;br /&gt;&lt;br /&gt;EstandaresAbiertos.com &lt;a href="http://www.estandaresabiertos.com//index.php?option=com_content&amp;task=view&amp;id=65&amp;Itemid=2"&gt;también se ha hecho eco&lt;/a&gt; de este despropósito. Y en su informe revelan algunas razones más por las que creen que el estándar de Microsoft no debería llegar a convertirse en ISO. Citaré las que considero más importantes (el resto quizás son bastante discutibles, todo hay que decirlo; al menos, como argumentos en contra de su publicación como estándar, ya que quizás sí son argumentos buenos a la hora de elegir entre un estándar y otro), algunas de ellas por aludir al caso que ya he explicado de ocultación de información:&lt;br /&gt;&lt;br /&gt;1. &lt;span style="text-decoration: line-through;"&gt;Más de 7000 páginas de especificación hacen muy inviables implementaciones alternativas completas e imposibilitan poder ser 100% compatibles con la especificación (y más cuando ISO 26300 cubre la misma funcionalidad con solo 600 páginas).&lt;/span&gt; &lt;strong&gt;[Actualización (1): argumento tachado, a consecuencia de los buenos argumentos de Miguel de Icaza en &lt;a href="http://tirania.org/blog/archive/2007/Jan-30.html"&gt;su entrada sobre el tema&lt;/a&gt;.]&lt;/strong&gt; Por otra parte y además, la especificación publicada ni siquiera es completa, ya que en múltiples puntos referencia a información que no es pública y que es conocida solamente por Microsoft.&lt;br /&gt;(...)&lt;br /&gt;4. No existe garantía legal de no infracción de patentes y el dueño del formato en su licencia no ofrece garantía alguna de que la especificación ECMA-376 se pueda implementar al completo en ninguna aplicación competidora sin ser demandado en los mercados donde son legales.&lt;br /&gt;5. El formato, al no ser 100% XML, ata a plataformas concretas de un único fabricante mediante el uso de excepciones y codificaciones binarias exclusivas de sus sistemas operativos.&lt;br /&gt;6. ECMA-376 no ha sido depurado en el proceso de estandarización y codifica expresamente y en detalle errores obvios conocidos y no corregidos que obligan a que las aplicaciones competidoras los tengan que implementar innecesaria y artificiosamente.&lt;br /&gt;7. Codificación críptica propia de un volcado de memoria que es difícimente inteligible para un humano y que prácticamente imposibilita la conversión de los documentos a formatos web como XHTML.&lt;br /&gt;(...)&lt;br /&gt;10. Y, finalmente, en cuanto al procedimiento de estandarización seguido, el objetivo oficial declarado por el Comité Técnico de estandarización de ECMA habla por sí mismo sobre la nula apertura a la competencia que ha seguido dicho proceso. Textualmente tal objetivo ha sido: "producir un estándar (...) que sea completamente compatible con los Formatos Office Open XML, remitidos por Microsoft".&lt;br /&gt;&lt;br /&gt;¿Se dará cuenta la gente de la desvergüenza de esta compañía? O casi más importante, ¿se darán cuenta los gobiernos de las tácticas monopolísticas ilegales que lleva a cabo?&lt;br /&gt;&lt;br /&gt;En fin, yo lo único que sé a ciencia cierta de todo esto es que la organización ISO perdería, al menos por mi parte, ese "prestigio" subjetivo que les adjudicaba hasta ahora. Y eso me hará dudar también de ahora en adelante de sus estándares ya aprobados hasta el momento.&lt;br /&gt;&lt;br /&gt;Pobres ingenieros de Novell... Cualquiera querría formar parte del equipo que le vaya a tocar implementar esta especificación endemoniada...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 31-ENE-2007&lt;/strong&gt;: Miguel de Icaza publica &lt;a href="http://tirania.org/blog/archive/2007/Jan-30.html"&gt;una entrada sobre este tema&lt;/a&gt; en la que se posiciona desde un punto de vista bastante imparcial, pues critica a Microsoft pero también critica algunos puntos del estándar ODF que cometen los mismos errores.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-1056327164671075252?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/1056327164671075252/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=1056327164671075252&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/1056327164671075252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/1056327164671075252'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2007/01/microsoft-miente-acerca-de-sus.html' title='Microsoft miente acerca de sus estándares'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-5595135580186988710</id><published>2007-01-14T16:40:00.001+01:00</published><updated>2008-04-21T12:40:39.964+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Miscelanea'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>Una de gadgets</title><content type='html'>Los primeros gadgets que puedo decir que tuve fueron mis primeros móviles Nokia (si se le pueden llamar gadgets). Empecé con un &lt;a href="http://2.bp.blogspot.com/_z_GNcrzxywM/Rapjz_X-2yI/AAAAAAAAAAY/efnnp7MQ8pE/s1600-h/Nokia_6110.jpg"&gt;6110&lt;/a&gt;, después un &lt;a href="http://3.bp.blogspot.com/_z_GNcrzxywM/RapkoPX-2zI/AAAAAAAAAAk/V9M57wW4KTg/s1600-h/Nokia_6210.jpg"&gt;6210&lt;/a&gt; (del cual fui poseedor de dos unidades, pues la primera me la robaron), &lt;a href="http://4.bp.blogspot.com/_z_GNcrzxywM/Rapk1fX-20I/AAAAAAAAAAs/Pbkpz-QvMUM/s1600-h/Nokia_6310.jpg"&gt;6310&lt;/a&gt; (éste no lo compré, me lo dieron como recambio a mi último 6210 que tenía infinitos problemas de cobertura; ¡un olé para Nokia!) y ahora tengo un &lt;a href="http://2.bp.blogspot.com/_z_GNcrzxywM/RaplL_X-21I/AAAAAAAAAA0/U5ZRQaXzKRc/s1600-h/Nokia_7210.jpg"&gt;7210&lt;/a&gt; (el cual adquirí básicamente por su tamaño y por tener radio integrada). Los Nokia siempre me han parecido mucho más bonitos e intuitivos de manejar.&lt;br /&gt;&lt;br /&gt;Otros gadgets que empecé a comprarme fueron los auto-radios para coche con posibilidad de lectura de CD's con MP3. Mi &lt;a href="http://p090.ezboard.com/fhighwaymp3frm2.showMessage?topicID=45.topic"&gt;primera adquisición fue la Kenwood MP6090R&lt;/a&gt; (&lt;a href="http://1.bp.blogspot.com/_z_GNcrzxywM/RaplqvX-22I/AAAAAAAAABI/iDU7fBotwws/s1600-h/kenwood_kdc-mp6090r.jpg"&gt;imagen&lt;/a&gt;), ¡la primera Kenwood con lectura MP3! Y fue una buena compra; recuerdo que aproveché un viajecito a Barcelona para comprármela en una de las tiendas del puerto de esta ciudad, pues allí la tenían mucho más barata que en cualquier otro sitio. Después de esa radio ahora tengo un modelo sucesor (aunque ya se ha quedado algo antiguo también, unos 3 añitos): la &lt;a href="http://1.bp.blogspot.com/_z_GNcrzxywM/RapmAvX-23I/AAAAAAAAABQ/fPZL5tFJ8hE/s1600-h/kenwood+psw9521.jpg"&gt;KDC-PSW9521&lt;/a&gt;. No me he comprado más modelos sucesores por dos razones:&lt;br /&gt;&lt;br /&gt;1) No veía novedades enormes como para cambiar. &lt;br /&gt;2) No tenía a nadie que le interesase tener mi modelo antiguo, y claro, jeje, no me gusta tirar las cosas a la basura.&lt;br /&gt;&lt;br /&gt;Con respecto a la primera razón, lo que ocurre es que yo me muevo por cambios de "paradigma" (¡como en la programación!). Si me dicen que un nuevo modelo de Kenwood ahora es capaz de leer MP3 en soporte DVD+RW (además de CD-RW como el que ya tengo) pues es posible que me hubiera cambiado. Porque aunque en un CD ahora quepan 180 canciones en lugar de 18, sigues teniendo que cambiar de CD continuamente y es un coñazo. Estuve pensando en comprarme un cargador de 10 CDs con MP3, pero en 10 discos tampoco me cabe mi colección entera de música así que al final habría estado teniendo que meter mano al cargador en más de una ocasión (además no he encontrado cargadores de DVD-MP3).&lt;br /&gt;&lt;br /&gt;Así que lo he hecho: &lt;a href="http://barrapunto.com/comments.pl?sid=63298&amp;cid=749624"&gt;he cambiado de paradigma&lt;/a&gt;, pero sin tirar mi radio a la basura. ¿Cómo? Comprando un iPod de 60GB, en el que me cabe toda mi música de sobra, y el cual puedo conectar a la radio del coche mediante un cable llamado &lt;a href="http://www.kenwood.com/i/kca-ip500/"&gt;KCA-iP500&lt;/a&gt;. Además así me deshago de una vez de los discos ópticos, que siempre me dan problemas porque se rallan (su vida útil es pequeñísima) y además tienen &lt;a href="http://www.todoscontraelcanon.es"&gt;canon&lt;/a&gt; (el de los &lt;a href="http://www.sgae.es/"&gt;ladrones&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Siempre había pensado, tal como opinaba también &lt;a href="http://www.thecaptainflint.com/"&gt;mi amigo Paco&lt;/a&gt; en una conversación que tuvimos un día, que este tipo de cosas (música MP3 y móviles) convergerían en una. Y con lo del iPod lo ví todavía más claro: el cacharro es lo más parecido a un móvil, pero claro, ponte a buscar tú ahora un móvil con 60GB de almacenamiento...&lt;br /&gt;&lt;br /&gt;Además, últimamente los teléfonos móviles (concretamente los que sacaba Nokia, ya que yo soy un obcecado de la vida) no me daban apenas cosas que me interesarán mucho más de las que ya tiene mi querido 7210 (que ya debe tener unos dos o tres años) así que no me he comprado ningún otro. Estuve tentado de comprarme un &lt;a href="http://www.nokia.es/link?cid=EDITORIAL_11611"&gt;6230i&lt;/a&gt;, lo que podía llamarse la siguiente generación al mío pero con cámara y con mejoras a sus predecesores 7250, 7250i y 6230, pero la cámara seguía dejando mucho que desear con respecto a las cámaras digitales normales y el resto de cosas no me aportaban mucho para la pasta que costaba (interesante el tema de poder grabar conversaciones... pero por sólo eso no merecía la pena).&lt;br /&gt;Hasta que de repente Nokia ha sacado sus "NSeries", los cuales son unos teléfonos bastante vistosos (aunque un poco grandes) y con muuuchas funcionalidades. Estudiando bien sus especificaciones técnicas pude comprobar que las cosas que más me llamaban la atención eran sus cámaras ahora nada despreciables (por tener óptica Carl Zeiss, zoom óptico y flash) y el soporte WiFi (bueno, parece una frikada acceder a internet a través del móvil, pero básicamente lo que más me gusta de esto es poder interconectar móvil y ordenador sin usar tecnologías guarras como infrarrojos o bluetooth). Y claro, si quería tener ambas cosas, por lo que pude averiguar, mi única opción era el &lt;a href="http://www.nokia.es/link?cid=PLAIN_TEXT_79586"&gt;Nokia N93&lt;/a&gt; (el más caro de la gama por el momento), y estuve a punto de comprarlo pero al final tenía clavada la espinita de siempre: que le faltaban cosas. Entre ellas el GPS y una capacidad de memoria (¿disco duro?) con la que pudiera codearse con el iPod (como ya he comentado más arriba). Lo primero lo veía más alcanzable a corto plazo pues incluso ya existía un accesorio de GPS bluetooth que podría interactuar con este y otros modelos de Nokia, y así utilizarlo de manera factible con un software como el de &lt;a href="http://www.66.com/route66/homepage.php?cid=ES"&gt;Route66&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Pero ahora resulta que estas dos funcionalidades que yo consideraba "espinitas" se han propuesto enterrarlas por completo, pues en el primer trimestre de este año aparece el &lt;a href="http://xataka.com/2006/09/26-nokia-n95"&gt;Nokia N95&lt;/a&gt;, el cual no es más que un Nokia N93 mejorado y ¡con GPS integrado! Y además Apple también se une a la fiesta anunciando el iPhone, del cual no me he podido empapar mucho aún de sus características, pero bien podría decirse que es un Nokia N95 pero con un disco duro algo decente (creo que 10GB) para de esta manera intentar igualarse un poquito más al iPod.&lt;br /&gt;&lt;br /&gt;Aquí un vídeo impresionante sobre el tipo de cosas que es capaz de hacer el iPhone (a destacar su interfaz táctil, su detección de rotación, su interfaz para la búsqueda de álbumes musicales...):&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/YgW7or1TuFk"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/YgW7or1TuFk" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/v/YgW7or1TuFk"&gt;Enlace al vídeo por si no lo ves embebido.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;En fin, como al parecer al iPhone le queda aún un año por llegar a España y sigue teniendo una capacidad algo baja con respecto a mi iPod (el cual estoy pensando si sustituir por uno de 80 GB o esperarme al de 100, jeje), tengo decidido que me voy a comprar un Nokia N95, sobre todo por la cámara, que digo yo que ya me merezco una.&lt;br /&gt;&lt;br /&gt;Así que para terminar la entrada, otro vídeo, pero del Nokia N95:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/FelL8DhrCAw"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/FelL8DhrCAw" type="application/x-shockwave-flash" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/v/FelL8DhrCAw"&gt;Enlace al vídeo por si no lo ves embebido.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;PD: Ya se me olvidaba incluir otro &lt;em&gt;gadget&lt;/em&gt; que me ha dejado con la boca abierta: &lt;a href="http://www.engadget.com/2006/09/21/pioneers-mt-01-power-line-sound-system/"&gt;unos altavoces que adquieren su fuente de sonido a través de la red eléctrica&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;PD II: Como recordatorio para mí mismo, voy a dejar aquí unos enlaces que tengo que mirar, relativos a la interoperabilidad de los móviles Nokia usando Linux: &lt;a href="http://www.tuxmobil.org/"&gt;Linux+Gadgets&lt;/a&gt;, &lt;a href="http://tuxmobil.org/phones_linux_nokia_other.html"&gt;Linux+Nokia&lt;/a&gt;. (Para interactuar con el iPod ya tenemos &lt;a href="http://www.banshee-project.org/"&gt;Banshee&lt;/a&gt; ;) Y aquí &lt;a href="http://www.tecnogadgets.com/index.php/2006/12/30/seleccion-10-moviles-con-linux/"&gt;más&lt;/a&gt; &lt;a href="http://www.desktoplinux.com/news/NS8653450421.html"&gt;enlaces&lt;/a&gt; sobre gadgets que usan el propio Linux como &lt;em&gt;core&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 14-ENE-2007&lt;/strong&gt;: Se me había olvidado comentar que me parece patético que Nokia no converja sus NSeries con sus PDA's modelos 770 y 800. Lo bueno que tienen éstas es que corren sobre Maemo, un sistema operativo que parece que está rompiendo moldes en la comunidad &lt;em&gt;open source&lt;/em&gt; (pues se le puede instalar &lt;a href="http://www.mono-project.com/"&gt;Mono&lt;/a&gt;). Lo malo que tienen es que no son móviles, así que es un aparatejo más que llevar en el bolsillo... (Es una pena que el Nokia N95 lleve Symbian en lugar de Maemo.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 04-ABR-2007&lt;/strong&gt;: La espera es larga pero parece que merecerá la pena. &lt;a href="http://nseriesarena.vox.com/library/post/20070124-nokia-n95-gps-navigation-maps-in-action.html"&gt;Aquí&lt;/a&gt; hay alguien ya bastante contento con el GPS de su Nokia N95, del cual ha capturado un vídeo de muestra en funcionamiento con el coche:&lt;br /&gt;&lt;br /&gt;&lt;object width="322" height="279"&gt;&lt;param name="wmode" value="transparent" /&gt;&lt;param name="movie" value="http://aka-static.vox.com/.shared:v25.3:vox:de_de/flash/VideoPlayer.swf" /&gt;&lt;param name="flashvars" value="mediaURL=http://a0.vox.com/6a00d09e4fb90ebe2b00d4141988e86a47-flv&amp;amp;imageURL=http://a0.vox.com/6a00d09e4fb90ebe2b00d4141988e86a47-jpeg&amp;amp;mediaWidth=320&amp;amp;mediaHeight=261" /&gt;&lt;embed type="application/x-shockwave-flash" wmode="transparent" width="322" height="279" src="http://aka-static.vox.com/.shared:v25.3:vox:de_de/flash/VideoPlayer.swf" flashvars="mediaURL=http://a0.vox.com/6a00d09e4fb90ebe2b00d4141988e86a47-flv&amp;amp;imageURL=http://a0.vox.com/6a00d09e4fb90ebe2b00d4141988e86a47-jpeg&amp;amp;mediaWidth=320&amp;amp;mediaHeight=261"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Y aquí:&lt;a href="http://www.expansys.es/p.aspx?i=141581"&gt;1&lt;/a&gt;,&lt;a href="http://www.telecomlibre.net/nokia-espa%C3%B1a-p-655.html"&gt;2&lt;/a&gt;,&lt;a href="http://www.telecomlibre.net/nokia-espa%C3%B1ol-importado-p-1065.html"&gt;3&lt;/a&gt; por fin sitios donde se puede comprar...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 18-ABR-2007&lt;/strong&gt;: Vaya, parece que los gadgets con Linux van adquiriendo protagonismo. &lt;a href="http://research.operationaldynamics.com/blogs/andrew/software/openmoko/doing-open-the-right-way.html"&gt;Aquí se hace un resumen&lt;/a&gt; bastante bueno sobre uno. Y &lt;a href="http://www.nukeador.com/28/01/2007/convertir-los-archivos-de-tu-movil/"&gt;aquí Nukeador nos habla de una útil herramienta (para Linux) de conversión de formatos para móviles&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 22-ABR-2007&lt;/strong&gt;: &lt;a href="http://www.error500.net/nokia-n95-voip-vodafone"&gt;¡Cuidadín con las operadoras que capan el Nokia N95!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 17-JUL-2007&lt;/strong&gt;: Voy a tener que replantearme lo del iPhone después de ver &lt;a href="http://gonzalo.name/blog/archive/Personal/2007/Jul-17.html"&gt;esto&lt;/a&gt; (libreria .NET para acceder al sistema de ficheros del iPhone).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 17-ABR-2007&lt;/strong&gt;: Estoy descubriendo herramientas interesantes para gestionar tu móvil desde Linux, como Wammu o KMobileTools, ambas instalables via &lt;a href="http://software.opensuse.org/search"&gt;1click&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-5595135580186988710?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/5595135580186988710/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=5595135580186988710&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/5595135580186988710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/5595135580186988710'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2007/01/una-de-gadgets.html' title='Una de gadgets'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-2179001712694881699</id><published>2007-01-10T21:31:00.000+01:00</published><updated>2007-11-10T17:57:52.203+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>OpenSUSE 10.2: Im-presionante</title><content type='html'>Poco más puedo decir de esta nueva versión de &lt;a href="http://www.opensuse.org/"&gt;OpenSUSE&lt;/a&gt;, la cual me han enviado la gente de Novell por correo ordinario como agradecimiento a haberla testeado (la selección de agraciados fue extraída de una simple query a su &lt;a href="http://bugzilla.novell.com/"&gt;bugzilla&lt;/a&gt;), &lt;strong&gt;todo un detallazo&lt;/strong&gt;. Es la primera vez en la que realmente me siento comodísimo trabajando con Linux. A destacar los siguientes puntos:&lt;br /&gt;&lt;br /&gt;- Da gusto la restauración de la sesión de Firefox 2.0.&lt;br /&gt;- Han mejorado bastante las transparencias del terminal de Gnome (ver captura).&lt;br /&gt;- No sé qué tiene la tipografía predeterminada, que me parece súper agradable a la vista. Nada que ver con la de las anteriores versiones o la de otras distros (ver captura).&lt;br /&gt;- No sé cómo lo han conseguido, pero tengo XGL (aka Efectos3D) funcionando con mi tarjeta gráfica cutrilla del portátil (la cual pensaba que no tendría apenas aceleración 3D, vale que va un pelín lento pero funciona), y además sin necesidad de escribir un sólo comando en la consola para activarlo.&lt;br /&gt;- Banshee de serie con el motor de Helix para que pueda reproducir MP3 sin necesidad de códecs o repositorios non-free externos (aunque claro, he tardado dos milésimas de segundo en instalarme mis paquetitos de GStreamer para trastear un poco).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_z_GNcrzxywM/RaVXuPX-2xI/AAAAAAAAAAM/W9PkbsNCius/s1600-h/Pantallazo.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_z_GNcrzxywM/RaVXuPX-2xI/AAAAAAAAAAM/W9PkbsNCius/s400/Pantallazo.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5018513811687004946" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Cosas menos destacables:&lt;br /&gt;- Han cambiado el menú predeterminado de Gnome y me está costando un poco hacerme al nuevo.&lt;br /&gt;- El selector de zonas de escritorio parece más "transparente" y no se distinguen bien las zonas que no están en uso.&lt;br /&gt;- Extraño que la configuración predeterminada para cuando se acaba la batería del portátil sea APAGAR en lugar de HIBERNAR, porque puede provocar pérdida de datos. Ya lo he configurado bien en el mío.&lt;br /&gt;- La traducción de la distro aún deja un poco que desear. Si siempre me he quejado de que esté en &lt;em&gt;Spanglish&lt;/em&gt;, al menos ahora está algo menos (diría que han pasado de un 60-40 a un 80-20, donde el primer porcentaje es el español). [Ya sabemos que no lo hacen adrede, pero lo de dejarse cadenas sin traducir debería ser un punto más importante en la fase de QA.]&lt;br /&gt;- Curioso que a pesar de haber desinstalado Beagle (lo sé, es un software muy interesante y seguro que está muy bien hecho, sobre todo porque está hecho en Mono ;) pero yo no lo uso y además creo que provoca que la gente sea aún más desordenada con sus datos de lo que ya lo era antes), insiste en quedarse un icono de un perrito muy majo en la esquina inferior derecha de mi Firefox.&lt;br /&gt;- Ha mejorado muchísimo la gestión de instalación/desinstalación/actualización de software, tanto por YAST (en el que ya no tenemos más congelaciones extrañas de la interfaz) como por ZMD.&lt;br /&gt;&lt;br /&gt;Notas adicionales:&lt;br /&gt;- &lt;a href="http://www.jprl.com/Blog/archive/development/2006/Dec-30.html"&gt;Aquí un buen &lt;em&gt;how-to&lt;/em&gt;&lt;/a&gt; para configurar aspectos relativos a lado "servidor" de la distro, pero sin bajar a nivel bajo (a lo sumo tendremos que lanzar un par de comandos por consola, nada de editar ficheros de configuración ni ninguna de esas cosas de las que huyen los windowseros o sysadmin vaguetes ;). [YAST powered]&lt;br /&gt;- Sensacional &lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=221466"&gt;el plugin del NetworkManager, para el cual he encontrado un repositorio del BuildService de OpenSUSE&lt;/a&gt;, que me permite conectarme a puntos &lt;a href="http://en.wikipedia.org/wiki/VPN"&gt;VPN&lt;/a&gt; de tipo PPTP (sí, esos administrados por un servidor Windows, que suponen un agujero de seguridad acojonante pues no están a la última como otras piezas de software más serias del estilo de &lt;a href="http://en.wikipedia.org/wiki/OpenVPN"&gt;OpenVPN&lt;/a&gt;, pero bueno...).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 14-ENE-2007&lt;/strong&gt;: Adjunto un vídeo muy chulo de Novell como promoción de SUSE Linux:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/kIKI2piZsWg"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/kIKI2piZsWg" type="application/x-shockwave-flash" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/v/kIKI2piZsWg"&gt;Enlace al vídeo por si no lo ves embebido.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 14-FEB-2007:&lt;/strong&gt; Muy interesante &lt;a href="http://wadeberrier.blogspot.com/2007/02/switch-user-in-opensuse-102.html"&gt;el consejo&lt;/a&gt; de &lt;a href=""&gt;Wade Berrier&lt;/a&gt; (el encargado, dentro del equipo del &lt;a href="http://www.mono-project.com/"&gt;Proyecto Mono&lt;/a&gt;, de la empaquetación de versiones y demás) acerca de cómo activar la alternación de sesión gráfica en caliente, sin cerrar la actual, de OpenSUSE; la cual se consigue a través de un botón del salva-pantallas, después de aplicar este comando:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;gconftool-2 --set --type bool /apps/gnome-screensaver/user_switch_enabled true&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;A ver si lo ponen pronto configurable mediante interfaz gráfica bonita...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 10-NOV-2007&lt;/strong&gt;: Bueno, ya he actualizado casi todos mis sistemas a la reciente salida del horno OpenSUSE 10.3 y ha mejorado muchísimo. Aquí una lista de cosas:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Arranca mucho más rápido.&lt;/li&gt;&lt;li&gt;No ocurre como antes que, tras varias hibernaciones, la memoria y el rendimiento del PC se quedaban muy bajos y tenía que efectuar un reinicio del sistema&lt;/li&gt;&lt;li&gt;En la hibernación, ahora hay pantallas de gráficos en lugar de mensajes crípticos en la consola :)&lt;/li&gt;&lt;li&gt;La aparencia general es mejor, los tipos de letras elegidos son más vistosos.&lt;/li&gt;&lt;li&gt;Los efectos de escritorio son mucho más suaves y carentes de errores en esta versión. Seguramente gracias a la fusión Compiz+Beryl y a que habrán mejorado el driver de mi tarjeta...&lt;/ul&gt;&lt;br /&gt;Esta vez he estado muy ocupado con el trabajo y no he podido reportar nada ni ayudar a la comunidad, por lo que no me ha &lt;a href="http://news.opensuse.org/?p=493"&gt;tocado ninguna caja&lt;/a&gt; esta vez :(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-2179001712694881699?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/2179001712694881699/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=2179001712694881699&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/2179001712694881699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/2179001712694881699'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2007/01/opensuse-102-im-presionante.html' title='OpenSUSE 10.2: Im-presionante'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_z_GNcrzxywM/RaVXuPX-2xI/AAAAAAAAAAM/W9PkbsNCius/s72-c/Pantallazo.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-1572907360847195687</id><published>2007-01-06T15:35:00.001+01:00</published><updated>2009-05-02T22:08:06.936+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>Batalla contra las autotools</title><content type='html'>Si toda la vida has sido un programador en Windows y ahora estás cambiándote a Linux, es muy probable que te encuentres en la situación de que tienes que lidiar con unas herramientas de construcción y compilado de aplicaciones comunmente denominadas &lt;a href="http://en.wikipedia.org/wiki/Autotools"&gt;"AutoTools"&lt;/a&gt;, las cuales son un conjunto de scripts comunmente utilizados en el mundo GNU, como automake, autoconf, sistemas de macros M4, etc. para generar Makefiles.&lt;br /&gt;&lt;br /&gt;Bueno, yo no es que haya sido "toda la vida" un programador de Windows, sino que en mis pocos años de mi experiencia como programador, los iniciales han sido como &lt;strong&gt;usuario&lt;/strong&gt; de Windows, pero con herramientas de programación poco asociadas a entornos Windows, como Modula2, Hope, Java, C, C++ (los programadores de Windows más curtidos son sin embargo muy expertos en Visual C++, librerías STL, MFC's, etc.).&lt;br /&gt;&lt;br /&gt;La cuestión es que, incluso aunque soy un acérrimo usuario de la plataforma .NET para desarrollar, como me gusta &lt;a href="http://www.mono-project.com/"&gt;Mono&lt;/a&gt; tiendo a falimiarizarme con Linux y las autotools son unas de esas herramientas, algo antiguas, que incluso se siguen utilizando en desarrollos más modernos hechos con Mono. Un par de notorios ejemplos pueden ser &lt;a href="http://www.banshee-project.org/"&gt;Banshee&lt;/a&gt; y &lt;a href="http://www.monodevelop.com/"&gt;MonoDevelop&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Estas herramientas quizás fueran útiles en el pasado, sobre todo porque no había alternativas. Pero hoy día parecen un parásito feo y horrible que no se acaba de desligar del mundo GNU, a pesar de que hay buenas alternativas ya.&lt;br /&gt;&lt;br /&gt;Los inconvenientes que le veo:&lt;br /&gt;- La curva de aprendizaje es exageradamente pronunciada.&lt;br /&gt;- No tienen una forma común de gramática/sintaxis para cada una de las sub-herramientas.&lt;br /&gt;- No son multiplataforma, pues para su ejecución en entornos Windows se requiere de &lt;a href="http://en.wikipedia.org/wiki/Cygwin"&gt;Cygwin&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;También puede ocurrir que tampoco tengamos excesivo interés en lidiar con ellas, y de hecho te puedes convertir perfectamente en un colaborador de proyectos libres sin problemas sin tener mucha idea de cómo funcionan. El problema es cuando ves que hay metas u objetivos que ves que en el mundo del software libre no se cumplen por culpa del uso de ellas.&lt;br /&gt;&lt;br /&gt;El primero de los problemas que ví en este sentido es en la funcionalidad que se tiene en la &lt;a href="http://www.monodevelop.com/Development_Roadmap"&gt;Hoja de Ruta de MonoDevelop&lt;/a&gt; consistente en conseguir que MonoDevelop sea capaz de compilarse a sí mismo (&lt;em&gt;"Make MD self hosting"&lt;/em&gt;), algo que, a todas luces, parece importantísimo en mi opinión, pues es una buena muestra de lo que el propio IDE es capaz de hacer. También me pareció muy extraño, en las ocasiones en las que empezaba a conocer este programa, que esta funcionalidad no fuera una de las iniciales del proyecto que se hubieran alcanzado en su principio; aunque al parecer esto no fue así porque la primera versión de MonoDevelop fue un &lt;em&gt;port&lt;/em&gt; de SharpDevelop (migración de SystemWindowsForms a GTK#, y de Windows a Linux).&lt;br /&gt;&lt;br /&gt;¿Y por qué no puede MonoDevelop compilarse a sí mismo? Pues porque para compilarlo hay que usar las Autotools, y éstas solo pueden invocarse desde la línea de comandos (algo que un IDE precisamente pretende evitar). Existe sin embargo un complemento para MonoDevelop denominado "Autotools Addin" que sirve para la integración de Mono con estas herramientas. Al parecer es éste complemento el que daría la llave para conseguir esta funcionalidad, y de hecho ya la da en algunos casos. Pero al parecer el uso que se hace de las Autotools para la propia compilación de MonoDevelop es tan complejo que la integración de este complemento aún no la soporta (requiere de más trabajo como ya comenta &lt;a href="http://foodformonkeys.blogspot.com/"&gt;Lluis Sánchez&lt;/a&gt; en &lt;a href="http://permalink.gmane.org/gmane.comp.gnome.mono.monodevelop.general/3722"&gt;un mensaje&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;La primera vez en la que intenté involucrarme para investigar cómo mejorar esta cuestión (pues sería bastante más cómodo colaborar en MonoDevelop si directamente pudiesemos comprobar que nuestros cambios compilan desde el propio MonoDevelop) acabé escribiendo unas divagaciones en un &lt;a href="http://permalink.gmane.org/gmane.comp.gnome.mono.monodevelop.general/2542"&gt;mensaje&lt;/a&gt; que al final acabó sin respuesta (no sé si por la somera estupidez que estaba diciendo...), que voy a citar aquí:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;I see. I have been investigating about all these *.in files in MD and&lt;br /&gt;particularly about this one (GettextCatalog.cs.in) and I see that the&lt;br /&gt;only thing that must be generated by the config script file is a&lt;br /&gt;parameter that is a part of a path. Couldn't this parameter be guessed&lt;br /&gt;in execution time instead of pregenerating a source file? I think this&lt;br /&gt;thing is preventing the more intuitive use of an IDE when using this&lt;br /&gt;files because we break the C# syntax completely when adding parameters&lt;br /&gt;like these. I guess that the last consequence of this&lt;br /&gt;is indeed the inability of MD to compile itself (unless the "autotools"&lt;br /&gt;add-in is developed, am I right?), which BTW is a feature requested in&lt;br /&gt;the TODO list of MonoDevelop.&lt;br /&gt;&lt;br /&gt;I suppose that all these questions arise to me basically because of my&lt;br /&gt;lack of experience with developing mainly in UNIX/Linux environments,&lt;br /&gt;where I am noticing there is a lot of script culture, use of&lt;br /&gt;command-line tools (make, automake, ...), etc., which I have almost&lt;br /&gt;never used.&lt;br /&gt;&lt;br /&gt;Perhaps someone of you could point me to a good tutorial about this&lt;br /&gt;stuff and then I won't bug this list with my dumb questions anymore :)&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;El tutorial &lt;a href="http://www-src.lip6.fr/homepages/Alexandre.Duret-Lutz/autotools.html"&gt;lo he encontrado ya&lt;/a&gt; y estoy dando buena cuenta de él. Aunque es bastante engorroso empollarse algo que crees que no tiene futuro, en este caso lo hago porque para luchar contra tu enemigo tienes que conocerlo. Y además ello me permitirá investigar más a fondo ciertos bugs que he encontrado en algunos programas hechos con Mono que impiden usar el idioma predeterminado del sistema cuando se lanzan con make run (instalándolos con make install ya todo se resuelve), algo que también debe influir en la detección del iPod de Banshee porque ocurre &lt;a href="http://mail.gnome.org/archives/banshee-list/2007-January/msg00021.html"&gt;algo parecido&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Al menos no soy el único que se pregunta si se podría pasar a otro sistema, como ya lo dicen &lt;a href="http://lists.ximian.com/pipermail/monodevelop-list/2005-March/001790.html"&gt;aquí&lt;/a&gt; sugiriendo &lt;a href="http://en.wikipedia.org/wiki/NAnt"&gt;NAnt&lt;/a&gt;. En otros hilos de la lista de Mono se ha sugerido el uso general de &lt;a href="http://sourceforge.net/projects/dnpb/"&gt;.NET PreBuild&lt;/a&gt; el cual puede generar archivos de proyecto de NAnt, Visual Studio, MonoDevelop y SharpDevelop.&lt;br /&gt;&lt;br /&gt;También es cierto que los chicos de KDE me inspiraron bastante sobre este tema cuando ellos &lt;a href=""&gt;migraron todo su sistema de Autotools a CMake&lt;/a&gt; (para su rama inestable) por las mismas razones. Algo que ya &lt;a href="http://planet.gnome.org/"&gt;los chicos de Gnome&lt;/a&gt; se están &lt;a href="http://hughsient.livejournal.com/11366.html"&gt;planteando&lt;/a&gt;, pero con &lt;a href="http://joeshaw.org/2007/01/05/449"&gt;ciertas&lt;/a&gt; &lt;a href="http://mail.gnome.org/archives/desktop-devel-list/2006-October/msg00120.html"&gt;reticencias&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;En la primera (y última, de momento) GUADEC en la que estuve, asistí a una charla sobre las Autotools; quizás fue muy técnica y no me dejó ver la idea global, aunque sí me permitió conocer detalles escabrosos de ellas, como por ejemplo la necesidad de poner comentarios que empiezan por "dpl" (me recuerda al odioso REM de los archivos de proceso por lotes de DOS) al final de las líneas, para que no falle por si acaso hemos insertado un espacio accidentalmente antes del retorno de carro. Y es que yo insisto: ¿no es más fácil tener un programa que examine un conjunto de datos sobre configuración/compilación/empaquetado (por ejemplo mediante archivos XML) para que genere todo en lugar de que el programador tenga que escribir scripts a estas alturas? Aún tengo que aprender mucho sobre &lt;a href="http://www.mono-project.com/Guidelines:Application_Deployment"&gt;esto&lt;/a&gt;, pero buscando por ahí parece que no soy el único tipo cabreado con esta situación, ya que he encontrado otra alternativa más, el proyecto &lt;a href="http://pmk.sourceforge.net/"&gt;PMK&lt;/a&gt;, que precisamente lo que aboga es por esta separación conceptual.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 02-MAY-2009&lt;/strong&gt;: Orgulloso de ver esta conversación en #monodev:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(11:39:56 AM) vargaz: miguel: it might be better to use cmake to build the class libs.&lt;br /&gt;(11:40:21 AM) miguel: vargaz, this is for the VS crowd&lt;br /&gt;(11:40:29 AM) miguel: Download mono, hit F5, get a full Mono&lt;br /&gt;(11:40:30 AM) vargaz: a makefile generator.&lt;br /&gt;(11:40:38 AM) vargaz: kde uses it to build itself.&lt;br /&gt;(11:40:39 AM) miguel: Yeah, but I need solutions for this&lt;br /&gt;(11:41:00 AM) vargaz: it can generate vsproj files, unit makefiles etc.&lt;br /&gt;(11:41:04 AM) miguel: Ah, cute!&lt;br /&gt;(11:41:24 AM) miguel: Well, if someone wants to replace the current buidl system, I have no problem with that&lt;br /&gt;(11:41:33 AM) miguel: Lemme read on cmake&lt;br /&gt;(11:41:43 AM) miguel: But this is basically layered on our system: it uses our system to produce the vsproj files&lt;br /&gt;(11:44:11 AM) tgiphil: ^ :)&lt;br /&gt;(11:44:17 AM) miguel: My only problem with cmake is that it involves:&lt;br /&gt;(11:44:32 AM) miguel: (a) replacing our system with cmake;   (b) using cmake to generate vsproj&lt;br /&gt;(11:44:44 AM) miguel: And I am not really looking forward to do that, not with my copious spare time&lt;br /&gt;(11:45:02 AM) kangaroo: we clearly need to invent a 36-hour day&lt;br /&gt;(11:49:52 AM) robert|j: you guys just have to communicate your ideas and goals properly. the last info I've read on the mailing list on this issue was that jchamber is already working on it.&lt;br /&gt;(11:50:27 AM) miguel: Yes, I have been in contact with chambers&lt;br /&gt;(11:50:40 AM) miguel: But he has been busy with the Windows debugger, so I coordinated this work with him&lt;br /&gt;(11:50:45 AM) miguel: (In this channel btw :-)&lt;br /&gt;(11:56:49 AM) tgiphil: miguel -&gt; will the vsproj files be included in svn; or will we have to run make to get them generated?&lt;br /&gt;(11:58:51 AM) miguel: You need to generate them&lt;br /&gt;(11:59:09 AM) miguel: Since a full bootstrap is going to have some 200 .csproj files&lt;br /&gt;(11:59:31 AM) miguel: I think I want to create a "full" solution for bootstrap purposes, and a "hacking" solution that only includes 2.0&lt;br /&gt;(12:00:13 PM) tgiphil: by "full" you mean, you won't need make tool chain after those files were generated (including the .sln)?&lt;br /&gt;(12:00:18 PM) arnec [~arnec@cpe-66-75-235-18.san.res.rr.com] entered the room.&lt;br /&gt;(12:00:46 PM) kangaroo: HFS+, why do you have to be the SLOWEST FILESYSTEM IN EXISTENC&lt;br /&gt;(12:00:47 PM) robert|j: tgiphil: you'll need to click on a .bat file.&lt;br /&gt;(12:01:08 PM) miguel: Full is a copy of the autoconf/automake process, from beginning to end&lt;br /&gt;(12:01:11 PM) miguel: That will take a long time&lt;br /&gt;(12:01:16 PM) miguel: For hacking, that is not really useful&lt;br /&gt;(12:01:33 PM) miguel: well, actually,I do not know&lt;br /&gt;(12:01:34 PM) miguel: Perhaps it is&lt;br /&gt;(12:01:36 PM) miguel: We will see&lt;br /&gt;(12:02:01 PM) tgiphil: it would be nice not to require cygwin and just build within windows.&lt;br /&gt;(12:03:29 PM) miguel: That is what the solutions do&lt;br /&gt;(12:03:34 PM) miguel: There is no dep on cygwin&lt;br /&gt;(12:04:01 PM) miguel: There are no deps other than Visual Studio, mcs and mono source code checkouts&lt;br /&gt;(12:04:12 PM) tgiphil: awesome... especially for our project.&lt;br /&gt;(12:07:00 PM) vargaz: miguel: I'm working on cmake build files btw.&lt;br /&gt;(12:07:13 PM) vargaz: its a slow process as our configure.in has like 2000 lines.&lt;br /&gt;(12:07:51 PM) eno [~eno@EM114-48-3-242.pool.e-mobile.ne.jp] entered the room.&lt;br /&gt;(12:09:26 PM) miguel: Mhm, so maybe I should drop this&lt;br /&gt;(12:09:38 PM) miguel: No point in doing this work twice&lt;br /&gt;(12:10:07 PM) vargaz: no need to stop, it will be a while before it is finished. and its only for the runtime.&lt;br /&gt;(12:10:41 PM) vargaz: cause of sick of auto*.&lt;br /&gt;(12:10:45 PM) tgiphil: miguel -&gt; how do I kick off creating the .csproj files?&lt;br /&gt;(12:10:50 PM) vargaz: cause I'm sick of auto*.&lt;br /&gt;(12:11:00 PM) miguel: Yeah, sick here too&lt;br /&gt;(12:11:06 PM) kangaroo: +1&lt;br /&gt;(12:11:13 PM) miguel: That is why my small C# projects use plain make&lt;br /&gt;(12:11:45 PM) miguel: When we did gnome-config (the precursor to pkg-config) the goal was to not depend on auto* or use ac macros&lt;br /&gt;(12:12:00 PM) miguel: And somehow people managed to fuck it up by replacing code like:&lt;br /&gt;(12:12:27 PM) miguel: if `pkg-config --modversion 1.2 foo`; then echo ok else echo install-foo-1.2; fi&lt;br /&gt;(12:12:27 PM) miguel: with&lt;br /&gt;(12:12:38 PM) miguel: PKG_CONFIG_CHECK_BLAH(foo, [1.2])&lt;br /&gt;(12:13:04 PM) miguel: Which just increases frustration, specially on OSX or every time automake/autoconf are upgraded&lt;br /&gt;(12:13:37 PM) miguel: Every time I remove that junk, someone goes and plus the automake macro back in&lt;br /&gt;(12:13:44 PM) miguel: autoconf&lt;br /&gt;(12:13:50 PM) miguel: s/plus/plugs/&lt;br /&gt;(12:13:56 PM) kangaroo: We need to shoot m4 in the head&lt;br /&gt;(12:14:02 PM) kangaroo: and anything that uses it&lt;br /&gt;(12:14:13 PM) vargaz: maybe add a comment '# DONT PUT AUTOCONF MACROS HERE!!!!'&lt;br /&gt;(12:14:56 PM) miguel: I should do that&lt;br /&gt;(12:15:01 PM) miguel: The most annoying one was Moonlight&lt;br /&gt;(12:15:07 PM) miguel: Got a few hours to spare, wanted to do some OSX porting&lt;br /&gt;(12:15:14 PM) miguel: The time went straight into fixing autoconf crap&lt;br /&gt;(12:15:40 PM) kangaroo: hrmm? moonlights autoconf is basically find for osx&lt;br /&gt;(12:15:46 PM) kangaroo: s/find/fine/&lt;br /&gt;(12:16:18 PM) miguel: mono$ cat * | grep -c PKG_CHECK&lt;br /&gt;(12:16:18 PM) miguel: 21&lt;br /&gt;(12:16:26 PM) miguel: Not with a clean system&lt;br /&gt;(12:16:36 PM) miguel: Once you have a working setup, it is smooth sailing&lt;br /&gt;(12:16:43 PM) miguel: But it keeps making our builds harder than they should be&lt;br /&gt;(12:17:09 PM) miguel: I'll clean that junk later&lt;br /&gt;(12:17:40 PM) kangaroo: miguel: /usr/X11/share/aclocal/pkg.m4&lt;br /&gt;(12:17:46 PM) kangaroo: you just need to tell OSX's aclocal to look there&lt;br /&gt;(12:17:48 PM) kangaroo: they ship the m4&lt;br /&gt;(12:17:50 PM) kangaroo: (in 10.5)&lt;br /&gt;(12:17:59 PM) kangaroo: OSX's aclocal is just braindead&lt;br /&gt;(12:18:00 PM) miguel: Dude, I know&lt;br /&gt;(12:18:05 PM) miguel: I managed to get it working&lt;br /&gt;(12:18:10 PM) kangaroo: nod&lt;br /&gt;(12:18:21 PM) kangaroo: I should write down my steps to unfuck osx for mono development for everyone&lt;br /&gt;(12:18:32 PM) miguel: Building our shit should not involve setting up ACLOCAL_PATHS just because someone can not be bothered to read:&lt;br /&gt;(12:18:38 PM) miguel: if `pkg-config --modversion FOO`; then fi&lt;br /&gt;(12:19:04 PM) miguel: This is readable, vs PKG_CHECK (a,b,c,d,e,f)&lt;br /&gt;(12:19:07 PM) kangaroo: well.. that wont work out of the box on osx either :)&lt;br /&gt;(12:19:09 PM) miguel: Which you have to lookup anyways&lt;br /&gt;(12:19:12 PM) kangaroo: cause they dont ship pkg-config&lt;br /&gt;(12:19:16 PM) kangaroo: but I know what you mean&lt;br /&gt;(12:19:28 PM) kangaroo: I never understood that of apple&lt;br /&gt;(12:19:34 PM) kangaroo: they ship the .m4 and .pc files, but not pkg-config?&lt;br /&gt;(12:19:45 PM) miguel: We do ship it with Mono&lt;br /&gt;(12:19:57 PM) kangaroo: nod&lt;br /&gt;(12:20:16 PM) kangaroo: I generally end up installing auto* from macports anyways&lt;br /&gt;(12:20:17 PM) miguel: The problem at the core is that aclocal was a poor tool&lt;br /&gt;(12:20:25 PM) miguel: It can not cope with the same file being referenced twice&lt;br /&gt;(12:20:27 PM) kangaroo: since stuff like gtk# and other things in our repo require a newer auto*&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-1572907360847195687?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/1572907360847195687/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=1572907360847195687&amp;isPopup=true' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/1572907360847195687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/1572907360847195687'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2007/01/batalla-contra-las-autotools.html' title='Batalla contra las autotools'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-1983529281263742127</id><published>2006-12-23T00:14:00.001+01:00</published><updated>2008-04-14T19:17:40.784+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Politica'/><category scheme='http://www.blogger.com/atom/ns#' term='Ingenieria'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Esos pelacables telemáticos</title><content type='html'>La expresión "pelacables" la aprendí en mi facultad para designar despectivamente a nuestros compañeros ingenieros de telecomunicación. Desde entonces uso el término a menudo para referirme a ellos, pero siempre desde el sentido del humor, claro está.&lt;br /&gt;&lt;br /&gt;Pero aunque me suelen caer bien, el colectivo de los colegios oficiales de ingenieros de telecomunicación parece que se están llevando el gato al agua en sus maniobras de &lt;strong&gt;robo de competencias&lt;/strong&gt; en cuanto a atribuciones oficiales a nivel estatal se refiere.&lt;br /&gt;&lt;br /&gt;Reproduzco &lt;a href="http://www.ingenierosdeprimera.com/node/132#comment-576"&gt;un comentario&lt;/a&gt; de la página &lt;a href="http://www.ingenierosdeprimera.com/"&gt;IngenierosDePrimera.com&lt;/a&gt;:&lt;br /&gt;&lt;em&gt;&lt;br /&gt;Estimados colegas:&lt;br /&gt;&lt;br /&gt;Soy un Ingenierio Técnico en Informática de Sistemas español. Eso en mi país quiere decir bastante poco. Tanto, que tengo que estar en otro donde me pagan decentemente, no sientiéndome como un inmundo paria, intentando aprender el idioma para quedarme, pues, y lo repito una vez más, la Informática (y demás aspectos) en mi país es vomitiva.&lt;br /&gt;&lt;br /&gt;Como estoy un poco harto con los últimos acontecimientos y me sobra esta tarde, voy a contaros un cuento, breve pero intenso, sobre mi país y su desarrollo, o mejor dicho, subdesarrollo tecnológico.&lt;br /&gt;&lt;br /&gt;Todos sabemos que nuestro país es peculiar en muchos sentidos, no vamos a descubrir América ahora. Con respecto a la Ingenería Informática se ha cometido una injusticia histórica sin precedente, con dos únicos culpables y su opresión: la Ingenería de Telecomunicaciones y la tendencia española al vivir del otro sin trabajar.&lt;br /&gt;&lt;br /&gt;¿Cómo he llegado a estas conclusiones? No es muy difícil. De forma extraña a todos los países de la Tierra, España no tiene una Ingenería en Electrónica de primer ciclo. EEE la llaman por ahí. El que ha salido un poco de su pueblo sabe de qué estoy hablando. En cambio es un segundo ciclo y sólo se puede acceder por medio de (aquí está el truco): ¡la Ingeniería de Telecomunicaciones!. Haciendo un análisis rigurosos se puede comprobar que la Ing. de Telecomunicaciones no deja de ser una Ingeniería en Electrónica, con otro nombre.&lt;br /&gt;&lt;br /&gt;Una vez que el desarrollo tecnológico de finales del S.XX seguía su curso, en España la Ing. de Telecomunicación, partiendo de un error de base (y por ello, condenada como estaba en el tiempo) comenzó a adquirir competencias que no le pertenecían, para poder sobrevivir. Hoy día se hacen proyectos de redes neuronales por parte de profesores de Telecomunicaciones ... ¿qué sentido tiene todo esto? Hoy día un Ingeniero en Informática no puede firmar proyectos de Seguridad Informática. ¿Cómo puede ser esto? ¿Un médico acaso hace barcos o dicta leyes? No entiendo por qué un Ingeniero en Electrónica Camuflado (Ing. de Telec) hace mi trabajo y encima, con todo el recochineo del mundo, me coharta, coacciona y me impide a mí, que soy IeI con todas las de la ley, firmar ese tipo de proyectos.&lt;br /&gt;&lt;br /&gt;La primera consecuencia de esa incipiente extinción de los IEC's es la Ingeniería Técnica de Telec. en Telemática y su caída inminente. Como todos sabéis, Bolonia le ha leído la cartilla a esta disciplina absurda donde las haya, provocando su desaparición del catálogo. Ahora están nerviosos. Han hecho una plataforma paripé de "SI A LA TELEMÁTICA". Por lo visto no tiene mucho éxito, pues debería llamarse: "SÍ A VIVIR DEL CUENTO". Serán los primeros en desaparecer. Porque hay que preguntarse, ¿qué es la TELEMATICA? Te dirán: "Está claro, un teleco que puede trabajar de informático". Pero ahora sabemos que el concepto teleco no existe, así que sustituyamos por "Ingeniero Electrónico orientado a las Comunicaciones que puede trabajar de informático". Pero, ¿qué es informático?.... No, esa persona está queriendo decir: "Ingeniero Electrónico orientado a las Comunicaciones que puede realizar trabajos de Ingeniería Informática". Eso es hablar con propiedad y decir la verdad. Y además, hacer ver a la gente lo ridícula que era la primera frase. ¿Eres Ingeniero Informático, IEC? No. No me gusta ir diciendo por ahí que soy médico, si no lo soy.&lt;br /&gt;&lt;br /&gt;Como resultado de todo este crisol de incongruencias universitarias, se ha cometido una gran injusticia en la aplicación de las directivas en las carreras nuevas. Volvemos a quedar aparte. Somos el único caso en toda Europa. Por eso debemos pararlo antes de que lo aprueben. Es la última oportunidad para darles en los morros a esos corruptos que nos cierran todas las puertas, que no nos dan dignidad y quieren vivir a nuestra costa. Si aprueban la nueva ley, seréis unos parias de por vida. Nunca tendréis derechos reales. Aquí tenéis más información:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ingenierosdeprimera.com/node/132"&gt;http://www.ingenierosdeprimera.com/node/132&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;¿Pero qué demonios se han creído? ¿Quién se cree esta gente? Si mañana queremos paramos el país. Ni pilotos, ni gaitas en vinagre. Si yo no hay trabajo, no hay datos. Si no hay datos, no hay comercio, no hay sanidad, no hay vuelos ... no hay nada. Sólo el caos. Ahí está lo que queríais oír: tenéis el poder. Usadlo sin complejos.&lt;br /&gt;&lt;br /&gt;¿Pero el poder para qué? Para obtener el Colegio Nacional de Ingenieros en Informática y ganar las atribuciones. Sólo con dos estos dos hitos se habrá acabado la pesadilla. Ya no tendrás que hacer más horas extra. No tendrá que trabajar por míseros 800 euros al mes. ¿Os imagináis 200.000 personas afiliadas en la misma causa, la misma asociación? Ahora me dirás que tú no crees en las asociaciones, que si tal, que si cuál ... Bienvenido al mundo real. La vida es dura y como no defiendas lo tuyo no te van a dar nada. La época romántica de la Informática ya terminó. Así que afeitate la perilla, lávate un poco y apoya la causa. Que es TU causa, a ver si te enteras ya. ¿O quieres ser un esclavo toda tu vida?&lt;br /&gt;&lt;br /&gt;Una buena piedra angular puede ser ésta: www.ingenierosdeprimera.com. Ni hago la página ni la apoyo. Pero estoy harto como mucha gente y todo esto debe cambiar. ¿Qué importa desde dónde? Y recordar, la unión hace la fuerza.&lt;br /&gt;&lt;br /&gt;Que yo sea el último emigrado de la diáspora de IeI de España.&lt;br /&gt;&lt;br /&gt;F.I.L. Viena 22/12/2006 --- 2007 Primer año del respeto a la Ingeniería Informática en España&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;La verdad es que estas declaraciones dan bastante respeto. No me opongo a que un ingeniero de telecomunicación se gane el pan programando o auditando la seguridad de un sistema informático. A lo que me opongo es a que se de por hecho &lt;strong&gt;oficialmente&lt;/strong&gt; que este tipo de tareas no estén atribuidas a un ingeniero informático.&lt;br /&gt;&lt;br /&gt;Parece que el comentario se ha convertido en &lt;a href="http://www.ingenierosdeprimera.com/node/135"&gt;una entrada&lt;/a&gt; de la web de &lt;a href="http://www.ingenierosdeprimera.com/"&gt;Ingenieros de Primera&lt;/a&gt;. Una web que trata de centralizar los esfuerzos en pro de los intereses del conjunto de todo tipo de colectivos de profesionales informáticos en España. El punto más importante en la actualidad es la lucha contra el plan de Bolonia cuya implementación española (por parte del Ministerio de Educación y Ciencia) pretende dejar de calificar a los ingenieros en informática como &lt;strong&gt;ingenieros&lt;/strong&gt; y dejarles sin atribuciones oficiales (es decir, dejarnos como &lt;em&gt;ingenieros de segunda&lt;/em&gt;).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 06-ENE-2007:&lt;/strong&gt; He decidido cambiar el título de la entrada (cambiando "informáticos" por "telemáticos") a cuento de una &lt;a href="http://www.telematica.ws/siatelematica/"&gt;maravillosa web&lt;/a&gt; que he encontrado.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 14-ABR-2007:&lt;/strong&gt; Es acojonante que se prolongue más &lt;a href="http://www.ingenierosdeprimera.com/node/1602"&gt;esta situación&lt;/a&gt;: para acceder al &lt;strong&gt;Cuerpo Superior de Sistemas y Tecnologías de la Información del Estado&lt;/strong&gt; no se requiere tener ninguna titulación informática, tan sólo ser licenciado, cuando por el contrario para los Cuerpos Superiores o Técnicos análogos de otras ramas de la Ingeniería como Industriales, Agrónomos, Arquitectos, sólo los poseedores de los correspondientes títulos pueden presentarse.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-1983529281263742127?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/1983529281263742127/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=1983529281263742127&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/1983529281263742127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/1983529281263742127'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2006/12/esos-pelacables-informticos.html' title='Esos pelacables telemáticos'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-8928704943307191834</id><published>2006-12-03T22:29:00.002+01:00</published><updated>2008-04-15T14:20:14.426+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>Serialización binaria con NHibernate</title><content type='html'>He empezado a usar &lt;a href="http://www.nhibernate.org/"&gt;NHibernate&lt;/a&gt; en varios proyectos y estoy bastante impresionado por su potencia y su fiabilidad. Es un framework de mapeado objeto/relacional para .NET, bastante popular entre los de su gremio. Aunque su última versión es una beta, en mi opinión es bastante estable porque de momento no ha dado ningún tipo de problema. Podíamos haber usado la versión 1.0 estable, pero lo bueno de la versión 1.2 (beta2) es que ya tiene soporte de tipos genéricos y nulables (están migrando completamente a la API 2.0).&lt;br /&gt;&lt;br /&gt;Sin embargo, en ciertos escenarios esta utilidad tiene que mejorar:&lt;br /&gt;&lt;br /&gt;- Portabilidad: Al usar sólamente lenguaje administrado (cosa de la que me he cerciorado usando &lt;a href="http://www.mono-project.com/MoMA"&gt;MoMA&lt;/a&gt;), en teoría debería ser multiplataforma y funcionar con Mono. Sin embargo, en una prueba rápida que he hecho, Mono ha lanzado una excepción, y parece que el bug está en alguna invocación que en concreto usa la librería DynamicProxy (parte del proyecto CastleProject), la cual es usada por NHibernate. Espero poder hacer pronto un &lt;em&gt;bug report&lt;/em&gt;. (Recordemos, no obstante, que Mono aún no tiene soporte oficial completo de la versión 2.0 de las librerías de .NET.) &lt;strong&gt;[Actualización (1): &lt;a href="http://bugzilla.ximian.com/show_bug.cgi?id=80225"&gt;ya notificado&lt;/a&gt;.]&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;- Soporte de bases de datos. Aunque soporta bastantes motores de base de datos, echo en falta la idea de poder usar DB4O por debajo, lo que le daría bastante rendimiento y facilidad de uso (ya que ni siquiera harían falta los archivos de mapeado en caso de que sólo usasemos bases de datos orientadas a objetos). Es una idea que me surgió y pregunté en &lt;a href="http://archivesat.com/the_NHibernate_development_list/thread1076529.htm"&gt;alguna ocasión&lt;/a&gt;, pero que además mencioné en el &lt;a href="http://db4o-tools.blogspot.com/2006/10/db4o-user-i-met-in-phoenix-airport.html#comments"&gt;blog de un empleado de db4objects&lt;/a&gt;, al que le gustó tal posibilidad también. [&lt;strong&gt;Actualización (4): También se ha debatido ligeramente el tema en &lt;a href="http://www.ayende.com/Blog/2007/01/27/FromSQLiteToSQLServerCompactEdition.aspx"&gt;el blog de Ayende Rahien&lt;/a&gt;, un crack del equipo de NHibernate.&lt;/strong&gt;]&lt;br /&gt;&lt;br /&gt;- Acotación de &lt;em&gt;queries&lt;/em&gt;. Y es que me he encontrado con un escenario extraño en el que NHibernate se ha traído bastante más información de la BDD de la que debería, ya que el programador sólo estaba consultando la propiedad COUNT de una colección. Espero poner pronto también un &lt;em&gt;bug report&lt;/em&gt; sobre esto en el &lt;a href="http://jira.nhibernate.org/"&gt;JIRA de NHibernate&lt;/a&gt; (un programa de gestión de incidencias al estilo &lt;a href="http://www.bugzilla.org/"&gt;Bugzilla&lt;/a&gt;). &lt;strong&gt;[Actualización (2): &lt;a href="http://jira.nhibernate.org/browse/NH-855"&gt;reportado&lt;/a&gt;.]&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;- Parseo de los archivos de &lt;em&gt;mappings&lt;/em&gt;. También he encontrado casos extraños en los que, por culpa de un error en los archivos de mapeo, NHibernate escupía una excepción de ADO.NET, en lugar de ser más escrupuloso en el parseo de estos archivos de mapeado. Esto &lt;a href="http://jira.nhibernate.org/browse/NH-823"&gt;ya lo he reportado&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;[Elemento añadido en Actualización (6)]&lt;/strong&gt;&lt;br /&gt;- Interpretación errónea de algunas query's: acabo de mandar este correo a la lista de correo de NHibernate para que me digan si es un bug o no, y por tanto, si tendría que darlo de alta en su JIRA:&lt;br /&gt;&lt;em&gt;&lt;br /&gt;Hello.&lt;br /&gt;&lt;br /&gt;I have a simple entity like this:&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="utf-8" ?&amp;lt;&lt;br /&gt;&amp;lt;hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"&amp;gt;&lt;br /&gt;  &amp;lt;class name="Agent" table="Agents"&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;id name="Id" column="IdAgent" unsaved-value="0"&amp;gt;&lt;br /&gt;      &amp;lt;generator class="native" /&amp;gt;&lt;br /&gt;    &amp;lt;/id&amp;gt;&lt;br /&gt;    &amp;lt;property name="Login" column="LOGIN" length="20" not-null="false"/&amp;gt;&lt;br /&gt;    &amp;lt;many-to-one name="Client" column="IdClient" not-null="false" /&amp;gt;&lt;br /&gt;  &amp;lt;/class&amp;gt;&lt;br /&gt;&amp;lt;/hibernate-mapping&amp;gt;&lt;br /&gt;&lt;br /&gt;If I create a wrong HQL query like this:&lt;br /&gt;&lt;br /&gt;IList&lt;IrmTerminalGroup&gt; aTerminalGroup =&lt;br /&gt;    oSession.Session.CreateQuery(&lt;br /&gt;        "from Agent WHERE IdClient = " + 1&lt;br /&gt;        ).List&lt;IrmTerminalGroup&gt;();&lt;br /&gt;&lt;br /&gt;Shouldn't NHibernate complain about it because IdClient is a column and not a property? I guess the correct way of writing the query is using "from Agent g WHERE g.Client.Id = " + 1, don't you think? Is this a bug? Should I create a bug in JIRA?&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;[Elemento añadido en Actualización (7)]&lt;/strong&gt;&lt;br /&gt;Al final &lt;a href="http://jira.nhibernate.org/browse/NH-1097"&gt;lo he reportado&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;- Por último, y básicamente la razón de esta entrada: la serialización de objetos procedentes de las clases de las que hace uso NHibernate, que a continuación paso a explicar en detalle.&lt;br /&gt;&lt;br /&gt;En un escenario en el que el propio desarrollo que queremos llevar a cabo es cliente/servidor, ya sea usando Remoting o Servicios Web, se llega a la situación en la que se requiere enviar información sobre los objetos de nuestro dominio, y ¿qué mejor técnica que el envío completo del objeto a la parte interesada en él? Hay gente detractora de esta técnica pero renegar de ella supone duplicar esfuerzos en la codificación para establecer un sistema de paso de mensajes que al final es una copia de las estructuras de clases de nuestro dominio. Por tanto, si optamos por el camino rápido y productivo, se requerirá la serialización de los objetos de nuestro dominio (los que recojemos y tratamos, para después manipularlos mediante NHibernate para persistirlos) para poder transportarlos de un lado a otro, operación ésta que conlleva bastantes problemas pues:&lt;br /&gt;&lt;br /&gt;1) Si optamos por una serialización de tipo XML, nos encontraremos finalmente con que es imposible llevarla a cabo, en la mayoría de los casos, con el serializador XML predeterminado de .NET, ya que las referencias recursivas no las trata y por tanto devuelve excepciones al encontrarlas (y tener referencias recursivas en los objetos del dominio es muy común ya que los objetos hijos normalmente tienen referencia también al objeto padre). Quién sabe, quizás un día me dé por escribir un serializador XML que soporte recursividad, pero mientras tanto hay que optar por la serialización binaria (&lt;strong&gt;[Actualización (3): &lt;a href="http://lists.ximian.com/pipermail/mono-list/2007-January/033875.html"&gt;debate en la lista de mono sobre serialización XML de objetos cíclicos&lt;/a&gt;, la cual al parecer se soluciona con Indigo/WCF]&lt;/strong&gt; &lt;strong&gt;[Actualización (6): &lt;a href="http://permalink.gmane.org/gmane.comp.gnome.mono.general/30899"&gt;El SoapFormatter serializa sin problemas objetos cíclicos en XML, pero ahora mi problema es que no sé cómo hacer para que un WebService use este formatter por defecto&lt;/a&gt;, sospecho que la solución es usar Remoting :( ]&lt;/strong&gt;). Sin embargo siguen existiendo dos problemas adicionales: los proxies y las colecciones &lt;em&gt;lazy&lt;/em&gt;, que paso a explicar en los siguientes puntos.&lt;br /&gt;&lt;br /&gt;Antes de nada, una pequeña introducción: NHibernate implementa desde varias versiones atrás lo denominado "lazy queries", o bien en español (aunque el término queda bastante peor): "consultas vagas". Sin ellas, NHibernate al recoger un objeto de la BDD y empezar a formarlo, se encontraría que tendría que recorrer bastantes tablas para rellenar los campos procedentes de las claves ajenas. Si esos campos son otras entidades que se encuentran en otras tablas, las cuales a su vez tienen otras claves ajenas, podemos provocar una consulta enorme que, o bien tarde bastante tiempo, o bien se traiga toda la base de datos con una consulta (dependiendo de lo cohesionadas que estén las entidades del dominio entre sí). Por tanto, el resultado de una "consulta vaga" serán entidades vagas o entidades con hijos o colecciones vagos: &lt;em&gt;lazy collections&lt;/em&gt;. Las colecciones vagas permiten a NHibernate traer en una consulta sólo los atributos de una tabla, y dejar sus relaciones en modo &lt;em&gt;suspendido&lt;/em&gt; de tal forma que si se accede a ellas, es cuando NHibernate solicitará una nueva consulta. Digamos que es una introspección de datos bajo demanda. Por tanto, este tipo de colecciones, si bien no era obligatorio utilizarlas, cada vez uno se da más cuenta de que es completamente necesario, y es por esto por lo que en la versión 1.2 de NHibernate vienen activadas por defecto.&lt;br /&gt;&lt;br /&gt;Ahora que todos sabemos lo que son las &lt;em&gt;lazy collections&lt;/em&gt;, puedo explicar el problema que tiene la serialización con ellas. El primero es que NHibernate, para poder implementarlas en los objetos de nuestro dominio, monta sobre nuestros interfaces IList/IDictionary unas colecciones internas, de un tipo implementado en las librerías de NHibernate, que contienen una referencia a la sesión abierta en el momento del acceso (por ejemplo el tipo &lt;em&gt;NHibernatePersistenGenericBag&lt;/em&gt;). Además, los objetos de los que sólo tiene información sobre su identificador, por ser fruto de una clave ajena, los inserta una especie de proxy que sirve para que sean refrescados cuando se acceda alguna de sus propiedades, para que NHibernate pueda hacer una consulta SQL extra a la tabla de la que procede la clave ajena y rellenar los campos que faltan. Y ahora vamos con los inconvenientes:&lt;br /&gt;&lt;br /&gt;2) Una colección IList/IDictionary que por dentro implementa un tipo de NHibernate no podrá ser deserializada por una aplicación que no tenga acceso a las librerías de NHibernate. ¿Acaso esto es un problema? Pues relativamente sí, porque si la parte que deserializa es un cliente de un WebService, ¿por qué iba a requerir las librerías de NHibernate si él no va a tener acceso directo a la base de datos? Además, estas librerías ocupan 1MB más o menos, lo que complica el despliegue de la aplicación (sobre todo en un entorno ClickOnce como en el que me encuentro).&lt;br /&gt;&lt;br /&gt;3) Una clase que tiene insertado un proxy no se puede serializar.&lt;br /&gt;&lt;br /&gt;Estos dos problemas tienen solución, pero no es trivial. La solución al problema del proxy es usar una rutina interna de NHibernate denominada "Unproxy", de la cual tuve conocimiento al preguntar en las listas de desarrollo de NHibernate y CastleProject (pues recordemos que NHibernate usa una librería de éste último proyecto). El problema de esta rutina es que sólo le quita el proxy a un objeto de nuestro dominio, pero no a sus hijos, por lo que seguimos teniendo otro problema derivado.&lt;br /&gt;&lt;br /&gt;La solución al problema de las colecciones es transformarlas en colecciones nativas de .NET (List y Dictionary) en tiempo de ejecución, lo cual se puede hacer no sin antes encontrarse con el problema de que las colecciones aún no recuperadas no podrán convertirse en colecciones normales, por lo tanto necesitaremos un modo de marcar los objetos de nuestro dominio que estén "incompletos".&lt;br /&gt;&lt;br /&gt;La conclusión a todo esta maremagnum de problemas y soluciones no es otra que un método que he desarrollado que podríamos bautizar como un "Unproxy recursivo", y que, mediante Reflection, recorre el objeto que queramos serializar para quitarle proxies, convertir colecciones NHibernate en nativas, y marcar objetos incompletos. Voy a exponer el código aquí y lo voy a publicar con licencia LGPL con el ánimo de que así contribuya más gente a mejorarla.&lt;br /&gt;&lt;br /&gt;El código dista mucho de ser óptimo y estable, seguro que alguien encuentra pegas con ello. Pero seguro que entre varios podemos mejorarlo y debatir sobre él. A pesar de que es muy reciente, he comprobado su eficiencia y es bastante rápido (además he hecho algunas optimizaciones al acceso dinámico a los métodos, que se pueden notar al ver el uso de la clase RuntimeMethodHandle):&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;//Copyright 2006. Andres G. Aragoneses&lt;br /&gt;//Code licensed under the &lt;a href="http://www.gnu.org/licenses/lgpl.html"&gt;LGPL: http://www.gnu.org/licenses/lgpl.html&lt;/a&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Text;&lt;br /&gt;&lt;br /&gt;using System.Reflection;&lt;br /&gt;&lt;br /&gt;using NHibernate;&lt;br /&gt;using NHibernate.Proxy;&lt;br /&gt;&lt;br /&gt;using MyApp.DataModel.DomainModel;&lt;br /&gt;using MyApp.DataModel.Exceptions;&lt;br /&gt;&lt;br /&gt;namespace MyApp.DataModel&lt;br /&gt;{&lt;br /&gt;    public static class DataLayer&lt;br /&gt;    {&lt;br /&gt;        private static ISession oSession = null;&lt;br /&gt;&lt;br /&gt;        private static ISessionFactory oFactory = null;&lt;br /&gt;&lt;br /&gt;        public static ISession GetNewSession()&lt;br /&gt;        {&lt;br /&gt;            if (DataLayer.oSession == null)&lt;br /&gt;            {&lt;br /&gt;                //handlers initialization&lt;br /&gt;                fHandlerCreateGenericList = GetMethodHandle("CreateGenericList");&lt;br /&gt;                fHandlerCreateGenericDictionary = GetMethodHandle("CreateGenericDictionary");&lt;br /&gt;                fHandlerUnproxyList = GetMethodHandle("UnproxyList");&lt;br /&gt;                fHandlerUnproxyDictionary = GetMethodHandle("UnproxyDictionary");&lt;br /&gt;                fHandlerUnproxyCompletely = GetMethodHandle("UnproxyCompletely");&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                //NH initialization&lt;br /&gt;                NHibernate.Cfg.Configuration oCfg = new NHibernate.Cfg.Configuration();&lt;br /&gt;                oCfg.AddAssembly("DataLayer");&lt;br /&gt;                oCfg.AddAssembly("DomainModel");&lt;br /&gt;                DataLayer.oFactory = oCfg.BuildSessionFactory();&lt;br /&gt;                DataLayer.oSession = oFactory.OpenSession();&lt;br /&gt;            }&lt;br /&gt;            else&lt;br /&gt;            {&lt;br /&gt;                DataLayer.oSession.Close();&lt;br /&gt;                DataLayer.oSession = DataLayer.oFactory.OpenSession();&lt;br /&gt;            }&lt;br /&gt;            return DataLayer.oSession;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private static Dictionary&amp;lt;Type, Dictionary&amp;lt;int, DomainObject&amp;gt;&amp;gt; hUnproxyingOrAlreadyUnproxiedObjects = null;&lt;br /&gt;&lt;br /&gt;        //these structures are for optimizing reflection (see http://msdn.microsoft.com/msdnmag/issues/05/07/Reflection/default.aspx)&lt;br /&gt;        private static RuntimeMethodHandle fHandlerCreateGenericList;&lt;br /&gt;        private static RuntimeMethodHandle fHandlerCreateGenericDictionary;&lt;br /&gt;        private static RuntimeMethodHandle fHandlerUnproxyList;&lt;br /&gt;        private static RuntimeMethodHandle fHandlerUnproxyDictionary;&lt;br /&gt;        private static RuntimeMethodHandle fHandlerUnproxyCompletely;&lt;br /&gt;&lt;br /&gt;        private static RuntimeMethodHandle GetMethodHandle(string sName){&lt;br /&gt;            return typeof(DataLayer).GetMethod(sName,&lt;br /&gt;                BindingFlags.Static | BindingFlags.NonPublic).MethodHandle;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public static T Unproxy&amp;lt;T&amp;gt;(DomainObject maybeProxy, ISession oSession) where T : DomainObject&lt;br /&gt;        {&lt;br /&gt;            hUnproxyingOrAlreadyUnproxiedObjects = new Dictionary&amp;lt;Type, Dictionary&amp;lt;int, DomainObject&amp;gt;&amp;gt;();&lt;br /&gt;            oSession.Close();&lt;br /&gt;            return UnproxyCompletely&amp;lt;T&amp;gt;(maybeProxy);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private static bool IsProxy(DomainObject oProxy)&lt;br /&gt;        {&lt;br /&gt;            return (oProxy is INHibernateProxy);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private static T UnproxyCompletely&amp;lt;T&amp;gt;(DomainObject oProxy) where T : DomainObject&lt;br /&gt;        {&lt;br /&gt;            T oNoProxyBaseButMaybeProxyChildren = null;&lt;br /&gt;&lt;br /&gt;            if ((hUnproxyingOrAlreadyUnproxiedObjects.ContainsKey(typeof(T))&lt;br /&gt;                &amp;&amp;amp; (hUnproxyingOrAlreadyUnproxiedObjects[typeof(T)].ContainsKey(oProxy.Id))))&lt;br /&gt;            {&lt;br /&gt;                return (T)hUnproxyingOrAlreadyUnproxiedObjects[typeof(T)][oProxy.Id];&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            //DELETEME:&lt;br /&gt;            //Console.WriteLine(typeof(T).ToString() + oProxy.Id);&lt;br /&gt;&lt;br /&gt;            if (DataLayer.IsProxy(oProxy))&lt;br /&gt;            {&lt;br /&gt;                //throw new InvalidOperationException("Cannot unproxy a not proxied object");&lt;br /&gt;                LazyInitializer oLazyInitializer =&lt;br /&gt;                    NHibernateProxyHelper.GetLazyInitializer((INHibernateProxy)oProxy);&lt;br /&gt;                try&lt;br /&gt;                {&lt;br /&gt;                    oNoProxyBaseButMaybeProxyChildren = (T)oLazyInitializer.GetImplementation(); //unwrap the object&lt;br /&gt;                }&lt;br /&gt;                catch (NHibernate.LazyInitializationException)&lt;br /&gt;                {&lt;br /&gt;                    T oNewNeedLoadObject = Activator.CreateInstance&amp;lt;T&amp;gt;();&lt;br /&gt;                    oNewNeedLoadObject.Id = oProxy.Id;&lt;br /&gt;                    oNewNeedLoadObject.NeedLoad = true;&lt;br /&gt;&lt;br /&gt;                    if (!hUnproxyingOrAlreadyUnproxiedObjects.ContainsKey(typeof(T)))&lt;br /&gt;                    {&lt;br /&gt;                        hUnproxyingOrAlreadyUnproxiedObjects[typeof(T)] = new Dictionary&amp;lt;int, DomainObject&amp;gt;();&lt;br /&gt;                    }&lt;br /&gt;                    hUnproxyingOrAlreadyUnproxiedObjects[typeof(T)][oProxy.Id] = oNewNeedLoadObject;&lt;br /&gt;                    return oNewNeedLoadObject;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            else&lt;br /&gt;            {&lt;br /&gt;                oNoProxyBaseButMaybeProxyChildren = (T)oProxy;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            if (!hUnproxyingOrAlreadyUnproxiedObjects.ContainsKey(typeof(T)))&lt;br /&gt;            {&lt;br /&gt;                hUnproxyingOrAlreadyUnproxiedObjects[typeof(T)] = new Dictionary&amp;lt;int, DomainObject&amp;gt;();&lt;br /&gt;            }&lt;br /&gt;            hUnproxyingOrAlreadyUnproxiedObjects[typeof(T)][oProxy.Id] = oNoProxyBaseButMaybeProxyChildren;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            //convert NHibernateGenericBag&amp;lt;&amp;gt; to List&amp;lt;&amp;gt;&lt;br /&gt;            foreach (PropertyInfo oProp in oNoProxyBaseButMaybeProxyChildren.GetType().GetProperties())&lt;br /&gt;            {&lt;br /&gt;                if ((!oProp.PropertyType.IsInterface) &amp;&amp;amp; (!oProp.PropertyType.IsClass))&lt;br /&gt;                {&lt;br /&gt;                    //it is a value type, so skip&lt;br /&gt;                    continue;&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                object oActualValue;&lt;br /&gt;                try&lt;br /&gt;                {&lt;br /&gt;                    oActualValue = oProp.GetValue(oNoProxyBaseButMaybeProxyChildren, null);&lt;br /&gt;                }&lt;br /&gt;                catch (Exception oException)&lt;br /&gt;                {&lt;br /&gt;                    if ((oException.InnerException != null) &amp;&amp;amp;&lt;br /&gt;                        (oException.InnerException is NHibernate.LazyInitializationException))&lt;br /&gt;                    {&lt;br /&gt;                        //set the list to null (equivalent to IList.NeedLoad == true)&lt;br /&gt;                        oProp.SetValue(oNoProxyBaseButMaybeProxyChildren, null, null);&lt;br /&gt;                        continue;&lt;br /&gt;                    }&lt;br /&gt;                    else if (oException.InnerException is IrmNeedLoadException)&lt;br /&gt;                    {&lt;br /&gt;                        //inform of another exception?&lt;br /&gt;                        //(check mappings if you have a property in the class that is not in the mapping)&lt;br /&gt;                        throw;&lt;br /&gt;                    }&lt;br /&gt;                    else&lt;br /&gt;                    {&lt;br /&gt;                        throw;&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                if (oActualValue == null)&lt;br /&gt;                {&lt;br /&gt;                    //it is null, so skip&lt;br /&gt;                    continue;&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                if ((oProp.PropertyType.IsGenericType))&lt;br /&gt;                {&lt;br /&gt;                    MethodInfo fCreateMethod = null, fUnproxyMethod = null;&lt;br /&gt;&lt;br /&gt;                    if (oProp.PropertyType.GetGenericTypeDefinition() == (typeof(IList&amp;lt;&amp;gt;)))&lt;br /&gt;                    {&lt;br /&gt;                        fCreateMethod =&lt;br /&gt;                            (MethodInfo)MethodInfo.GetMethodFromHandle(fHandlerCreateGenericList);&lt;br /&gt;                        fUnproxyMethod =&lt;br /&gt;                            (MethodInfo)MethodInfo.GetMethodFromHandle(fHandlerUnproxyList);&lt;br /&gt;                    }&lt;br /&gt;                    else if (oProp.PropertyType.GetGenericTypeDefinition() == (typeof(IDictionary&amp;lt;,&amp;gt;)))&lt;br /&gt;                    {&lt;br /&gt;                        fCreateMethod =&lt;br /&gt;                            (MethodInfo)MethodInfo.GetMethodFromHandle(fHandlerCreateGenericDictionary);&lt;br /&gt;                        fUnproxyMethod =&lt;br /&gt;                            (MethodInfo)MethodInfo.GetMethodFromHandle(fHandlerUnproxyDictionary);&lt;br /&gt;                    }&lt;br /&gt;&lt;br /&gt;                    fCreateMethod = fCreateMethod.MakeGenericMethod(oProp.PropertyType.GetGenericArguments());&lt;br /&gt;                    fUnproxyMethod = fUnproxyMethod.MakeGenericMethod(oProp.PropertyType.GetGenericArguments());&lt;br /&gt;&lt;br /&gt;                    if (fCreateMethod != null)&lt;br /&gt;                    {&lt;br /&gt;&lt;/code&gt;&lt;code&gt;                        //NOT NEEDED: as we are doing it in the catch&lt;/code&gt;&lt;br /&gt;&lt;code&gt;                        //oProp.SetValue(oNoProxyBaseButMaybeProxyChildren, null, null);&lt;br /&gt;&lt;br /&gt;                        try&lt;br /&gt;                        {&lt;br /&gt;                            object oChangedValue =&lt;br /&gt;                                fCreateMethod.Invoke(null,&lt;br /&gt;                                               new object[] {&lt;br /&gt;                                                   oActualValue&lt;br /&gt;                                               });&lt;br /&gt;                            oProp.SetValue(&lt;br /&gt;                                oNoProxyBaseButMaybeProxyChildren,&lt;br /&gt;                                oChangedValue,&lt;br /&gt;                                null);&lt;br /&gt;&lt;br /&gt;                            oActualValue = oChangedValue;&lt;br /&gt;&lt;br /&gt;                            try&lt;br /&gt;                            {&lt;br /&gt;                                fUnproxyMethod.Invoke(null, new object[] { oActualValue });&lt;br /&gt;                            }&lt;br /&gt;                            catch (Exception)//oException)&lt;br /&gt;                            {&lt;br /&gt;                                throw;&lt;br /&gt;                            }&lt;br /&gt;                        }&lt;br /&gt;                        catch (Exception oException)&lt;br /&gt;                        {&lt;br /&gt;                            if ((oException.InnerException != null) &amp;&amp;amp;&lt;br /&gt;                                (oException.InnerException is LazyInitializationException))&lt;br /&gt;                            {&lt;br /&gt;                                oProp.SetValue(&lt;br /&gt;                                    oNoProxyBaseButMaybeProxyChildren, null, null);&lt;br /&gt;                                //oNoProxyBaseButMaybeProxyChildren.NeedLoad = true;&lt;br /&gt;                            }&lt;br /&gt;                            else&lt;br /&gt;                            {&lt;br /&gt;                                throw;&lt;br /&gt;                            }&lt;br /&gt;                        }&lt;br /&gt;&lt;br /&gt;                    }&lt;br /&gt;                    else&lt;br /&gt;                    {&lt;br /&gt;                        throw new NotSupportedException("Generic type not supported yet");&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;                else if (oActualValue is INHibernateProxy)&lt;br /&gt;                {&lt;br /&gt;                    try&lt;br /&gt;                    {&lt;br /&gt;                        MethodInfo fMethod =&lt;br /&gt;                            (MethodInfo)MethodInfo.GetMethodFromHandle(fHandlerUnproxyCompletely);&lt;br /&gt;                        fMethod = fMethod.MakeGenericMethod(oProp.PropertyType);&lt;br /&gt;&lt;br /&gt;                        oProp.SetValue(&lt;br /&gt;                            oNoProxyBaseButMaybeProxyChildren,&lt;br /&gt;                            fMethod.Invoke(null, new object[] { oActualValue }), null);&lt;br /&gt;                    }&lt;br /&gt;                    catch (Exception oException)&lt;br /&gt;                    {&lt;br /&gt;                        if (!(oException is LazyInitializationException))&lt;br /&gt;                        {&lt;br /&gt;                            throw;&lt;br /&gt;                        }&lt;br /&gt;                        else&lt;br /&gt;                        {&lt;br /&gt;                            T oNewManyToOneObject = Activator.CreateInstance&amp;lt;T&amp;gt;();&lt;br /&gt;                            oNewManyToOneObject.Id = ((DomainObject)oActualValue).Id;&lt;br /&gt;                            oNewManyToOneObject.NeedLoad = true;&lt;br /&gt;                            //set a fallback object with NeedLoad as TRUE, in case of exception&lt;br /&gt;                            oProp.SetValue(oNoProxyBaseButMaybeProxyChildren,&lt;br /&gt;                                           oNewManyToOneObject, null);&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            return oNoProxyBaseButMaybeProxyChildren;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private static List&amp;lt;T&amp;gt; CreateGenericList&amp;lt;T&amp;gt;(IList&amp;lt;T&amp;gt; aList) where T : DomainObject&lt;br /&gt;        {&lt;br /&gt;            List&amp;lt;T&amp;gt; aNewList = new List&amp;lt;T&amp;gt;(aList);&lt;br /&gt;            return aNewList;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private static Dictionary&amp;lt;K, V&amp;gt; CreateGenericDictionary&amp;lt;K, V&amp;gt;(IDictionary&amp;lt;K, V&amp;gt; hDict)&lt;br /&gt;            where K : DomainObject where V : DomainObject&lt;br /&gt;        {&lt;br /&gt;            Dictionary&amp;lt;K, V&amp;gt; hNewDict = new Dictionary&amp;lt;K,V&amp;gt;(hDict);&lt;br /&gt;            return hNewDict;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private static void UnproxyList&amp;lt;T&amp;gt;(List&amp;lt;T&amp;gt; aList) where T : DomainObject&lt;br /&gt;        {&lt;br /&gt;            for (int i = 0; i &amp;lt; aList.Count; i++)&lt;br /&gt;            {&lt;br /&gt;                aList[i] = UnproxyCompletely&amp;lt;T&amp;gt;(aList[i]);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private static void UnproxyDictionary&amp;lt;K,V&amp;gt;(Dictionary&amp;lt;K,V&amp;gt; hDict)&lt;br /&gt;            where K : DomainObject where V : DomainObject&lt;br /&gt;        {&lt;br /&gt;            IList&amp;lt;K&amp;gt; aKeysToRemove = new List&amp;lt;K&amp;gt;();&lt;br /&gt;            IDictionary&amp;lt;K, V&amp;gt; aKeysToAdd = new Dictionary&amp;lt;K, V&amp;gt;();&lt;br /&gt;            foreach (K oKey in hDict.Keys)&lt;br /&gt;            {&lt;br /&gt;                aKeysToAdd.Add(UnproxyCompletely&amp;lt;K&amp;gt;(oKey), UnproxyCompletely&amp;lt;V&amp;gt;(hDict[oKey]));&lt;br /&gt;                aKeysToRemove.Add(oKey);&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            foreach (K oKey in aKeysToAdd.Keys)&lt;br /&gt;            {&lt;br /&gt;                hDict.Add(oKey, aKeysToAdd[oKey]);&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            foreach (K oKey in aKeysToRemove)&lt;br /&gt;            {&lt;br /&gt;                hDict.Remove(oKey);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Para que la pieza de código funcione, hay que colocarla bajo una clase denominada DataLayer (o bien modificarlo para usar el nombre que queramos), y además tenemos que marcar nuestros objetos del dominio como clases derivadas de la siguiente superclase DomainObject (ídem):&lt;br /&gt;&lt;br /&gt;&lt;code&gt;namespace DataModel.DomainModel&lt;br /&gt; {&lt;br /&gt;     [Serializable]&lt;br /&gt;     public abstract class DomainObject&lt;br /&gt;     {&lt;br /&gt;&lt;br /&gt;         public abstract int Id&lt;br /&gt;         {&lt;br /&gt;             get;&lt;br /&gt;             set;&lt;br /&gt;         }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;         protected bool bNeedLoad = false;&lt;br /&gt;&lt;br /&gt;         public virtual bool NeedLoad&lt;br /&gt;         {&lt;br /&gt;             get { return this.bNeedLoad; }&lt;br /&gt;             set { this.bNeedLoad = value; }&lt;br /&gt;         }&lt;br /&gt;&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Es posible que haya mejores formas de solucionar estos problemas y, estaría encantado de oirlas. Pero mientras no sea así tendré que lidiar con este método que, evidentemente, ralentizará un poquito cada operación de serialización. Es posible que esto sea el nacimiento de algún pequeño proyecto que podría incluso donar al proyecto NHibernate como una especie de plugin. O también es posible que cuando quisiera ofrecerlo, sus programadores se den cuenta de la cosa tan horrible que he hecho, y que me informen de que se podría solucionar con métodos mejores y más eficientes simplemente modificando el core del proyecto NHibernate para proporcionarle ciertas funcionalidades extra en favor de la serialización. No lo sé, lo iremos viendo con el tiempo, pero mientras, ahí queda eso.&lt;br /&gt;&lt;br /&gt;P.D.: Aprovecho la entrada para saludar a los lectores de &lt;a href="http://www.planetacodigo.com/"&gt;PlanetaCodigo&lt;/a&gt;, los cuales en teoría serán capaces de leerme a partir de ahora cuando publique una entrada en mi categoría &lt;strong&gt;Programación&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 14-DIC-2006:&lt;/strong&gt; Corregido comentario sobre licencia. Corregido bug en el método (comentada una línea). Añadido enlace a bug de Mono encontrado.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 09-ENE-2007:&lt;/strong&gt; Añadido enlace al bug de acotación de &lt;em&gt;queries&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 16-ENE-2007:&lt;/strong&gt; Añadido enlace a debate sobre serialización XML de objetos cíclicos.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 29-ENE-2007:&lt;/strong&gt; Añadido enlace a blog de Ayende Rahien. &lt;a href="http://groups.google.es/group/NHibernate-Hispano/browse_thread/thread/36b615c2bd0ed1bc?hl=es"&gt;Interesante conversación&lt;/a&gt; en la lista de correo de NHibernate Hispano sobre el tema.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 17-ABR-2007&lt;/strong&gt;: Vaya, parece que Ayende Rahien (uno de los desarrolladores de NHibernate) &lt;a href="http://ayende.com/Blog/archive/2007/03/23/The-Fallacy-of-Shared-Entity-Model.aspx"&gt;está en desacuerdo con la técnica de compartir un modelo de datos en todo el desarrollo&lt;/a&gt;. Tendré que refinar más mi idea y debatirlo abiertamente.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 20-JUL-2007&lt;/strong&gt;: Añadido comentario sobre SoapFormatter y un nuevo inconveniente de NHibernate (¿bug?).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 20-AGO-2007&lt;/strong&gt;: Al final el inconveniente que encontré en la última actualización de esta entrada lo he reportado como &lt;a href="http://jira.nhibernate.org/browse/NH-1097"&gt;bug&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 28-SEP-2007&lt;/strong&gt;: He encontrado otra limitación, que ya exploré en su día y no hay solución elegante posible de momento: &lt;a href="http://forum.hibernate.org/viewtopic.php?t=963057&amp;highlight=recursion"&gt;HQL recursivo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 08-DIC-2007&lt;/strong&gt;: Parece que la nueva versión de NHibernate (2.0 en fase Alpha) tiene un nuevo &lt;a href="http://www.ayende.com/Blog/archive/2007/08/11/HQL-Parser-Progress.aspx"&gt;parser de HQL&lt;/a&gt; que propiciará una mayor mantenibilidad para poder arreglar bugs y crear nuevas funcionalidades más fácilmente, como por ejemplo la que ya he mencionado en la anterior actualización de esta entrada: &lt;a href="http://www.ayende.com/Blog/archive/2007/08/11/HQL-Parser-Progress.aspx#Comments_ascx_CommentList_ctl06_GravatarImg"&gt;HQL recursivo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 26-DIC-2007&lt;/strong&gt;: El "Recursive HQL" &lt;a href="http://jira.nhibernate.org/browse/NH-1230"&gt;ya está en JIRA&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 14-FEB-2008&lt;/strong&gt;: En un artículo muy interesante de Ayende Rahien se habla de &lt;a href="http://ayende.com/Blog/archive/2008/01/22/Dealing-with-hierarchical-structures-in-databases.aspx"&gt;posibles workarounds a la implementación de jerarquías en BDD&lt;/a&gt; para evitar la limitación de NHibernate (y de las BDD en general, claro, pues no todas tienen estas capacidades de búsqueda recursiva y por tanto no todas soportarían la nueva funcionalidad que se desarrollare en NHibernate).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 15-ABR-2008&lt;/strong&gt;: Al parecer se han corregido ciertos problemas en la rama trunk de NHibernate (la que sera la proxima version 2.0) que prevenian que la gente pudiera compilarlo con Mono: &lt;a href="http://jira.nhibernate.org:8080/jira/browse/NH-1242"&gt;NH-1242&lt;/a&gt;, &lt;a href="http://jira.nhibernate.org:8080/jira/browse/NH-1243"&gt;NH-1243&lt;/a&gt;, &lt;a href="http://jira.nhibernate.org:8080/jira/browse/NH-1244"&gt;NH-1244&lt;/a&gt; y &lt;a href="http://jira.nhibernate.org:8080/jira/browse/NH-1242"&gt;NH-1245&lt;/a&gt;. Ahora es mas facil ser colaborador sin usar Microsoft :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-8928704943307191834?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/8928704943307191834/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=8928704943307191834&amp;isPopup=true' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/8928704943307191834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/8928704943307191834'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2006/12/serializacin-binaria-con-nhibernate.html' title='Serialización binaria con NHibernate'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-8974065612973247429</id><published>2006-11-14T20:34:00.000+01:00</published><updated>2007-12-10T21:39:37.739+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Diferencias técnicas entre software libre y software privativo</title><content type='html'>Defender los valores que conllevan el nuevo modelo de negocio del software libre desde un punto de vista filosófico es a veces complicado, e incluso aunque lo logres de una manera decente, tu compañero de charla es posible que se niegue a ver lo evidente o simplemente que no entienda de lo que le estés hablando.&lt;br /&gt;&lt;br /&gt;Para estos casos, podemos usar argumentos meramente técnicos, y en mi opinión quizá incluso más contundentes.&lt;br /&gt;&lt;br /&gt;Para ello voy a elaborar una entrada de la bitácora que será una lista de ellos. Los primeros los voy a calcar tal cual de &lt;a href="http://polishlinux.org/gnu/foss-and-the-dependencies/"&gt;un buen artículo que he encontrado&lt;/a&gt; y que trata sobre dependencias y paquetes. El resto las iré introduciendo, actualizando la entrada siempre que sea necesario.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Inconvenientes del software privativo de los cuales carece el software libre:&lt;/strong&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Reinvención de la rueda: Como el software privativo no puede usar componentes libres de licencia GPL, la empresa de software privativo siempre intentará escribir estos componentes desde cero, a no ser que tengan suerte de encontrar el componente bajo licencias LGPL/BSD, o estén dispuestos a sacrificarse con el siguiente inconveniente. [Mayor tiempo de desarrollo]&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Uso de herramientas externas de pago. En caso de no encontrar tiempo para escribir los componentes/librerías software desde cero o no encontrarlos bajo licencias más que libres, otra opción es desembolsar dinero en comprar un componente a su vez privativo o de licencia dual. [Mayor coste de desarrollo]&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Documentación o comunidad insuficiente. Por supuesto, hay algunas notorias excepciones a esta regla pero en ocasiones cuando se utiliza una librería o componente privativo es difícil encontrarse una comunidad de usuarios grande y activa con la que poder comunicarse e intercambiar conocimiento como ocurre con el software libre. Las librerías y componentes que se publican bajo licencia libre sin embargo suelen tener muchos más usuarios debido a ello (y si además el software es de calidad, claro) y además en caso de que hubiera escasez de documentación se podría mirar directamente el código fuente para comprobar el funcionamiento del componente, cosa que no es posible con la mayoría del software privativo. [Mayor complejidad.]&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Baja estabilidad y robustez. Puesto que el producto no está abierto al uso, no suele haber muchos usuarios interesados en probar el software (sólo los clientes que han pasado por caja), por lo que la estabilidad del software en su conjunto es mucho menor. En el software libre sin embargo se obtiene un &lt;em&gt;feedback&lt;/em&gt; apabullante (y gratuito) si el proyecto es de verdad de interés.[Peor calidad.]&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Mayor tamaño de los programas: Puesto que el software privativo depende de librerías y componentes no libres, normalmente éstos han de ser adjuntados al programa puesto que el sistema operativo carece de ellos. Ejemplo: interfaces gráficas, librerías de propósito general de un lenguaje, máquinas virtuales, middlewares, pilas de comunicaciones, librerías de acceso a bases de datos, etc. En el software libre sin embargo, suele ocurrir que los programas dependen de componentes software muy conocidos y disponibles de serie en la mayoría de los sistemas operativos; es más, si acaso el componente no se hubiera instalado "de serie", los sistemas de gestión de paquetes actuales del software libre (uno de los puntos fuertes del software libre con respecto al propietario en cuanto al &lt;em&gt;deployment&lt;/em&gt;) aplicarían automáticamente las dependencias que necesitara nuestro software, de manera recursiva. [Menor eficiencia de los recursos hardware, por tanto mayores requisitos para el usuario/cliente.]&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Utilización de mayor tamaño de memoria (volátil o disco): Debido al anterior inconveniente, el hipotético caso en el que usasemos un sistema operativo privativo lleno de aplicaciones propietarias, cada una de ellas requeriría sus propios componentes o librerías que se instalarían en disco y se cargarían en memoria cada vez que se requiera su uso. Además, incluso aunque las aplicaciones usaran componentes comunes, es muy probable que cada aplicación necesitase una versión específica de cada uno de ellos, por lo que nunca existiría uniformidad en el uso de API's, el sistema estaría mucho más congestionado y lleno de distintas versiones de lo mismo, instaladas o funcionando al mismo tiempo. En el software libre sin embargo la mayoría de las distribuciones, en sus versiones estables, incluyen una única versión de cada librería con la que funcionan muchas aplicaciones, por lo que el uso de las cachés, la capacidad requerida de disco y memoria volátil, son mucho más eficientes. [Peor rendimiento del software.]&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Menor seguridad: Por culpa los problemas de versionado comentados anteriormente, nos encontramos con que los programas privativos pueden estar usando (por necesidad) versiones distintas de las más actuales, por lo que hay un riesgo de seguridad al no estar usando las versiones más estables y más libres de problemas de seguridad de acceso o pérdida de información. [Menor fiabilidad en el software.]&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Mayor gasto de ancho de banda en las actualizaciones: Todo componente software ha de actualizarse y mantenerse, por lo que los programas de software privativo también. Como no existe un modo común para todos los programas de software privativo de actualizarse, se tiene que cada uno de ellos tiene su sistema, por lo que se está derrochando ancho de banda en comunicación por la red al actualizar cada programa sus versiones específicas de las librerías sobre las que dependen. En el software libre todo esto es mucho más centralizado ya que es el propio sistema operativo quien se encarga únicamente de gestionar todas las actualizaciones de todo el software instalado, tanto de las librerías como de los programas. [Mayor gasto de recursos.]&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Menor seguridad (frente a código/software malicioso): Esto es un tema que hace correr ríos de "bits" entre tantas opiniones que hay, y como no, yo aquí voy a dar la mía. Por supuesto que es factible la existencia de virus en Linux y otros sistemas operativos libres, y por supuesto que influye en su poca expansión hoy día dos factores importantes: a) Que estos sistemas operativos son minoritarios y por tanto, los programadores de virus prefieren no centrarse en ellos. b) Que estos sistemas operativos normalmente tienen muchos "sabores" (en el caso de Linux, distribuciones), lo que dificultaría a los programadores de virus desenvolverse bien para hacer que sus creaciones afectaran al máximo número de variantes posible (lo cual es una ventaja del software libre en cuanto a seguridad, pero la cual podría verse mermada en un hipotético mundo en el que el número de distribuciones destacadas se redujese drásticamente). Sin embargo, a pesar de todos estos manidos y no falsos argumentos, opino que el modelo de distribución del software libre dificulta también la propagación de virus. En un ejemplo ideal en el que tengamos una distribución que sólo tiene software GPL (que es a lo que tienden todas ellas), se dan las siguientes circunstancias: &lt;ul&gt;&lt;li&gt;El conjunto de la distribución no sólo incluye el "sistema operativo" pelado (como ocurre en el mundo del software propietario, en el que posteriormente hay que ir instalando programas de forma no desatendida), sino que incluye montones de programas para el uso diario del usuario, por tanto esta situación tiende a que, cada vez menos, el usuario se encuentre con la necesidad de instalar software externo, de terceros, sea libre o no.&lt;/li&gt;&lt;li&gt;El software incluido en la distribución normalmente se instala, en un primer momento, desde un conjunto cerrado e inmodificable de programas (un CD o DVD) en el que es impensable por tanto que ocurra un contagio (ojo que estoy hablando del S.O. + los programas; en el caso de Windows por ejemplo lo único disponible en medios de sólo lectura es el Windows, el Office, y el poco software original que dispongamos, para a partir de ahí empezar a instalar el resto de cosas que normalmente se descargan de internet).&lt;/li&gt;&lt;li&gt;Una vez instalado por primera vez el software de una distribución, posteriores instalaciones de programas o actualizaciones (sean de seguridad o no) suelen ocurrir desde los propios sistemas de actualización de la distribución mediante sistemas de repositorios de software remotos. La única forma de contagio que podría existir aquí es la suplantación de los servidores de la distribución, lo que sería bastante improbable pues cada vez tenemos empresas más grandes y, por tanto, responsables ante estas cuestiones de seguridad (¿cuántas veces se ha conseguido hackear la página de Novell?). Luego, esto sumado a que, en la situación de ejemplo ideal en la que nos encontramos, todo software distribuido, aunque precompilado, proviene de unas fuentes libres y abiertas al público, una situación en la que es cuasi-imposible la inclusión de código malicioso (aquí los detractores del software libre soltarían su manido "¡pero si nadie se pone a ver el código luego!", a lo que yo respondería: "el usuario de a pie no, muchos programadores tampoco, pero &lt;strong&gt;otros&lt;/strong&gt; programadores y, sobre todo, los responsables de cada proyecto libre, sí revisan cada modificación").&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Por último, me gustaría mencionar otra ventaja que ocurre hoy día en la práctica (y que no tiene por qué ser una consecuencia del modelo de desarrollo del software libre, sino casi del modelo de desarrollo &lt;strong&gt;actual&lt;/strong&gt; del software propietario, y que podría cambiar): la apuesta por la seguridad frente a la comodidad. Y para explicar esto sólo enunciaré las diferencias que existen entre el sistema de permisos de los sistemas de ficheros en sistemas tipo Unix frente a los de sistemas tipo Windows, para lo cual apuntaré a mis lectores hacía un enlace: &lt;a href="http://www.kriptopolis.org/pregunta-tipica-de-nuevo-usuario-de-linux-que-antivirus"&gt;Pregunta típica de nuevo usuario de Linux: ¿Qué antivirus?&lt;/a&gt;. Podría pensarse que a partir del título del enlace se va a hablar de un modo genérico de la seguridad frente a malware en Linux, pero al final sólo se centra más o menos en este aspecto práctico que yo también quería resaltar (y los comentarios que hay bajo esa entrada se desvían bastante también del tema, aunque sí son buenos puntos de vista, tanto a favor como en contra).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Menor seguridad (frente a defectos software y el tiempo de su actualización): Tener el código fuente disponible &lt;strong&gt;permite&lt;/strong&gt; que la gente lo modifique, y por tanto, permite que la gente lo arregle mucho antes. Con software privativo estás vendido a lo que quiera hacer la empresa con él y cuándo hacerlo.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Mayor complejidad (de mantenimiento): Muchas veces ocurre que si un software puede enlazarse con bibliotecas privativas (a las que no se tiene acceso público para poder cambiarlas) hay que estabilizar API's para que los desarrolladores no tengan que cambiar constantemente su código. Pero esto en ocasiones (por ejemplo a la hora de comparar el kernel Linux con otros) provoca que se tenga que hacer trabajo extra manteniendo API's antiguas, y que el software evolucione más lentamente. [Mayor coste de mantenimiento (recursos humanos).] &lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;Agradecería cualquier corrección o añadido a esta lista, que iré actualizando a medida que vaya recibiendo comentarios o que me vayan surgiendo ideas propias.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 27-ENE-2007&lt;/strong&gt;: Como consecuencia de muchas de estas diferencias, aquí ofrezco &lt;a href="http://lapedrada.freehostia.com/blog/index.php/2006/12/26/10-razones-para-no-usar-linux"&gt;un enlace&lt;/a&gt; a una lista de diferencias entre los dos SO's más populares de cada tipo de software. Ojo, son diferencias prácticas (que ocurren actualmente como consecuencia del tipo de software que son), no teóricas (no que impliquen que son diferencias que siempre se darán entre un sistema operativo libre y otro propietario; aunque algunas sí).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 05-ABR-2007&lt;/strong&gt;: Añadido el elemento nº9 de la lista.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 10-DIC-2007&lt;/strong&gt;: Después de leer &lt;a href="http://www.kroah.com/log/linux/ols_2006_keynote.html"&gt;este brillante artículo sobre el kernel de Linux&lt;/a&gt;, me veo obligado a añadir los elementos nº10 y 11 de la lista (aunque debería añadir más).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-8974065612973247429?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/8974065612973247429/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=8974065612973247429&amp;isPopup=true' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/8974065612973247429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/8974065612973247429'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2006/11/diferencias-tcnicas-entre-software.html' title='Diferencias técnicas entre software libre y software privativo'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-116307265756702058</id><published>2006-11-09T12:23:00.000+01:00</published><updated>2006-11-11T18:01:22.922+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>'beep' no es un programa</title><content type='html'>Pongámonos en antecedentes: últimamente estoy usando ciertos scripts para compilar programas, que en concreto se encargan de lanzar las invocaciones de las autotools necesarias para cada proceso de compilación (autogen, make, make clean, sudo make install, etc.), algo que en particular me parece un poco &lt;em&gt;engorroso y precario&lt;/em&gt;, pero ese tema lo dejaremos para otra entrada.&lt;br /&gt;&lt;br /&gt;El caso es que algunos de estos comandos se ejecutan con privilegios de administrador, por tanto les precede un comando "sudo". Este comando para poder ejecutarse con éxito pide por la entrada estándar la introducción de una contraseña, con el inconveniente de que si tardas mucho en introducirla, salta un &lt;em&gt;time-out&lt;/em&gt; y el comando se cancela. Claro, entonces lo que me ocurre es que cuando quiero compilar un programa grande, invoco el script y lo dejo ejecutándose en una consola y, mientras, me voy a usar otras ventanas para hacer otras cosas, pero cuando vuelvo a la consola para introducir la contraseña, el comando ha expirado y tengo que volver a lanzar el script, procurando la próxima vez estar más atento.&lt;br /&gt;&lt;br /&gt;Entonces aquí es cuando se dice lo de "¡beep al rescate!". Si escribimos en una consola la palabra 'beep', nuestro ordenador pita, y eso es lo que necesitaba poner justo antes de los comandos de &lt;em&gt;sudo&lt;/em&gt; en mi script. Sin embargo, ¿qué ocurrió?:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;./runsvn: line 15: beep: command not found&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;No pasa nada, una simple búsqueda en google y encontré la &lt;a href="http://www.linuxquestions.org/questions/showthread.php?t=322799"&gt;respuesta&lt;/a&gt;: beep no es un comando, sino un alias de la expresión 'echo -en "\007"', por tanto dentro de un script no podemos usarlo. La solución es usar la expresión entera, hasta que alguien empaquete en el &lt;em&gt;bin&lt;/em&gt; de las distribuciones un programita muy simple que invoque esta llamada.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-116307265756702058?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/116307265756702058/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=116307265756702058&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/116307265756702058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/116307265756702058'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2006/11/beep-no-es-un-programa.html' title='&apos;beep&apos; no es un programa'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-116224270346133020</id><published>2006-10-30T21:10:00.000+01:00</published><updated>2006-11-11T18:00:55.982+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mozilla'/><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='WebDev'/><title type='text'>Firefox 2.0 e Internet Explorer 7.0</title><content type='html'>Mucho se ha hablado ya en internet sobre estas dos nuevas versiones de los navegadores más usados. Yo no voy a dar más el coñazo contando lo mismo, pero sí voy a dar mi opinión sobre ello.&lt;br /&gt;&lt;br /&gt;En primer lugar, me parece genial que Microsoft se haya puesto las pilas y haya decidido mejorar un software que, a pesar de su monopolio y su uso masivo, llevaba más de 5 años sin actualizarse, provocando así un estancamiento brutal en lo que a tecnologías web se refiere, pues prácticamente el 100% de los desarrolladores web tenían que amoldarse a este viejo navegador, el cual sigue teniendo muchos fallos e incompatibilidades con los estándares de la industria. Han arreglado problemas con la visualización de &lt;a href="http://es.wikipedia.org/wiki/PNG"&gt;PNGs&lt;/a&gt; y ciertos bugs de &lt;a href="http://es.wikipedia.org/wiki/Hojas_de_estilo_en_cascada"&gt;CSS&lt;/a&gt;, pero aún les queda muchísimo por recorrer, sobre todo en temas de JavaScript (&lt;a href="http://es.wikipedia.org/wiki/EcmaScript"&gt;EcmaScript&lt;/a&gt;) y la API de DOM.&lt;br /&gt;&lt;br /&gt;¿Los bugs que se han encontrado? Me parece una ridiculez pelearse por eso o basarse en ellos para argumentar sobre la calidad de uno u otro navegador. Lo que importa es la gravedad de cada invulnerabilidad y el tiempo de respuesta en su corrección, y he de confesar que, pese a la mayoría de las declaraciones de personas relacionadas con &lt;a href="http://www.mozilla.org/"&gt;Mozilla&lt;/a&gt; sobre el de Firefox, un bug que permite a un desarrollador web colgar el navegador del visitante o volverlo inusable me parece bastante grave (¿quizás ahora no tanto gracias al restaurador de sesiones? ¿o acaso la restauración de la sesión implica la recarga de la página que provoca el bug, invalidando este &lt;em&gt;workaround&lt;/em&gt;?). Además, lleva bastante tiempo sin arreglarse el problema de seguridad más simple del mundo (&lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=61098"&gt;bug&lt;/a&gt;): &lt;strong&gt;poner un alert("hola") bajo un bucle infinito en una página&lt;/strong&gt;. Como las alertas de JavaScript son modales y no son locales a cada pestaña sino que roban el foco de la pestaña actual, y la ejecución de JavaScript no se puede detener, esto se convierte en un bug que representa el mismo problema que el bug anteriormente mencionado y más polemizado: un desarrollador web puede inutilizar la navegación de un visitante.&lt;br /&gt;&lt;br /&gt;Las cosas positivas que veo de todo esto: la gran cuota de uso que están teniendo los navegadores alternativos está provocando que los desarrolladores web en general se preocupen más por los estándares, lo que hace que se pierdan menos usuarios por la falsa y típica sensación de que los navegadores basados en Gecko &lt;em&gt;no son capaces de abrir todas las páginas&lt;/em&gt;. Y esto mismo ha provocado que Microsoft tenga por primera vez que darse cuenta de que tiene competencia y a movilizarse, lo que como consecuencia tendrá una mejor calidad de vida (profesional) de los desarrolladores web y un aumento en la innovación en el campo de las tecnologías web (¿veremos por fin la publicación oficial de CSSv3?). Otra cosa positiva es el apoyo que veo que le dan algunos medios a Firefox: por ejemplo &lt;a href="http://www.informativos.telecinco.es/firefox/fiesta-20/madrid/dn_34783.htm"&gt;Informativos Telecinco&lt;/a&gt; o &lt;a href="http://www.20minutos.es/noticia/165217/0/firefox/navegador/explorer/"&gt;20minutos&lt;/a&gt; (INCISO: atención a la última palabra de la URL del enlace que acabo de poner, no le veo ningún sentido, la verdad), el único periódico que conozco que tiene licencia &lt;a href="http://creativecommons.org/"&gt;Creative Commons&lt;/a&gt; (copyleft) en sus contenidos, lo que creo que influyó bastante para que en &lt;a href="http://www.proyectonave.es/"&gt;NAVE&lt;/a&gt; decidieramos que esta vez el canal RSS incluido por omisión en el navegador apuntara a esta fantástica fuente de noticias.&lt;br /&gt;&lt;br /&gt;En fin, para despedirme, voy a dar un regalito a los usuarios de SUSE: &lt;a href="http://www.rosenauer.org/blog/2006/10/28/mozilla-buildservice-repository/"&gt;Mozilla BuildService Repository&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-116224270346133020?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/116224270346133020/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=116224270346133020&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/116224270346133020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/116224270346133020'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2006/10/firefox-20-e-internet-explorer-70.html' title='Firefox 2.0 e Internet Explorer 7.0'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-116189093703287180</id><published>2006-10-26T21:20:00.000+02:00</published><updated>2006-11-11T18:00:19.627+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Miscelanea'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Monólogo telefónico</title><content type='html'>La gente se cree que la tecnología puede valer para todo y pasa lo que pasa...:&lt;br /&gt;&lt;br /&gt;Hoy ha sonado el teléfono (el fijo), lo cojo, y se oye una voz robótica:&lt;br /&gt;&lt;br /&gt;"Le informamos de que su avería ha sido reparada."&lt;br /&gt;&lt;br /&gt;Me alegré bastante porque llevabamos ya unos días sin poder recibir llamadas.&lt;br /&gt;&lt;br /&gt;"Por favor, pulse 0 si está de acuerdo o 1 si la avería persiste."&lt;br /&gt;&lt;br /&gt;¿Cómo quería el señor robot que supiera si la avería estaba reparada sin colgarle el teléfono y hacer la prueba? Porque el hecho de que la propia Timofónica sea capaz de llamarme no me convence para cerciorarme que &lt;strong&gt;cualquier otro&lt;/strong&gt; puede hacerme una llamada también.&lt;br /&gt;&lt;br /&gt;Para más inri, la elección era binaria (¡como en las elecciones de nuestro país!) así que no pude pulsar un '2': N(o)S(abe)/N(o)C(ontesta)/M(e)A(bstengo)/M(ás)T(arde).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-116189093703287180?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/116189093703287180/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=116189093703287180&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/116189093703287180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/116189093703287180'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2006/10/monlogo-telefnico.html' title='Monólogo telefónico'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-116118390248544174</id><published>2006-10-18T16:51:00.006+02:00</published><updated>2009-03-16T05:30:29.022+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>Mono-Sinergia</title><content type='html'>Estoy viendo últimamente muchos proyectos que están surgiendo, muy interesantes, y que están desarrollados usando &lt;a href="http://www.mono-project.com/"&gt;Mono&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Pero quizás empiezo a ver demasiada diversidad aquí, me recuerda mucho a las decenas de distribuciones de Linux que hace cada municipio de nuestro país...&lt;br /&gt;&lt;br /&gt;Ejemplo: mensajería instantánea.&lt;br /&gt;&lt;br /&gt;Candidatos:&lt;ul&gt;&lt;li&gt;&lt;a href="https://galaxium.bountysource.com/"&gt;Galaxium&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://telepathy.freedesktop.org/wiki/GnomeUI"&gt;Telepathy#&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://tapioca-voip.sourceforge.net/wiki/index.php/Landell"&gt;Landell&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Todos están hechos con Mono. No todos tienen las mismas funcionalidades, pero todos ellos están empezando a nacer y están muy verdes.&lt;br /&gt;&lt;br /&gt;¿Sería mejor una competición entre ellos de la que sólo saldrá uno vivo al estilo de la película &lt;em&gt;Los Inmortales&lt;/em&gt;? ¿O quizás los desarrolladores deberían conocerse y elaborar un proyecto juntos, aprendiendo unos de otros?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 01-NOV-2006&lt;/strong&gt;: Y otros dos más para la colección: &lt;a href="http://www.gnomefiles.org/app.php/Piorun_Jabber_Client"&gt;Piorun&lt;/a&gt; y &lt;a href="http://monkeymessenger.sourceforge.net/"&gt;MonkeyMessenger&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 25-MAR-2007&lt;/strong&gt;: Otro más con un nombre muy "estándar": &lt;a href="http://developer.novell.com/wiki/index.php/GNOME_Live_Messenger"&gt;Gnome Live Messenger&lt;/a&gt;. Y aquí un boceto de un cliente de Jabber hecho en Mono+SystemWindowsForms: Xmpp Client &lt;a href="http://jpobst.blogspot.com/2007/02/better-than-mattress-sale.html"&gt;v1.0&lt;/a&gt; y &lt;a href="http://jpobst.blogspot.com/2008/02/hack-week-2.html"&gt;v1.1&lt;/a&gt;. Parece que en este campo a los programadores les gusta reinventar :)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualizacion 12-MAR-2008&lt;/strong&gt;: Y otro, desarrollado por uno de mis jefes: &lt;a href="http://live.gnome.org/Banter/"&gt;Banter&lt;/a&gt;. Y es sorprendente porque veo que hay otro programa hecho con Mono, tambien por Calvin, y que es para compartir ficheros (aunque parece otro programa de IM): &lt;a href="http://code.google.com/p/giver/"&gt;Giver&lt;/a&gt;, y puedes ver un &lt;a href="http://idea.opensuse.org/content/ideas/easy-file-sharing"&gt;video&lt;/a&gt;. Me pregunto si se podrian haber hecho ambos programas en uno solo.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 21-JUL-2008&lt;/strong&gt;: ¡¡Bueno bueno!! Parece que el mundo IM está muy movidito últimamente:&lt;br /&gt;&lt;br /&gt;- Pidgin está recibiendo código para soportar videoconferencia.&lt;br /&gt;- Ekiga está a punto de caramelo (es la nueva versión de GnomeMeeting).&lt;br /&gt;- Empathy es un nuevo proyecto "unmanaged" de Gnome que utiliza las librerías Telepathy y otras de Nokia. Promete mucho.&lt;br /&gt;- Galaxium [Mono powered] está recibiendo progreso gracias al Google summer of code. Dentro de nada soportará IRC y Jabber. Prometen también videoconferencia en un medio plazo (seguramente reutilizando el código de Banter [Mono powered] que lo permite).&lt;br /&gt;- &lt;a href="http://www.meebey.net/jaws/?gadget=Blog&amp;action=SingleView&amp;id=42"&gt;Smuxi [Mono powered] ha sido publicado&lt;/a&gt;. Parece que está más orientado a IRC desde los inicios, pero también he visto capturas de pantalla usando Jabber.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 24-JUL-2008&lt;/strong&gt;: Me identifico bastante con &lt;a href="http://linuxhaters.blogspot.com/2008/06/good-software-isnt-really-free.html"&gt;esta entrada&lt;/a&gt; de &lt;a href="http://linuxhaters.blogspot.com/"&gt;The Linux Hater&lt;/a&gt; acerca de este tipo de miles de proyectitos pequeños que hacen lo mismo. ¡¡¡¡SINERGIA!!!!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 16-MAR-2009&lt;/strong&gt;: ¡Pues no se acaba la lista! Ahora acaba de salir otro (&lt;a href="http://eric.extremeboredom.net/2009/03/15/336"&gt;Synapse&lt;/a&gt;), hecho en Mono también, pero usando Qyoto (¡los bindings de Mono para QT!). Muy pero que muy interesante.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-116118390248544174?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/116118390248544174/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=116118390248544174&amp;isPopup=true' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/116118390248544174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/116118390248544174'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2006/10/mono-sinergia.html' title='Mono-Sinergia'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-115877219254256842</id><published>2006-09-20T18:51:00.000+02:00</published><updated>2007-12-26T13:06:43.776+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>El software libre, más comercial que nunca</title><content type='html'>Hay mucha gente que confunde comercial con propietario/privativo, cuando puede ocurrir perfectamente que el software libre sea comercial. De hecho, por definición, y según los términos de la &lt;a href="http://www.gnu.org/copyleft/gpl.html"&gt;GPL&lt;/a&gt;, el software libre se puede &lt;strong&gt;vender&lt;/strong&gt;. Lo que no se puede es &lt;strong&gt;cerrar&lt;/strong&gt; (es decir, ocultar las fuentes).&lt;br /&gt;&lt;br /&gt;¿A qué viene esto? Pues a que mucha gente asocia el software libre a los programas que se hacen cuatro gatos en su propio tiempo libre, cuando en realidad ya muchas empresas se dedican a vender soluciones de código abierto.&lt;br /&gt;&lt;br /&gt;Una de las cosas que siempre había pensado es que siempre debería haber un sistema de pago en los programas de gestión de incidencias del estilo de &lt;a href="http://www.bugzilla.org/"&gt;Bugzilla&lt;/a&gt;, &lt;a href="http://knocte.blogspot.com/2006/07/trabajando-con-workflows-vlgame-la.html"&gt;de las que ya hablé en una ocasión anterior&lt;/a&gt;, para así incentivar y demostrar a la gente de que se puede pagar por el software de código abierto, y que también se puede vivir de él (sí, el típico y socorrido argumento de LIBRE NO ES GRATIS). Mucha gente pensará que nadie se pondrá a pagar por algo de lo que luego los demás podrán disponer sin haber aportado pero, ¿si sólo te interesa a ti, por qué no pagarlo tú sólo?&lt;br /&gt;&lt;br /&gt;El caso es que ya hay una iniciativa, del estilo de &lt;a href="http://sourceforge.net/"&gt;SourceForge.net&lt;/a&gt;, que se encarga de ofrecer hosting a proyectos de código abierto con un sistema de gestión de incidencias que integra soporte para gestión de bounties (también llamadas "recompensas"): &lt;a href="http://www.bountysource.com/"&gt;BountySource&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Lo que me evoca esto es que a lo mejor no es muy atrayente donar una suma importante de dinero para una pequeña necesidad que tengamos en un programa de software libre, lo suficientemente grande como para atraer a algún programador que intente implementarla, ¿pero y para aquellas funcionalidades muy solicitadas? Imagino que si un software es usado por, pongamos, 1.000 personas, no sería difícil esperar que 300 de ellas pusiesen 2$ o 2€ cada una si hay algo muy interesante que integrar.&lt;br /&gt;&lt;br /&gt;Creo que esto es el futuro del software libre. Se acabaron los sistemas de votos, se acabaron los buenos programadores no remunerados, ¡bienvenido sea el software libre comercial!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 29-SEP-2006&lt;/strong&gt;: He descubierto en mi libro de marcadores lo que se supone que es la web antecesora de BountySource: &lt;a href="http://bountycounty.org/"&gt;BountyCounty.org&lt;/a&gt;, una web a lo &lt;a href="http://www.rentacoder.com/"&gt;RentACoder&lt;/a&gt;, pero para software libre. Es antecesora porque fue una de las precursoras del sistema de recompensas, ofreciéndolas a modo de noticias e incluso mediante RSS. Pero yo creo que el punto fuerte de BountySource frente a webs del estilo de BountyCounty es que el sistema de recompensas va integrado junto con el hosting de proyectos, y cualquier incidencia se puede convertir en una "bounty". Quizás debería haber un sistema por el cual las incidencias de BountySource que recibiesen propuestas de recompensa se publicasen automáticamente en BountyCounty :)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 6-ENE-2007&lt;/strong&gt;: Hay otra iniciativa interesante que se llama &lt;a href="http://www.pledgebank.com/"&gt;"Banco de Compromisos"&lt;/a&gt;, que por ejemplo alberga la posibilidad de suscribirse al compromiso de pagar $10 para el &lt;a href="http://www.pledgebank.com/nouveaudriver"&gt;desarrollo de un driver libre de NVIDIA&lt;/a&gt; sólo si otras 1000 personas se suman también (al cual ya me he sumado).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 29-ENE-2007&lt;/strong&gt;: Al parecer las recompensas de Gnome se guardan &lt;a href="http://www.gnome.org/bounties/"&gt;aquí&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 05-FEB-2007&lt;/strong&gt;: Sigo odiando que la gente diga "software comercial" cuando en realidad quiere decir privativo/propietario, y lo que más me apena es que incluso hay gente relacionada con el software libre que comete el mismo error, y sino mirad &lt;a href="http://www.db4o.com/about/productinformation/whitepapers/#gpl"&gt;este white paper de DB4O&lt;/a&gt; &gt;:(.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 13-FEB-2007&lt;/strong&gt;: ¡¡&lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=124096"&gt;Estamos de suerte&lt;/a&gt;!! ¿Alguien ofrece recompensa para resolver el bug de las recompensas? ;)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 26-DIC-2007&lt;/strong&gt;: Leyendo teoría sobre el "modelo de bounties" me he encontrado con artículos interesantes como &lt;a href="http://oasis.dit.upm.es/~jantonio/documentos/articulos/bounty.html"&gt;éste&lt;/a&gt;, que parece hecho por alguien de la universidad donde estudié. También encontré lo que parece ser un proyecto que resolverá toda esta cuestión y que debería haber salido en Agosto de este año: &lt;a href="http://www.fossfactory.org"&gt;FOSS Factory&lt;/a&gt; (su &lt;a href="http://www.fossfactory.org/why.php"&gt;disertación de principios&lt;/a&gt; es muy interesante y parece inspirada en lo diametralmente opuesto al artículo anterior, es decir, que sí es factible este modelo a pesar de sus problemas de base). Y como hallazgo colateral: &lt;a href="https://launchpad.net/ubuntu/+bounties"&gt;las bounties de Ubuntu&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-115877219254256842?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/115877219254256842/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=115877219254256842&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/115877219254256842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/115877219254256842'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2006/09/el-software-libre-ms-comercial-que.html' title='El software libre, más comercial que nunca'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-115645163585880240</id><published>2006-08-24T22:33:00.001+02:00</published><updated>2009-08-17T23:48:39.127+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Combatir la procrastinación</title><content type='html'>¿Qué es la &lt;a href="http://es.wikipedia.org/wiki/Procrastinaci%C3%B3n"&gt;procrastinación&lt;/a&gt;? Pinchando en la palabra podemos acceder a su definición más detallada pero básicamente, en nuestra profesión, la podemos resumir como &lt;a href="http://www.chochurro.com/archivos/000136.html"&gt;la pereza de los programadores&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;No se puede averiguar exactamente cuáles son las causas de porqué en alguna ocasión nos vemos aquejados por estos síntomas. Hablando con unos compañeros de trabajo coincidí en que una de las causas más &lt;em&gt;culpables&lt;/em&gt; es el &lt;strong&gt;calor&lt;/strong&gt; (¿a lo mejor por eso las jornadas intensivas en verano son positivas?). Y la verdad es que yo he notado estas dos semanas de atrás que he estado más productivo que al principio del verano y que ahora (porque ya ha vuelto el calor otra vez).&lt;br /&gt;&lt;br /&gt;Otra es la falta de motivación, por supuesto, pero afortunadamente en mi caso personal creo que hace mucho que no me ocurre esto. De todos modos, hay técnicas que los jefes podrían aplicar y que serían bastante menos intrusivas que un aire acondicionado ultrapotente o un emulador de tormentas xD. Una de ellas es el &lt;a href="http://www.pairprogramming.com/"&gt;Pair Programming&lt;/a&gt;, de la que ya hablé &lt;a href="http://knocte.blogspot.com/2005/11/extreme-programming-la-chispa-adecuada.html"&gt;una vez&lt;/a&gt;, que consiste en situar a los desarrolladores/analistas/arquitectos en parejas. En la mayoría de las ocasiones me he encontrado con que la gente piensa que esto reduce el grado de productividad individual en la mitad, cuando yo creo que lo que ocurre es precisamente lo contrario (la duplica), a parte de aportar otras muchas ventajas  que pueden valorarse tanto desde el prisma profesional como incluso del personal:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Se crean mejores diseños y se implementa código de mejor calidad. (Calidad)&lt;/li&gt;&lt;li&gt;Se previenen más errores y por lo tanto se ahorra tiempo que pasar con nuestro amigo el &lt;em&gt;Debugger&lt;/em&gt;. (Productividad)&lt;/li&gt;&lt;li&gt;Se consigue estar concentrado el 99% del tiempo en una tarea concreta. (Productividad)&lt;/li&gt;&lt;li&gt;Se consigue un conocimiento más distribuido y compartido del proyecto por parte de la plantilla; así que es más fácil intercambiar personas entre tareas. (Eficiencia/Productividad)&lt;/li&gt;&lt;li&gt;Se produce un aprendizaje mutuo completamente abrumador sobre nuevas formas de afrontar los problemas (patrones), estilos de programación y técnicas de uso de los entornos de desarrollo. (Calidad/Productividad)&lt;/li&gt;&lt;li&gt;Se eleva el espiritú de equipo a raudales. (Motivación)&lt;/li&gt;&lt;li&gt;Se usa más ese área de tu cerebro empleada para comunicarte, por lo que aumenta tu creatividad. (Motivación/Calidad).&lt;/li&gt;&lt;li&gt;Por último, programar en parejas es mucho más &lt;strong&gt;divertido&lt;/strong&gt;. (Motivación)&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;(Extraído &lt;a href="http://developer.db4o.com/blogs/carl/archive/2006/08/24/28309.aspx"&gt;vía Carl Rosenberg, de DB4O&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;Por supuesto, como ya anuncia Carl en su entrada, el Pair Programming no es perfecto pues uno de sus inconvenientes es el &lt;strong&gt;agotamiento&lt;/strong&gt; (principalmente provocado por la tercera razón de las mencionadas en la lista anterior), el cual se ve compensado con creces con la siguiente afirmación que él sostiene:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;There is only one downside of pairing: It can be very strenuous. I can write code on my own 10 hours a day, 7 days a week and it's always a fresh breeze of flow. Pairing is different. Sometimes two intense 2-hour pairing sessions are absolutely enough for one day to be very tired. That's good, you can have a life too because you get much more work accomplished in less time. I believe that 20 hours of pairing ( 4 hours, 5 days ) produce more valuable output than 70 hours of solo programming ( 10 hours, 7 days).&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;(¿Entendéis ya lo del &lt;em&gt;plano personal&lt;/em&gt; que mencioné antes? ;)&lt;br /&gt;&lt;br /&gt;Por último, no todas las parejas de programadores encajan bien (al igual que ocurre con otros tipos de parejas ;), así que habría que tener cuidado de a qué tipos de programadores juntamos.&lt;br /&gt;&lt;br /&gt;Si alguien quisiera medirse conmigo, yo he usado este articulito denominado &lt;a href="http://www.hacknot.info/hacknot/action/showEntry?eid=81"&gt;Tipos de programadores de la A a la Z&lt;/a&gt; y me he determinado como la siguiente mezcla:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;35% de GG, 20% de HH, 35% de OSO, 9% de ZZ y 1% de RR&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;(Si sólo lees los que yo he escogido, vas a pensar que soy un desarrollador bastante mediocre. Bueno, no lo sé, pero el caso es que debería avisarte de que la mayoría, por no decir todos, están descritos con connotaciones negativas, jejej. Sino, prueba a determinar tu perfil ;)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 12-SEP-2006&lt;/strong&gt;: Después de leer el ensayo &lt;a href="http://biblioweb.sindominio.net/telematica/noosfera.html"&gt;Cultivando la noosfera&lt;/a&gt; de &lt;a href="http://es.wikipedia.org/wiki/Eric_Raymond"&gt;Eric Raymond&lt;/a&gt;, me gustaría citar algunas partes que están en cierta manera relacionadas con esta entrada, ya que habla de la motivación de los programadores, y cita concretamente la diferencia que puede haber entre los componentes de un proyecto de software abierto comparado con los de otro cerrado:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;El veredicto de la historia parece ser que el capitalismo de libre mercado es la forma globalmente óptima de cooperar para la eficiencia económica; quizás, en una forma similar, el juego de la reputación de la cultura del don es la forma globalmente óptima de cooperar para generar (y verificar!) trabajo creativo de alta calidad.&lt;br /&gt;&lt;br /&gt;El soporte de ésta teoría viene de un conjunto de estudios psicológicos en la interacción entre arte y recompensa. Estos estudios han recibido menos atención de la que deberían, en parte quizás porque sus popularizadores han mostrado una tendencia a sobre-interpretarlos en ataques generales contra el libre mercado y la propiedad intelectual. Sin embargo, sus resultados sugieren que algunos tipos de escasez económica en realidad disminuyen la productividad de trabajadores creativos como los programadores.&lt;br /&gt;&lt;br /&gt;La sicóloga Theresa Amabile de la Universidad de Brandeis, resumiendo cautelosamente los resultados de un estudio de 1984 sobre motivación y recompensa, observó: &lt;strong&gt;“Puede ser que el trabajo por comisión, en general, sea menos creativo que el trabajo que es hecho por puro interés”&lt;/strong&gt;. Amabile observa que “Cuanto más compleja la actividad, más es dañada por la recompensa extrínseca”. Paradójicamente, los estudios sugieren que los salarios desinflados no desmotivan, pero si lo hacen los premios y bonos.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Así, sería económicamente inteligente entregar bonos a gente que vende hamburguesas o cava fosos, pero es más inteligente desligar el salario de la calidad en una tienda de programación y dejar elegir a la gente sus propios proyectos. Verdaderamente, éstos resultados sugieren que la única vez que es una buena idea recompensar la calidad en la programación es cuando el programador está tan motivado que él o ella hubieran trabajado sin la recompensa.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Otros investigadores apuntan a los problemas de autonomía y control de creatividad que tanto preocupan a los hackers. “Mientras el grado de experiencia de uno de ser auto-determinado sea limitada,” dice Richard Ryan, profesor de sicología de la Universidad de Rochester, “la creatividad de uno será reducida también.”&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;En general, presentar cualquier tarea como un medio más que como un fin en sí misma parece desmotivar&lt;/strong&gt;. Aun ganando una competición con otros o ganando estima de sus pares puede ser desmotivizante en ésta forma si es experimentada en el trabajo como una recompensa (lo que puede explicar por qué los hackers son culturalmente prohibidos de buscar explícitamente o clamar esa estima).&lt;br /&gt;&lt;br /&gt;Para complicar más el problema de la administración, controlar los dichos verbales parecen ser tan desmotivadores como el pago por el trabajo de uno. Hay una diferencia crítica entre decir, “Te estoy dando ésta recompensa porque reconozco el valor de tu trabajo” y “Estas recibiendo ésta recompensa porque te ajustas a los estándares.” El primero no desmotiva; el segundo sí.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;En éstas observaciones psicológicas podemos decir que un grupo de desarrollo de código abierto será substancialmente más productivo (especialmente a largo plazo, en el cual la creatividad se vuelve más crítica como un multiplicador de la productividad) que un grupo de igual tamaño y conocimiento, de programadores de código cerrado (des)motivados por recompensas.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Verdaderamente, parece que la prescripción de software de mayor productividad es casi una paradoja Zen; &lt;strong&gt;si quieres el producto más eficiente, tienes que dejar de tratar que los programadores produzcan. Manejar su subsistencia, darle sus cabezas y olvidarse de fechas límites. Para un director convencional esto suena locamente indulgente. Pero es exactamente el recipiente con el cual la cultura de código abierto está llevando a cabo su competencia.&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;(Énfasis añadido.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 10-MAR-2007&lt;/strong&gt;: Ya que he hablado en esta entrada sobre personalidades de programadores, voy a añadir &lt;a href="http://www.doolwind.com/index.php?page=11"&gt;un interesante test de personalidad para programadores&lt;/a&gt; que he encontrado. Los resultados que he obtenido son:&lt;br /&gt;&lt;br /&gt;                Your programmer personality type is:&lt;br/&gt;&lt;br/&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;&lt;font size='5'&gt;PHTB&lt;/font&gt;&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;You're a &lt;font size='5'&gt;P&lt;/font&gt;lanner.&lt;/b&gt;&lt;br&gt;&lt;br /&gt;&lt;br /&gt;          You may be slow, but you'll usually find the best solution. If something's worth &lt;br /&gt;          doing, it's worth doing right.&lt;br&gt;&lt;br&gt;&lt;br /&gt;&lt;b&gt;You like coding at a &lt;font size='5'&gt;H&lt;/font&gt;igh level.&lt;/b&gt;&lt;br&gt;&lt;br /&gt;          The world is made up of objects and components, you should create your programs &lt;br /&gt;          in the same way.&lt;br&gt;&lt;br&gt;&lt;br /&gt;&lt;b&gt;You work best in a &lt;font size='5'&gt;T&lt;/font&gt;eam.&lt;/b&gt;&lt;br&gt;&lt;br /&gt;          A good group is better than the sum of it's parts. The only thing better than a &lt;br /&gt;          genius programmer is a cohesive group of genius programmers.&lt;br&gt;&lt;br&gt;&lt;br /&gt;&lt;b&gt;You are a li&lt;font size='5'&gt;B&lt;/font&gt;eral programmer.&lt;/b&gt;&lt;br&gt;&lt;br /&gt;&lt;br /&gt;          Programming is a complex task and you should use white space and comments as &lt;br /&gt;          freely as possible to help simplify the task. We're not writing on paper anymore &lt;br /&gt;          so we can take up as much room as we need.&lt;br&gt;&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 01-FEB-2008&lt;/strong&gt;: Otro test: "&lt;a href="http://www.blogthings.com/whatcolorisyourbrainquiz/"&gt;What colour is your brain?&lt;/a&gt;". Resultado:&lt;br /&gt;&lt;br /&gt;&lt;table width=350 align=center border=0 cellspacing=0 cellpadding=2&gt;&lt;tr&gt;&lt;td bgcolor="#EEEEEE" align=center&gt;&lt;br /&gt;&lt;font face="Georgia, Times New Roman, Times, serif" style='color:black; font-size: 14pt;'&gt;&lt;br /&gt;&lt;strong&gt;Your Brain is Green&lt;/strong&gt;&lt;br /&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td bgcolor="#FFFFFF"&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://www.blogthingsimages.com/whatcolorisyourbrainquiz/green.jpg" height="100" width="100"&gt;&lt;/center&gt;&lt;br /&gt;&lt;font color="#000000"&gt;Of all the brain types, yours has the most balance.&lt;br /&gt;You are able to see all sides to most problems and are a good problem solver.&lt;br /&gt;You need time to work out your thoughts, but you don't get stuck in bad thinking patterns.&lt;br /&gt;You tend to spend a lot of time thinking about the future, philosophy, and relationships (both personal and intellectual).&lt;br /&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://www.blogthings.com/whatcolorisyourbrainquiz/"&gt;What Color Is Your Brain?&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 17-AUG-2009&lt;/strong&gt;: Dos enlaces interesantes relativos a esta entrada que he descubierto hace poco:&lt;br /&gt;&lt;br /&gt;- &lt;a href="http://www.perfil.com/contenidos/2009/08/16/noticia_0021.html"&gt;La procrastinación se hace rentable&lt;/a&gt; (español)&lt;br /&gt;- &lt;a href="http://meneame.net/story/fines-semana-3-dias-por-que-no"&gt;La jornada ultra-intensiva&lt;/a&gt; (&lt;a href="http://www.scientificamerican.com/article.cfm?id=four-day-workweek-energy-environment-economics-utah&amp;page=2"&gt;fuente en inglés&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-115645163585880240?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/115645163585880240/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=115645163585880240&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/115645163585880240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/115645163585880240'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2006/08/combatir-la-procrastinacin.html' title='Combatir la procrastinación'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-115618333167415651</id><published>2006-08-21T19:53:00.000+02:00</published><updated>2006-11-11T17:58:15.081+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Miscelanea'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='WebDev'/><title type='text'>Inventos satánicos</title><content type='html'>Hoy he tenido que desconectar y reconectar un cable RJ-45 y, ¿qué me ha evocado eso? Un grave sentimiento de frustración al encontrarme con un invento satánico: la pequeña protección de plástico que recubre la pestaña del conector RJ-45, que quien la inventó pensaría que facilitaría la tarea de apretar la pestaña para desconectar el cable, ¡¡¡craso error!!! Pues la dificulta en varios órdenes de magnitud.&lt;br /&gt;&lt;br /&gt;Otro invento satánico podría ser la tecla CAPS LOCK, &lt;a href="http://barrapunto.com/article.pl?sid=06/08/17/192201"&gt;como ya otro mortal ha denunciado&lt;/a&gt;, ¿alguna vez la habéis utilizado? Yo creo que sí, hará como 3 o 4 años. En fin, que provoca más dolores de cabeza que utilidades reales.&lt;br /&gt;&lt;br /&gt;Por último, me viene a la cabeza lo que parece una costumbre, y no una invención, pero que tiene el denominador común de la estupidez también entre los diseñadores de páginas web: el botón "Restaurar"/"Borrar" de los formularios web. ¿Alguna vez lo has utilizado? ¿Alguna vez has tenido que borrar de golpe todos los datos que has introducido? ¿No os parece completamente inútil e idiota? Creo, incluso, que hasta me ha provocado algún que otro considerable disgusto por culpa de un mal uso (o uso ausente) del atributo &lt;strong&gt;tabindex&lt;/strong&gt; del &lt;acronym title="eXtensible Hypertext Markup Language"&gt;XHTML&lt;/acronym&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-115618333167415651?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/115618333167415651/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=115618333167415651&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/115618333167415651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/115618333167415651'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2006/08/inventos-satnicos.html' title='Inventos satánicos'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-115590686030201170</id><published>2006-08-18T14:17:00.000+02:00</published><updated>2006-11-11T17:57:15.255+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Miscelanea'/><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>El espacio de Scott</title><content type='html'>¡Qué sorpresa! &lt;a href="http://www.blogger.com/profile/24968840"&gt;Mi hermano&lt;/a&gt; aún no me había dicho que se había creado un blog y he tenido que descubrir&lt;a href="http://espacio-scott.blogspot.com/"&gt;lo&lt;/a&gt; mirando su "frasecita del Messenger" (que por cierto, a ver si predica con el ejemplo y se pone también &lt;a href="http://www.jabberes.org/"&gt;Jabber&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Me ha gustado mucho su "eslogan":&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Un nazi es aquel que defiende las ideas de Hitler. Un anti-nazi es aquel que las entiende.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Al igual que algunas entradas, las cuales no tendré más remedio que calcar aquí de vez en cuando :D&lt;br /&gt;&lt;br /&gt;No me preguntéis de donde viene lo de Scott (ni tampoco lo de knocte ;)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 11-SEP-2006&lt;/strong&gt;: Esta entrada me ha quedado un poco pequeña y &lt;em&gt;huérfana&lt;/em&gt; así que voy a amenizarla un poquito con una foto de mi hermano junto con el gran Richard Stallman:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/4029/1151/1600/vgaStallman.0.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/4029/1151/320/vgaStallman.0.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-115590686030201170?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/115590686030201170/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=115590686030201170&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/115590686030201170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/115590686030201170'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2006/08/el-espacio-de-scott.html' title='El espacio de Scott'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-115393084002497381</id><published>2006-07-26T16:16:00.001+02:00</published><updated>2009-05-13T08:07:03.005+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mozilla'/><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><category scheme='http://www.blogger.com/atom/ns#' term='WebDev'/><title type='text'>Trabajando con "workflows" (válgame la redundancia)</title><content type='html'>Parece que los programas de &lt;em&gt;workflow&lt;/em&gt; están de moda. Sobre todo los basados en web, que son muy fáciles de instalar (para el usuario, que no de administrar para el &lt;em&gt;sysadmin&lt;/em&gt;) pues sólo se necesita un navegador.&lt;br /&gt;&lt;br /&gt;En realidad, ¿qué es un workflow? Es un concepto un poco "cajón de sastre" pero básicamente es un software que te permite archivar, monitorizar, en general ayudarte a gestionar las tareas en un entorno de trabajo. Hay workflows más generales (como &lt;a href="http://www.egroupware.org/"&gt;eGroupWare&lt;/a&gt;) y otros más específicos (como por ejemplo &lt;a href="http://www.bugzilla.org/"&gt;Bugzilla&lt;/a&gt;, que se centra en la gestión de bugs [defectos] en el software).&lt;br /&gt;&lt;br /&gt;La verdad es que yo soy un enamorado de Bugzilla y siempre he pensado que se podría usar como workflow "general" a falta de alguna que otra funcionalidad, como wikis, calendarios con &lt;em&gt;timelines/roadmaps&lt;/em&gt;, etc. Porque yo creo que es el software de gestión de incidencias más maduro y completo que existe.&lt;br /&gt;&lt;br /&gt;¿Y por qué ahora he utilizado la palabra incidencia en lugar de defecto? Pues porque hay una interesante polémica desde hace bastante, en torno a este software, que consiste en que un cierto grupo numeroso de personas abogan porque esta herramienta gestione no sólo defectos o petición de nuevas funcionalidades (&lt;em&gt;enhancements&lt;/em&gt;) sino también simples y llanas "tareas". Luego existen otros dos grupos en contra de esto: los primeros se escudan en que Bugzilla nació para ser un software de seguimiento de defectos del software, y no más, y luego hay otros que aseguran que un "bug" también puede ser válido como acepción general de una tarea.&lt;br /&gt;&lt;br /&gt;Yo a estos últimos les preguntaría ¿la tarea de, por ejemplo, configurar un &lt;a href="http://www.apache.org/"&gt;apache&lt;/a&gt;, se podría considerar un bug? A mí me suena un poco raro... Pero no me voy a casar con nadie, así que yo he encontrado mi solución particular, jugando con los "value fields" de Bugzilla, ya que originalmente contienen:&lt;br /&gt;&lt;br /&gt;Gravedad/&lt;em&gt;Severity: blocker, critical, major, normal, minor, trivial, enhancement&lt;/em&gt;&lt;br /&gt;Prioridad/&lt;em&gt;Priority: P1, P2, P3, P4, P5, P6&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Si nos fijamos, el campo de prioridad es tan poco descriptivo que ni siquiera sabemos si P1 es el más o el menos prioritario; y el segundo es tan ambiguo que parece que en sus valores se están mezclando prioridad, gravedad, complejidad, y tipo de incidencia. Así que yo he optado por usar los valores siguientes&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Severity (gravedad): critical defect, major defect, normal defect, slight defect, improvement, new feature, task.&lt;br /&gt;Priority (prioridad): undecided, showstopper, urgent, normal, interesting, desirable &lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Con esto yo creo que resolvemos el problema de la ambigüedad de la gravedad y a la vez tenemos un &lt;em&gt;workaround&lt;/em&gt; para el &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=88177"&gt;bug #88177&lt;/a&gt; ;)&lt;br /&gt;&lt;br /&gt;Para cubrir las necesidades de workflow que no cubre este "bugzilla parcheado" podemos recurrir a eGroupware o derivados. Sin embargo, puesto que soy un ex-programador &lt;a href="http://www.php.net/"&gt;PHP&lt;/a&gt;, en el sentido en el que cuando me cambio de equipo ya no puedo ni acordarme de lo antiguo, pues siempre me atraerán más los proyectos que se casen con una arquitectura de desarrollo más decente. Es el caso del recién nacido &lt;a href="http://www.nproject.org/"&gt;NProject&lt;/a&gt; el cual usa el eficiente &lt;a href="http://www.castleproject.org/"&gt;CastleProject&lt;/a&gt; (que usa por debajo &lt;a href="http://www.castleproject.org/index.php/MonoRail"&gt;MonoRail&lt;/a&gt;, &lt;a href="http://www.castleproject.org/index.php/ActiveRecord"&gt;ActiveRecord + NHibernate&lt;/a&gt;, etc.) el cual es un framework que es el resultado de un port de &lt;a href="http://www.rubyonrails.org/"&gt;Ruby on Rails&lt;/a&gt; a C#. Parece que en cuestión de frameworks web &lt;acronym title="Modelo Vista Controlador"&gt;MVC&lt;/acronym&gt;, éste junto a &lt;a href="http://mavnet.sourceforge.net/"&gt;Maverick.NET&lt;/a&gt; y &lt;a href="http://www.springframework.net/"&gt;Spring.NET&lt;/a&gt; son los más populares.&lt;br /&gt;&lt;br /&gt;Otros podrían decirme: "¡pues Bugzilla está programado en &lt;a href="http://www.perl.com/"&gt;Perl&lt;/a&gt;, ¿qué me dices de eso?" En cuyo caso respondería: ojalá tuviera tiempo de emprender mi propio proyecto "NBugzilla" o "MonoBugz" para conseguir, no sólo una herramienta divertida de usar, sino divertida de programar y extender. Y es que podríamos hacer uso de una arquitectura bastante apetecible en la que manejar casi cualquier base de datos gracias a &lt;a href="http://www.hibernate.org/"&gt;NHibernate&lt;/a&gt; (al contrario que el Bugzilla actual que sólo soporta &lt;a href="http://www.mysql.com/"&gt;MySQL&lt;/a&gt; y &lt;a href="http://www.postgresql.org/"&gt;PosgreSQL&lt;/a&gt;), o bien una base de objetos como &lt;a href="http://www.db4o.com/"&gt;DB4O&lt;/a&gt;, o bien soporte configurable para &lt;a href="http://permalink.gmane.org/gmane.comp.windows.dotnet.nhibernate.devel/1453"&gt;ambas&lt;/a&gt; &lt;a href="http://db4o-tools.blogspot.com/2006/10/db4o-user-i-met-in-phoenix-airport.html#comment-5639445479008122021"&gt;cosas&lt;/a&gt;, etc. Es un proyecto que propuse en el &lt;a href="http://code.google.com/summerofcode.html"&gt;GoogleSoC&lt;/a&gt; pero que evidentemente distaba mucho de ser aceptado :)&lt;br /&gt;&lt;br /&gt;Volviendo un poco desde las ramas, me gustaría comentar mis andanzas a la hora de instalar este workflow que me gusta tanto: la primera vez lo instalé desde las fuentes en una distro &lt;a href="http://www.mandriva.com/"&gt;Mandriva&lt;/a&gt;, la segunda con un RPM automático (aunque al final no tan automático, ¡oye!) en otra versión mejor de Mandriva, y esta tercera ha sido en una &lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt;, con los siguientes procesos prueba-error (es una pena que &lt;a href="http://www.opensuse.org/"&gt;OpenSUSE&lt;/a&gt; no incluya un paquete para Bugzilla):&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Instalación del paquete del &lt;a href="https://help.ubuntu.com/community/Repositories/Ubuntu#head-5bbef89639d9a7d93fe38f6356dc17847d373096"&gt;repositorio universe&lt;/a&gt;, versión 2.20, con mucho miedo (las cosas no oficiales, es lo que tiene).&lt;/li&gt;&lt;li&gt;Problemas de configuración.&lt;/li&gt;&lt;li&gt;Problemas con el envío de correo.&lt;/li&gt;&lt;li&gt;Desinstalación de sendmail e instalación de postfix.&lt;/li&gt;&lt;li&gt;Errores de corrupción de tablas MySQL.&lt;/li&gt;&lt;li&gt;Reinstalación desde cero.&lt;/li&gt;&lt;li&gt;Problema con los caracteres internacionales (tildes, eñes, ...) en el envío de correo; al parecer resueltos por la versión siguiente (v. 2.22) gracias a UTF-8.&lt;/li&gt;&lt;li&gt;No existe la versión 2.22 en Ubuntu Dapper.&lt;/li&gt;&lt;li&gt;No parece que estén disponibles todavía los paquetes de Ubuntu inestable.&lt;/li&gt;&lt;li&gt;Localización del paquete de &lt;a href="http://www.debian.org/releases/unstable/index.es.html"&gt;Debian Sid (inestable)&lt;/a&gt; con la versión 2.22.&lt;/li&gt;&lt;li&gt;Desinstalación y purgado de lo antiguo.&lt;/li&gt;&lt;li&gt;Instalación del paquete de Debian en Ubuntu.&lt;/li&gt;&lt;li&gt;Problemas de configuración no resueltos.&lt;/li&gt;&lt;li&gt;Tiro la toalla e instalo el programa desde fuentes.&lt;/li&gt;&lt;li&gt;Versión obsoleta del módulo estable de &lt;a href="http://www.cpan.org/"&gt;CPAN&lt;/a&gt; llamado Mail::Mailer.&lt;/li&gt;&lt;li&gt;No hay versión inestable Debian/Ubuntu del mencionado módulo.&lt;/li&gt;&lt;li&gt;Instalación manual del paquete por CPAN.&lt;/li&gt;&lt;li&gt;Configuración correcta.&lt;/li&gt;&lt;li&gt;Todo funcionando correctamente.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Sólo tengo clavada una pequeña &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=11368"&gt;espinita&lt;/a&gt; (al parecer asignada para su implementación en la 2.24).&lt;br /&gt;&lt;br /&gt;Me ha gustado &lt;a href="http://www.bugzilla.org/releases/2.22/new-features.html"&gt;esta versión&lt;/a&gt;: la configuración general del programa (malamente llamada "Parameters") ahora está dividida en secciones por temas; existe opción de editar automáticamente los "Field values" de los que ya os he hablado, sin la antigua necesidad de recurrir a un fichero de texto y especificarlos al inicio para luego ser inmutables.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 03-SEP-2006&lt;/strong&gt;: Parece ser que el concepto de &lt;a href="http://en.wikipedia.org/wiki/Workflow"&gt;Workflow&lt;/a&gt; es algo más subjetivo y diluido como para asociarlo a este tipo de gestores de incidencias. Parece que hay gente que lo atribuye más a programas de gestión de diagramas de flujo (los típicos que dibujamos los informáticos antes de describir un algoritmo), o incluso otros van más por el lado &lt;a href="http://en.wikipedia.org/wiki/Enterprise_resource_planning"&gt;ERP&lt;/a&gt;, y un ejemplo concreto es el &lt;a href="http://www.netbpm.org/"&gt;NetBPM&lt;/a&gt;, &lt;a href="http://www.softcatala.org/~jmas/bloc/pivot/entry.php?id=189"&gt;al parecer&lt;/a&gt; hecho con y usado por el &lt;a href="http://www.mono-project.com/"&gt;proyecto Mono&lt;/a&gt;, que tiende más a la gestión al estilo &lt;a href="http://en.wikipedia.org/wiki/MSProject"&gt;Microsoft Project&lt;/a&gt;, en el que podemos incluso gestionar peticiones de vacaciones de los empleados (una &lt;a href="http://www.netbpm.org/movie/holiday/holiday.html"&gt;demo aquí&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 17-NOV-2006&lt;/strong&gt;: También me gusta más renombrar el estado ASSIGNED a INPROGRESS, lo que se puede hacer editando el fichero &lt;em&gt;/var/www/bugzilla/template/en/default/global/field-descs.none.tmpl&lt;/em&gt; a partir de la versión 2.20.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 2-FEB-2006&lt;/strong&gt;: Resulta que cambiando el valor a INPROGRESS en el punto en el que he mencionado antes, sólo lo cambia para la intefaz gráfica pero el valor lo sigue poniendo como ASSIGNED en los emails enviados, así que voy a investigar como se hace el cambio bien. Otra cosa que echo en falta es un campo nuevo para la "complejidad de la solución estimada", que bien podría dividirse en dos: un campo con valor enumerado, y otro con una estimación de tiempo de resolución de la incidencia.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 20-MAY-2006&lt;/strong&gt;: Vaya, viendo &lt;a href="http://wiki.mozilla.org/Bugzilla:Languages"&gt;esta página sobre Bugzilla&lt;/a&gt; puedo comprobar que se empieza a imponer el sentido común: y es que usar Perl para una herramienta tan grande empieza a verse como un handicap, y se están proponiendo alternativas para reescribirlo desde cero. Como no, he colocado mis propuestas en &lt;a href="http://wiki.mozilla.org/Bugzilla_Talk:Languages"&gt;la página de discusión&lt;/a&gt;, máxime al ver que no existía una sección de Mono y sólo un párrafo hablando de C#. Si Mono no se lleva el gato al agua (que parece ser lo más seguro, dado el poco apoyo que tiene), espero que al menos gane Java.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 04-NOV-2007&lt;/strong&gt;: Otra característica interesante de bugzilla para poderle cambiar la cara y que se adapte más a una herramienta de tipo genérico de ticketing o workflow, es la capacidad de cambiar la palabra "bug" por otra distinta, como "issue" o "ticket". &lt;a href="http://www.nabble.com/%22Bug%22-word-to-be-replaced--tf4743261.html#a13563841"&gt;Aquí más información&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 13-MAY-2009&lt;/strong&gt;: Resulta que el tema de que las prioridades predeterminadas no son entendibles y el bug de que Enhancement sea un valor del campo "Severity" tienen sus correspondientes bugs abiertos!:&lt;br /&gt;- &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=9412"&gt;Bug classification field&lt;/a&gt;: este bug tiene nada más y nada menos que 10 años de edad.&lt;br /&gt;- &lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=488931"&gt;Default Priority values are unclear&lt;/a&gt;: ya he aportado mi sugerencia aquí :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-115393084002497381?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/115393084002497381/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=115393084002497381&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/115393084002497381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/115393084002497381'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2006/07/trabajando-con-workflows-vlgame-la.html' title='Trabajando con &quot;workflows&quot; (válgame la redundancia)'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-115273831547475951</id><published>2006-07-12T23:04:00.000+02:00</published><updated>2007-12-09T21:09:55.274+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Politica'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>La estafa de las religiones</title><content type='html'>Cada vez estoy más convencido de lo siguiente:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Las religiones existen por un motivo muy simple: su marketing se basa en aprovecharse del miedo que casi todo humano tiene ante la muerte y en la superación del dolor y el sufrimiento que padecemos en la vida mediante la promesa de otra vida o estado de existencia que si seguimos los mandatos de esas religiones alcanzaremos tras la muerte.&lt;br /&gt;&lt;br /&gt;Supuestamente lo único bueno que predican las religiones (causa y excusa de muchas guerras y conflictos) es el cómo intentan hacer un mundo en el que todos vivamos en paz y armonía; aunque tampoco se lo debemos a ellas, pues es algo creo yo, natural en la mayoría de las sociedades. Por ejemplo, en el movimiento solidario en España de ONGs las organizaciones religiosas pintan muy poco (Cáritas).&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;(Vía &lt;a href="http://barrapunto.com/comments.pl?sid=62331&amp;cid=725361"&gt;comentario de BarraPunto&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sin embargo, respeto a los religiosos. Igual que ellos deberían respetarme a mí; y para empezar a hacerlo, deberían dejar de estafarme. Sí, estafarme, más claro el agua; porque os recuerdo que aún tenemos un modelo de estado que permite la financiación de organizaciones religiosas. Es decir, que con parte de mis impuestos estoy sufragando una cosa que yo no he pedido. Los religiosos se merecen mi respeto pero las religiones no. La iglesia es un ente que me está estafando mediante un impuesto propio de sociedades medievales.&lt;br /&gt;&lt;br /&gt;Incluso entre los religiosos existe gente con algo más de cordura y que empieza a denunciar este tipo de situaciones:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;¿Por qué yo &lt;a href="http://www.informativos.telecinco.es/visita-papa/valencia-julio/encuentro-mundial-familia/dn_26364.htm"&gt;no te espero, Benedicto XVI&lt;/a&gt;?&lt;ul&gt;&lt;li&gt;Porque atacas la eutanasia y defiendes el valor del sufrimiento.&lt;/li&gt;&lt;li&gt;Por considerar el aborto como homicidio en todos los casos.&lt;/li&gt;&lt;li&gt;Porque haces el divorcio muy difícil y conviertes la vida de “pareja” en un infierno para ellos y sus hijos, provocando la violencia doméstica.&lt;/li&gt;&lt;li&gt;Por impedir otros tipos de matrimonio o uniones, que en nada perjudican ni atacan al matrimonio convencional. Es falso que la familia en España esté sufriendo ningún tipo de ataque, como dicen tus obispos.&lt;/li&gt;&lt;li&gt;Porque tienes homofobia a los homosexuales, al considerarlos una desviación moral, una enfermedad o un pecado.&lt;/li&gt;&lt;li&gt;Por querer enseñar la religión de modo obligatorio a todos, en lugar de reservarla al ámbito familiar o de la comunidad creyente.&lt;/li&gt;&lt;li&gt;Porque no respetas el laicismo, que es el estado primitivo del individuo.&lt;/li&gt;&lt;li&gt;Por oponerte a la utilización de células-madre, que tantas vidas podrían salvar.&lt;/li&gt;&lt;li&gt;Porque sigues bautizando a los niños, seres inconscientes del acto que reciben.&lt;/li&gt;&lt;li&gt;Por convertir la comunión de los niños y niñas en un acto de ostentación y riqueza, contraviniendo la vida de Jesús-Pobre.&lt;/li&gt;&lt;li&gt;Por callar tus obispos y sacerdotes, en las fiestas de los pueblos, con motivo de honrar a santos y a vírgenes, cuando se tortura y mata a animales indefensos e inocentes.&lt;/li&gt;&lt;li&gt;Porque rechazas el preservativo, elemento ndispensable para regular el número de hijos y evitar el &lt;acronym title="Síndrome de Inmuno-Deficiencia Adquirida"&gt;SIDA&lt;/acronym&gt;.&lt;/li&gt;&lt;li&gt;Por acumular riquezas en el Vaticano y en todos los templos de tu Iglesia, habiendo dicho Jesús que Él no tenía dónde reclinar la cabeza.&lt;/li&gt;&lt;li&gt;Porque tú y la jerarquía que diriges deseáis el poder, cuando el Maestro vino a servir y no a ser servido.&lt;/li&gt;&lt;li&gt;Por rechazar la píldora, medio eficaz para ejercer una paternidad responsable.&lt;/li&gt;&lt;li&gt;Por imponer el celibato a todos los sacerdotes, sabiendo que no fue así en la Iglesia Primitiva.&lt;/li&gt;&lt;li&gt;Porque habéis convertido la Iglesia en una burocracia descomunal, alejándoos de la simplicidad de los primeros cristianos.&lt;/li&gt;&lt;li&gt;Porque gran parte del clero se empeña en vivir “del altar”, en lugar de ganar el pan con el sudor de vuestra frente y repartir gratis lo que gratis se os dio.&lt;/li&gt;&lt;li&gt;Porque os falta contundencia en rechazar las guerras y condenar a quienes las inician.&lt;/li&gt;&lt;li&gt;Por no oponeros frontalmente a los estados que aplican la pena de muerte: China, Irán, USA, etc.&lt;/li&gt;&lt;li&gt;Porque dais un mensaje de la Navidad equivocado. Cristo no vuelve a nacer. Y si está en algún lugar, está en los pobres, emigrantes, desheredados, etc.&lt;/li&gt;&lt;li&gt;Por transmitir durante la Semana Santa un mensaje que es ajeno al Evangelio. El sufrir por los demás es heróico; pero esto no trasciende. Dar la vida por los otros sí que encaja con la Pasión.&lt;/li&gt;&lt;li&gt;Porque vas a provocar un gasto público (del dinero de creyentes y &lt;strong&gt;no creyentes&lt;/strong&gt;) que es &lt;a href="http://www.levante-emv.com/secciones/noticia.jsp?pIdNoticia=203979&amp;pIdSeccion=19&amp;pNumEjemplar=3177"&gt;escandaloso&lt;/a&gt;: adorno floral (46.000 €), bandas de música cada “x” metros, escenario descomunal (600.000 €), alojamientos de miles de curas y obispos, pintado de 80 km. de vallas de blanco y amarillo, etc.&lt;/li&gt;&lt;li&gt;Por no colocar a la mujer en el lugar que le corresponde en la Iglesia que diriges.&lt;/li&gt;&lt;li&gt;Porque no pediste perdón cuando fuiste a Auschwitz, ya que el Vaticano y la Iglesia contribuyeron a que murieran muchos judíos en los campos de concentración.&lt;/li&gt;&lt;li&gt;Por haber perseguido y condenado la &lt;a href="http://es.wikipedia.org/wiki/Teolog%C3%ADa_de_la_liberaci%C3%B3n"&gt;Teología de la Liberación&lt;/a&gt;, la Teología de los Pobres. Cuando dirigías la Congregación del “Santo” (¿?) Oficio.&lt;/li&gt;&lt;li&gt;Porque tu venida se va a convertir en un espectáculo de masas, en un gran circo, donde se podrán comprar y vender todo tipo de “recuerdos”, pero que quedará un gran vacio. (Recuerda la expulsión de los mercaderes del Templo).&lt;/li&gt;&lt;li&gt;Por haber puesto una condición para tu venida (tú o tus enviados): un micro-clima para ti. Unos cuantos “puentes” más allá, en el de Ademuz, hay centenares de subsaharianos que no tienen ni lo más elemental para tener una vida digna.&lt;/li&gt;&lt;li&gt;Porque el Altar donde vas a celebrar la Misa es un ejemplo de derroche suntuoso. Existen en nuestra Comunidad barracones en lugar de aulas, listas muy largas de espera para pacientes, suciedad y ratas en los barrios de Valencia, etc.&lt;/li&gt;&lt;li&gt;Por tu intromisión en los asuntos internos del gobierno de España (recuerda tu última entrevista con el Embajador Español).&lt;/li&gt;&lt;li&gt;Porque tus obispos se meten en asuntos políticos, siempre decantados a favor de la derecha más reaccionaria.&lt;/li&gt;&lt;li&gt;Porque el Congreso Teológico que se celebrará días antes de tu venida, estará manipulado por las personas más integristas, como son el Opus Dei, los Legionarios o los “kikos”.&lt;/li&gt;&lt;li&gt;Por haber manipulado, los que han preparado tu venida, a familias pobres del Tercer Mundo, que van a vender granjas, animales y terrenos para venir a verte.&lt;/li&gt;&lt;li&gt;Porque creo que es incompatible el ser la Cabeza Visible de los creyentes y Jefe del Estado Vaticano. “Mi reino no es de este mundo”, dijo Jesús ante Pilatos (Juan 18,36).&lt;/li&gt;&lt;li&gt;Porque la mayoría de obispos y sacerdotes no denunciáis la tortura en los países donde se practica (se os va el tiempo hablando de sexo y temas relacionados con el sexo).&lt;/li&gt;&lt;li&gt;Por no denunciar las agresiones a nuestro Planeta, que salió de las manos del Creador mucho más hermoso de lo que está hoy.&lt;/li&gt;&lt;/ul&gt;&lt;/em&gt;(Vía &lt;a href="http://necudeco.blogsome.com/2006/07/07/carta-de-un-sacerdote-valenciano/"&gt;NeCuDeCo&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;Luego, muchos religiosos (o casi, más que eso, manipuladores) sostienen que los agnósticos o ateos carecen de valores. Lo que ocurre es que nuestros valores no están basados en el miedo o en conceptos de dudosa existencia; son valores en sí mismos, no tienen razón de existencia (&lt;a href="http://www.despacho101.com/press/maria"&gt;¿o sí?&lt;/a&gt;), pero existen.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización&lt;/strong&gt;: He encontrado una &lt;a href="http://blog.tapiasbravo.com/?p=22"&gt;entrada de bitácora&lt;/a&gt; similar a la mía pero bastante mejor, de la cual extraeré una cita de &lt;a href="http://en.wikipedia.org/wiki/Peter_Atkins"&gt;Peter Atkins&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;“...la religión discute los temas difíciles con guerras, terror y coerción y construye una red de ideas en conflicto que esconden la ignorancia bajo un manto de palabras &lt;a href="http://buscon.rae.es/draeI/SrvltGUIBusUsual?LEMA=grandilocuencia&amp;TIPO_HTML=2&amp;FORMATO=ampliado&amp;sourceid=mozilla-search"&gt;grandi&lt;/a&gt;&lt;a href="http://buscon.rae.es/draeI/SrvltGUIBusUsual?LEMA=elocuencia&amp;TIPO_HTML=2&amp;FORMATO=ampliado&amp;sourceid=mozilla-search"&gt;locuentes &lt;/a&gt; y vacías.”&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 09-DIC-2007&lt;/strong&gt;: Increíble &lt;a href="http://www.ted.com/talks/view/id/113"&gt;el vídeo de Richard Dawkins en el que nos pide que los ateos/agnósticos dejemos de ser tan respetuosos con los religiosos&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-115273831547475951?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/115273831547475951/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=115273831547475951&amp;isPopup=true' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/115273831547475951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/115273831547475951'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2006/07/la-estafa-de-las-religiones.html' title='La estafa de las religiones'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-115264561645277882</id><published>2006-07-11T21:18:00.000+02:00</published><updated>2007-05-23T00:46:45.950+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Miscelanea'/><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>¿Felicidad sin objetivos?</title><content type='html'>La felicidad es cumplir el objetivo de tu vida (o, en su versión &lt;em&gt;gerundiana&lt;/em&gt;, "ver que lo estás cumpliendo", porque sino, ¿qué pasa cuando ya lo has cumplido?), pero ¿qué pasa si un día te encuentras sin objetivo?&lt;br /&gt;&lt;br /&gt;Cito:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;No obstante, el esfuerzo puesto al servicio de un sentido puede ser frustrante, la cual puede llevar a la neurosis, especialmente a aquella llamada neurosis noogénica, o lo que otros suelen llamar neurosis existencial o espiritual. Más que nunca, las personas actuales están experimentando sus vidas como vacías, faltas de sentido, sin propósito, sin objetivo alguno..., y parece ser que responden a estas experiencias con comportamientos inusuales que les daña a sí mismos, a otros, a la sociedad o a los tres.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Vía &lt;a href="http://barrapunto.com/comments.pl?sid=64150&amp;cid=772120"&gt;comentario de BarraPunto&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;Por el momento, dudo que a corto o medio plazo consiga uno de mis objetivos:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Para mí no hay nada más poderoso en este planeta que la lucha que un&lt;br /&gt;hombre emprende cuando siente que ha perdido la libertad. Quizá eso&lt;br /&gt;explica porqué miles de personas en el mundo se unirán a nuestra lucha&lt;br /&gt;cuando descubran hasta que punto son prisioneros del sistema de&lt;br /&gt;propiedad intelectual actual, ese que les impide crear, pensar o&lt;br /&gt;imaginar por miedo a estar delinquiendo porque una ley dice que los&lt;br /&gt;pensamientos, las ideas y hasta los sentimientos pueden tener amo.&lt;br /&gt;&lt;br /&gt;Eso es lo que yo pienso pero &lt;a href="http://www.youtube.com/watch?v=Dx0qGJCm-qU"&gt;aquí tienes a Mandela hablando de Ubuntu&lt;/a&gt;. Y&lt;br /&gt;seguro que es una voz más autorizada que la mia para expresar lo que es&lt;br /&gt;el amor a la Humanidad y porque un hombre ni debe poseer a otro ni&lt;br /&gt;siquiera creer que sus ideas son de su propiedad, y las puede usar en&lt;br /&gt;exclusiva y de forma excluyente.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Vía &lt;a href="http://www.juantomas.net/2006/06/30/la-direferencia-entre-escuchar-a-los-ciudadanos-y-a-los-proveedores/"&gt;Juantomás&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 05-NOV-2006:&lt;/strong&gt; Me he sentido increiblemente identificado con estos comentarios de Steve Jobs:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Sometimes life hits you in the head with a brick. Don't lose faith. I'm convinced that the only thing that kept me going was that I loved what I did. You've got to find what you love. And that is as true for your work as it is for your lovers. Your work is going to fill a large part of your life, and the only way to be truly satisfied is to do what you believe is great work. And the only way to do great work is to love what you do. If you haven't found it yet, keep looking. Don't settle. As with all matters of the heart, you'll know when you find it. And, like any great relationship, it just gets better and better as the years roll on. So keep looking until you find it. Don't settle.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Extraído de &lt;a href="http://news-service.stanford.edu/news/2005/june15/jobs-061505.html"&gt;You've got to find what you love&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 20-MAY-2007&lt;/strong&gt;: Aquí el vídeo de Steve Jobs cuando pronunció aquel discurso:&lt;br /&gt;&lt;br /&gt;&lt;embed style="width: 400px; height: 326px;" id="VideoPlayback" type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docId=3014637678488153340&amp;amp;hl=es" flashvars=""&gt;&lt;/embed&gt;&lt;br /&gt;&lt;a href="http://video.google.com/googleplayer.swf?docId=3014637678488153340&amp;amp;hl=es"&gt;Pincha aquí si no lo ves embebido.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-115264561645277882?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/115264561645277882/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=115264561645277882&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/115264561645277882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/115264561645277882'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2006/07/felicidad-sin-objetivos.html' title='¿Felicidad sin objetivos?'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-115176996272259641</id><published>2006-07-01T17:54:00.001+02:00</published><updated>2009-02-16T01:01:01.287+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Miscelanea'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>Mono cabrón</title><content type='html'>Bueno, no me suele gustar mucho que inunden mi correo de reenvíos en cadena (&lt;em&gt;forwards&lt;/em&gt;), pero esta vez tengo que rescatar uno que me ha encantado (me he estado riendo un buen rato). Además, como en mi blog hablo mucho de &lt;a href="http://www.mono-project.com/"&gt;Mono&lt;/a&gt;, pues no queda mal del todo incluso un chiste sobre un MONO :)&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;br /&gt;Un señor va de cacería a África y se lleva a su perro para no sentirse solo en ese lugar. Un día, ya en la expedición, el perro, correteando tras unas mariposas se aleja del grupo, se extravía y comienza a vagar solo por la selva.&lt;br /&gt;&lt;br /&gt;En eso ve a lo lejos que viene una pantera enorme a toda carrera. Al ver que la pantera lo va a devorar, piensa rápido qué hacer. Ve un montón de huesos de un animal muerto y empieza a   mordisquearlos. Entonces, cuando la pantera está a punto de atacarlo, el perrito dice:&lt;br /&gt;&lt;br /&gt;- ¡Ah!, ¡qué rica pantera me acabo de comer!&lt;br /&gt;&lt;br /&gt;La pantera alcanza a escuchar y frenando en seco, gira y sale despavorida pensando "¡Quién sabe qué animal será ese, no me vaya a comer a mí también!"&lt;br /&gt;&lt;br /&gt;Un mono que andaba trepando en un árbol cercano y que había visto y oído la escena, sale corriendo tras la pantera para contarle cómo le engañó el perrito:&lt;br /&gt;&lt;br /&gt;- Serás idiota, esos huesos ya estaban ahí, además es un simple perro.&lt;br /&gt;&lt;br /&gt;El perrito alcanza a darse cuenta de la cabronada del mono. Después que el mono le contó a la pantera la historia de lo que vio, esta última muy cabreada le dice al mono:&lt;br /&gt;&lt;br /&gt;-¡Súbete a mi espalda, vamos donde ese perro a ver quién se come a quién!&lt;br /&gt;&lt;br /&gt;Y salen corriendo a buscar al perrito. El perrito ve a lo lejos que viene nuevamente la pantera, esta vez con el mono chismoso. "¿¿Y ahora qué hago??", piensa todo asustado el perrito. Entonces, en vez de salir corriendo, se queda sentado dándoles la espalda como si no los hubiera visto, y en cuanto la pantera está a punto de atacarlo de nuevo, el perrito dice:&lt;br /&gt;&lt;br /&gt;- ¡Este mono cabrón hace como media hora que lo mandé a traerme otra pantera y todavía no aparece!&lt;br /&gt;&lt;br /&gt;MORALEJA: "EN MOMENTOS DE CRISIS, SOLO LA IMAGINACIÓN ES MÁS IMPORTANTE QUE EL CONOCIMIENTO"&lt;br /&gt;&lt;br /&gt;Procura ser imaginativo como el PERRO.&lt;br /&gt;Evita ser gilipollas como la PANTERA.&lt;br /&gt;&lt;strong&gt;Pero nunca seas tan cabrón como el MONO.&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 12-ENE-2007&lt;/strong&gt;: Parece que el &lt;a href="http://www.capitanplaneta.com/"&gt;Capitán Planeta&lt;/a&gt; ha conocido &lt;a href="http://www.capitanplaneta.com/2007/01/12/a-los-perros-no-les-damos-asco/"&gt;de primera mano&lt;/a&gt; a nuestro perrito; o al menos a uno tan espabilado como él ;)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 18-ABR-2007&lt;/strong&gt;: Me he reído mucho con &lt;a href="http://blogs.tedneward.com/2007/04/11/Management+Lessons+For+Developers.aspx"&gt;algunos chistes en inglés que cuenta Ted Neward&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 21-NOV-2007&lt;/strong&gt;: Ahora un poquito de humor geek: &lt;a href="http://wtf.microsiervos.com/avances/nuevas-extensiones-xhtml.html"&gt;nuevas tags XHTML&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 21-NOV-2007&lt;/strong&gt;: &lt;a href="http://imageeknation.blogspot.com/2009/02/como-murio-martin-mcfly.html"&gt;¡Más humor geek!&lt;/a&gt; (esto de hecho lo he pensado más de una vez como un fallo de todas estas películas de viajes en el tiempo :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-115176996272259641?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/115176996272259641/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=115176996272259641&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/115176996272259641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/115176996272259641'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2006/07/mono-cabrn.html' title='Mono cabrón'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-114996993009275951</id><published>2006-06-10T22:05:00.001+02:00</published><updated>2008-04-05T18:42:08.613+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Sencillamente BRILLANTE</title><content type='html'>No dejes de ver este pequeño vídeo:&lt;br /&gt;&lt;br /&gt;&lt;object height="350" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/F5WLEu4UIds" &gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/F5WLEu4UIds" type="application/x-shockwave-flash" height="350" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/v/F5WLEu4UIds"&gt;Enlace al vídeo (por si no lo ves embebido).&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Jejeje, me encanta su nuevo eslogan: &lt;em&gt;The Future is Open&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;Al hilo de este tema, me gustaría también citar algo igualmente brillante: en una &lt;a href="http://barrapunto.com/article.pl?sid=05/07/21/184229"&gt;antigua entrada de BarraPunto en la que se hablaban de ciertas declaraciones de la CEO de AutoDesk sobre el software de código abierto&lt;/a&gt;, hubo un &lt;a href="http://barrapunto.com/comments.pl?sid=54880&amp;cid=556088"&gt;comentario&lt;/a&gt; que demuestra un anquilosado punto de vista sobre la industria del software y su &lt;a href="http://barrapunto.com/comments.pl?sid=54880&amp;cid=556127"&gt;respuesta&lt;/a&gt;, que me merece un 10, por su ironía y atino:&lt;br /&gt;&lt;br /&gt;pobrecito hablador:&lt;br /&gt;&lt;em&gt;Estoy en este mundillo, como todos los demas en Barrapunto, pero de verdad, no estoy de acuerdo con lo que dices. El problema que tienen muchas empresas como Autodesk es real. Hay miles de trabajadores que tienen que cobrar a final de mes, y si no venden copias, pues la gente no cobra, y la empresa se va al garete y no hay mas Autocad. Las cosas funcionan así. Las empresas que venden software venden un producto, y tienen el mismo derecho a cobrar por lo que fabrican que una empresa, digamos, de muebles. Que ya se que los bits son bits, y que cualquiera puede facilmente hacerse su copia, y que en Internet circulan copias de absolutamente todo. Sí... pero no deja de ser un robo. Todos lo hacemos, es decir, todos le robarmos su producto a muchas compañías de software. Si no, dime por favor como llamarle a eso y de qué propones que vivan, no sólo lo CEOs que me dan igual, lo otros cientos de curritos que trabajan para alguna de estas empresas. Saludos&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://barrapunto.com/~turbidostato/"&gt;turbidostato&lt;/a&gt;:&lt;br /&gt;&lt;em&gt;"Estoy en este mundillo, como todos los demas en Barrapunto, pero de verdad, no estoy de acuerdo con lo que dices. El problema que tienen muchas empresas como Autodesk es real."&lt;br /&gt;&lt;br /&gt;Yo estoy en el mundillo de los serenos. Es más: soy sereno diplomado. Desde que a los de Yale les dio por inventar el "llavín de puntos", resulta que la cerraduras de los portales, en lugar de ser "de las de antes", utilizan llaves que cualquiera puede llevar en el bolsillo. ¿Resultado? Los serenos al paro.&lt;br /&gt;&lt;br /&gt;Eso no sólo no es justo, sino que deja a un montón de honrados trabajadores en la calle, que tienen sus familias y que tienen que cobrar a fin de mes. Propongo una ley que prohiba los llavines Yale, como mínimo en las puertas de las comunidades, que ya vale de competencia tecnológica injusta, hombre.&lt;br /&gt;&lt;br /&gt;Es más: la gentuza que pone en sus portarles pistones para llavines de tipo Yale, nos están quitando el sueldo, ¿qué se puede decir de esos impresentables, salvo que son unos ladrones, que están quitando el pan de la boca de mis hijos?&lt;br /&gt;&lt;br /&gt;¿De qué si no, se propone que vivamos los cientos (miles, más bien) de serenos si nos quitan aquello que ha sido nuestro trabajo durante tantos años?&lt;br /&gt;&lt;br /&gt;PS: &lt;strong&gt;"There has grown up in the minds of certain groups in this country the notion that because a man or corporation has made a profit out of the public for a number of years, the government and the courts are charged with the duty of guaranteeing such profit in the future, even in the face of changing circumstances and contrary to public interest. This strange doctrine is not supported by statute or common law. Neither individuals nor corporations have any right to come into court and ask that the clock of history be stopped, or turned back."&lt;/strong&gt; -- Robert Heinlein&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualizacion 5-ABR-2008&lt;/strong&gt;: He encontrado otro video brillante en el que se publicita Linux, &lt;a href="http://necudeco.com/index.php/2008/04/04/todo-es-posible-con-linux/"&gt;via Necudeco&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/PLHjT5-XM9o&amp;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/PLHjT5-XM9o&amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=PLHjT5-XM9o"&gt;Enlace al video (por si no lo ves embebido).&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-114996993009275951?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/114996993009275951/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=114996993009275951&amp;isPopup=true' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/114996993009275951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/114996993009275951'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2006/06/sencillamente-brillante.html' title='Sencillamente BRILLANTE'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-114975774084017957</id><published>2006-06-08T11:08:00.001+02:00</published><updated>2009-03-24T03:12:24.095+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>iFolder: no tan bonito como lo pintan</title><content type='html'>Bueno, pues llevaba siguiéndole la pista, bastante entusiasmado, al proyecto &lt;a href="http://www.ifolder.com/"&gt;iFolder&lt;/a&gt; de &lt;a href="http://www.novell.com/"&gt;Novell&lt;/a&gt; porque parecía una herramienta muy interesante para sincronización de ficheros entre varios equipos (y así tener la última versión de todos tus ficheros replicada y actualizada en cualquier lugar que necesites), y además estaba desarrollada con &lt;a href="http://www.mono-project.com/"&gt;Mono&lt;/a&gt;, y por tanto era multiplataforma.&lt;br /&gt;&lt;br /&gt;Hace unos meses, sólo la versión de sincronización modo P2P estaba disponible bajo licencia libre, pero hace poco liberaron completamente el componente de servidor de este programa.&lt;br /&gt;&lt;br /&gt;Así que me puse manos a la obra a leer guías, manuales, referencias... E instalé con éxito mi sistema de réplicas. El problema vino cuando empecé a ponerlo a prueba de verdad: con una carpeta &lt;em&gt;home&lt;/em&gt; de 3GB.&lt;br /&gt;&lt;br /&gt;Empecé a encontrar &lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=176587"&gt;bugs de rendimiento de interfaz&lt;/a&gt; y extraños &lt;a href="http://www.ifolder.com/index.php/Client_Troubleshooting:_n_items_not_synchronized"&gt;bugs relativos al uso interno de la base de datos embebida&lt;/a&gt;. También me di cuenta de que para estas cantidades tan grandes de datos, la comprobación de cambios era muy lenta (del orden de media hora) y además consumía mucho tiempo de procesador.&lt;br /&gt;&lt;br /&gt;Quizás es que aún el software no es demasiado maduro y deben pulirlo. Porque también me llevé un buen susto cuando un día me encontré que me había borrado todos los archivos (dejando sólo los directorios) en uno de los &lt;em&gt;peers&lt;/em&gt;, lo que me llevó a pensar que eso había ocurrido por culpa de una sincronización, es decir, que el servidor también se había quedado sin archivos (!!!!!), pero afortunadamente estaba equivocado. Esto me lleva a pensar, también, que aunque con un software de este tipo tengamos replicados los datos en &lt;strong&gt;n&lt;/strong&gt; lugares, sigue necesitándose una solución de backup que haga &lt;em&gt;snapshots&lt;/em&gt; cada cierto tiempo (dos semanas, por ejemplo), por lo que pudiera pasar.&lt;br /&gt;&lt;br /&gt;El caso es que voy a dejar de usar iFolder de momento y voy a buscar alternativas. &lt;strong&gt;&lt;a href="http://samba.anu.edu.au/rsync/"&gt;rsync&lt;/a&gt;&lt;/strong&gt; parece muy maduro y eficiente, pero no sirve para un escenario en el que puedan propagarse los cambios bidireccionalmente entre más de dos equipos. Así que parece que voy a tener que lidiar con una &lt;em&gt;&lt;a href="http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-manual.html#usingmultiple"&gt;topología en estrella&lt;/a&gt;&lt;/em&gt; de la mano de &lt;a href="http://www.cis.upenn.edu/~bcpierce/unison/"&gt;Unison&lt;/a&gt;, el cual parece un software también bastante maduro, de propósitos similares a iFolder, y multiplataforma. Aquí hay una &lt;a href="http://web.mit.edu/pgbovine/www/unison_guide.htm"&gt;guía&lt;/a&gt; de la cual estoy dando buena cuenta.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización&lt;/strong&gt;: Otro proyecto del que hay que estar al loro: &lt;a href="http://www.conduit-project.org/"&gt;Conduit&lt;/a&gt;. La pena es que está hecho en &lt;a href="http://es.wikipedia.org/wiki/Python"&gt;Python&lt;/a&gt; :(&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 24-AGO-2006&lt;/strong&gt;: Más &lt;a href="http://permalink.gmane.org/gmane.comp.file-systems.ifolder.devel/27"&gt;malas noticias en la lista de correo de iFolder-devel&lt;/a&gt;, junto con &lt;a href="http://permalink.gmane.org/gmane.comp.file-systems.ifolder.devel/30"&gt;otro mensaje en plan "que no cunda el pánico"&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 29-NOV-2006&lt;/strong&gt;: Parece que por fin están empezando a &lt;a href="http://www.novell.com/coolblogs/?p=969"&gt;mover el culo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 23-MAR-2009&lt;/strong&gt;: Después de un aluvión de críticas a Novell y &lt;a href="https://bugzilla.novell.com/show_bug.cgi?id=362541"&gt;un bug en el que se exige el código fuente de una versión publicada como GPL&lt;/a&gt; (pero cuyos parches no han llegado al SVN oficial) al que estamos suscritos bastantes empleados, al parecer por fin se han decidido a &lt;a href="http://zonker.opensuse.org/2009/03/23/update-on-ifolder/"&gt;mover ficha&lt;/a&gt;. ¡Enhorabuena y gracias (a todos mis compañeros que hayan estado envueltos en este tema)!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-114975774084017957?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/114975774084017957/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=114975774084017957&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/114975774084017957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/114975774084017957'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2006/06/ifolder-no-tan-bonito-como-lo-pintan.html' title='iFolder: no tan bonito como lo pintan'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-114911393605113429</id><published>2006-06-01T00:18:00.001+02:00</published><updated>2010-05-09T14:19:58.295+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Miscelanea'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Fallo en Matrix</title><content type='html'>Soy un verdadero apasionado de cosas como los &lt;a href="http://knocte.blogspot.com/2005/11/internauta-no-onironauta.html"&gt;sueños lúcidos&lt;/a&gt; o, en este caso, los &lt;a href="http://es.wikipedia.org/wiki/Dejavu"&gt;'déjà vu'&lt;/a&gt;s, que en la saga &lt;a href="http://www.whatisthematrix.com/"&gt;Matrix&lt;/a&gt; son considerados como un "fallo". El caso es que parece que en realidad lo más probable es que sea un fallo, pero de la memoria, y me ha dejado preocupado cuando leyendo sobre ello se menciona que suele ser frecuente en esquizofrénicos o epilépticos (o por excesiva ansiedad, al fin y al cabo debido a un fallo neurológico) porque yo los experimento en bastantes ocasiones :)&lt;br /&gt;&lt;br /&gt;De hecho, se menciona que la edad en la que más ocurren está en la franja 15-25, lo que me da mucha lástima porque, claro, a mí me parece una sensación curiosa y agradable, pero esto quiere decir que desde ahora empezaré a experimentarlos menos...&lt;br /&gt;&lt;br /&gt;Al menos &lt;a href="http://www.tendencias21.net/Medicos-britanicos-recrean-vivencias-de-deja-vu-en-laboratorio_a864.html"&gt;han conseguido reproducirlos en laboratorio&lt;/a&gt;, lo que me llena de consuelo por si alguna vez la consecuencia de esto es que inventen una pastilla para poder recrearlos.&lt;br /&gt;&lt;br /&gt;También tenemos un concepto parecido, pero mucho menos agradable: &lt;a href="http://es.wikipedia.org/wiki/Alucinaci%C3%B3n_hipnog%C3%B3gica"&gt;la alucinación hipnogógica&lt;/a&gt;. Hay varias sensaciones que se atribuyen a este concepto pero la que más familiar me resulta es la típica que ocurre cuando te semi-despiertas, es decir, que sigues inmovilizado y sabes que estás durmiendo porque tienes los ojos cerrados y demás, pero por el hecho de saberlo y no estar soñando, también estás despierto. Lo desagradable de esta sensación es que es frecuente querer despertarse completamente al tenerla, lo que a mí personalmente me cuesta mucho trabajo (tengo que recurrir a cosas como intentar despertarme a mí mismo tratando de moverme o emitir algún sonido).&lt;br /&gt;&lt;br /&gt;El mundo de los sueños es bastante interesante. Con sólo pensar que son un episodio sensorial en el que en la práctica se pueden experimentar sensaciones del mundo real que no están ocurriendo en realidad, se te ponen los pelos de punta. Sólo por este hecho, es bastante factible que algún día la técnica pueda conseguir transmitir órdenes al cerebro para crear sensaciones irreales, lo que no deja de ser otra cosa que lo que se plantea en la ficción de la película Matrix y de otras obras.&lt;br /&gt;&lt;br /&gt;En fin, menuda entrada más rara me ha salido... Ehmmmm... Creo que no es la primera. ¡Déjà vu!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-114911393605113429?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/114911393605113429/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=114911393605113429&amp;isPopup=true' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/114911393605113429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/114911393605113429'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2006/06/fallo-en-matrix.html' title='Fallo en Matrix'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-114884859178959271</id><published>2006-05-28T22:36:00.000+02:00</published><updated>2006-11-11T17:53:08.628+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='Seguridad'/><title type='text'>Man-in-the-middle authentication</title><content type='html'>Con este concepto tan psicódelico he querido describir la típica situación que se da cuando quieres que un conocido mire algo por ti en un sistema en el que necesitas autenticarte pero al que no tienes acceso físicamente, y por el contrario el conocido sí tiene. Lo ideal para este tipo de cosas son las "OnceTimePassword", pero si no te has preparado el tinglado para esto, ¿le dirías tu contraseña?&lt;br /&gt;&lt;br /&gt;Esto precisamente me pasó ayer, cuando necesitaba mirar mi correo electrónico pero el ADSL no me funcionaba en casa. La solución pasaba por hacerlo a través de mi hermano, mediante llamada teléfonica. Siempre da un poco de reparo decir tu contraseña a alguien, aunque sea un familiar, y sobre todo cuando puede ser fácil de recordar y, por más que esta persona no quisiera, nunca podría evitar acordarse. Además a mí me ocurre que me caso con las contraseñas, tengo tres o cuatro que uso en bastantes sitios, por lo que no me sería nada fácil deshacerme de una de ellas.&lt;br /&gt;&lt;br /&gt;Dándole vueltas y más vueltas, encontré una especie de solución. Pero sólo funciona si confías lo suficientemente en la persona para saber que no te engañaría, porque has de confiar en que al dictársela mediante el método que te voy a exponer, él no la estará escribiendo en un lugar intermedio para poder acceder a ella posteriormente (normalmente usará la casilla ofuscada donde meter la contraseña).&lt;br /&gt;&lt;br /&gt;Y lo describiré con un breve ejemplo. Podrías dictárle tu contraseña de este modo:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;e&lt;/li&gt;&lt;li&gt;a&lt;/li&gt;&lt;li&gt;i&lt;/li&gt;&lt;li&gt;t&lt;/li&gt;&lt;li&gt;izquierda&lt;/li&gt;&lt;li&gt;izquierda&lt;/li&gt;&lt;li&gt;t&lt;/li&gt;&lt;li&gt;izquierda&lt;/li&gt;&lt;li&gt;borrar hacia la izquierda [backspace]&lt;/li&gt;&lt;li&gt;p&lt;/li&gt;&lt;li&gt;derecha&lt;/li&gt;&lt;li&gt;j&lt;/li&gt;&lt;li&gt;derecha&lt;/li&gt;&lt;li&gt;derecha&lt;/li&gt;&lt;li&gt;o&lt;/li&gt;&lt;li&gt;inicio&lt;/li&gt;&lt;li&gt;derecha&lt;/li&gt;&lt;li&gt;u&lt;/li&gt;&lt;li&gt;inicio&lt;/li&gt;&lt;li&gt;p&lt;/li&gt;&lt;li&gt;derecha&lt;/li&gt;&lt;li&gt;borrar hacia delante [suprimir]&lt;/li&gt;&lt;li&gt;derecha&lt;/li&gt;&lt;li&gt;derecha&lt;/li&gt;&lt;li&gt;borrar hacia atrás [backspace]&lt;/li&gt;&lt;li&gt;borrar hacia delante [suprimir]&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;¿Habrías deducido que este conjunto de instrucciones dan como resultado la contraseña 'pepito'?&lt;br /&gt;&lt;br /&gt;Jejeje, hombre, es un trabajo un poco engorroso, pero podríamos programar una pequeña aplicación que generase aleatoriamente toda esta &lt;em&gt;basurilla&lt;/em&gt; para una contraseña determinada, y así ahorrarnos el trabajo de inventarnos todos esos rodeos para evitar que el "hombre de en medio" descubra el término que le estamos indicando.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;Al hilo de este tema, muchas veces me pongo a pensar sobre los típicos problemas de seguridad que puede suponer usar contraseñas desde ordenadores ajenos o públicos. Son ordenadores a los que no tenemos acceso y que perfectamente pueden tener instalados los siguientes mecanismos para la captura de contraseñas:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Sistemas espía, que envían lo que estás viendo por la pantalla a un buffer o a otra entidad de la red que puede estar observando.&lt;li&gt;&lt;em&gt;Key loggers&lt;/em&gt;, que monitorizan todo lo que tecleamos y lo deja registrado.&lt;/li&gt;&lt;li&gt;&lt;em&gt;Sniffers&lt;/em&gt;, que monitorizan todo el tráfico de la red.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;Contra los primeros, nos sirve lo que ya actualmente tenemos en la mayoría de los sitios: las casillas ofuscadas para contraseñas, que colocan asteriscos o puntos en lugar de la contraseña, a medida que la escribimos.&lt;br /&gt;&lt;br /&gt;Contra los segundos, empiezan a aparecer sistemas, como el de &lt;a href="https://oi.cajamadrid.es/CajaMadrid/oi/pt_oi/Login/login"&gt;CajaMadrid&lt;/a&gt;, que te obliga a meter tu código con el ratón en lugar de con el teclado. Esta técnica puede estar bien pero lleva asociados otros problemas:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Hace que el propio sistema vuelva a ser vulnerable al mecanismo del primer tipo.&lt;/li&gt;&lt;li&gt;Conlleva problemas de accesibilidad web, pues no todos los dispositivos disponen de un puntero de ratón, y además porque para conseguir este tipo de cosas normalmente hace falta tener JavaScript activado en el navegador (sin contar lo probable que puede ser que, además, los desarrolladores no tengan en cuenta los estándares W3C a la hora de diseñarlo, y como consecuencia sólo funcione en Internet Explorer...).&lt;/li&gt;&lt;li&gt;No protege mediante mecanismos mencionados como del tercer tipo.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Los del tercer tipo se suele proteger uno de ellos mediante el cifrado (usando &lt;a href="http://en.wikipedia.org/wiki/HTTPS"&gt;HTTPS&lt;/a&gt; en lugar de &lt;a href="http://en.wikipedia.org/wiki/HTTP"&gt;HTTP&lt;/a&gt;, por ejemplo). El problema es que quien tiene que implementar esta protección es el administrador del servicio, y no el usuario (a no ser que seamos lo suficientemente avispados y no acomodaticios como para usar &lt;a href="http://diariolinux.com/tiki-read_article.php?articleId=7338"&gt;una de estas técnicas&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Pensando un poquito sobre todo esto, se me ha ocurrido otro sistema que podría emplearse para protegerse de los tres mecanismos a la vez, pero tendría que implementarse desde el servidor/administrador, no desde la parte cliente. El sistema consistiría en, cada vez que se va a realizar el desafío (preguntar el secreto compartido, la contraseña) al usuario, preguntarle únicamente una parte de la contraseña, por ejemplo: las tres primeras letras, las dos últimas, y el número de letras en total que tiene la contraseña. En cada autenticación se tendrían que preguntar cosas distintas sobre la contraseña, y para que el sistema fuera absolutamente óptimo, debería garantizarse que, aunque se tuviera acceso a todas las preguntas y respuestas que hubiera hecho un usuario en la autenticación, no pudiera deducirse ni calcularse el secreto compartido en la práctica.&lt;br /&gt;&lt;br /&gt;Así se evitan ataques man-in-the-middle, key-loggers, y demás. El único inconveniente que tiene es, como es habitual, que el proceso de autenticación se vuelve ligeramente más complejo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-114884859178959271?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/114884859178959271/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=114884859178959271&amp;isPopup=true' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/114884859178959271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/114884859178959271'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2006/05/man-in-middle-authentication.html' title='Man-in-the-middle authentication'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-114872724962030519</id><published>2006-05-27T12:39:00.000+02:00</published><updated>2006-11-11T17:52:27.456+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Politica'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Quiero ser catalán</title><content type='html'>Después de saber &lt;a href="http://www.internautas.org/html/3689.html"&gt;lo que ha ocurrido en el Senado&lt;/a&gt; y en el Congreso con la LPI (que legaliza el Canon Digital, algo aberrante en una sociedad que los políticos pretenden que sea &lt;em&gt;sociedad de la información&lt;/em&gt;), no me queda otra que soltar un "chapó" por el testimonio del Sr. Jordi Guillot, de &lt;strong&gt;Iniciativa per Catalunya Verds&lt;/strong&gt;, que reproduzco a continuación:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;br /&gt;Gracias Señor Presidente.&lt;br /&gt;&lt;br /&gt;Señorías.&lt;br /&gt;&lt;br /&gt;Los dos senadores de Iniciativa per Catalunya Verds votaremos no a ese proyecto de ley porque estamos en contra del canon digital.&lt;br /&gt;&lt;br /&gt;Intervengo, pues, en nombre de los senadores de Iniciativa per Catalunya Verds para dar por defendidas nuestras enmiendas y para justificar nuestro voto contrario a este proyecto de ley.&lt;br /&gt;&lt;br /&gt;El proyecto de ley por el que se modifica el texto refundido de la ley de propiedad intelectual es fundamentalmente la ley que regulariza y amplia el llamado canon digital.&lt;br /&gt;&lt;br /&gt;Estoy absolutamente de acuerdo en que hay que proteger los derechos de los autores, artistas, editores y productores. Deben ser remunerados por su creación.&lt;br /&gt;&lt;br /&gt;Soy consciente de los costos que representan la piratería y las descargas ilegales de obras sujetas a derechos de propiedad intelectual.&lt;br /&gt;&lt;br /&gt;Dos ejemplos que permiten ver la gravedad del problema, en el último año y medio la piratería audiovisual ha pasado del 5% al 60%. En el 2005 en España se copió ilegalmente 350 millones de canciones. Toda esta situación hace más comprensible la determinación de las sociedades de gestión en la defensa de los derechos de los creadores. Pero sinceramente, señorías este canon no es la solución. Algo pasará para que tantos estemos en desacuerdo con este canon sin tener por ello intereses inconfesables y me quiero referir a las casi cien mil firmas contra el canon presentadas en el Senado hace pocos días&lt;br /&gt;&lt;br /&gt;Un canon indiscriminado no se puede justificar en base a la necesidad de compensar las pérdidas que el desarrollo tecnológico genera a quienes crean los contenidos. Una afirmación así al no poder ser generalizable no es válida.&lt;br /&gt;&lt;br /&gt;Como sentenció la Audiencia Provincial de Madrid, "confuso derecho es este en el que se cobra el canon a cambio de una actividad prohibida."&lt;br /&gt;&lt;br /&gt;El canon de copia privada es un sistema manifiestamente ineficaz e imperfecto. Esta es la principal conclusión de un dictamen elaborado por la Comisión Asesora sobre la Sociedad de la Información, presidida por Manuel Castells, uno de los mayores expertos mundiales en este campo. Sigue el informe, " es un canon injusto e indiscriminado, no frena la piratería y nos hace responsables a todos de ella. El canon puede afectar seriamente al desarrollo de la sociedad de la información y encarece el precio de los productos. Hoy en día, representa el 50% del precio del CD y el 31% de un Mp3."&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Lo único que no me ha gustado es que ha llamado "descargas ilegales" a lo que todos conocemos por P2P, y que todos sabemos que son legales porque es copia privada y no hay ánimo de lucro.&lt;br /&gt;&lt;br /&gt;También me gustaría citar unos párrafos de la &lt;a href="http://www.internautas.org/html/3695.html"&gt;Carta a un autor español&lt;/a&gt; que ha escrito Javier Cuchí en la web de la &lt;a href="http://www.internautas.org/"&gt;Asociación de Internautas&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;El sistema, armado de hipotecas, de trabajo precario y de unos medios verdaderamente criminales, ha aprendido y perfeccionado hasta extremos inauditos las lecciones de los carceleros de los campos de extermino nazis y soviéticos. Si éstos aprendieron cómo un recluso podía -materialmente, literalmente- vender a su madre o a sus hijos por quince gramos de carne podre disimulada en el fondo de la sopa de [pocos] nabos, el sistema moderno ha aprendido que ni la carne hace falta, que basta con la amenaza implícita de suprimir el pedazo de pan negro y duro del desayuno. Y es tal la perfección alcanzada en esa materia, que ni siquiera hace falta la amenaza: la propia víctima la edifica ella misma. Y así se llega al lujo de llamar democracia al campo de concentración y se asume la perfección carcelaria de no precisar ni siquiera la molestia de ahorcar al díscolo, al rebelde, que pasa a ser incluso útil como contrapunto, como desfogue del preso común y capón que viendo en la rebeldía su propia vergüenza, reacciona contra ella con la risa o con el desprecio: el rebelde es un friki o un anarquista iluso, un pobre pringao que no se entera de las reglas del juego, alguien que nunca llegará a nada. El cénit de la ciencia penitenciaria: el preso investido a sí mismo como el más eficiente y terrible carcelero de sí mismo.&lt;br /&gt;&lt;br /&gt;Presos de ese falso y tramposo hedonismo, los ciudadanos vemos pasar ante nuestras narices los más tremendos castigos y hasta pedimos a gritos que nos sean aplicados porque si no el sistema no se sostiene. Y así, tragamos alegres y contentos con las más macabras abominaciones laborales y con el encarcelamiento tremendo en nuestra propia vivienda, de la que ya no heredarán nuestros hijos sino su deuda (y eso si el sistema no nos obliga antes a vender la parte ya pagada para poder sobrevivir con una pensión de miseria, que es la próxima que están pergeñando).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Y entre nuestros democráticos aplausos, el sistema nos aplica, muerto de risa, el castigo, por manos de unos kapos llamados políticos.&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Parece incluso de que no esté hablando del Canon Digital, sino también de todas las injusticias a las que nos someten habitualmente a los ciudadanos a día de hoy, y que un &lt;a href="http://www.contralamonarquia.es/"&gt;sistema estatal republicano&lt;/a&gt; con democracia más participativa podría solventar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-114872724962030519?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/114872724962030519/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=114872724962030519&amp;isPopup=true' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/114872724962030519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/114872724962030519'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2006/05/quiero-ser-cataln.html' title='Quiero ser catalán'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-114864915507736286</id><published>2006-05-26T14:32:00.002+02:00</published><updated>2008-02-20T15:07:25.695+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='CSharp'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>Más razones para odiar el Visual Basic</title><content type='html'>La idea de la plataforma .NET acerca de la interoperabilidad entre lenguajes de programación es fantástica, porque permite que los programadores puedan usar el trabajo de otros sin que usen el mismo lenguaje. Esto es muy beneficioso, sobre todo para el software libre, pues en éste actualmente hay gran diversidad de lenguajes y poca coordinación entre ellos. Por eso, en mi opinión, &lt;a href="http://www.mono-project.com/"&gt;Mono&lt;/a&gt; es la mejor alternativa actual para desarrollar software: todo lo que escribamos se encontrará disponible automáticamente para todos los programadores de .NET, independientemente del lenguaje que éstos otros utilicen. Si nos empeñamos en seguir usando diferentes plataformas de desarrollo, en lugar de diferentes lenguajes bajo una misma plataforma, seguiremos en el nivel de estancamiento de siempre con el software libre.&lt;br /&gt;&lt;br /&gt;Es por esto que, bajo ciertas circunstancias, la diversidad sí es mala. Por ejemplo, la diversidad en máquinas virtuales o &lt;em&gt;runtimes&lt;/em&gt; (Perl, Python, Java, Mono, ...) hace que el principio de .NET de interoperabilidad sea impracticable (con excepción de ciertos proyectos de conversion de &lt;em&gt;bytecodes&lt;/em&gt; de un tipo a otro). Otros podrían decirme: "vale, puestos a elegir una máquina virtual, ¿por qué escoger la de Mono y no otra?", pues porque por el momento es la única que dispone de más de un compilador (porque compiladores a bytecode de Java sólo los hay de lenguaje Java, y compiladores a bytecode de Perl sólo los hay que compilen lenguaje Perl, etc.). Por tanto, usar Mono siempre, y luego escoger tu lenguaje favorito, debería ser lo que idealmente tuviera que hacer todo programador, tanto de software libre, como de privativo (porque también la interoperabilidad es buena en la empresa, aunque ésta desarrolle productos privativos).&lt;br /&gt;&lt;br /&gt;Otro punto negativo que encuentro a la diversidad radica ahora dentro de la propia diversidad de lenguajes que soporta Mono. A pesar de que, como ya he dicho, esto es muy beneficioso en general, en mi opinión no lo es sólo en ciertos casos particulares, por ejemplo en aquellos en los que nos encontramos con un lenguaje de programación de muy baja calidad, como es el Visual Basic.&lt;br /&gt;&lt;br /&gt;Reconozco que Visual Basic fue un gran paso en la programación, pues brindó la oportunidad de adentrarse en este mundo, de una manera no excesivamente compleja, a mucha gente (quizás haya gente que esto en sí le parezca algo malo, pero en este caso me tengo que negar porque yo también empecé con este lenguaje, mucho antes incluso de empezar la carrera). Pero en Visual Basic no todo eran bondades: algunas de sus capacidades supuestamente pensadas para hacer más sencilla la programación, a la larga generaban problemas de mantenimiento y malos hábitos al programador. Es decir, el programador podría hacer un desarrollo bastante rápido, a costa de prolongar sus fases de testeo y de revisión.&lt;br /&gt;&lt;br /&gt;Un ejemplo de esto es la permisividad que tenía Visual Basic 6: la opción de no declarar las variables generaba en innumerables ocasiones comportamientos inesperados de la aplicación como consecuencia de una simple refactorización de un fragmento de código (ejemplo: si cambiamos el nombre de una variable, en lugar de considerar el compilador un error al encontrarse el nombre antiguo de la variable en otro lugar, no notificaba el error y presuponía que el programador quería inicializar una nueva variable vacía).&lt;br /&gt;&lt;br /&gt;Sin embargo Visual Basic introdujo un concepto que ya disponía Java: la administración automática de la memoria. Y de aquí surgió C#: de intentar hacer un C++ que tuviera la facilidad de Visual Basic (y casualmente salió algo muy parecido a Java). Sólo por el mero hecho de crear C#, Microsoft estaba reconociendo que Visual Basic era un lenguaje muy malo. Pero no quiso desterrarlo totalmente, porque muchos malos programadores seguían programando con él, y lo que hizo fue hacerle un lavado de cara: intentó corregirle los problemas más acusados de los que adolecía y le denominó "Visual Basic .NET".&lt;br /&gt;&lt;br /&gt;Esta estrategia seguramente le permitió a Microsoft no perder cierta cuota de mercado que de otra manera habría permanecido en VB6 durante mucho tiempo hasta migrar a C# (o incluso a Java). Y respeto bastante esta decisión, alegrándome de que además se quisiera mejorar un poco este lenguaje. Sin embargo, a la nueva versión le sigo viendo problemas, y creo que estos problemas vienen inherentemente provocados porque el lenguaje, en el fondo, es malo y es difícil parchear algo que inicialmente es de baja calidad (es decir, que algunos de estos problemas que yo sigo viendo podrían tener solución, pero otros no).&lt;br /&gt;&lt;br /&gt;Y voy a ser bastante explícito; en la versión VB.NET 20005 se dan los siguientes problemas:&lt;br /&gt;&lt;br /&gt;- VB.NET permite inicializar variables de tipo Structure a Nothing, mientras que hacer lo equivalente en C# (asignar null a una de tipo struct) es un error de compilación. ¿Por qué iba a permitir un lenguaje igualar a NULL una variable que no es un puntero? Aunque los lenguajes administrados no disponen de aritmética de punteros, por debajo, un objeto en .NET es una referencia a una posición de memoria si representa la instancia de una clase (un objeto), o bien NULL si aún no se ha instanciado. Las estructuras no son clases, y por tanto las instancias de ellas no son objetos: ¿qué sentido tendría entonces igualarlo a null? Sería como si quisieramos igualar a null un entero, cosa que ahora es posible en C# pero mediante Nullable Types, es decir, indicando que el tipo es &lt;strong&gt;int?&lt;/strong&gt; en lugar de &lt;strong&gt;int&lt;/strong&gt;, pero para ello el programador ha de explicitarlo. Una vez más, tenemos entonces que en VB.NET se hace uso de Nullable Types sin que el programador lo haya solicitado en absoluto.&lt;br /&gt;&lt;br /&gt;- Al usar un campo no inicializado de una variable de tipo estructura (Structure en VB.NET y struct en C#), VB.NET notifica una advertencia (warning) mientras que C# notifica un error. ¿Y por qué ocurre esto? Porque VB.NET automáticamente inicializa por omisión los valores de una estructura si se le iguala a Nothing (cosa que permite como ya hemos visto en el punto anterior), y por tanto, debe permitir al programador usar esos valores por defecto. Esto, que podría ser una fuente de problemas en etapas posteriores al desarrollo, no se ha tenido en cuenta, y por un momento cuando me topé con esta ambigüedad llegué a pensar (por indicación de un programador de este lenguaje) que en VB.NET no hacía falta reservar memoria con New ya que lo hacía automáticamente el compilador si asignabas la variable a Nothing y usabas uno de sus campos (pero en realidad esto devuelve un NullReferenceException, menos mal, VB.NET no es tan malo; lo que estaba ocurriendo es que creí que el fragmento de código que no estaba arrojando esta excepción hacía referencia a una clase en lugar de a una estructura). Vamos, que el programador de VB.NET está tan mal acostumbrado por su propio lenguaje que cualquier cosa a la que no le encuentra explicación presupone que es causada por una "feature" del lenguaje en lugar de por un "bug".&lt;br /&gt;&lt;br /&gt;Código de ejemplo de los dos últimos puntos:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;C# code-snippet&lt;/em&gt;:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Text;&lt;br /&gt;&lt;br /&gt;namespace Cesharp&lt;br /&gt;{&lt;br /&gt;    public struct Pepe&lt;br /&gt;    {&lt;br /&gt;        public string sJuan;&lt;br /&gt;        public string sLuis;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    class Program&lt;br /&gt;    {&lt;br /&gt;        static void Main(string[] args)&lt;br /&gt;        {&lt;br /&gt;            Console.WriteLine("begin");&lt;br /&gt;&lt;br /&gt;            Pepe oPepe;// = null;&lt;br /&gt;            oPepe.sJuan = "soy Juan";&lt;br /&gt;&lt;br /&gt;            Console.WriteLine("Juan: " + oPepe.sJuan + " | Luis:"&lt;br /&gt;                + oPepe.sLuis  // línea conflictiva&lt;br /&gt;                );&lt;br /&gt;&lt;br /&gt;            Console.WriteLine("end");&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;VB.NET code-snippet&lt;/em&gt;:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;Structure Pepe&lt;br /&gt;    Public sJuan As String&lt;br /&gt;    Public sLuis As String&lt;br /&gt;End Structure&lt;br /&gt;&lt;br /&gt;Module Module1&lt;br /&gt;&lt;br /&gt;    Sub Main()&lt;br /&gt;&lt;br /&gt;        Console.WriteLine("begin")&lt;br /&gt;&lt;br /&gt;        Dim oPepe As Pepe = Nothing&lt;br /&gt;&lt;br /&gt;        oPepe.sJuan = "soy Juan"&lt;br /&gt;&lt;br /&gt;        Console.WriteLine("Juan: " + oPepe.sJuan &amp; " | Luis:" &amp; oPepe.sLuis)&lt;br /&gt;&lt;br /&gt;        Console.WriteLine("end")&lt;br /&gt;&lt;br /&gt;    End Sub&lt;br /&gt;&lt;br /&gt;End Module&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- Al tratar con Visual Studio .NET 2005, el generador automático de código de Visual Basic no escribe por omisión el Namespace, tal y como hace con C#; lo que redunda en que el programador de VB no tienda a estructurar su código correctamente en una jerarquía de ámbitos (o incluso que ni siquiera conozcan lo que es un "ámbito").&lt;br /&gt;&lt;br /&gt;- El modelo de eventos en VB.NET varía bastante con respecto a C# (comparado con otras áreas en las que sólo varía la sintaxis y apenas la semántica) y en mi opinión éste es bastante más complicado. Con sólo decir que por culpa de esta forma de implementarlo, VB.NET contiene muchas más palabras reservadas que C# (el cual las sustituye normalmente por simples operadores)... ejemplos: Handles, AddressOf, ByVal...&lt;br /&gt;&lt;br /&gt;- Visual Studio .NET 2005 adolece de ciertas carencias técnicas actualmente referentes a la interoperabilidad entre lenguajes que permite .NET. Por ejemplo: el comando "Go To Definition" sólo funciona entre proyectos del mismo código (si se hace desde código C# apuntando a una clase de VB.NET, el Visual Studio abre el explorador de ensamblados/proyectos o un pseudo-archivo de definición al que le subtitula con la coletilla "[from metadata]").&lt;br /&gt;&lt;br /&gt;- Y muchos más que iré añadiendo a esta lista a medida que me vayan surgiendo... (BTW, ¿es la fealdad de su sintaxis un inconveniente válido? ;)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;En otro orden de cosas, el compilador de Visual Basic.NET de Mono no está terminado, por lo que usar este lenguaje, de momento, implica problemas de portabilidad. Y una de las razones de que este compilador no se le cuide tanto como al de C# quizás sea que en general los buenos programadores le tienen tanta tirria a este lenguaje que prefieren no verlo ni en pintura. ¿Por qué iban a malgastar esfuerzos en desarrollar un compilador para un lenguaje así? Sin embargo, desde otro punto de vista sí puede ser beneficioso en pro de la portabilidad (para proyectos o equipos que ya estén usando VB.NET y por tanto no se encuentren ya en la situación inicial de decidir lenguaje o descartar lenguajes), ya que permitiría que más programadores de .NET pudieran usar Mono y eso traería más aplicaciones al mundo de software libre (a pesar de que, en teoría, no habría impedimento práctico en ello porque el resultado de lo que compilen es lenguaje intermedio que puede ser interpretado perfectamente por el runtime de Mono). Es por esto por lo que uno de los proyectos de Mono en las becas de &lt;a href="http://code.google.com/soc/"&gt;Google Summer Of Code&lt;/a&gt; es &lt;a href="http://www.mono-project.com/Summer2006#Visual_Basic_Compiler"&gt;terminar este compilador&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Le ofrezco mucho ánimo al programador que se vaya a encargar de esa tarea, pero al resto os aconsejo que migréis cuanto antes a otro lenguaje distinto de VB.NET. Ocurre una situación análoga a las API's de System.Windows.Forms: es deseable tenerlas implementadas en aras de la portabilidad, pero para desarrollar proyectos desde cero es mejor &lt;a href="http://www.mono-project.com/GtkSharp"&gt;GTK#&lt;/a&gt; porque es técnicamente superior (por ejemplo, el sistema de &lt;em&gt;layout&lt;/em&gt; que tiene no es como el de SWF que funciona solamente con coordenadas absolutas, lo que permite un redimensionado automático de todos los controles sin dolores de cabeza para el programador), y porque (ya sin hacer referencia a la analogía con VB.NET) es una parte de la API no estandarizada en el ECMA que podría desembocar en posibles problemas legales (donde existan las patentes) para su implementación.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Moraleja&lt;/strong&gt;: la diversidad [de lenguajes] y la compatibilidad [en pro de la portabilidad] son buenas, pero hacer la buena elección es algo aún mejor.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Post-moraleja&lt;/strong&gt;: además de ser un detractor de VB.NET, también lo soy de los lenguajes no estáticamente tipados.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ACTUALIZACIÓN:&lt;/strong&gt; Resulta que, para más inri, los programadores de VB son tan comodones que debieron pedir a Microsoft en su día cierta compatibilidad hacia atrás de algunas funciones, palabras clave y sintaxis específicas que pertenecieron al legado de VB6, es decir, cosas absolutamente obsoletas y nada equivalentes a la API de .NET. ¿Qué ocurre? Que los programadores no dejan de quitarse los malos hábitos de usar este tipo de cosas porque el Visual Studio .NET no incluye una opción para descartar la librería que permite todo esto (Microsoft.VisualBasic.dll), y además esto va también en detrimento de la portabilidad. Más información &lt;a href="http://rafaelmizrahi.blogspot.com/2006/06/compile-vbnet-code-without-implicit.html"&gt;aquí&lt;/a&gt;,  y &lt;a href="http://www.codeproject.com/KB/vb/novbruntimeref.aspx"&gt;cómo evitarlo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización&lt;/strong&gt;: Una vez más, amplío esta entrada con lo que podría ser el peor error de diseño de este lenguaje: ¡¡¡NO HACE FALTA HACER CASTS!!!&lt;br /&gt;&lt;br /&gt;Como lo oyes, por ejemplo, la clase System.Random, cuyo constructor recibe un Integer, puede ser instanciada pasándole un tipo Long (DateTime.Now.Ticks, por ejemplo), sin que se queje el compilador (obteniendo un bonito error en tiempo de ejecución cuando pongas el código en producción). Otro ejemplo: tienes una función que devuelve Boolean, la refactorizas y le cambias el tipo de retorno por Integer, recompilas y ¡¡¡¡no da ningún error!!! (con los lenguajes decentes, el compilador te avisa lo que tienes que cambiar cuando haces una refactorización que pueda afectar a otras zonas de código).&lt;br /&gt;&lt;br /&gt;¿A qué os recuerdan estos comportamientos tan patéticos? BINGO! ¡A los lenguajes dinámicamente tipados!&lt;br /&gt;&lt;br /&gt;La próxima vez que me pregunten por un lenguaje dinámicamente tipado que compile código intermedio del CLR no responderé Ruby.NET ni JScript.NET, ¡responderé VisualBasic.NET! ¿Y un lenguaje de scripting? Ya no diré Boo, diré VB.NET.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-114864915507736286?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/114864915507736286/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=114864915507736286&amp;isPopup=true' title='8 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/114864915507736286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/114864915507736286'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2006/05/ms-razones-para-odiar-el-visual-basic.html' title='Más razones para odiar el Visual Basic'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-114779187451155803</id><published>2006-05-16T17:04:00.000+02:00</published><updated>2006-12-19T11:49:28.953+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programacion'/><category scheme='http://www.blogger.com/atom/ns#' term='SoftwareLibre'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='Mono'/><title type='text'>Migración de librerías Gnome al mundo GTK</title><content type='html'>Parece que en el proyecto &lt;a href="http://www.gnome.org/"&gt;Gnome&lt;/a&gt; se están moviendo bastante para conseguir hacer las cosas lo más multiplataforma posible. Un ejemplo es esta entrada del wiki títulada &lt;a href="http://live.gnome.org/LibgnomeMustDie"&gt;LibgnomeMustDie&lt;/a&gt;, que consiste en una página de progreso sobre las migraciones de implementaciones de cosas desde la librería de Gnome a otros ámbitos: &lt;a href="http://www.gtk.org/"&gt;GTK&lt;/a&gt; para temas de interfaz gráfica, y glib para temas nativos, más cercanos al sistema operativo.&lt;br /&gt;&lt;br /&gt;Un buen ejemplo de esto es el nuevo control para los iconos de la barra de sistema (que en Linux se llama "el área de notificación"), que si nos fijamos aparece como novedad en la &lt;a href="http://cvs.gnome.org/viewcvs/*checkout*/gtk+/NEWS"&gt;lista de cambios de la nueva y reciente versión 2.9 de Gtk&lt;/a&gt;. Esto me resulta muy útil y además viene a responder a una &lt;a href="http://permalink.gmane.org/gmane.comp.gnome.mono.hispano/5072"&gt;pregunta&lt;/a&gt; que hice hace tiempo, preguntando si existía una cosa parecida, en la &lt;a href="http://dir.gmane.org/gmane.comp.gnome.mono.hispano"&gt;lista de MonoHispano&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;(...) pues yo esperaba una librería de propósito más general, es decir, que &lt;br /&gt;fuera multi-escritorio (que valiera también para KDE, por lo menos, &lt;br /&gt;además de Gnome) e incluso que fuera multiplataforma, para no tener que &lt;br /&gt;sacrificar la "multiplataformidad" de tu aplicación sólo para que pueda &lt;br /&gt;usar la barra de sistema (o área de notificación de estado, en este caso).&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Bueno, no creo que valga para KDE hasta que no metan mano los de &lt;a href="http://www.freedesktop.org/"&gt;FreeDesktop&lt;/a&gt;, pero algo es algo de momento. (Por cierto, debería haber escogido el término "portabilidad" en lugar de ese horrendo aunque sarcástico "multiplataformidad".)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 23-NOV-2006&lt;/strong&gt;: Otro &lt;em&gt;widget&lt;/em&gt; interesante es el que nos brinda la librería LibNotify, la cual al parecer es parte del proyecto &lt;a href="http://en.wikipedia.org/wiki/Galago_%28software%29"&gt;Galago&lt;/a&gt;. Es un pequeño popup de notificación parecido a los que se ven en el MSN Messenger cuando algún conocido se conecta al servicio. Está siendo muy usado ya en muchos proyectos de software libre, por ejemplo &lt;a href="http://en.wikipedia.org/wiki/NetworkManager"&gt;NetworkManager&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/aMule"&gt;aMule&lt;/a&gt; (&lt;a href="http://forum.amule.org/thread.php?postid=60054"&gt;capturas&lt;/a&gt;) y &lt;a href="http://galaxium.bountysource.com/"&gt;Galaxium&lt;/a&gt; (y parece que Banshee también). Estaría bien que lo incluyesen en el &lt;em&gt;core&lt;/em&gt; de GTK+, y así pudiera ser multiplataforma.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-114779187451155803?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/114779187451155803/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=114779187451155803&amp;isPopup=true' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/114779187451155803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/114779187451155803'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2006/05/migracin-de-libreras-gnome-al-mundo_16.html' title='Migración de librerías Gnome al mundo GTK'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-114747710277579329</id><published>2006-05-13T01:28:00.000+02:00</published><updated>2006-11-11T17:50:11.936+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Politica'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>¿Caos inevitable?</title><content type='html'>No queria hacer de este blog algo eminentemente político, pero es que cuando te tocan la moral, es difícil callarse.&lt;br /&gt;&lt;br /&gt;Ahora le toca al turno de cómo las esferas de poder quieren coartar la libertad de expresión. ¿Cómo? Queriendo criminalizar a los comunistas en el Consejo de Europa. ¿Quieren equiparar a los comunistas con terroristas? ¿Pero es que no han entendido nada? ¿No han estudiado historia? ¿No saben que el hecho de que existan actualmente dictaduras comunistas no convierte a esta ideología en anti-democrática?&lt;br /&gt;&lt;br /&gt;Por favor, firma &lt;a href="http://www.profesionalespcm.org/_php/formularioteodorakis.php"&gt;aquí este manifiesto&lt;/a&gt; en contra de esta medida. A la hora de firmar, puedes poner un comentario opcional. Yo no me encontraba inspirado pero mi padre (quien me envió el enlace) sí lo hizo y no puedo estar más de acuerdo con él:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;La sociedad capitalista no tiene futuro porque en su verdadero propósito que es el de mantener esclavizados bajo el yugo de sus dirigentes al resto de la sociedad, ahora han creado la globalización y las multinacionales como sustitutas de la esclavitud, el feudalismo y el absolutismo, ya que ahora están mal vistos, y que funcionan bajo un sistema económico basado en un consumismo frenético y una competitividad que hace que los trabajadores tengamos jornadas laborales extenuantes de alto estrés, y esto solo conduce a agotar los recursos del planeta y a que esta sociedad tarde o temprano se precipite en el caos. Un modelo social más justo es absolutamente inevitable, conclusión a la que se llega por simple análisis, el dilema está en si podrá alcanzarse de forma gradual sin un derrumbe caótico del modelo actual, lo que implicaría un gran sufrimiento humano como ha venido ocurriendo a lo largo de todas las épocas de la historia sin excepción alguna. Acaso ese caos es inevitable e implica la desaparición de la especie humana provocada por la irresponsabilidad, la avaricia desmedida y la satisfacción por el poder y el dominio de algunos de los integrantes de la misma. El intento de criminalizar a los comunistas no es más que otro paso más en su estratagia de evitar lo a la larga inevitable .... ¡Qué poco inteligentes son!&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Para finalizar esta entrada, sólo recordar a los escasos lectores que debo tener que este domingo es la &lt;a href="http://www.escolar.net/wiki/index.php/Sentada_por_una_vivienda_digna"&gt;sentada por una vivienda digna&lt;/a&gt;, la cual no va encabezada por ningún partido político. Yo por supuesto estaré allí.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13199395-114747710277579329?l=knocte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://knocte.blogspot.com/feeds/114747710277579329/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13199395&amp;postID=114747710277579329&amp;isPopup=true' title='7 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/114747710277579329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13199395/posts/default/114747710277579329'/><link rel='alternate' type='text/html' href='http://knocte.blogspot.com/2006/05/caos-inevitable.html' title='¿Caos inevitable?'/><author><name>knocte</name><uri>http://www.blogger.com/profile/00267496347097861887</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='23' src='http://1.bp.blogspot.com/_z_GNcrzxywM/SVF1Y2QmsbI/AAAAAAAAACs/QaVimRav7fY/s1600-R/n630985366_5171987_9496.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13199395.post-114691087105387861</id><published>2006-05-06T11:58:00.000+02:00</published><updated>2006-12-28T19:40:15.165+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Politica'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>La simbología nazi/fascista es ilegal; la republicana NO</title><content type='html'>Es increíble la represión que se lleva a cabo a partir de las esferas de poder, ya sea desde &lt;a href="http://ania.eurosur.org/noticia.php3?id=4502"&gt;los senos o militantes de los partidos políticos&lt;/a&gt;, como desde &lt;a href="http://www.nodo50.org/auroradigital/index.php?option=content&amp;task=view&amp;id=213"&gt;las propias autoridades&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Y es que, debemos recordar, que la promulgación de un régimen republicano no es para nada análogo a la simbología nazi/fascista. Esto que de entrada debería parecernos completamente evidente, nos lo recuerda &lt;a href="http://www.izquierda-unida.es/republica/docs/setenciabandera.pdf"&gt;esta sentencia del Tribunal Superior de Justicia de Madrid&lt;/a&gt;, por si acaso.&lt;br /&gt;&lt;br /&gt;Aprovechando esta entrada, voy a dar un enlace bastante interesante: &lt;a href="http://www.contralamonarquia.es/"&gt;Contra la monarquía&lt;/a&gt;. Y no sólo me parece interesante con respecto al contenido, sino también por su elevada calidad técnica: su diseño es inmaculado (al menos para &lt;a href="http://es.wikipedia.org/wiki/Firefox"&gt;el mejor de los navegadores&lt;/a&gt;) y el manifiesto se ofrece en &lt;a href="http://es.wikipedia.org/wiki/OpenDocument"&gt;un formato estándar y últimamente ratificado como norma ISO&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización:&lt;/strong&gt; &lt;a href="http://www.nodo50.org/foroporlamemoria/documentos/2006/esales_02082006.htm"&gt;Otro enlace que no tiene desperdicio sobre la exaltación del fascismo por parte del &lt;acronym title="Partido Popular"&gt;PP&lt;/acronym&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 30-SEP-2006:&lt;/strong&gt; Parece que la historia se repite, y esta vez por parte de la &lt;a href="http://www.20minutos.es/noticia/157676/0/bandera/republicana/anticonstitucional/"&gt;Guardia Civil&lt;/a&gt;. Algunas perlas de la noticia:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;Los agentes consideraron que su exhibición vulneraba la Constitución. IU denuncia que es la benemérita quien ha pasado por encima contra la Carta Magna.&lt;/strong&gt;&lt;br /&gt;(...)&lt;br /&gt;Una vez dentro los agentes pidieron al edil de Izquierda Unida Antonio de la Flor Grimaldi, presente en el local, que procediera a retirar la bandera tricolor que suspendía de un biombo al considerar que su exhibición, aun dentro de un recinto privado, es anticonstitucional.&lt;br /&gt;(...)&lt;br /&gt;Las direcciones local, provincial y andaluza de Izquierda Unida han respaldado la actuación del concejal de Izquierda Unida al negarse a retirar la bandera y censuran lo que consideran que ha sido "un abuso de autoridad y un uso deleznable de un uniforme público".&lt;br /&gt;(...)&lt;br /&gt;La formación política también ha recordado que la exhibición de una bandera republicana no es ilegal ni anticonstitucional, ni siquiera en la vía pública.&lt;br /&gt;(...)&lt;br /&gt;En el año 2003, el Tribunal Superior de Justicia de Madrid ya dio la razón a IU y se la quitó al ayuntamiento de Madrid, basándose en los artículos constitucionales apuntados anteriormente.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Actualización 28-DIC-2006&lt;/strong&gt;
