Ph: 32045020

Disclaimer: this is an automatic aggregator which pulls feeds and comments from many blogs of contributors that have contributed to the Mono project. The contents of these blog entries do not necessarily reflect Novell's position.

February 17

DVCS myths & facts

Unless you’re not in the software industry or you’ve been down to Mars for the last 5 years, you’ve heard about DVCS. It stands for Distributed Version Control System and well, it is simply “the way to go in planet Earth for all programming related stuffâ€.
[image]

Admittedly I was more than happy today when I went to the SD Times front page and read: “Branching and merging: the road ahead for SCMâ€, which is cool considering “branching & merging†is the heart of our daily work.

This is our mantra!!

We always say “branching and merging is goodâ€, we designed Plastic SCM from the ground up back in 2005 to help all the small and medium teams in companies out there moving towards parallel and later distributed development.

And now, certainly thanks to DVCS major players like Git and software heroes like Linus Torvalds, it became a major industry trend.

Version control used to be a commodity circa 2004, but 2005 rocked the SCM world and a new wave of tools tossed the foundations of the configuration management sector: big tools like PVCS and ClearCase and mass-oriented ones like Subversion started to vanish away.

And a brave new world emerged shaped to the form of the new development trends: agile, faster, more dynamic and fully distributed.

But, as usual, there’s confusion:

centralized minds making bold statements about what DVCS can and can’t do.

I’m trying to come up with a list in the purest Chuck Norris facts style about what’s true and what’s not true about DVCS. But, to start with, I’ll simply try to check whether 4 DVCS myths stated in the article in SDTimes are true.

Myth one - DVCS has a steep learning curve

Replace “dvcs†by “git†and you’ll get the original statement.

Well, it is simply incorrect: there’s much more to DVCS than Git. Give a try to Hg, check Plastic SCM or simply read a little bit more about Git and you’ll find that learning DVCS is not harder than learning Subversion or Perforce.

Myth two- DVCS GUIs aren’t there yet

“There is no effective GUI yet, so it appeals more to power users than enterprise developers.†(sic Perforce’s Randy DeFauw)

As a Plastic SCM developer this is fun to read. I know he is talking about Git, but still :P Our system is all about cool GUI and advanced DVCS. Compare Plastic SCM with others and check our GUI effectiveness.

Myth three- DVCS requires a full replica on each developer machine, compromising security

Today I feel like we were doing our homework down here at Codice: while this can be true for Git or Hg, the good thing with Plastic SCM is that it is all about choices: you want it centralized, fine, you want it distributed, fine too, you want a full replica, right, you just need to replicate a single commit (changeset) to your laptop, work on it and push back to the main server later on… fine!

Regarding security: ACL based sec, triggers, up to 7 standard database backends, LDAP support built-in… what do you mean by “compromised�

Myth four - DVCS can’t deal with big files and it is only designed for text

Down here we test Plastic SCM 4.0 with a checkin of 1Tb in a single file.

You read correct: 1 TeraByte inside a single file.

And yes, we run circles around Subversion while doing it.

SO: maybe Git or Hg have big trouble dealing with big files, but Plastic SCM is distributed and can deal with files as big as you can handle, that’s why, for instance, some reputed game developers already use Plastic SCM.

Myth five - There is no “master†file or canonical source

Tell that to Mr. Torvalds and his “dictator/lieutenant†controlled integration model.

No master file? Being distributed doesn’t mean there’s no canonical source. You can have more than one repository but still kwon which one is the master copy.

Unable to do a replica doesn’t mean you’re better organized (SVN, Perforce), it only means you’re unable to do distributed work.

TryJoinads (II.): Task-based parallelism

The implementation of joinad operations for the Task<'T> type is quite similar to the implementation of Async<'T>, because the two types have similar properties. They both produce at most one value (or an exception) and they both take some time to complete.

Just like for asynchronous workflows, pattern matching on multiple computations using match! gives us a parallel composition (with the two tasks running in parallel) and choice between clauses is non-deterministic, depending on which clause completes first.

Unlike asynchronous workflows, the Task<'T> type does not require any support for aliasing. A value of type Task<'T> represents a running computation that can be accessed from multiple parts of program. In this sense, the type Async<'T> is more similar to a function unit -> Task<'T> than to the type Task<'T> itself.

