tag:blogger.com,1999:blog-41343412024-02-07T00:07:25.148-03:00MonoBlog - Monoman's BlogJust an old programmer... From Algol to Ada, from Basic to Boo, from Cobol to C#, etc...Unknownnoreply@blogger.comBlogger82125tag:blogger.com,1999:blog-4134341.post-90966914328836038712016-08-23T22:39:00.001-03:002016-08-29T16:46:34.235-03:00Newest open source project: managed-commons-collections-squarelist<span style="font-family: "verdana" , sans-serif;">I've published the source for a tentative 1.0.0-beta for this MIT-Licensed project at <a href="https://github.com/managed-commons/managed-commons-collections-squarelist">GitHub</a>.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<br />
<h3>
<span style="font-family: "verdana" , sans-serif;"><b>What is a SquareList?</b></span></h3>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">Basically a squared (same depth as width) structure formed from a List of LinkedLists, with items kept in ascending order, so that in constant time you can know the minimum and the maximum values</span><span style="font-family: "verdana" , sans-serif;">, O(1)</span><span style="font-family: "verdana" , sans-serif;">. Also by being almost 'square' you can insert/search/delete values in a worst case time of O(sqrt(n)).</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<br />
<h3>
<span style="font-family: "verdana" , sans-serif;">Implementation details</span></h3>
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">I implemented it as a generics-based collection, in C#, for .NetStandard1.0 .</span><br />
<br />
<span style="font-family: "verdana" , sans-serif;">Loosely based on an <a href="http://www.drdobbs.com/database/the-squarelist-data-structure/184405336">article</a> published in the May 2013 issue of Dr Dobb's Journal, by Mark Sams.</span><br />
<br />
<span style="font-family: "verdana" , sans-serif;">This implementation allows for multiple instances of the same value to be inserted, and then deleted one-at-a-time or wholesale.</span><br />
<span style="font-family: "verdana" , sans-serif;">Thinking in performance, search for counting/existence is done bidirectionally, but removal scans only in the forward direction, to have stable behavior (remove the first found) when duplicates exist.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;">The trade-off is obviously about using more memory to achieve better performance, as there is no copying of large swaths of memory, or linear scans of the total mass of data, but the downside is lots of pointers from each node </span><span style="font-family: "verdana" , sans-serif;">in both directions</span><span style="font-family: "verdana" , sans-serif;">.</span><br />
<span style="font-family: "verdana" , sans-serif;"><br /></span>
<span style="font-family: "verdana" , sans-serif;"><b>UPDATE</b>: <i>No longer using linked-lists for the columns, these now manage slices of a big array containing the whole set of values. So inserts now are penalized with moving blocks of values around, but the minimum subset is moved to create spaces for the insert. Problem still being worked on is about performing searches on sets that have a large part of it deleted. Shrinking the array is now done manually while expanding it is still automatic.</i></span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4134341.post-75108912682634241632015-06-23T20:09:00.001-03:002016-08-23T21:59:51.927-03:00Experiment on Roslyn C# compiler: Translatable Strings<div style="background-color: white; box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; line-height: 22.3999996185303px; margin-bottom: 16px;">
<span style="font-size: x-small;">Basically anyone can use resources, gettext or <a href="https://github.com/managed-commons/managed-commons-core" style="background-color: transparent; box-sizing: border-box; color: #4078c0; text-decoration: none;">managed-commons-core</a>, to translate (localize) strings in its C# code, and it can even be kind of terse like this sample using managed-commons-core:</span></div>
<div class="highlight highlight-csharp" style="background-color: white; box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; line-height: 22.3999996185303px; margin-bottom: 16px; overflow: visible !important;">
<pre style="background-color: #f7f7f7; border-radius: 3px; box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-stretch: normal; line-height: 1.45; overflow: auto; padding: 16px; word-break: normal; word-wrap: normal;"><span style="font-size: x-small;"><span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">using</span> System.Collections.Generic;
<span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">using</span> Commons.GetOptions;
<span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">using</span> <span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">static</span> System.Console;
<span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">using</span> <span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">static</span> Commons.Translation.TranslationService;
<span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">namespace</span> <span class="pl-en" style="box-sizing: border-box; color: #795da3;">TestApp</span>
{
<span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">class</span> <span class="pl-en" style="box-sizing: border-box; color: #795da3;">AppCommand</span>
{
<span class="pl-c" style="box-sizing: border-box; color: #969896;">// Returns the translated form of "First mock command"</span>
<span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">public</span> <span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">virtual</span> <span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">string</span> Description { get { return <span class="pl-en" style="box-sizing: border-box; color: #795da3;">_</span>("<span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">First</span> <span class="pl-smi" style="box-sizing: border-box;">mock</span> command<span class="pl-s" style="box-sizing: border-box; color: #183691;"><span class="pl-pds" style="box-sizing: border-box;">"</span>); } }</span>
<span class="pl-s" style="box-sizing: border-box; color: #183691;"></span>
<span class="pl-s" style="box-sizing: border-box; color: #183691;"> public virtual string Name { get { return <span class="pl-pds" style="box-sizing: border-box;">"</span></span>alpha<span class="pl-s" style="box-sizing: border-box; color: #183691;"><span class="pl-pds" style="box-sizing: border-box;">"</span>; } }</span>
<span class="pl-s" style="box-sizing: border-box; color: #183691;"></span>
<span class="pl-s" style="box-sizing: border-box; color: #183691;"> // Returns the translated form of <span class="pl-pds" style="box-sizing: border-box;">"</span></span>Command {<span class="pl-c1" style="box-sizing: border-box; color: #0086b3;">0</span>} executed!<span class="pl-s" style="box-sizing: border-box; color: #183691;"><span class="pl-pds" style="box-sizing: border-box;">"</span> with Name substituted</span>
<span class="pl-s" style="box-sizing: border-box; color: #183691;"> public virtual void Execute(IEnumerable<string> args, ErrorReporter ReportError)</string></span>
<span class="pl-s" style="box-sizing: border-box; color: #183691;"> {</span>
<span class="pl-s" style="box-sizing: border-box; color: #183691;"> WriteLine(TranslateAndFormat(<span class="pl-pds" style="box-sizing: border-box;">"</span></span>Command {<span class="pl-c1" style="box-sizing: border-box; color: #0086b3;">0</span>} executed!<span class="pl-s" style="box-sizing: border-box; color: #183691;"><span class="pl-pds" style="box-sizing: border-box;">"</span>, Name));</span>
<span class="pl-s" style="box-sizing: border-box; color: #183691;"> }</span>
<span class="pl-s" style="box-sizing: border-box; color: #183691;"> }</span>
<span class="pl-s" style="box-sizing: border-box; color: #183691;">}</span></span></pre>
</div>
<div style="background-color: white; box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; line-height: 22.3999996185303px; margin-bottom: 16px;">
<span style="font-size: x-small;">Then enters C# 6.0 with its fantastic new feature called <strong style="box-sizing: border-box;">interpolated strings</strong> and now that last method in our example can't be <em style="box-sizing: border-box;">optimized</em> to use the new feature because:</span></div>
<div class="highlight highlight-csharp" style="background-color: white; box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; line-height: 22.3999996185303px; margin-bottom: 16px; overflow: visible !important;">
<pre style="background-color: #f7f7f7; border-radius: 3px; box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-stretch: normal; line-height: 1.45; overflow: auto; padding: 16px; word-break: normal; word-wrap: normal;"><span style="font-size: x-small;"><span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">public</span> <span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">virtual</span> <span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">void</span> Execute(IEnumerable<<span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">string</span>> args, ErrorReporter ReportError)
{
WriteLine(_($<span class="pl-s" style="box-sizing: border-box; color: #183691;"><span class="pl-pds" style="box-sizing: border-box;">"</span>Command {Name} executed!<span class="pl-pds" style="box-sizing: border-box;">"</span></span>));
}</span></pre>
</div>
<div style="background-color: white; box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; line-height: 22.3999996185303px; margin-bottom: 16px;">
<span style="font-size: x-small;">would in truth first format and then try to lookup a translation, which would be truly the wrong thing to happen...</span></div>
<div style="background-color: white; box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; line-height: 22.3999996185303px; margin-bottom: 16px;">
<span style="font-size: x-small;">This experiment, I've started, would allow for C# 7 a new syntax for translatable strings that would make that snippet into:</span></div>
<div class="highlight highlight-csharp" style="background-color: white; box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; line-height: 22.3999996185303px; margin-bottom: 16px; overflow: visible !important;">
<pre style="background-color: #f7f7f7; border-radius: 3px; box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-stretch: normal; line-height: 1.45; overflow: auto; padding: 16px; word-break: normal; word-wrap: normal;"><span style="font-size: x-small;"><span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">using</span> System.Collections.Generic;
<span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">using</span> Commons.GetOptions;
<span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">using</span> <span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">static</span> System.Console;
<span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">namespace</span> <span class="pl-en" style="box-sizing: border-box; color: #795da3;">TestApp</span>
{
<span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">class</span> <span class="pl-en" style="box-sizing: border-box; color: #795da3;">AppCommand</span>
{
<span class="pl-c" style="box-sizing: border-box; color: #969896;">// Returns the translated form of "First mock command"</span>
<span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">public</span> <span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">virtual</span> <span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">string</span> <span class="pl-en" style="box-sizing: border-box; color: #795da3;">Description</span> { <span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">get</span> { <span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">return</span> $_<span class="pl-s" style="box-sizing: border-box; color: #183691;"><span class="pl-pds" style="box-sizing: border-box;">"</span>First mock command<span class="pl-pds" style="box-sizing: border-box;">"</span></span>; } }
<span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">public</span> <span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">virtual</span> <span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">string</span> <span class="pl-en" style="box-sizing: border-box; color: #795da3;">Name</span> { <span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">get</span> { <span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">return</span> <span class="pl-s" style="box-sizing: border-box; color: #183691;"><span class="pl-pds" style="box-sizing: border-box;">"</span>alpha<span class="pl-pds" style="box-sizing: border-box;">"</span></span>; } }
<span class="pl-c" style="box-sizing: border-box; color: #969896;">// Returns the translated form of "Command {0} executed!" with Name substituted</span>
<span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">public</span> <span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">virtual</span> <span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">void</span> <span class="pl-en" style="box-sizing: border-box; color: #795da3;">Execute</span>(IEnumerable<string> args, <span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">ErrorReporter</span> <span class="pl-smi" style="box-sizing: border-box;">ReportError</span>)
{
WriteLine($_<span class="pl-s" style="box-sizing: border-box; color: #183691;"><span class="pl-pds" style="box-sizing: border-box;">"</span>Command {Name} executed!<span class="pl-pds" style="box-sizing: border-box;">"</span></span>);
}
}
}</string></span></pre>
</div>
<div style="background-color: white; box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; line-height: 22.3999996185303px; margin-bottom: 16px;">
<span style="font-size: x-small;">Interpolated strings can return an IFormattable, and thus one can easily do some localization (number formatting for instance), but not truly translation, so this feature is interesting beyond the small gain on shortening code, for the other cases.</span></div>
<div style="background-color: white; box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; line-height: 22.3999996185303px; margin-bottom: 16px;">
<span style="font-size: x-small;">But the <strong style="box-sizing: border-box;">killing feature</strong> that adding this tentative feature to the compiler would allow us is to have the extraction of translatable texts done by the compiler, as it does for xml documentation, if the right command line parameter is specified.</span></div>
<div style="background-color: white; box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; line-height: 22.3999996185303px; margin-bottom: 16px;">
<span style="font-size: x-small;">$_"Command {Name} executed!" would be extracted as "Command {0} executed!", automagically.</span></div>
<div style="background-color: white; box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; line-height: 22.3999996185303px; margin-bottom: 16px;">
<span style="font-size: x-small;">All is well but some may ask as this, which looks a lot like the way gettext does things would work for extracting to a .resx file, where keys can't be arbitrary strings. Well for this scenario the compiler would generate SHA1 hashes as keys and insert the hashing while calling the TranslationService behind the scenes. TranslationService is a pluggable infrastructure that can have 'translators' sourcing their translations on resources, .mo files, hard-coded dictionaries, whatever...</span></div>
<div style="background-color: white; box-sizing: border-box; color: #333333; font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif; line-height: 22.3999996185303px; margin-bottom: 16px;">
<span style="font-size: x-small;">My experimentation will use managed-commons-core, which I'm the core developer/maintainer, as the backend but if real merit is found on this discussion, surely the runtime team will have to come forward and implement something like it, or just borrow the logic from my implementation there, </span><span style="font-size: x-small; line-height: 22.4px;">which MIT-licensed</span><span style="font-size: x-small; line-height: 22.4px;">.</span></div>
<span style="font-family: "verdana" , sans-serif; font-size: x-small;"></span><br />
<ol><span style="font-family: "verdana" , sans-serif; font-size: x-small;">
<li><a href="https://github.com/managed-commons/roslyn/tree/translatableStrings">Code</a></li>
<li><a href="https://github.com/dotnet/roslyn/issues/3656">Issue</a></li>
</span></ol>
<span style="font-family: "verdana" , sans-serif; font-size: x-small;">
</span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4134341.post-68110359739234194212013-07-28T21:17:00.001-03:002013-07-28T21:17:43.174-03:00Testing Blogger's Android App<p>Just a test. Later I'll post something <b>interesting</b>,<i> I hope</i>!</p>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4134341.post-57575498185045249792012-08-07T15:42:00.001-03:002012-08-07T15:42:27.085-03:00Event: Interopmix & Mobile Games August 24/25 at BandTec College in São Paulo (Brazil)<div style="text-align: justify;">
<div style="font-family: 'Trebuchet MS', sans-serif; font-size: small; text-align: center;">
(in Portuguese) <a href="http://www.interopmix.com.br/release.html">http://www.interopmix.com.br/release.html</a>
</div>
<div style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">
<br /></div>
<div style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">
The gaming industry has been earning usually double what the billionaire movie industry has been getting in the last years, and still there is a lot to grow.
Particularly in Brazil it is just in its infancy, so there is a lot of opportunities just ahead.</div>
<div style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">
<br /></div>
<div style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">
But to seize those opportunities, it is not enough to show some desire and entrepreneurial spirit, you need refined knowledge and technical mastery, since the creation of a game demands to build teams with skills in various areas such as programming, graphic design, 3D modeling.</div>
<div style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">
<br /></div>
<div style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">
To further the spreading of that knowledge, engage new professionals, and show what's new in this area, Bandtec college will be receiving the event: Interopmix Mobile & Games in São Paulo.</div>
<div style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">
<br /></div>
<div style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">
We will present new technologies based on interoperable .NET based platforms, specially Mono, for the development of mobile games and applications.</div>
<div style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">
<br /></div>
<span style="font-family: Trebuchet MS, sans-serif; font-size: x-small;">Among the technologies which will be presented, we have: .Net, Mono, C# Language, XNA, Unity3D, etc... Targeting Windows, Linux, Mac, iPhone, Android, Windows Phone, PlayStation VITA among others.</span><br />
<div style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">
<br /></div>
<div style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">
Renowned presenters include:
</div>
<ul style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">
<li>José Antonio Leal de Farias (Microsoft MVP - Creator of MonoGame)</li>
<li>Claudenir C.Andrade (Microsoft MVP Integration and Development Manager, R & D)</li>
<li>Rodrigo Kumpera - Mono Hacker (GC) of Xamarin</li>
<li>Breno Azevedo - Game Design - Hired by Electronic Arts LA and producer Taikodom</li>
<li>Alexandre Rocha Lima - Mono Hacker - worked on the project MonoBasic among others!</li>
</ul>
<div style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">
The event will take place August 24th/25th at BandTec College campus in São Paulo.</div>
<div style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">
<br /></div>
<div style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">
If you are interested in attending the event or watch it through the Internet make your pre-registration at the event site above.</div>
<div style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">
<br /></div>
<div style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">
Be sure to pre-register for this event, because although event is FREE of charge there a limited number of places!!</div>
<div style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">
<br /></div>
<div style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">
Hurry and make your application.</div>
<div style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">
<br /></div>
<div style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">
Some of the event coming sessions (all in Portuguese):</div>
<ul style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">
<li>The state of development in the mobile world 2012</li>
<li>Mobile development with WINEmbedded and tablets</li>
<li>Mobile development with MonoTouch with Mono 4 Android</li>
<li>Combining Scripts with Unity3D Editor to create scenes in 3D games</li>
<li>RageTools: Developing characters in 2D</li>
<li>MonoGame, XNA open source multiplatform</li>
<li>Creation of Corporate Games</li>
<li>Introduction to game development with Scratch</li>
<li>Creating games for the PlayStation Vita with Mono</li>
</ul>
<div style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">
Mini-Courses (all in Portuguese):</div>
<ul style="font-family: 'Trebuchet MS', sans-serif; font-size: small;">
<li>Character Animation with Unity3D</li>
<li>RageTools: Developing characters in 2D</li>
<li>POS automation with Android</li>
<li>Development with MonoDroid</li>
<li>MonoGames, XNA for MAC and iPhone</li>
<li>iPhone Development with MonoTouch</li>
</ul>
</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4134341.post-8098995622005914302012-03-22T11:37:00.002-03:002012-03-22T11:37:45.245-03:00Summing up my position on Software Patents to Brazilian Authorities<div style="text-align: center;">
<b style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;">They [software patents] undermine innovation and thus slows/reverts the improvement of the living conditions of the majority</b></div>
<span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;" title="Minha posição resumida sobre Patentes de Software: Elas prejudicam a inovação ea consequente melhoria da condição de vida da maioria da população"><br /></span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;" title="Meu email a SAESP no tocante a Consulta sobre Diretrizes para Concessão de Patentes de Software:">My email to SAESP regarding the Consultation on Brazilian Guidelines for Patenting Software:</span><br />
<hr />
<div style="text-align: center;">
<i>Premise: As the Brazilian government is established as a democracy and therefore is <b>'for the people'</b>, favoring elites, domestic or foreign, is simply a <b>very serious crime</b> that should not be perpetrated.</i></div>
<span style="background-color: whitesmoke;" title="Premissa: Como o governo brasileiro se estabelece em uma democracia e portanto é para o povo, favorecer elites, nacionais ou estrangeiras, é simplesmente um crime de alta gravidade que não deve ser perpetrado."></span><br />
<div style="text-align: center;">
<span style="background-color: whitesmoke;" title="Premissa: Como o governo brasileiro se estabelece em uma democracia e portanto é para o povo, favorecer elites, nacionais ou estrangeiras, é simplesmente um crime de alta gravidade que não deve ser perpetrado."><span style="color: #333333; font-family: arial, sans-serif;"><br /></span></span></div>
<span style="background-color: whitesmoke;" title="Premissa: Como o governo brasileiro se estabelece em uma democracia e portanto é para o povo, favorecer elites, nacionais ou estrangeiras, é simplesmente um crime de alta gravidade que não deve ser perpetrado.">
</span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;" title="O embasamento matemático do desenvolvimento de softwares e sua natureza ainda mais cumulativa que a maioria das demais ciências aplicadas, torna o patenteamento de qualquer algoritmo, ou agrupamento destes, (e tudo em software pode ser reduzido a um agrupamento de algoritmos), um entrave enorme">The mathematical background of software development and its cumulative nature even more than in most other applied sciences, makes the patenting of any algorithm, or grouping of these (and all software can be reduced to groups of algorithms) a major obstacle to </span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;" title="ao desenvolvimento de milhares de funcionalidades diferentes das imaginadas pelo proponente da patente, isto já configura um abuso do monopólio que lhe pode ser concedido.">the development of thousands of features not imagined by </span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;">the patent </span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;">bidder, it already configures an abuse of the monopoly that could be granted.</span><br />
<span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;" title="ao desenvolvimento de milhares de funcionalidades diferentes das imaginadas pelo proponente da patente, isto já configura um abuso do monopólio que lhe pode ser concedido."><br /></span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;" title="Não há como tornar patentes de software tão específicas, em contraposição aos escopos amplamente genéricos descritos acima, para impedir os abusos ou avaliar a real originalidade da 'invenção', e isso só encareceria e alongaria o processo de aprovação das patentes, e mesmo os processos">There is no way to make software patents so specific, in contrast to the widely generic scopes described above to prevent abuse or to assess the real originality of the 'invention', and it just would make the </span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;">approval process for patents</span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;" title="Não há como tornar patentes de software tão específicas, em contraposição aos escopos amplamente genéricos descritos acima, para impedir os abusos ou avaliar a real originalidade da 'invenção', e isso só encareceria e alongaria o processo de aprovação das patentes, e mesmo os processos"> more expensive and lengthier, and the same would happen for the infringement processes</span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;" title="judiciais que poderiam delas decorrer, como se vê bem exemplificado nas disputas ora acontecendo nos EUA, na Europa e Ásia, especialmente na área de Mobile.">, as we see exemplified in the ongoing disputes in the U.S., Europe and Asia, especially in the Mobile arena.</span><br />
<span style="background-color: whitesmoke;" title="judiciais que poderiam delas decorrer, como se vê bem exemplificado nas disputas ora acontecendo nos EUA, na Europa e Ásia, especialmente na área de Mobile."><br /></span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;" title="É uma armadilha, que favorece no curto prazo apenas algumas grandes corporações, que ao invés de realmente investirem em inovação, trabalhando de forma colaborativa em certas frentes para trazer uma redução no custo total de invenção, gastam mais com advogados do que com engenheiros para garantir">It's a trap, that favors, in the short-term, only a few large corporations, who instead of actually investing in innovation, by collaboratively </span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;">working</span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;"> </span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;" title="É uma armadilha, que favorece no curto prazo apenas algumas grandes corporações, que ao invés de realmente investirem em inovação, trabalhando de forma colaborativa em certas frentes para trazer uma redução no custo total de invenção, gastam mais com advogados do que com engenheiros para garantir">on certain fronts to bring down the total cost of invention, spend more on lawyers than engineers to ensure </span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;" title="que tecnologias antiquadas ou marginalmente melhores que as atuais lhes fiquem exclusivas por um tempo absurdamente longo, frente ao ritmo de inovação necessário para atender as necessidades e desejos da sociedade brasileira e global.">that outdated technologies or marginally better ones stay </span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;">exclusive</span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;"> </span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;">for a absurdly long period compared to the pace of innovation needed to meet the needs and desires of the Brazilian society, as well as the global one.</span><br />
<span style="background-color: whitesmoke;" title="que tecnologias antiquadas ou marginalmente melhores que as atuais lhes fiquem exclusivas por um tempo absurdamente longo, frente ao ritmo de inovação necessário para atender as necessidades e desejos da sociedade brasileira e global."><br /></span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;" title="Essa armadilha se volta no médio e longo prazo contra as próprias corporações que armaram-na e que hoje arriscam perder bilhões em longos processos de dúbia validade.">In the medium and long term the very corporations fall on their own trap and now risk losing billions in long processes of dubious legal validity.</span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;" title="Concluindo, o Brasil precisa nadar contra essa onda suicida, tocada pelo insensato lobby das grandes corporações transnacionais, e firmar posição contra as patentes de software, e pelo incentivo ao que efetivamente aumenta o ritmo e qualidade da inovação, que é o compartilhamento de informação eo">In conclusion, Brazil has to swim against this suicide </span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;">tide</span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;" title="Concluindo, o Brasil precisa nadar contra essa onda suicida, tocada pelo insensato lobby das grandes corporações transnacionais, e firmar posição contra as patentes de software, e pelo incentivo ao que efetivamente aumenta o ritmo e qualidade da inovação, que é o compartilhamento de informação eo">, unwisely lobbied by transnational corporations, and establish a position against software patents, and adopt measures that effectively can foster increases in the pace</span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;"> </span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;">and quality</span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;" title="Concluindo, o Brasil precisa nadar contra essa onda suicida, tocada pelo insensato lobby das grandes corporações transnacionais, e firmar posição contra as patentes de software, e pelo incentivo ao que efetivamente aumenta o ritmo e qualidade da inovação, que é o compartilhamento de informação eo"> of innovation, by the way of information </span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;">sharing</span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;"> </span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;" title="Concluindo, o Brasil precisa nadar contra essa onda suicida, tocada pelo insensato lobby das grandes corporações transnacionais, e firmar posição contra as patentes de software, e pelo incentivo ao que efetivamente aumenta o ritmo e qualidade da inovação, que é o compartilhamento de informação eo">and </span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;" title="subsequente desenvolvimento colaborativo.">subsequently ensued collaborative development.</span><br />
<span style="background-color: whitesmoke;" title="subsequente desenvolvimento colaborativo."><br /></span><span style="background-color: whitesmoke;" title="O potencial de diferenciação no mercado, que é a base para que se mantenha a competitividade, advem não das inovações tecnológicas per-se mas no que pode ser agregado, com esmero, no produto final, especialmente nos produtos ampliados, onde serviços e interoperabilidade são"><span style="color: #333333; font-family: arial, sans-serif;">The potential for market differentiation, which is vital to maintain competitiveness, doesn't come from technological innovation per-se but instead from how well finished the final product comes out, especially the expanded products, which aggregate services and easy interoperability </span></span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;" title="adicionados como peças fundamentais.">as key components.</span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;" title="Grato pela atenção,">Thanks for listening,</span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;" title="Rafael "Monoman" Teixeira">Rafael "Monoman" Teixeira</span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;" title="Engenheiro Eletrônico (Poli-USP)">Electronic Engineer (Poli-USP)</span><span style="background-color: whitesmoke; color: #333333; font-family: arial, sans-serif; font-size: 16px;" title="Desenvolvedor de Sistemas (pelos últimos 35 anos)">Systems Developer (for the last 35 years)</span><br />
<br />
<div style="text-align: right;">
<span style="font-family: 'Trebuchet MS', sans-serif; font-size: xx-small;"><b>* thanks Google Translator for doing the bulk of this translation, fine tuning it afterwards was way easier...</b></span></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4134341.post-51561722282553619242012-02-16T12:39:00.004-02:002012-02-16T12:39:56.669-02:00My long post on G+ about patents<a href="https://plus.google.com/117788095721240811664/posts/VfMqiKW53St">https://plus.google.com/117788095721240811664/posts/VfMqiKW53St</a><br />
<br />
<div style="text-align: center;">
<i><span style="color: purple; font-family: 'Trebuchet MS', sans-serif;"><b>Discuss there</b></span></i></div>
<br />
<span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;"><b>About Patents. Again</b></span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">For me, in the regard of granted temporary intellectual monopolies (patents, but also some non-artistic copyrights), we as a global society need to answer two big questions, and then act politically to change ours' countries laws and international agreements:</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">1) Do we need more innovation? At what pace?</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">2) Do we want those innovations to be widely available and affordable?</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">My personal answers to those questions are:</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">1) Surely we need and as fast as collectively possible to create the innovations and to materialize and put them to use. And I think that, excepting a few Luddites and Zen masters, this would be the near unanimous answer. </span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">2) I believe that to be also a qualified yes. But here lies a more controvertible topic, as many people (Liberals, etc.) want those innovations to be affordable to them and their circle of friends, but doesn't care if it is available and affordable to others.</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">Now to recap the logic, the original one, about patents:</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">*[A] There are a very small number of people with enough knowledge in their field of expertise to be able to innovate in that space.</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">*[B] These people would prefer to retain that knowledge and dispense it only to a few chosen apprentices, so that their small circle can benefit directly and/or commercially from it.</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">*[C] A temporary monopoly on new knowledge, with legal enforcement of it, would be the bait to make these people make that knowledge public, and free for anyone to use after the monopoly period.</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">*[D] Some non-obviousness and novelty criteria would be applied to recognize new knowledge that could be protected by that temporary monopoly.</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">Well lets focus on the Information Technology field, what encompasses software, chips, web, smart mobile devices, and many more hot trending technologies...</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">[A] Obviously there are some niche sub-fields (like 'ultra high density chip making') where that scarcity of knowledgeable people still holds, but for most of the field there are plenty of people well versed to innovate: for instance, tens of millions of software/web/mobile developers (even if you disqualify our digital teens), hundreds of thousands of electronics engineers. </span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;"><b>Yeah, I'm counting global numbers, as in our connected world there is little to prevent innovation coming from geographically distributed, multiple nationality, teams.</b></span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">So the scarcity assumption is likely false nowadays, at least in this field...</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">[B] Let me ask the meat issue here: What is the likelihood that someone can nowadays substantially advance any field without an extensive network of collaboration? Remember that for collaboration to occur one need to share/exchange knowledge with those that participate in it, but yes, collaboration can be done in a behind-doors, limited sharing, fashion.</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">Nevertheless, again in this field, open collaboration, with free participation from anyone who wants to contribute, as demonstrated by Free and Open Source Software projects/communities, leads to lower cost, high quality, and widely available innovation, which is slowly becoming the norm.</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">Also the number of competitors in the web space, for instance, where the cost of entry is very low, simply means that mere copycats can't survive the market, as it evolves astonishingly fast: for example, cellphones are increasingly sophisticated gadgets that billions of people, some still functionally illiterate, managed to learn how to use in the last decade, and those billions as they migrate to smartphones are creating an exceptionally large new market for mobile applications and content.</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">In that vein, I believe that even if people want to hold out knowledge it will be shared by someone else that independently came to the same conclusion/idea and wants to collaborate to make it evolve even more. So that assumption is not necessarily false, but mostly irrelevant.</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">[C] If knowledge is increasingly shared, and collaborations over it allow for even more knowledge to be found/built, well <b>any legal monopolies over it will effectively hamper not foster innovation</b>. It will add process costs to negotiate terms for 'licensing' what will be shared, even if it will be licensed free of royalties, and running costs for any RAND licensing.</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">But I would propose here a crowd-task: Can we find the global numbers to correlate all the royalties collected, and then factor out how much of it was re-invested in corporate Research and Development or grants to scientific research at academia? Also it would be nice to value how much those patented innovations benefit from open science knowledge, can we find and sum it up?</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">With those numbers it would be easy to reason, if opening even more the basic science and fomenting the open/collaborative projects for technology, would be a better approach than letting corporation compete armed with their monopolies.</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">Besides the form of the temporary monopoly was very badly designed, as it allows the monopoly holder to preclude all usage of the knowledge until the privilege expires, even if the holder doesn't materialize any products embodying that knowledge in that period. <b>It is such a nonsensical provision that I can't understand how it wasn't fixed over the centuries.</b> It is the kind of non-sense that allows judges to say something like "that Microsoft can legitimately use patents to try to destroy Android" with a flat-face.</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">But worse, even if the monopoly could be made conditional on materializing as soon as possible some of the benefits the protected knowledge could bring, there is the issue of it's duration, that is also something in the law that didn't evolve to cover the completely new situation we live in. For this field, 20 years of protection, is simply too much, even market-wise it is an absurd to have someone holding competitors from offering alternatives or evolving over present ideas.</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">For example, most users won't keep using non-essential web/mobile apps that doesn't evolve each few months/weeks. I keep coming to Angry Birds on my Tablet because new phases, birds, themes are added from time to time...</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">At a minimum, even if this whole argumentation doesn't politically engender more drastic revisions, we need to reform the granted monopoly, to guarantee timely access to the benefits and reduce, maybe selectively with the field, its duration. </span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">So [C] can be assumed to be false for the field pending those numbers, but still quite positively, given the track record of success of FOSS projects and of products embodying them. </span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">If Android, which deeply depends on FOSS and evolves on wide networks (sadly, not all truly open) of collaboration, wasn't a huge success it would not be so feared and the target of such a high number of patent lawsuits. </span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">Finally, there is plenty of evidence that the law clauses construed from [D] were totally forgotten on the practice of Patents offices, throughout the world. Even returning to more sensible practices, to avoid big losses around lame patents like in the EOLAS case, would be an enormous improvement, but the assumption is false, because it depends too much on interpretation, and due diligence, to make the system well balanced.</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">The conclusion is simple, the system doesn't work because:</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">1) It doesn't guarantee the timely reaping of benefits from the shared knowledge it should promote.</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">2) It costs too much to operate with the current imbalances in power</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">Which are in direct collision with positive answers to those two questions I started all this rambling with.</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;"><b>Alternatives?</b></span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">I'll present mine, but I want just to help starting the discussion with all stakeholders (roughly everybody in the world, even those currently 'unconnected'), and also for the political action to take place on its conclusions, and not be misdirected by the lobby of just some powerful corporate stakeholders... </span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;"><b>The design key. Global Cooperation, Local Coopetition</b></span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">My preferred scenario would be to have a few years down the road government funding truly open science, and for industries collectives funding open research and collaborative projects for reference designs and standards, with local customization and production. It is globalized research, as the ever increasing scientific-technological knowledge body is one of the truly global commons, partially global project (global core, local customization), and as much as possible local production.</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">For that to work patents should be dismissed for open global knowledge pools, with 'research credits' being acquired by adding to the pool with meritocratic valuation and being expended by receiving financial grants from the pool for further research.</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">The fundamental change given positive answers for those initial questions is to transform:</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;"><b>Closed Knowledge equates Profit </b>(all the ethically-wrong IP 'industrialization', by artificially faking scarcity over a plentiful inexhaustible resource)</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">into</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><b><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">Open Knowledge equates Innovation, Materializing/Distributing Innovation equates Profit</span></b><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">That is tall order, to do locally (within the national borders) and globally (overriding the competition of nations [with borders] and transnational corporations [no borders]).</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">The final thought is:</span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">Innovation, per se, isn't an intrinsically valuable thing, what makes it valuable is its ability to solve problems, to attend needs or to enable further innovation that accomplish that. </span><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><br style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;" /><span style="background-color: white; font-family: Arial, sans-serif; font-size: 13px; line-height: 18px;">If we could solve all our problems and attend the needs of everyone with what we know about or know to build, there would not be the need for innovation, but that is simply impossible, the universe won't stay put, it also evolves, it also innovates every second...</span>
<br />
<br />
<br />Unknownnoreply@blogger.comtag:blogger.com,1999:blog-4134341.post-79465976829806468652011-12-08T11:19:00.001-02:002011-12-08T11:22:13.220-02:00About "Convergence" TV/Computer Devices<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif; font-size: x-small;">From my G+ post: <a href="https://plus.google.com/u/0/117788095721240811664/posts/gurPTpYzMGm">https://plus.google.com/u/0/117788095721240811664/posts/gurPTpYzMGm</a></span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif; font-size: x-small;"><br /></span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif; font-size: x-small;"><span class="Apple-style-span" style="background-color: white; line-height: 18px;">The problem is: if you have a general-purpose computer doublying as your TV set, the interactions for some computer-like usage scenarios become a lot harder:</span><br style="background-color: white; line-height: 18px;" /><span class="Apple-style-span" style="background-color: white; line-height: 18px;">Have you ever tried to type on a full keyboard standing on your lap on a common sofa, or worse to mouse-around with no plain surface or having to stretch your arm to touch on a far away big screen, not even Siri can help you while you interact with office suites, drawing programs, email clients, sophisticated web apps/sites, and other high complexity applications.</span><br style="background-color: white; line-height: 18px;" /><br style="background-color: white; line-height: 18px;" /><span class="Apple-style-span" style="background-color: white; line-height: 18px;">You really need simpler more focused apps, like you have in mobile, to work in such a configuration, and that is the whole point, it is really software that is holding up the "Convergent" (to use the old word) TV+Computer.</span><br style="background-color: white; line-height: 18px;" /><br style="background-color: white; line-height: 18px;" /><span class="Apple-style-span" style="background-color: white; line-height: 18px;">We need a base platform that uses news interaction mechanisms like Siri, Kinect, remote touching, etc... And more focused apps to exploit those mechanisms to bring it truly to live. </span><br style="background-color: white; line-height: 18px;" /><br style="background-color: white; line-height: 18px;" /><span class="Apple-style-span" style="background-color: white; line-height: 18px;">I'm working on it, as many others, but I don't think even Apple can really make it happen in the next year, and I would say it could cause a bad 'First Impression' to launch a not up-to-the-task device...</span></span><br />
<span class="Apple-style-span" style="background-color: white; line-height: 18px;"><span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif; font-size: x-small;"><br /></span></span><br />
<span class="Apple-style-span" style="font-family: 'Trebuchet MS', sans-serif; font-size: x-small;"><span class="Apple-style-span" style="line-height: 18px;">Commenting on a </span><a class="yn Hf OD" href="https://plus.google.com/u/0/111185848672556379969" oid="111185848672556379969" rel="nofollow" style="background-color: white; color: #3366cc; cursor: pointer; line-height: 18px; text-decoration: none;">Chris Davies</a><span class="Apple-style-span" style="line-height: 18px;"> post citing </span><a class="ot-anchor B-u-Y-j" href="http://www.slashgear.com/apple-tv-enabled-imac-tipped-for-2012-television-attack-08200858/" style="background-color: white; color: #3366cc; cursor: pointer; font-weight: bold; line-height: 18px; vertical-align: middle;">Apple TV-enabled iMac tipped for 2012 television attack - SlashGear</a></span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4134341.post-91715463398431367462011-10-24T18:29:00.002-02:002011-10-24T18:56:31.648-02:00NugetCracker 0.10<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://github.com/monoman/NugetCracker/wiki/NugetCracker-0.10.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="369" src="http://github.com/monoman/NugetCracker/wiki/NugetCracker-0.10.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Screenshot on MacOSX</td></tr>
</tbody></table>
<b>Reengineered the BumpVersion command:</b><br />
<br />
Now it bumps all dependent versions numbers and only after that, it builds all needed projects so that a build error can be fixed and the build be restarted without have inconsistent version numbers.<br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4134341.post-44707174760838201702011-09-11T14:21:00.001-03:002011-09-11T14:23:18.143-03:00NugetCracker building/bumping itself on Linux, Version 0.6.1<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>laptop:~/Projects/active/NugetCracker$ ./nugetcracker </b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>NugetCracker 0.6</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>See https://github.com/monoman/NugetCracker</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b><br /></b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>Using /home/rafael/Projects/active/NugetCracker/MetaProject.NugetCracker</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>Scanning '.' > '/home/rafael/Projects/active/NugetCracker'</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>.</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>Scanned 144 directories</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>Found 2 components</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>Sorting...</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>Finding dependents...</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b><br /></b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>Ready > l</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Listing all components...</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> [0001] Commons.Prevalence.1.0 - Minimal prevalence support for .NET [C# Nuget Project]</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> [0002] NugetCracker.0.6 - A builder for versioned nugets within a web of dependencies [C# Project]</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b><br /></b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;">Ready > help</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;"> Available Commands:</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;"> BumpVersion Bumps up a version for a component</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;"> Help, ? Show this list of commands or an specific command help</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;"> List List components, optionally filtered by regular expression</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;"> Quit, Exit Stops interactive mode</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;"> Rebuild Rebuilds current version for a component</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b><br /></b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>Ready > r Commons</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Rebuilding component Commons.Prevalence.1.0</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> XBuild Engine Version 2.11.0.0</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Mono, Version 2.11.0.0</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Copyright (C) Marek Sieradzki 2005-2008, Novell 2008-2011.</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Build started 9/11/2011 2:13:20 PM.</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> __________________________________________________</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Project "/home/rafael/Projects/active/NugetCracker/Commons.Prevalence/Commons.Prevalence.csproj" (default target(s)):</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Done building project "/home/rafael/Projects/active/NugetCracker/Commons.Prevalence/Commons.Prevalence.csproj".</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Build succeeded.</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Time Elapsed 00:00:00.8898590</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b><br /></b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b><br /></b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>Ready > r Nug </b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Rebuilding component NugetCracker.0.6</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> XBuild Engine Version 2.11.0.0</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Mono, Version 2.11.0.0</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Copyright (C) Marek Sieradzki 2005-2008, Novell 2008-2011.</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Build started 9/11/2011 2:13:46 PM.</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> __________________________________________________</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> /home/rafael/Projects/active/NugetCracker/NugetCracker/NugetCracker.csproj: warning : Cannot import project '/usr/lib/mono/4.0/Microsoft.CSharp.targets' again. It was already imported by '/home/rafael/Projects/active/NugetCracker/NugetCracker/NugetCracker.csproj'. Ignoring.</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Project "/home/rafael/Projects/active/NugetCracker/NugetCracker/NugetCracker.csproj" (default target(s)):</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> /home/rafael/Projects/active/NugetCracker/NugetCracker/NugetCracker.csproj: warning : Cannot import project '/usr/lib/mono/4.0/Microsoft.CSharp.targets' again. It was already imported by '/home/rafael/Projects/active/NugetCracker/NugetCracker/NugetCracker.csproj'. Ignoring.</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> /usr/lib/mono/4.0/Microsoft.Common.targets: warning : Found a conflict between : 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' and 'System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. Using 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' reference.</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Done building project "/home/rafael/Projects/active/NugetCracker/NugetCracker/NugetCracker.csproj".</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Build succeeded.</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Warnings:</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> /home/rafael/Projects/active/NugetCracker/NugetCracker/NugetCracker.csproj: warning : Cannot import project '/usr/lib/mono/4.0/Microsoft.CSharp.targets' again. It was already imported by '/home/rafael/Projects/active/NugetCracker/NugetCracker/NugetCracker.csproj'. Ignoring.</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> /home/rafael/Projects/active/NugetCracker/NugetCracker/NugetCracker.csproj (default targets) -></b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> /home/rafael/Projects/active/NugetCracker/NugetCracker/NugetCracker.csproj (default targets) -></b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> /usr/lib/mono/4.0/Microsoft.Common.targets (ResolveAssemblyReferences target) -></b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Time Elapsed 00:00:04.7531090</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b><br /></b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;">Ready > help bumpversion</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;"> Usage:</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;"><br /></b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;"> BumpVersion [options] pattern</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;"><br /></b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Bumps up the [AssemblyVersion]/Package Version of the component and rebuilds/repackages. </b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;"><span class="Apple-tab-span" style="white-space: pre;"> </span>The [AssemblyFileVersion] attribute also is kept in sync with the [AssemblyVersion].</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;"><span class="Apple-tab-span" style="white-space: pre;"> </span>If component generates a Nuget it is not automatically published unless the --cascade </b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;"><span class="Apple-tab-span" style="white-space: pre;"> </span>or --publish options were specified.</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;"><br /></b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Options</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;"><span class="Apple-tab-span" style="white-space: pre;"> </span>-part:major|minor|build|revision|none<span class="Apple-tab-span" style="white-space: pre;"> </span></b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Increments the major, minor, build, revision version number. </b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;"><span class="Apple-tab-span" style="white-space: pre;"> </span>If option is ommitted the default is to increment build number.</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;"><span class="Apple-tab-span" style="white-space: pre;"> </span>-dontcascade</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Update all dependent components to use the new build/package, and them their dependent </b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;"><span class="Apple-tab-span" style="white-space: pre;"> </span>components and so on. If some components generate a Nuget, the Nuget is published to </b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;"><span class="Apple-tab-span" style="white-space: pre;"> </span>a temporary output 'source' and the dependent components have their package references </b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;"><span class="Apple-tab-span" style="white-space: pre;"> </span>updated, if all goes successfully packages are them published to the default or specified</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;"><span class="Apple-tab-span" style="white-space: pre;"> </span>source.</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;"><span class="Apple-tab-span" style="white-space: pre;"> </span>-publish</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Specifies that package should be published if successful.</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;"><span class="Apple-tab-span" style="white-space: pre;"> </span>-to:<source id="" path=""></source></b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b style="background-color: #fce5cd;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Specifies source other than the default to publish nugets to. </b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b><br /></b></span><br />
<span class="Apple-style-span" style="color: #274e13; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>Ready > b nug</b></span><br />
<span class="Apple-style-span" style="color: #274e13; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Bumping component 'NugetCracker' version from 0.6 to 0.6.1</b></span><br />
<span class="Apple-style-span" style="color: #274e13; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> ==== cascading</b></span><br />
<span class="Apple-style-span" style="color: #274e13; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Setting new version to 0.6.1</b></span><br />
<span class="Apple-style-span" style="color: #274e13; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Building NugetCracker.0.6.1</b></span><br />
<span class="Apple-style-span" style="color: #274e13; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> XBuild Engine Version 2.11.0.0</b></span><br />
<span class="Apple-style-span" style="color: #274e13; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Mono, Version 2.11.0.0</b></span><br />
<span class="Apple-style-span" style="color: #274e13; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Copyright (C) Marek Sieradzki 2005-2008, Novell 2008-2011.</b></span><br />
<span class="Apple-style-span" style="color: #274e13; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Build started 9/11/2011 2:15:27 PM.</b></span><br />
<span class="Apple-style-span" style="color: #274e13; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> __________________________________________________</b></span><br />
<span class="Apple-style-span" style="color: #274e13; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> /home/rafael/Projects/active/NugetCracker/NugetCracker/NugetCracker.csproj: warning : Cannot import project '/usr/lib/mono/4.0/Microsoft.CSharp.targets' again. It was already imported by '/home/rafael/Projects/active/NugetCracker/NugetCracker/NugetCracker.csproj'. Ignoring.</b></span><br />
<span class="Apple-style-span" style="color: #274e13; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Project "/home/rafael/Projects/active/NugetCracker/NugetCracker/NugetCracker.csproj" (default target(s)):</b></span><br />
<span class="Apple-style-span" style="color: #274e13; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> /home/rafael/Projects/active/NugetCracker/NugetCracker/NugetCracker.csproj: warning : Cannot import project '/usr/lib/mono/4.0/Microsoft.CSharp.targets' again. It was already imported by '/home/rafael/Projects/active/NugetCracker/NugetCracker/NugetCracker.csproj'. Ignoring.</b></span><br />
<span class="Apple-style-span" style="color: #274e13; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> /usr/lib/mono/4.0/Microsoft.Common.targets: warning : Found a conflict between : 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' and 'System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. Using 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' reference.</b></span><br />
<span class="Apple-style-span" style="color: #274e13; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Done building project "/home/rafael/Projects/active/NugetCracker/NugetCracker/NugetCracker.csproj".</b></span><br />
<span class="Apple-style-span" style="color: #274e13; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Build succeeded.</b></span><br />
<span class="Apple-style-span" style="color: #274e13; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Warnings:</b></span><br />
<span class="Apple-style-span" style="color: #274e13; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> /home/rafael/Projects/active/NugetCracker/NugetCracker/NugetCracker.csproj: warning : Cannot import project '/usr/lib/mono/4.0/Microsoft.CSharp.targets' again. It was already imported by '/home/rafael/Projects/active/NugetCracker/NugetCracker/NugetCracker.csproj'. Ignoring.</b></span><br />
<span class="Apple-style-span" style="color: #274e13; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> /home/rafael/Projects/active/NugetCracker/NugetCracker/NugetCracker.csproj (default targets) -></b></span><br />
<span class="Apple-style-span" style="color: #274e13; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> /home/rafael/Projects/active/NugetCracker/NugetCracker/NugetCracker.csproj (default targets) -></b></span><br />
<span class="Apple-style-span" style="color: #274e13; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> /usr/lib/mono/4.0/Microsoft.Common.targets (ResolveAssemblyReferences target) -></b></span><br />
<span class="Apple-style-span" style="color: #274e13; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Time Elapsed 00:00:04.2109010</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b><br /></b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>Ready > q</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b><br /></b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b><br /></b></span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4134341.post-80622181480129137432011-09-09T10:42:00.002-03:002011-09-09T10:44:24.101-03:00Pinta needs help, and I decided to lend a hand...Pinta is a nice bitmap editing tool, simple and yet powerful, for Linux/MacOSX/Windows<br />
<br />
<a href="http://www.pinta-project.com/">http://www.pinta-project.com/</a><br />
<br />
Jonathan Pobst it's creator and maintainer is focusing his energy on some other ventures and left it untouched for some time know.<br />
<br />
Cameron White forked and started to make it tick again, and now Robert Nordan and other people in the project discussion list <a href="http://groups.google.com/group/pinta?hl=en">http://groups.google.com/group/pinta?hl=en</a>, including me , are starting to organize a full project team around it, at github (my fork <a href="https://github.com/monoman/Pinta">https://github.com/monoman/Pinta</a>).<br />
<br />
I approach this with a more systemic view to have something like the <i>MonoMagic App Wall </i>(chose another name because a store would emphasize a commercial offering), with apps that may be easily installable/usable on any of the miriad platforms where Mono/.NET is available, Pinta could just be the forerunner.<br />
<br />
Imagine an iPad/Android version of Pinta, with your drawings/photos synced to your personal cloud storage, so that you can take your editing session back at your Linux notebook later...<br />
<br />
Wild ideas...<br />
<br />
<br />
<br />Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-4134341.post-22481362335814707232011-09-07T18:35:00.000-03:002011-09-07T18:38:15.930-03:00NugetCracker 0.5 - Runs on Mono 2.11 on UbuntuKind of self-explanatory...<br />
<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>monoman:~/Projects/NugetCracker$ <span class="Apple-style-span" style="color: #38761d;">mono NugetCracker/bin/Debug/NugetCracker.exe -c list</span></b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>NugetCracker 0.4</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>See https://github.com/monoman/NugetCracker</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b><br /></b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>Using /home/rafael/Projects/active/NugetCracker/MetaProject.NugetCracker</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>Scanning '.' > '/home/rafael/Projects/active/NugetCracker'</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>.</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>Scanned 128 directories</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>Found 2 components</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>Sorting...</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Listing all components...</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> [0001] Commons.Prevalence.1.0 - Minimal prevalence support for .NET [C# Nuget Project]</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> [0002] NugetCracker.0.4 - A builder for versioned nugets within a web of dependencies [C# Project]</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>Done!</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>monoman:~/Projects/NugetCracker$ <span class="Apple-style-span" style="color: #38761d;">mono NugetCracker/bin/Debug/NugetCracker.exe -c bumpversion -part:minor nu</span></b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>NugetCracker 0.4</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>See https://github.com/monoman/NugetCracker</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b><br /></b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>Using /home/rafael/Projects/active/NugetCracker/MetaProject.NugetCracker</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>Scanning '.' > '/home/rafael/Projects/active/NugetCracker'</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>.</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>Scanned 128 directories</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>Found 2 components</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>Sorting...</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Bumping component 'NugetCracker' version from 0.4 to 0.5</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Setting new version to 0.5</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Building NugetCracker.0.5</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>Done!</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>monoman:~/Projects/NugetCracker$<span class="Apple-style-span" style="color: #38761d;"> mono NugetCracker/bin/Debug/NugetCracker.exe -c list</span></b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>NugetCracker 0.5</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>See https://github.com/monoman/NugetCracker</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b><br /></b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>Using /home/rafael/Projects/active/NugetCracker/MetaProject.NugetCracker</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>Scanning '.' > '/home/rafael/Projects/active/NugetCracker'</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>.</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>Scanned 128 directories</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>Found 2 components</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>Sorting...</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> Listing all components...</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> [0001] Commons.Prevalence.1.0 - Minimal prevalence support for .NET [C# Nuget Project]</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b> [0002] NugetCracker.0.5 - A builder for versioned nugets within a web of dependencies [C# Project]</b></span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace; font-size: xx-small;"><b>Done!</b></span><br />
<div>
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4134341.post-35708452753243881162011-09-02T17:14:00.000-03:002011-09-02T17:14:57.351-03:00NugetCracker 0.4<span class="Apple-style-span" style="font-family: inherit;">Version 0.4 - BumpVersion now increments version, builds project and packs nuget </span><br />
<span class="Apple-style-span" style="font-family: inherit;">Uses new color-capable indenting console-logger
</span><br />
<span class="Apple-style-span" style="font-family: inherit;"><br /></span><br />
<span class="Apple-style-span" style="font-family: inherit;">Sample session:</span><br />
<br />
<pre style="font-size: 7pt; font-weight: bold;">NugetCracker 0.4
See https://github.com/monoman/NugetCracker
Using C:\Projects\MetaProject.NugetCracker
Scanning '.' - 'C:\Projects'
..........................
Scanned 6454 directories
Found 36 components
Sorting...
Ready - l inad
Listing components filtered by 'inad' ...
[0001] ManagementPluginAD.2.5.35 - ActiveDirectory Management Plugin [C# Nuget Project]
Ready - help
Available Commands:
BumpVersion Bumps up a version for a component
Help, ? Show this list of commands or an specific command help
List List components, optionally filtered by regular expression
Quit, Exit Stops interactive mode
Ready - help b
Usage:
BumpVersion [options] pattern
Bumps up the [AssemblyVersion]/Package Version of the component and rebuilds/repackages.
The [AssemblyFileVersion] attribute also is kept in sync with the [AssemblyVersion].
If component generates a Nuget it is not automatically published unless the --cascade
or --publish options were specified.
Options
-part:[major, minor, build, revision}
Increments the major, minor, build, revision version number.
If option is ommitted the default is to increment build number.
-cascade
Update all dependent components to use the new build/package, and them their dependent
components and so on. If some components generate a Nuget, the Nuget is published to
a temporary output 'source' and the dependent components have their package references
updated, if all goes successfully packages are them published to the default or specified
source.
-publish
Specifies that even if not cascaded package should be published if successful.
-to:<source id="" path=""></source>
Specifies source other than the default to publish nugets to.
Ready - b -part:revision inad
Bumping component 'ManagementPluginAD' version from 2.5.35 to 2.5.35.1
Setting new version to 2.5.35.1
Building ManagementPluginAD.2.5.35.1
Packaging ManagementPluginAD.2.5.35.1
Attempting to build package from 'ManagementPluginAD.csproj'.
Packing files from 'C:\Projects\ManagementPluginAD\bin\Debug'.
Using 'ManagementPluginAD.nuspec' for metadata.
Found packages.config. Using packages listed as dependencies
Successfully created package 'C:\Projects\ManagementPluginAD\ManagementPluginAD.2.5.35.1.nupkg'.
Ready -
</pre>
<div>
<br /></div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4134341.post-27771444372872623132011-09-01T18:46:00.001-03:002011-09-07T18:37:21.221-03:00NugetCracker 0.3<span class="Apple-style-span" style="background-color: white; font-size: 14px; line-height: 15px;"><span class="Apple-style-span" style="font-family: arial, sans-serif;">Committed to Github version 0.3 of NugetCracker now with Help command, and some real parsing of project files:</span><br /><br /><span class="Apple-style-span" style="font-family: arial, sans-serif;">Sample run:</span><br /><br /><span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"><b>NugetCracker 0.3</b><br />See <a class="ot-anchor" href="https://github.com/monoman/NugetCracker" style="color: #3366cc; cursor: pointer; text-decoration: none;">https://github.com/monoman/NugetCracker</a><br /><br />Using C:\Projects\xxx\MetaProject.NugetCracker<br />Scannin<wbr></wbr>g '.' > 'C:\Projects\xxx'<br />..........................<br />Scan<wbr></wbr>ned 6454 directories<br />Found 36 components<br />Sorting...<br />Ready > <b>help</b><br />Available Commands:<br /> BumpVersion Bumps up a version for a component<br /> Help Show this list of commands or an specific command help<br /> List List components, optionally filtered by regular expression<br /> Quit, Exit Stops interactive mode<br />Ready ></span></span><br />
<span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 14px; line-height: 15px;"><br /></span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4134341.post-2361226677942807782011-07-14T16:13:00.001-03:002011-07-14T16:20:36.432-03:00Starting a new project: NugetCrackerWell lately I've been a heavy user of NuGet packaging, trying to tame versioning issues in some proprietary projects I work on that evolve, and partly reuse, near to a hundred libraries (many of them in vertically-dependent sets aligned to 'plugins' in the applications).<br />
<br />
Let's put it bluntly: <b>IT'S A NIGHTMARE.</b><br />
<br />
First of all, we have many solutions as it is unfeasible to load and work with a single one containing hundreds of projects.<br />
Also we needed to organize source in a hierarchy of folders, for subsystems, for specific plugin trees, for product, separating test projects, etc... So it means we have tree of folders with projects in leafs, nested 3,4, or more levels down from the solution that uses them.<br />
Finally, we have solutions that share some projects (one of the purposes of adopting NuGet is to avoid this pattern, but we aren't there yet).<br />
<br />
Summing up the above points, we are very very far from the NuGet assumption of a single-solution, with all projects nested just one level, and mainly using external NuGets from the standard source feed.<br />
<span class="Apple-style-span" style="color: #b45f06;"><br />
<digression><br />
The standard NuGet feed is rarely used by us, because most packages there just don't support .NET 2.0, which our projects are still bound to, the sole package we could use from there was log4net, which is stable for some years, The rest we needed to cook our own versions of nugets for Npgsql, nHibernate 1.2, Castle.ActiveRecord 1.0RC3, and so on. All of this is published on a server shared folder, as we doesn't have time allowance to setup a NuGet server<br />
</digression></span><br />
<br />
Let's just exemplify what all that means...<br />
<br />
A contrived and simplified scenario:<br />
<br />
Library NugetCracker.Core 1.0.0.0 depends only on framework assemblies.<br />
Library NugetCracker.CLI 1.0.0.0 depends on NugetCracker.Core 1.0.0.0 and framework assemblies<br />
Library NugetCracker.Web 1.0.0.0 depends on NugetCracker.Core 1.0.0.0 and NancyFX and framework assemblies<br />
Program NugetCracker 1.0.0.0 depends on NugetCracker.CLI 1.0.0.0 and NugetCracker.Web 1.0.0.0<br />
<br />
Now if we allow the Package Manager to get away with forcing bindingRedirects in the app.config (or web.config), we could publish a new nuget for NugetCracker.Core 1.0.1.0 and update just the NugetCracker program. Now, this may work if the changes are non-breaking, but if, for example, you need to add a new method to some interface in core that the other libraries must implement and the program uses, we will have to update the intermediary nugets, build and publish new nugets, and them update the program.<br />
<br />
I think that now you can easily extrapolate that for my real scenario that means many iterations of building/publishing/updating across many solutions.<br />
<br />
Well time to fast-forward to what I expect to be able to do when my newest project <a href="https://github.com/monoman/NugetCracker">NugetCracker</a> 1.0 is done:<br />
<br />
In the command line:<br />
<br />
<div style="font: 9pt courier, courier new;">> NugetCracker<br />
Scanning for solutions in .<br />
Found NugetCracker.sln<br />
-- Project NugetCracker.Core generates nuget for version 1.0.0.0<br />
-- Project NugetCracker.CLI generates nuget for version 1.0.0.0 depends on NugetCracker.Core<br />
-- Project NugetCracker.Web generates nuget for version 1.0.0.0 depends on NugetCracker.Core, NancyFx<br />
-- Project NugetCracker generates program for version 1.0.0.0 depends on NugetCracker.CLI, NugetCracker.Web<br />
No nugets sources specified using default feed<br />
No publishing feed/share specified, publishing to folder .\NugetPackages<br />
Command > BumpVersion --minor --cascade NugetCracker.Core<br />
Bumping version of package NugetCracker.Core to 1.1.0.0<br />
Building NugetCracker.Core<br />
Packaging NugetCracker.Core.1.1<br />
Publishing NugetCracker.Core.1.1 to .\NugetPackages<br />
Updating Package Dependency on NugetCracker.Core to 1.1 in NugetCracker.CLI, NugetCracker.Web<br />
Bumping version of package NugetCracker.CLI to 1.1.0.0<br />
Building NugetCracker.CLI<br />
Packaging NugetCracker.CLI.1.1<br />
Publishing NugetCracker.CLI.1.1 to .\NugetPackages<br />
Bumping version of package NugetCracker.Web to 1.1.0.0<br />
Building NugetCracker.Web<br />
Packaging NugetCracker.Web.1.1<br />
Publishing NugetCracker.Web.1.1 to .\NugetPackages<br />
Updating Package Dependency on NugetCracker.CLI to 1.1 in NugetCracker<br />
Updating Package Dependency on NugetCracker.Web to 1.1 in NugetCracker<br />
Bumping version of program NugetCracker.Core to 1.1.0.0<br />
Building NugetCracker<br />
Packaging .\NugetCracker.1.1.zip for zip installation<br />
Command > PublishTo -Apikey xxxxxxx -Source http://nuget.mycompany.com/<br />
Publishing NugetCracker.Core.1.1 to http://nuget.mycompany.com/<br />
Publishing NugetCracker.CLI.1.1 to http://nuget.mycompany.com/<br />
Publishing NugetCracker.Web.1.1 to http://nuget.mycompany.com/</div><br />
Becoming <a href="https://github.com/monoman/NugetCracker">reality</a> soon...Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4134341.post-2407243697232396802011-05-11T16:15:00.000-03:002011-05-13T17:34:02.377-03:00Tiny Membership Providers<a href="http://tinyproviders.codeplex.com/SourceControl/changeset/view/6d50b098f088#SampleWebSite%2fWeb.config">Tiny Membership Providers</a><div><br /></div><div>I've needed to move an ASP.NET MVC project away from using SQL Server for logon (SQLMembershipProvider).</div><div><br /></div><div>Searching for 'membership' on Nuget's "Add Package Library Reference" dialog, I've stumbled upon Artem.XmlProviders40 package that implement the trio of providers (memebership, roles, profiles) using xml files as storage. Nicer, the Nuget even updated the web.config to add the providers in the application.</div><div><br /></div><div>Dumbly I deleted the SQL providers lines and tried to run, after inspecting the users file to find the password for some user there, and pressed F5 to run the app. Clicked on "Log On", and CRASH!!!</div><div><br /></div><div>Needed to peruse the Web.config of the SampleWebSite project in the sources (<a href="http://tinyproviders.codeplex.com/SourceControl/changeset/view/6d50b098f088#SampleWebSite%2fWeb.config">http://tinyproviders.codeplex.com/SourceControl/changeset/view/6d50b098f088#SampleWebSite%2fWeb.config</a>).</div><div><br /></div><div>To find out that I needed to add the defaultProvider attribute to the membership element (and the other two), naming the specific provider to use as being the Xml... part, as named in the providers/add child element.</div><div><br /></div><div>Also I needed to set the applicationName attribute to "/", as this is an MVC app able to deal with all paths...</div><div><br /></div><div>Why do I need to get hid of SQL Server, on these days of SQL Compact marveldom? To be able to run in Linux, of course. </div><div><br /></div><div>Also as the system has just one non-anonymous user: the famous "admin", it is just overkill to have a database even when deployed on a Windows server...</div><div> </div><div><br /></div><div><br /></div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4134341.post-15186140579327611912011-04-18T09:20:00.000-03:002011-04-18T09:20:55.952-03:00littlelover. A sequencer in "click-your-notes" easiness<div><a href="http://mandaflewaway.tumblr.com/post/2057242738">littlelover.</a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSGb5s2xMUXZcnmtF2a1OZC8ldnacfo9ofFdlIbxaRL-p7ccJrJKnUk49v0RomN40vR6EoAfVC3Xi2cCs_7pkoisuvRypaqCC4FHQ5lNJEz_nEs9d_Md1WGugLq_hHWE2XSlTA/s1600/dreamymusic.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSGb5s2xMUXZcnmtF2a1OZC8ldnacfo9ofFdlIbxaRL-p7ccJrJKnUk49v0RomN40vR6EoAfVC3Xi2cCs_7pkoisuvRypaqCC4FHQ5lNJEz_nEs9d_Md1WGugLq_hHWE2XSlTA/s320/dreamymusic.png" width="480" /></a></div><div><br />
Guy Kawasaki sent me to Holy Kaw for this "Mesmerizing music gizmo" and in a couple of minutes I've came up with this kind of "Caribbean-dreamy" pair of musical phrases.</div><div><br />
</div><div>Entertaning...</div><div><br />
</div><div><br />
</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4134341.post-66747939818781610752011-04-08T15:07:00.000-03:002011-04-08T15:07:39.769-03:00Blogger Dynamic Views are HOT, but doesn't work on this blog :( . Yet?I followed all the <a href="http://www.google.com/support/blogger/bin/answer.py?hl=en&answer=1227173&ctx=go">steps to enable the dynamic views</a> for this blog but it isn't showing...<br />
<br />
Brings a temporary alert page:<br />
<br />
<span class="Apple-style-span" style="color: #666666; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Arial, Helvetica, Geneva, sans-serif; font-size: 20px;">Sorry, dynamic views aren't available for this blog.</span><span class="Apple-style-span" style="color: #666666; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Arial, Helvetica, Geneva, sans-serif; font-size: 20px;"><br />
</span><span class="Apple-style-span" style="color: #666666; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Arial, Helvetica, Geneva, sans-serif; font-size: 20px;">You'll be redirected to the</span><span class="Apple-style-span" style="color: #666666; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Arial, Helvetica, Geneva, sans-serif; font-size: 20px;"> </span><span class="Apple-style-span" style="color: #666666; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Arial, Helvetica, Geneva, sans-serif; font-size: 20px;"><a href="http://monoblog.blogspot.com/" style="-webkit-transition-delay: initial; -webkit-transition-duration: 0.3s; -webkit-transition-property: color; -webkit-transition-timing-function: initial; color: #009eb8; outline-color: initial; outline-style: none; outline-width: initial; text-decoration: none;">blog homepage</a></span><span class="Apple-style-span" style="color: #666666; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Arial, Helvetica, Geneva, sans-serif; font-size: 20px;"> </span><span class="Apple-style-span" style="color: #666666; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Arial, Helvetica, Geneva, sans-serif; font-size: 20px;">momentarily. </span><span class="Apple-style-span" style="color: #666666; font-family: 'Helvetica Neue Light', HelveticaNeue-Light, 'Helvetica Neue', Arial, Helvetica, Geneva, sans-serif; font-size: 20px;"><a href="http://www.google.com/support/blogger/go/626c69747a" style="-webkit-transition-delay: initial; -webkit-transition-duration: 0.3s; -webkit-transition-property: color; -webkit-transition-timing-function: initial; color: #009eb8; outline-color: initial; outline-style: none; outline-width: initial; text-decoration: underline;">Learn more</a></span><br />
<br />
And then gets back to the old home view... <span class="Apple-style-span" style="color: red; font-size: large;"><b>:(</b></span>Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-4134341.post-12472948500620680262011-04-08T14:32:00.001-03:002011-04-08T14:48:21.633-03:00MoonVorbis - monogatari<a href="http://veritas-vos-liberabit.com/monogatari/2009/03/moonvorbis.html">MoonVorbis - monogatari</a><br />
<div><br />
</div><div>Learning a bit more for doing the WebM on Moonlight project. </div><div>Thanks to the commenters that pointed me to this other project.<br />
<br />
Update: It is Atsushi Enomoto, from Mono's team who is behind that blog and project. Nice to know...</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4134341.post-29781582141076706012010-11-09T11:54:00.001-02:002010-11-09T11:55:01.460-02:00A very sensible movie, The Story of Electronics - MUST WATCH<a href="http://www.youtube.com/watch?v=sW_7i6T_H78&feature=player_embedded">http://www.youtube.com/watch?v=sW_7i6T_H78&feature=player_embedded</a>Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-4134341.post-72661651398784949162010-09-03T16:22:00.000-03:002010-09-03T16:22:20.720-03:00Managed Commons including WebM subproject is at GithubSorry, forgot to update here that the Managed Commons project now resides at Github: <a href="http://github.com/monoman/Managed-Commons">http://github.com/monoman/Managed-Commons</a><br />
<br />
It includes the WebM subproject, that will allow reading/writing WebM files/streams generally and decode/play such streams in Moonlight.<br />
<br />
Little time to work on it, so the progress is very slow, but if you want to contribute, please do: Fork it at Github and send those fantastic Pull Requests.<br />
<br />
Also please post issues there to help guide/prioritize development, I'm trying to first be able to read the Matroska files, them I'll start the decoder and pump some video data, and last plug it into Moonlight. Writing streams/files has low priority at this point, unless someone really want to develop a video producing app, or a slideshow-to-video converter and want to contribute code and testing to that end.Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-4134341.post-75143830591017379872010-05-24T22:37:00.001-03:002010-09-03T16:31:07.428-03:00Trying to Bring WebM Support into MoonlightFirst step: porting Matroska's JEBML (a Java parser for EBML) to C#. EBML is the "binary xml" format that is the basis for the Matroska (thus WebM) container.<br />
<br />
I tried to convert libebml2 (written in C) to C#, but it is too "unobjectifiable" and so I searched a bit more for some easier path. Didn't look at some of the C++ parsers available, but JEBML although looking a bit abandoned of late seems to model the main concepts and surely is a good starting point. JEBML is LGPL-licensed which should not compromise the whole effort.<br />
<br />
Going with renaming .java files to .cs, and doing wholesale Find&Replace, but have to stop now, while it doesn't even compile yet. Tomorrow I hope to fix it into a somewhat compilable state, and then, I'll need to move to .NET system classes, and use generics to slim down the whole thing.<br />
<br />
The sources so far were uploaded into my Managed.Commons group, later I'll decide if add a project on Google Code, or GitHub.<br />
<br />
<a href="http://groups.google.com/group/managedcommons/web/Managed.Ebml.rar">http://groups.google.com/group/managedcommons/web/Managed.Ebml.rar</a>Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-4134341.post-59460668355225057992010-05-04T19:40:00.000-03:002010-05-04T19:40:21.427-03:00Experimenting with Twitter's Blackbird Pie, retwitting Sergio's opposition to mandatory registration to have access to Internet here in Brazil, as says a proposed set of laws:<br />
<br />
<!-- http://twitter.com/samadeu/statuses/13384481632 --> <style type='text/css'>.bbpBox{background:url(http://a1.twimg.com/profile_background_images/1499362/MeetingPenguinseven.jpg) #9ae4e8;padding:20px;}p.bbpTweet{background:#fff;padding:10px 12px 10px 12px;margin:0;min-height:48px;color:#000;font-size:18px !important;line-height:22px;-moz-border-radius:5px;-webkit-border-radius:5px}p.bbpTweet span.metadata{display:block;width:100%;clear:both;margin-top:8px;padding-top:12px;height:40px;border-top:1px solid #fff;border-top:1px solid #e6e6e6}p.bbpTweet span.metadata span.author{line-height:19px}p.bbpTweet span.metadata span.author img{float:left;margin:0 7px 0 0px;width:38px;height:38px}p.bbpTweet a:hover{text-decoration:underline}p.bbpTweet span.timestamp{font-size:12px;display:block}</style> <div class='bbpBox'><p class='bbpTweet'>Sou contra o cadastro obrigatório para acessar a Internet no Brasil. E você? <a href="http://twitter.com/search?q=%23marcocivil" title="#marcocivil" class="tweet-url hashtag" rel="nofollow">#marcocivil</a><span class='timestamp'><a title='Tue May 04 21:08:26 +0000 2010' href='http://twitter.com/samadeu/statuses/13384481632'>less than a minute ago</a> via web</span><span class='metadata'><span class='author'><a href='http://twitter.com/samadeu'><img src='http://a1.twimg.com/profile_images/43323262/samadeu_z_normal.jpg' /></a><strong><a href='http://twitter.com/samadeu'>Sergio Amadeu</a></strong><br/>samadeu</span></span></p></div><!-- end of tweet -->Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4134341.post-7756011961835849752010-04-12T12:15:00.001-03:002010-04-12T12:17:59.850-03:00Some comments on new iPhone OS 4 TOSWell, for starters, I'm one of the very pissed MonoTouch developers, that hated all the news (mostly speculative) on the restrictions Apple is possibly bringing to iPhone development.<br />
I'm not sure that MonoTouch will be effectively prohibited as a development platform for iPhone/iPad, but the signs are very indicative of that.<br />
Following the discussions on blogs (and comments) and Twitter, I'm impressed by how many people is on the same boat as me, and how heated is the criticism on Apple's move.<br />
It is contrasting to see Miguel's or Unity's calmness, so far.<br />
Anyway this post is about one item most discussions seem to neglect or are plainly wrong about:<br />
<ul><li>Some arque that Apple can't simply prohibit some very successful apps from being further developed/distributed under the new agreement, because that would cost them money to reimburse customers that have bought those apps. That is partially false: the agreement I've been obliged to sign indeed says that Apple can, at any time, yank my app from the Apple Store and <b>much worse</b> they can uninstall it from all the iPhones/iPads out there which have it installed, and that <b>any costs advent from angry customers are on my back</b>. So they may lose on future sales if the app was very successfull, but leave all the other costs of their one-sided decision to the developers, so it is kind of an easier decision for them to make, at least in the USA.</li>
</ul>Here in Brazil that clause is unlawful as with it Apple is abusing its stronger position to share the profits without sharing the risks, and worse transferring the costs of theirs decisions to someone elseUnknownnoreply@blogger.com1tag:blogger.com,1999:blog-4134341.post-49234108437987147092010-03-04T17:47:00.000-03:002010-03-04T17:47:31.430-03:00My little library Mono.GetOptions is being abandoned by MonoThe biggest lump of code I've contributed to Mono, the Mono.GetOptions library is now being erased from the project.<br />
<br />
It wasn't perfect and it's successor Mono.Options is a very capable replacement even if it doesn't do all the tricks Mono.GetOptions did in its prime.<br />
<br />
Mono.Options is friendly to C# 3.0 features like lambdas, which allows writing code as terse as Mono.GetOptions allowed without using reflection and being a somewhat large dependency, the two main gripes Miguel had with my little library.<br />
<br />
The last of Miguel gripes was about versioning (keeping more than one version in the fold) as some of the needed fixes and planned evolutions for Mono.GetOptions would mean breaking changes, which are better handled by consumers of the library by having distinct major versions with its separate APIs and attached series of minor releases.<br />
<br />
That gets even more complex as you consider that Mono.GetOptions evolution also was tied to Mono releases.<br />
<br />
If memory doesn't fail me, it was Mono.GetOptions and also other libraries imported into the project like SharpZipLib (which is still a problem as Mono is carrying two versions of it, and in this general cleanup process it is going over now we are trying to get rid of at least one of them), that prompted Miguel to change policy and ask for most non core libraries to be developed and released independently from Mono, even if developed by Mono hackers or used in some Mono utility. Better a package dependency (a soft one if possible) than the maintenance burden of embedded libraries.<br />
<br />
Well let me quit reminiscing. Farewell my kid...<br />
<br />
But if you are a loyal user of Mono.GetOptions what should you do?<br />
You can:<br />
<ol><li>Migrate to Mono.Options (or even use it's code directly as Miguel advocated some time ago because it is a lot slimmer than my library).</li>
<li>You can keep a copy of a Mono.GetOptions binary around to distribute with your solution (not an option for open source projects that would like to be accepted into Debian/Ubuntu).</li>
<li>Tell me you would like to see Commons.GetOptions, my own fork of it, get on the air and fly high. Version 1.0 of it has just the namespace change in it, so your migration effort would be minimal. See the <a href="http://groups.google.com/group/managedcommons">Managed Commons</a> group for more information.</li>
</ol>Have nice developmentsUnknownnoreply@blogger.com2tag:blogger.com,1999:blog-4134341.post-12393302853797924872010-03-04T16:56:00.003-03:002010-09-03T16:36:03.950-03:00Document Freedom Day '10 is coming<div class="separator" style="clear: both; text-align: left;"><a href="http://documentfreedom.org/">http://documentfreedom.org/</a></div>Unknownnoreply@blogger.com0