The key difference between tasks and asynchronous workflows is that the latter provides better support for writing non-blocking computations that involve asynchronous long-running operations such as I/O or waiting for a certain event. Tasks are more suitable for high-performance CPU-intensive computations.

Note: This blog post is a re-publication of a tutorial from the TryJoinads.org web page. If you read the article there, you can run the examples interactively and experiment with them: view the article on TryJoinads.

February 16

My long post on G+ about patents

https://plus.google.com/117788095721240811664/posts/VfMqiKW53St

Discuss there

About Patents. Again

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:

1) Do we need more innovation? At what pace?
2) Do we want those innovations to be widely available and affordable?

My personal answers to those questions are:

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. 
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.

Now to recap the logic, the original one, about patents:

*[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.
*[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.
*[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.
*[D] Some non-obviousness and novelty criteria would be applied to recognize new knowledge that could be protected by that temporary monopoly.

Well lets focus on the Information Technology field, what encompasses software, chips, web, smart mobile devices, and many more hot trending technologies...

[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. 

Yeah, I'm counting global numbers, as in our connected world there is little to prevent innovation coming from geographically distributed, multiple nationality, teams.

So the scarcity assumption is likely false nowadays, at least in this field...

[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.

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.

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.

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.

[C] If knowledge is increasingly shared, and collaborations over it allow for even more knowledge to be found/built, well any legal monopolies over it will effectively hamper not foster innovation. 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.

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?

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.

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. It is such a nonsensical provision that I can't understand how it wasn't fixed over the centuries. 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.

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.

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...

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. 

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. 

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. 

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.

The conclusion is simple, the system doesn't work because:

1) It doesn't guarantee the timely reaping of benefits from the shared knowledge it should promote.
2) It costs too much to operate with the current imbalances in power

Which are in direct collision with positive answers to those two questions I started all this rambling with.

Alternatives?

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... 

The design key. Global Cooperation, Local Coopetition

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.

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.

The fundamental change given positive answers for those initial questions is to transform:

Closed Knowledge equates Profit (all the ethically-wrong IP 'industrialization', by artificially faking scarcity over a plentiful inexhaustible resource)

into

Open Knowledge equates Innovation, Materializing/Distributing Innovation equates Profit
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]).

The final thought is:

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. 

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...

Hmm... I swear that I have lived through this decade before...

Just two more days of military life before I submerge yet again into a six plus month IT engagement that will keep me quite occupied. It has been great to see all my military brothering.

The US military is going through the 1991 "Ultra-SlimFast" diet yet again. Long live the Economy. May we not see the events of 2001's 911 yet again.

Remeber: "Mas sabe el Diablo por viejo que por Diablo"

February 13

First ClojureScript experiences: using Raphaël

I recently started to experiment with ClojureScript. In order to get a little bit beyond ‘hello world’ I decided to convert one of Raphaël‘s examples to ClojureScript. According to the projects homepage Raphaël is ‘a small JavaScript library that should simplify your work with vector graphics on the web’.

The sample I used draws a kind of clock. It can be found here. The relevant JavaScript code:

window.onload = function () {
    var r = Raphael("holder", 640, 480),
        angle = 0;
    while (angle < 360) {
        var color = Raphael.getColor();
        (function (t, c) {
            r.circle(320, 450, 20).attr({stroke: c, fill: c, transform: t, "fill-opacity": .4}).click(function () {
                s.animate({transform: t, stroke: c}, 2000, "bounce");
            }).mouseover(function () {
                this.animate({"fill-opacity": .75}, 500);
            }).mouseout(function () {
                this.animate({"fill-opacity": .4}, 500);
            });
        })("r" + angle + " 320 240", color);
        angle += 30;
    }
    Raphael.getColor.reset();
    var s = r.set();
    s.push(r.path("M320,240c-50,100,50,110,0,190").attr({fill: "none", "stroke-width": 2}));
    s.push(r.circle(320, 450, 20).attr({fill: "none", "stroke-width": 2}));
    s.push(r.circle(320, 240, 5).attr({fill: "none", "stroke-width": 10}));
    s.attr({stroke: Raphael.getColor()});
};

As you can see the JavaScript code is already quite compact. I especially like the use of the anonymous function in the inner loop. What I did next is a very straightforward conversion to ClojureScript just to see if I could get that to work. This turned out as:

 
(ns raph.hand) 
(defn clj->js
  "makes a javascript map from a clojure one"
  [cljmap]
  (let [out (js-obj)]
    (doall (map #(aset out (name (first %)) (second %)) cljmap))
    out))

(defn- attr [object attributes]
  (.attr object (clj->js attributes)))

(defn create-hand [paper]
  (.getColor.reset js/Raphael)
  (-> (.set paper)
      (.push (-> (.path paper "M320,240c-50,100,50,110,0,190")
                 (attr {:fill "none", :stroke-width 2})))
      (.push (-> (.circle paper 320 450 20)
                 (attr {:fill "none", :stroke-width 2})))
      (.push (-> (.circle paper 320 240 5)
                 (attr {:fill "none", :stroke-width 10})))
      (.attr "stroke" (.getColor js/Raphael))))

(defn create-circle [paper angle hand]
  (let [c (.getColor js/Raphael)
        t (str "r" angle " 320 240")
        circle (.circle paper 320 450 20)]
    (-> circle
        (attr {:stroke c, :fill c, :transform t, :fill-opacity .4})
        (.click #(.animate hand (clj->js {:stroke c, :transform t}) 2000 "bounce"))
        (.mouseover #(.animate circle (clj->js {:fill-opacity .75}) 500))
        (.mouseout #(.animate circle (clj->js {:fill-opacity .4}) 500)))))

(defn ^:export draw []
  (let [paper (js/Raphael 0 0 640 480)]
    (let [hand (create-hand paper)]
      (doseq [angle (range 0 360 30)]
        (create-circle paper angle hand)))))

The ClojureScript takes a couple of more lines than the JavaScript original: 36 versus 23. This has mostly to do with a couple of helper functions to convert Clojure maps to JavaScript maps.

A couple of things I learned/noticed during the conversion:

The threading macro (->) really is very convenient as an alternative to the fluent interface used in this example It take me a couple of minutes to realize that “getColor.reset()” is a single function call instead of a reset() called on a property Using macros in ClojureScript is possible, but not as straightforward as I thought. Macros are handled at compile time and you have to put them in a separate Clojure file. Next you reference them with require-macros in the namespace definition. How this is done exactly is shown here I replaced the ‘clj->js’ function by a macro according to this excellent blogpost by keminglabs. However the ClojureScript compiler couldn’t find the macro on its classpath and for the moment I settled for the ‘clj->js’ function There is lots of room for improvement in the code. My first idea was to make it more DSL like, using macros. But then again, SVG is already kind of a DSL, so it would probably make more sense to let the code output SVG directly instead of using Raphaël as an extra layer. David Edgar Liebke already started a project called Apogee, A ClojureScript SVG and charting library.

Finally the html code I used to test my code:

<html> 
  <head>
    <title>Hello, world</title>
    <script type="text/javascript" src="jslib/raphael-min.js"></script>
    <script type="text/javascript" src="raphtest.js"></script>
  </head>
  <body>
    <script>
        raph.hand.draw();
    </script>
  </body>
</html>

And to compile

cljsc src '{:optimizations :advanced :output-to "raphtest.js" :externs ["lib/raphael-min.js"]}

For a really good explanation on how to set up a more robust ClojureScript development environment, have a look at Sean Corfields blog.


TryJoinads (I.) - Asynchronous programming

Asynchronous workflows provide a way of writing code that does not block a thread when waiting for a completion of long-running operation such as web service call, another I/O operation or waiting for the completion of some background operation. In this article, we look at the new expressive power that joinads add to asynchronous workflows written using the async { ... } block in F#.

Note: This blog post is a re-publication of a tutorial from the TryJoinads.org web page. If you read the article there, you can run the examples interactively and experiment with them: view the article on TryJoinads.

Introducing TryJoinads.org

If you have been following my blog, you've probably already heard of joinads. It is a research extension of F# computation expressions (or monads in Haskell). The extension makes computation expressions more useful in domains like parallel, concurrent and reactive programming. However, it can be used for any type of computation including, for example, parsers. If you're interested in detailed description, you can find it in two academic papers that I blogged about previously: PADL 2011 and Haskell 2011.

The extension adds a keyword match! - as the syntax suggests, it is akin to pattern matching using match, but instead of pattern matching on values, you can pattern match on computations like Async<'T> (or on other monadic values). Just like other features of computation expressions, the match! syntax is translated to applications of several methods defined by the computation builder.

I won't say more about joinads in this post, because you can now easily try joinads yourself...

Meet the Hackers

This past week, I've started to get back into photography a bit more (thanks, Nina!) and started taking my camera into the office with me every day to remind myself to take photos. As a result, I've taken a bunch of photographs of my co-workers in the office.

Would you like to meet the hackers?

The Founders

Most of you would probably recognize the infamous Miguel de Icaza, Xamarin's CTO:

Miguel de Icaza

Next up is our very own Steve Jobs, Nat Friedman, our CEO and the man who reminds us to pay attention to the details:

Nat Friedman

Another person many of you will recognize is our very own COO, Joseph Hill:

Joseph Hill

MonoDevelop Team

Well, okay, I've only got a photo of the famous Michael Hutchinson, but he's a very important player in the development of MonoDevelop.

Michael Hutchinson

QA Team

Next up, we have the QA team. They do their best to make sure that we, the developers, didn't break anything. When they aren't testing a specific application before a launch, they hammer away at our products and try to find weak spots in our code (but we still love them anyway!)

This is PJ, and as you can see, he's demonstrating how to QA popcorn corn cobs:

PJ

(Did it pass the test, PJ?)

Next up is Lindsey. She's been working on writing automated tests to make it less likely for releases to include regressions. Let's hope she's successful!

Lindsey

Release Team

Alex Corrado is the man behind the curtain. He's our head Release Team engineer and also the brilliant mastermind that started CXXI, the Mono C++ interop project that we hope to give him time to finish someday soon.

Alex Corrado

Web Team

The newest addition to our ranks (just this week, in fact!), but long-time contributor to the Mono project, is Bojan Rajković. You can see we've already put him to work (he is no doubt puzzling over some ASP.NET code on his screen).

Bojan Rajković

Documentation Team

Nina is the only Cambridge resident on our Docs Team. Specifically, she hacks on our Documentation Portal. She's also the one who has encouraged me to get back into taking photographs, so she'll have to put up with me using her as a guinea pig the most. Here she is taunting me with her hot cup of Chaider:

Nina

February 12

C# for Gaming: Slides

You can now get the Slides for my Mono for Game Development talk.

Or you can go straight to the resources for the talk.

February 10

Easily create iOS user interfaces with MonoTouch.Dialog

Just two days ago, we launched MonoTouch 5.2, featuring a memory profiler, unit testing framework, and a new generational garbage collector. With this release we also bundled a popular library called MonoTouch.Dialog; so it’s as easy as adding a new reference to the library to include it into your project.

MonoTouch.Dialog makes building native user interfaces in iOS incredibly easy. But how do you actually use it? Mike Bluestein, who you might recognize from our Xamarin Seminars, has created a 15 minute introduction on MonoTouch.Dialog to get you started.

[ http://www.youtube.com/embed/j7OC5r8ZkYg?version=3

Important: To view this video in HD, open it up in YouTube or select 720p in the video above.

Using MonoTouch.Dialog allows applications to be created with rich, table-based user interfaces, without all the complexities associated with creating such interfaces manually. At the same time, MonoTouch.Dialog doesn’t limit the ability to customize such applications. This video introduces MonoTouch.Dialog by way of an example that demonstrates how to create a master- detail style of application. It shows how to use MonoTouch.Dialog to present hierarchies of information and use it to create table based user interfaces automatically.

For additional information be sure to check out our MonoTouch.Dialog tutorial.

C# for Gaming: AltDevConf This Weekend

It is a great honor to participate this weekend on the online AltDevConf conference. This is an online two-day event

Our goal is twofold: To provide free access to a comprehensive selection of game development topics taught by leading industry experts, and to create a space where bright and innovative voices can also be heard. We are able to do this, because as an online conference we are not subject to the same logistic and economic constrains imposed by the traditional conference model.

I will be participating in the talk on Cross Platform Game Development using C# with Matthieu Laban and Philippe Rollin.

You can register here for our session on Saturday at 3pm Eastern Standard Time, noon Pacific Time, and 9pm Paris Time.

If you are located in the Paris time zone, that means that you get to enjoy the talk sipping a tasty hot chocolate with some tasty baguettes.

February 8

MonoTouch 5.2 is Here!

Build Great iOS Apps in C#

We’re very proud to announce the availability of MonoTouch 5.2. This release represents months of improvements, with over 300 new features, bugfixes, and enhancements. This is without question the best release of MonoTouch to date.

Here’s a quick rundown of some of the new features in MonoTouch 5.2.

Faster and easier creation of iPhone/iPad Dialogs

MonoTouch.Dialog is a new API that allows developers to create HIG-compliant native iOS screens and dialog boxes and to show table-based information easily. It removes the burden of creating callbacks, data sources and delegate implementation to render tables. MonoTouch.Dialog comes with a range of custom cell renderers that vastly reduce the time it takes to build complex screens and you can even create user interfaces dynamically on demand from JSON data served up online! You can learn more in our MonoTouch.Dialog tutorial and you can also browse the online API documentation.

Memory Profiler

The new MonoTouch memory profiler enables you to identify memory usage hotspots and fix them quickly, tracking the memory usage of managed objects, showing which objects are still referenced, and who is referencing them.

New Garbage Collection Engine

This version of MonoTouch also includes Mono’s new generational garbage collector. You can opt into this new garbage collector by selecting “SGen” as one of the options in your build settings. For certain apps, this can lead to lower memory usage and better performance.

On-device unit testing

Ensure that your app is ready to release with our built-in unit testing framework for running unit tests on both the iOS simulator and your device. You can run your tests manually, or automate them with Instruments. Check out our tutorial on writing unit tests for MonoTouch for more information.

New Libraries

From Mono, we brought the System.Numerics library that brings the Complex and Big Integer data types as well as support for Memory Mapped IO.

But wait, there’s more…

MonoTouch 5.2 also includes more than 300 customer requested enhancements that make it easier to develop great iOS applications. See a full listing of new features and capabilities here.

MonoTouch 5.2 is available immediately to all MonoTouch customers currently within their annual subscription period; just run MonoDevelop and select the Check for Updates menu item.

For complete product information about MonoTouch, and to download a free trial, visit http://xamarin.com/monotouch.

To see example apps built with Xamarin technology, visit: http://xamarin.com/apps.

Monologue

Monologue is a window into the world, work, and lives of the community members and developers that make up the Mono Project, which is a free cross-platform development environment used primarily on Linux.

If you would rather follow Monologue using a newsreader, we provide the following feed:

[image] RSS 2.0 Feed

Monologue is powered by Mono and the Monologue software.

Bloggers

Aaron Bockover
abock feed
abock
Alan McGovern
_Alan_ feed
_Alan_
Alex Graveley
orph feed
orph
Alex Rønne Petersen
Zor feed
Zor
Alexandre Gomes
Alexmipego feed
Alexmipego
Alp Toker
alp feed
alp
Andreia Gaita
shana feed
shana
Andrés G. Aragoneses
knocte feed
knocte
Andrew Jorgensen
ajorg feed
ajorg
Error retrieving/loading feedAnkit Jain
ankit feed
ankit
Error retrieving/loading feed
Atsushi Enomoto
eno feed
eno
Ben Maurer
BenM feed
BenM
Ben Motmans
bmotmans feed
bmotmans
Bertrand Lorentz
Bertrand feed
Bertrand
Boris Kirzner
borisk feed
borisk
Error retrieving/loading feedBoyd Timothy
boyd feed
boyd
Error retrieving/loading feed
Brad Taylor
brad feed
brad
Error retrieving/loading feedBrent Schooley
brent feed
brent
Error retrieving/loading feed
Brian Nickel
 feed
C.J. Adams-Collier
cj feed
cj
Calvin Gaisford
calvin feed
calvin
Carlos Alberto Cortez
 feed
César López Natarén
cesar feed
cesar
Chris Bacon
chrisb feed
chrisb
Chris Gameweld
 feed
Chris Hardy
chrisntr feed
chrisntr
Chris Howie
SerajewelKS feed
SerajewelKS
Chris Toshok
toshok feed
toshok
Christian Hergert
vwdude feed
vwdude
Códice Software
 feed
Craig Dunn
 feed
Dan Winship
danw feed
danw
Daniel Morgan
danmorg feed
danmorg
Debackerl
 feed
Duncan Mak
duncan feed
duncan
Eric Maupin
ermau feed
ermau
Everaldo Canuto
everaldo feed
everaldo
Francisco Figueiredo
 feed
Gabriel Burt
gabaug feed
gabaug
Gaia Ajax
 feed
Gendarme
#gendarme feed
#gendarme
Geoff Norton
kangaroo feed
kangaroo
Gernot Margreitner
 feed
Gonzalo Paniagua Javier
gonzalo feed
gonzalo
Hector Gomez
 feed
Ivan Zlatev
ivanz feed
ivanz
Jackson Harper
jackson feed
jackson
Jambunathan K
 feed
Jamie Cansdale
 feed
Jared Hendry
 feed
Jb Evain
jb feed
jb
Jeffrey Stedfast
jeff feed
jeff
Jérémie Laval
Garuma feed
Garuma
Jeroen Frijters
jeroen feed
jeroen
Jerry Maine
 feed
Jim Purbrick
babbage feed
babbage
Jo Shields
directhex feed
directhex
Joe Audette
 feed
Joe Shaw
joe feed
joe
Jonathan Chambers
jchambers feed
jchambers
Jonathan Pobst
jpobst feed
jpobst
Jonathan Pryor
jonp feed
jonp
Jordi Mas
Jordi feed
Jordi
Joshua Tauberer
 feed
Kenneth Christiansen
 feed
Kenneth Pouncey
kjpou1 feed
kjpou1
Kenny Parnell
kennyp feed
kennyp
Lluis Sánchez
lluis feed
lluis
Marc Christensen
mecworks feed
mecworks
Marcos Marín
 feed
Marek Habersack
grendel feed
grendel
Marek Safar
Marek feed
Marek
Marek Sieradzki
msieradzki feed
msieradzki
Mario Carrion
mario feed
mario
Mario Sopena
mario feed
mario
Mark Probst
schani feed
schani
Martin Baulig
baulig feed
baulig
Matej Spiller
 feed
Maurits Rijk
 feed
Michael Barker
 feed
Michael Dominik
mdk feed
mdk
Michael Hutchinson
mhutch feed
mhutch
miguel de icaza
miguelx feed
miguelx
Miguel de Icaza
miguel feed
miguel
Mike Kestner
mkestner feed
mkestner
Mike Krüger
mkrueger feed
mkrueger
MindTouch
 feed
Mirco Bauer
meebey feed
meebey
Mono Summer of Code
 feed
Nagappan Alagappan
nags feed
nags
Nemerle
 feed
Nestor Salceda
 feed
Nidhi Rawal
 feed
Noam Lampert
 feed
Olivier Dufour
 feed
Paco Martinez
paco feed
paco
Paolo Molaro
 feed
Patrick van Staveren
trick feed
trick
Pedro Martínez
 feed
Rafael Ferreira
raf feed
raf
Rafael Teixeira
monoman feed
monoman
Rafi Mizrahi
 feed
Ritvik Mayank
 feed
Rodrigo B de Oliveira
bamboo feed
bamboo
Rolf Bjarne Kvinge
rolf feed
rolf
Ruben Vermeersch
rubenv feed
rubenv
Sam Hocevar
sam feed
sam
Sandy Armstrong
sandy feed
sandy
Sanjoy Das
sanjoyd feed
sanjoyd
Scott Peterson
 feed
Sebastien Pouliot
spouliot feed
spouliot
Seo Sanghyeon
sanxiyn feed
sanxiyn
Simon Guindon
simon feed
simon
Stephane Delcroix
sde feed
sde
Todd Berman
tberman feed
tberman
Tomas Petricek
 feed
Torello Querci
mk8 feed
mk8
Error retrieving/loading feedTouch4Apps
 feed
Error retrieving/loading feed
Unity Technologies
 feed
Valentin Sawadski
 feed
Veerapuram Varadhan
varadhan feed
varadhan
Wade Berrier
wberrier feed
wberrier
Wbem Tools
 feed
Will Johansson
 feed
Xamarin
xamarin_com feed
xamarin_com
[image]


You are viewing a mobilized version of this site...
View original page here

Mobilized by Mowser Mowser