<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Lupi on Software</title>
	<atom:link href="http://blog.lupi-software.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.lupi-software.com</link>
	<description></description>
	<lastBuildDate>Thu, 29 Dec 2011 10:28:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.lupi-software.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Lupi on Software</title>
		<link>http://blog.lupi-software.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.lupi-software.com/osd.xml" title="Lupi on Software" />
	<atom:link rel='hub' href='http://blog.lupi-software.com/?pushpress=hub'/>
		<item>
		<title>MS-SQL: Cleaning up duplicates with Common Table Expressions</title>
		<link>http://blog.lupi-software.com/2011/12/27/ms-sql-cleaning-up-duplicates-with-common-table-expressions/</link>
		<comments>http://blog.lupi-software.com/2011/12/27/ms-sql-cleaning-up-duplicates-with-common-table-expressions/#comments</comments>
		<pubDate>Tue, 27 Dec 2011 09:10:16 +0000</pubDate>
		<dc:creator>Roberto Lupi</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[ms-sql]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">https://allupo.wordpress.com/?p=1130</guid>
		<description><![CDATA[It is a common pattern to prefer non-semantic primary keys — auto-incremented integers or UUIDs — over semantic ones. It&#8217;s advisable to define unique indexes on the semantic identity fields, but sometimes you avoid it for performance reasons or you just forget. When things screw up, you end up with multiple records relating to the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.lupi-software.com&amp;blog=5339219&amp;post=1130&amp;subd=allupo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It is a common pattern to prefer non-semantic primary keys — auto-incremented integers or UUIDs — over semantic ones. It&#8217;s advisable to define unique indexes on the semantic identity fields, but sometimes you avoid it for performance reasons or you just forget.</p>
<p>When things screw up, you end up with multiple records relating to the same entity or relation. How do you clean things up?</p>
<p>Let&#8217;s take the simple case of a many-to-many relation, implemented as a linking table:</p>
<p><pre class="brush: sql;">
CREATE TABLE First (
	First_ID INT IDENTITY(1,1),
	-- more fields
	PRIMARY KEY (First_ID)
);

CREATE TABLE Second (
	Second_ID INT IDENTITY(1,1),
	-- more fields
	PRIMARY KEY (Second_ID)
);

CREATE TABLE First_Second(
	First_Second_ID INT IDENTITY(1,1),
	First_ID INT FOREIGN KEY REFERENCES First,
	Second_ID INT FOREIGN KEY REFERENCES Second
);
</pre></p>
<p>If we end up with duplicate <code>First_Second</code> records, we can get rid of them using this code:</p>
<p><pre class="brush: plain;">
WITH records(First_Second_ID, RecNo) AS
  SELECT
    First_Second_ID,
    ROW_NUMBER() OVER( PARTITION BY First, Second ORDER BY First, Second) AS RecNo
  FROM First_Second

DELETE FROM records WHERE RecNo &gt; 1;
</pre></p>
<p>Doing the same without CTE is possible, but less clean and straightforward. It involves temporary tables, cursors or nested subqueries.</p>
<p>I learned this trick with Microsoft SQL Server. Postgresql, DB2, Oracle and a bunch of <a href="http://en.wikipedia.org/wiki/Common_table_expression">other databases support CTE as well</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/allupo.wordpress.com/1130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/allupo.wordpress.com/1130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/allupo.wordpress.com/1130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/allupo.wordpress.com/1130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/allupo.wordpress.com/1130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/allupo.wordpress.com/1130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/allupo.wordpress.com/1130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/allupo.wordpress.com/1130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/allupo.wordpress.com/1130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/allupo.wordpress.com/1130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/allupo.wordpress.com/1130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/allupo.wordpress.com/1130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/allupo.wordpress.com/1130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/allupo.wordpress.com/1130/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.lupi-software.com&amp;blog=5339219&amp;post=1130&amp;subd=allupo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.lupi-software.com/2011/12/27/ms-sql-cleaning-up-duplicates-with-common-table-expressions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/78e13892b6611a140af58dbff95eeaea?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kitten Lulu</media:title>
		</media:content>
	</item>
		<item>
		<title>Cone of Silence</title>
		<link>http://blog.lupi-software.com/2011/12/14/cone-of-silence/</link>
		<comments>http://blog.lupi-software.com/2011/12/14/cone-of-silence/#comments</comments>
		<pubDate>Wed, 14 Dec 2011 14:43:21 +0000</pubDate>
		<dc:creator>Roberto Lupi</dc:creator>
				<category><![CDATA[Business & Management]]></category>

		<guid isPermaLink="false">https://allupo.wordpress.com/?p=1064</guid>
		<description><![CDATA[Once upon a time, I worked for a small company that had a tiny office. It was just a big room where all the developers, designers and creatives assembled, plus a couple of small ones where the owner and his secretary spent most of the time on their phone pitching to new clients or trying [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.lupi-software.com&amp;blog=5339219&amp;post=1064&amp;subd=allupo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignright" style="width: 310px"><a href="http://en.wikipedia.org/wiki/File:Me-_cone.JPG"><img class="zemanta-img-inserted zemanta-img-configured" title="Me- cone" src="http://upload.wikimedia.org/wikipedia/en/thumb/8/89/Me-_cone.JPG/300px-Me-_cone.JPG" alt="Me- cone" width="300" height="225" /></a><p class="wp-caption-text">Image via Wikipedia</p></div>
<p>Once upon a time, I worked for a small company that had a tiny office. It was just a big room where all the developers, designers and creatives assembled, plus a couple of small ones where the owner and his secretary spent most of the time on their phone pitching to new clients or trying to get them pay overdue bills.</p>
<p>Italy is full of old buildings with tall roofs, hard to heat and with terrible acoustics. This was not different. The &#8220;Production&#8221; room was small and noisy. It was much like cubicle-land, but worse. Being a bunch of nerds, we devised a nerdy solution.</p>
<p>Whenever one deemed the room too noisy, he would cast a Cone of Silence — embodied in a physical paper cone placed in the middle of the central desk. It magically turned the noisy office room into a silent library one. Meetings, chit chat, even working together was banned for a few hours. Like any respectable spell, you couldn&#8217;t cast it in rapid succession. You could cast it once per week, then you had to wait and recharge to prevent abuse and let others finish their work.</p>
<p>All in all, <em>Cone of Silence</em> worked really well.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/allupo.wordpress.com/1064/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/allupo.wordpress.com/1064/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/allupo.wordpress.com/1064/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/allupo.wordpress.com/1064/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/allupo.wordpress.com/1064/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/allupo.wordpress.com/1064/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/allupo.wordpress.com/1064/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/allupo.wordpress.com/1064/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/allupo.wordpress.com/1064/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/allupo.wordpress.com/1064/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/allupo.wordpress.com/1064/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/allupo.wordpress.com/1064/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/allupo.wordpress.com/1064/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/allupo.wordpress.com/1064/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.lupi-software.com&amp;blog=5339219&amp;post=1064&amp;subd=allupo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.lupi-software.com/2011/12/14/cone-of-silence/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/78e13892b6611a140af58dbff95eeaea?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kitten Lulu</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/wikipedia/en/thumb/8/89/Me-_cone.JPG/300px-Me-_cone.JPG" medium="image">
			<media:title type="html">Me- cone</media:title>
		</media:content>
	</item>
		<item>
		<title>@rethinkdb dog challenge</title>
		<link>http://blog.lupi-software.com/2011/12/13/rethinkdb-dog-challenge/</link>
		<comments>http://blog.lupi-software.com/2011/12/13/rethinkdb-dog-challenge/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 19:10:00 +0000</pubDate>
		<dc:creator>Roberto Lupi</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[C]]></category>

		<guid isPermaLink="false">http://blog.lupi-software.com/?p=1044</guid>
		<description><![CDATA[Rethinkdb recently published a cat challenge. Well, it&#8217;s not really a challenging challenge if you can solve it by looking up Vigenère encryption from Wikipedia and following instructions. I don&#8217;t want to debate the pro and cons of the remainder operator in ANSI C and CPython: the two standards adopt one the divisor, the other the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.lupi-software.com&amp;blog=5339219&amp;post=1044&amp;subd=allupo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://rethinkdb.com/">Rethinkdb</a> recently published a cat challenge. Well, it&#8217;s not really a challenging challenge if you can solve it by looking up <a href="http://en.wikipedia.org/wiki/Vigen%C3%A8re_cipher">Vigenère encryption</a> from Wikipedia and following instructions.</p>
<p>I don&#8217;t want to debate the pro and cons of the remainder operator in <a class="zem_slink" title="ANSI C" href="http://en.wikipedia.org/wiki/ANSI_C" rel="wikipedia">ANSI C</a> and <a class="zem_slink" title="CPython" href="http://www.python.org/" rel="homepage">CPython</a>: the two standards adopt one the divisor, the other the dividend&#8217;s sign for the result of the remainder operator. While the original K&amp;R C left it to be platform dependent, if I remember correctly. I am not much of  a systems hacker and I am on the wrong side of the Atlantic to submit my candidature, unless they&#8217;d consider sponsoring people from Europe — which I doubt.</p>
<p>I find however interesting their <a href="http://1.61803398874.com/canine/">additional challenge</a>, the <strong>dog</strong> command: it&#8217;s really a sort of glorified, asynchronous version of <strong>tee</strong>.</p>
<p>I am preparing for an interview in Berlin tomorrow, so I don&#8217;t have the time to write a full blown dog command today, but I did some preliminary research.</p>
<p>Writing non-blocking, <a class="zem_slink" title="Asynchronous I/O" href="http://en.wikipedia.org/wiki/Asynchronous_I/O" rel="wikipedia">Asynchronous I/O</a> is still somewhat platform dependant:</p>
<ul>
<li>On Windows, your best bet is <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa365747(v=vs.85).aspx">overlapped I/O</a> with <strong>FILE_FLAG_OVERLAPPED</strong>.</li>
<li>On POSIX, you can use <a href="http://pwet.fr/man/linux/conventions/posix/aio_h">aio.h</a>.</li>
<li>If you are specifically on Linux, you can go even faster avoiding copying in and out of user space by using <a href="http://linux.die.net/man/2/tee">tee(2)</a>, <a href="http://linux.die.net/man/2/splice">splice(2)</a> and <a href="http://linux.die.net/man/2/vmsplice">vmsplice(2)</a>.</li>
</ul>
<p>Given that they wrote a man page for <strong>dog</strong>, I&#8217;d go with the POSIX or Linux solution.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/allupo.wordpress.com/1044/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/allupo.wordpress.com/1044/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/allupo.wordpress.com/1044/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/allupo.wordpress.com/1044/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/allupo.wordpress.com/1044/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/allupo.wordpress.com/1044/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/allupo.wordpress.com/1044/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/allupo.wordpress.com/1044/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/allupo.wordpress.com/1044/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/allupo.wordpress.com/1044/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/allupo.wordpress.com/1044/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/allupo.wordpress.com/1044/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/allupo.wordpress.com/1044/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/allupo.wordpress.com/1044/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.lupi-software.com&amp;blog=5339219&amp;post=1044&amp;subd=allupo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.lupi-software.com/2011/12/13/rethinkdb-dog-challenge/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/78e13892b6611a140af58dbff95eeaea?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kitten Lulu</media:title>
		</media:content>
	</item>
		<item>
		<title>Functional vs. Object Oriented, an unusual point of view</title>
		<link>http://blog.lupi-software.com/2011/12/13/functional-vs-object-oriented-an-unusual-point-of-view/</link>
		<comments>http://blog.lupi-software.com/2011/12/13/functional-vs-object-oriented-an-unusual-point-of-view/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 09:37:46 +0000</pubDate>
		<dc:creator>Roberto Lupi</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Functional programming]]></category>
		<category><![CDATA[Object-oriented programming]]></category>
		<category><![CDATA[Objective Caml]]></category>

		<guid isPermaLink="false">http://blog.lupi-software.com/?p=1040</guid>
		<description><![CDATA[While searching for a job, I met a proprietary trading company that uses functional languages for their own systems. Jane Street is a private equity firm, specializing in statistical arbitrage. They use algorithms to take advantage of the small inefficiencies in (or between) financial markets. Their main needs are correctness, agility and performance. Their tool [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.lupi-software.com&amp;blog=5339219&amp;post=1040&amp;subd=allupo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://player.vimeo.com/video/14317442" width="560" height="420" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe></p>
<p>While searching for a job, I met a proprietary trading company that uses functional languages for their own systems. <a href="http://www.janestreet.com/">Jane Street</a> is a private equity firm, specializing in statistical arbitrage. They use algorithms to take advantage of the small inefficiencies in (or between) financial markets.</p>
<p>Their main needs are <strong>correctness</strong>, <strong>agility</strong> and <strong>performance</strong>. Their <a href="http://www.janestreet.com/technology/ocaml.php">tool of choice</a> is <a href="http://caml.inria.fr/">OCaml</a>.</p>
<p>They trade 1 to 2 millions shares a day, 2 to 4 billion dollars flow through their system. There is no faster way to run yourself out of business than making lots of bad decisions automatically in a tight loop. Algorithmic trading is an arms race, people compete on milliseconds in placing orders to get an edge but the best way to win is to outsmart adversaries.</p>
<p><span id="more-1040"></span></p>
<p>Jane Street was a pretty conservative shop a decade ago. They were smaller, Excel and VBA satisfied their needs. As they outgrew them, they looked at the usual tools in the enterprise market and found them lacking.</p>
<p>This firm deeply cares about the quality of their software: they are betting their own money, billions of dollars, on it. It’s no wonder that senior partners committed to review each and every line of code that goes into production for critical components.</p>
<p><em>Jane Street considered rewriting their systems in C#, but abandoned it in favor of OCaml</em>. They cite verbosity and lack of clarity as important reasons in this choice.</p>
<p><strong>Verbosity</strong> is kind of obvious for languages like C# or Java, although in the recent years there were mild improvements. An interesting point that Yaron Minsky (Jane Street’s managing director) made is that these languages —when applied to large systems— tend to make people cut and paste, reimplementing the wheel over and over, because they are not expressive enough to capture high level variability and invariants properly. You can’t pay enough people to code review boilerplate, dull code. The tenth time they see the same-looking code block, they skim over it and miss important bugs.</p>
<p><em>I do agree</em>: although C# and Java greatly improved in the last years, they are nowhere close to the expressiveness of OCaml polymorphic variants, pattern matching and module functors.</p>
<p>I expect F# and Scala —the former a OCaml cousin running on the .NET platform, the latter a functional/object oriented language running on the Java VM— to slowly make inroads in the enterprise in the next few years.</p>
<p>It is both a matter of technology — functional languages needs are different from object oriented ones and platforms need time to adapt — and people — we need a new generation of coders before enterprises will truly grasp functional programming. It’s a kind of catch-22 situation that slows down adoption.</p>
<p><strong>Lack of clarity</strong> is due to the “spooky action at distance” things in OOP called inheritance. Senior partners at Jane Street, bright people but not professional programmers, found it hard to understand what was going on and what code was actually being executed. They are right.</p>
<p>As the OOP community has finally figured out, inheritance is often a bad way to get polymorphism, but <em>I don’t fully buy into Minsky’s argument</em>: in order to write concise programs in functional languages, you have to introduce the same kind of indirection through the use of high-order functions and module functors. It’s only slightly less confusing.</p>
<p>It is true that type systems, when used properly, will help you write highly readable, high-order code better in functional languages than in object oriented ones — but that is only because the functional languages are younger and come from an academic background, they benefit from more recent research.</p>
<p>There are languages —Eiffel, for an example that is not so cutting edge— that let you reason about the correctness of your programs even when a high degree of polymorphism is involved.</p>
<p><strong>Agility</strong> is the ability to adapt code to new requirements. Being able to refactor code fast and without errors is key to this goal.</p>
<p>Minsky cites algebraic data types and the semantic of the <code>match</code> statement in OCaml as important tools in this regard. The same is true for object oriented code, using double dispatch or —if you have a sane enough language— multi-method dispatch.</p>
<p>A great gem from Mr. Minsky is: “you have to think about the type system as a tool of its own”, you have to <strong>encode the invariants of your domain in your types</strong>. This is key to using static languages properly, no matter if they are functional or object oriented.</p>
<p><strong>Performance</strong> is the last big theme that nudged Jane Street to choose OCaml.</p>
<p>They think that ML languages sit in a sweet spot between expressiveness and performance, a kind of local equilibrium where you get a lot on both axes. If you move either way, you have to give on the other one.</p>
<p>That is true: OCaml, in particular, has quite a good native code compiler. It produces fast code without requiring esoteric optimization techniques. It’s easy to reason about its output and it’s relatively easy to fine-tune its garbage collector, facts that help a lot in the kind of soft realtime arena where Jane Street plays.</p>
<p>Minsky cites <em>UIs, Concurrency, External libraries and Programming in the Large as weak points in OCaml</em>. Because of the particular needs of his firm, these are less of a problem than in other situations.</p>
<p>In my opinion, these are actually the key strengths that make Scala or F# better functional languages for common situations than niche players like OCaml.</p>
<h6 class="zemanta-related-title" style="font-size:1em;">Related articles</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://ocaml.janestreet.com/?q=node/61">Caml Trading talk at CMU</a> (ocaml.janestreet.com)</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/allupo.wordpress.com/1040/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/allupo.wordpress.com/1040/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/allupo.wordpress.com/1040/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/allupo.wordpress.com/1040/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/allupo.wordpress.com/1040/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/allupo.wordpress.com/1040/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/allupo.wordpress.com/1040/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/allupo.wordpress.com/1040/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/allupo.wordpress.com/1040/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/allupo.wordpress.com/1040/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/allupo.wordpress.com/1040/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/allupo.wordpress.com/1040/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/allupo.wordpress.com/1040/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/allupo.wordpress.com/1040/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.lupi-software.com&amp;blog=5339219&amp;post=1040&amp;subd=allupo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.lupi-software.com/2011/12/13/functional-vs-object-oriented-an-unusual-point-of-view/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/78e13892b6611a140af58dbff95eeaea?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kitten Lulu</media:title>
		</media:content>
	</item>
		<item>
		<title>Being an effective project manager</title>
		<link>http://blog.lupi-software.com/2011/12/10/being-an-effective-project-manager/</link>
		<comments>http://blog.lupi-software.com/2011/12/10/being-an-effective-project-manager/#comments</comments>
		<pubDate>Sat, 10 Dec 2011 13:42:29 +0000</pubDate>
		<dc:creator>Roberto Lupi</dc:creator>
				<category><![CDATA[Business & Management]]></category>
		<category><![CDATA[Project management]]></category>

		<guid isPermaLink="false">http://blog.lupi-software.com/?p=1033</guid>
		<description><![CDATA[Lesson learned: Being an effective project manager is not about doing the work yourself, it is about making sure the right resource is applied to the right problem. (from The gorilla is named Hogarth)<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.lupi-software.com&amp;blog=5339219&amp;post=1033&amp;subd=allupo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Lesson learned:</p>
<blockquote><p>
Being an effective project manager is not about doing the work yourself, it is about making sure the right resource is applied to the right problem.
</p></blockquote>
<p>(from <a href="http://thegorillaisnamedhogarth.blogspot.com/2011/02/responsible-authority-gorilla.html">The gorilla is named Hogarth</a>)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/allupo.wordpress.com/1033/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/allupo.wordpress.com/1033/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/allupo.wordpress.com/1033/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/allupo.wordpress.com/1033/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/allupo.wordpress.com/1033/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/allupo.wordpress.com/1033/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/allupo.wordpress.com/1033/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/allupo.wordpress.com/1033/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/allupo.wordpress.com/1033/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/allupo.wordpress.com/1033/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/allupo.wordpress.com/1033/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/allupo.wordpress.com/1033/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/allupo.wordpress.com/1033/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/allupo.wordpress.com/1033/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.lupi-software.com&amp;blog=5339219&amp;post=1033&amp;subd=allupo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.lupi-software.com/2011/12/10/being-an-effective-project-manager/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/78e13892b6611a140af58dbff95eeaea?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kitten Lulu</media:title>
		</media:content>
	</item>
		<item>
		<title>Try Harder</title>
		<link>http://blog.lupi-software.com/2011/12/08/try-harder/</link>
		<comments>http://blog.lupi-software.com/2011/12/08/try-harder/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 16:31:56 +0000</pubDate>
		<dc:creator>Roberto Lupi</dc:creator>
				<category><![CDATA[Business & Management]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[pragpub]]></category>

		<guid isPermaLink="false">http://blog.lupi-software.com/?p=1027</guid>
		<description><![CDATA[I have found this little gem in PragPub, May 2011: A depressing theme with many of today’s software shops is the need to only make two kinds of hires. The first is a developer. After all, a developer codes, and that makes money! The second hire is an MBA-style manager. This manager is an HR-type [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.lupi-software.com&amp;blog=5339219&amp;post=1027&amp;subd=allupo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have found this little gem in <a title="PragPub" href="http://pragpub.com/magazines">PragPub</a>, May 2011:</p>
<blockquote><p>A depressing theme with many of today’s software shops is the need to only make two kinds of hires. The first is a developer. After all, a developer codes, and that makes money! The second hire is an MBA-style manager. This manager is an HR-type who handles budgets, spreadsheets, and politics.</p>
<div class="wp-caption alignright" style="width: 310px"><a href="http://commons.wikipedia.org/wiki/File:American_soldier_in_Iraq_going_through_concertina_wire.jpg"><img class="zemanta-img-inserted zemanta-img-configured " src="http://upload.wikimedia.org/wikipedia/commons/thumb/a/a1/American_soldier_in_Iraq_going_through_concertina_wire.jpg/300px-American_soldier_in_Iraq_going_through_concertina_wire.jpg" alt="" width="300" height="201" /></a><p class="wp-caption-text">Is Your Software Project in the Trenches? (Image via Wikipedia)</p></div>
<p>Then someone like me comes along. I’ve got a development background and I’ve managed as well, but today I don’t do either. Instead I work with a team to see where the problems are. I sit with them and look for the areas that have become blind spots, and then find ways to solve those problems. I’ve saved large organizations substantial amounts of money by improving how their teams work. But I’ve usually done this by hiring in as a developer or manager. It’s a rare company that hires someone to improve their process. They’d much rather sit in the trenches and inspire their soldiers to leap out in the face of concertina wire and machine guns, sure that with the right mix of courage and moral fiber, this time they’ll finally ship that product!</p>
<p>As we look around, this attitude seems so… stupid. They seem to think that by trying harder they’ll succeed. How many of our favorite sports teams don’t have coaches, but ask their professional athletes to try harder?</p>
<p style="font-weight:bold;">From “Is Your Software Project in the Trenches?” by Jared Richardson</p>
</blockquote>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/allupo.wordpress.com/1027/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/allupo.wordpress.com/1027/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/allupo.wordpress.com/1027/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/allupo.wordpress.com/1027/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/allupo.wordpress.com/1027/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/allupo.wordpress.com/1027/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/allupo.wordpress.com/1027/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/allupo.wordpress.com/1027/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/allupo.wordpress.com/1027/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/allupo.wordpress.com/1027/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/allupo.wordpress.com/1027/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/allupo.wordpress.com/1027/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/allupo.wordpress.com/1027/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/allupo.wordpress.com/1027/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.lupi-software.com&amp;blog=5339219&amp;post=1027&amp;subd=allupo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.lupi-software.com/2011/12/08/try-harder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/78e13892b6611a140af58dbff95eeaea?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kitten Lulu</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/wikipedia/commons/thumb/a/a1/American_soldier_in_Iraq_going_through_concertina_wire.jpg/300px-American_soldier_in_Iraq_going_through_concertina_wire.jpg" medium="image" />
	</item>
		<item>
		<title>Developer? Manager? You can&#8217;t do both jobs at the same time</title>
		<link>http://blog.lupi-software.com/2011/11/05/developer-manager-you-cant-do-both-jobs-at-the-same-time/</link>
		<comments>http://blog.lupi-software.com/2011/11/05/developer-manager-you-cant-do-both-jobs-at-the-same-time/#comments</comments>
		<pubDate>Sat, 05 Nov 2011 10:59:15 +0000</pubDate>
		<dc:creator>Roberto Lupi</dc:creator>
				<category><![CDATA[Business & Management]]></category>
		<category><![CDATA[management]]></category>

		<guid isPermaLink="false">http://blog.lupi-software.com/?p=972</guid>
		<description><![CDATA[You can be proficient in both, maybe you are good at one, it&#8217;s very hard to be excellent at both &#8211; but the whole point is that you cannot fill both roles at the same time. It’s not going to work. One requires focused effort and attention, the other constantly going out and reacting, protecting [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.lupi-software.com&amp;blog=5339219&amp;post=972&amp;subd=allupo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>You can be proficient in both, maybe you are good at one, it&#8217;s very hard to be excellent at both &#8211; but the whole point is that you cannot fill both roles <em>at the same time</em>. It’s not going to work.<br />
One requires focused effort and attention, the other constantly going out and reacting, protecting your team, growing it. You are the façade that makes your developers’ life easy.<span id="more-972"></span></p>
<p><strong>What happens when you’re put in a position when you have to do both development and project management?</strong> If you’re wicked smart or know from the start, you refuse the job. You know it’s bound to fail &#8211; no need to waste your time. If you’re not so smart or you succeeded in either or both positions in the past, you accept the challenge and, when you realize how pointless it is, you <a href="http://www.linkedin.com/profile/view?id=1441168&amp;trk=tab_pro">quit</a>.</p>
<p>You’re bound to find yourself sooner than later in a situation when the capacity of your team is below the expected output. That’s when the problems start.</p>
<p>If your “team” is new, that often happen because you don’t actually have a team in the first place: you have a a group of people. They are just an imperfect approximation what a team should be: people who fit very well together, knows each other strengths and weaknesses and how to compensate each others.</p>
<p>Your team needs to deliver more. You need to grow the technical talent in your developers or build more automation in your tasks. If you do the first, you’re thinking as a manager. If you do the latter, you’re thinking as a developer. Pick one and deliver. If you can do both, you’re doing a great job.</p>
<p>What happens when you can’t grow technical talent or you can’t build more automation fast enough? The worst thing you can do is to think that you can compensate by taking over more development tasks. That’s your basic instinct if you have a history as a developer, fight it! If you go down that route, you’ll do a big disservice to your team mates &#8211; they are the first to feel your lack of focus on management and they are not becoming better developers &#8211; and you fail your company &#8211; you’re trying to cope with contingent issues, but you’re not improving the team’s output on the long run.</p>
<p>You may even go that route in good faith. You may even have explained to your own managers that you boost your team output <em>temporarily</em> working overtime, since you’re working at 60% of your potential, or 8 hours per day, and you could put in 10/12 for a few weeks. DON’T DO THAT! They will only hear “60%” and consider you a slacker and chances are they haven’t read <a href="http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Daps&amp;field-keywords=slack&amp;x=0&amp;y=0">Slack</a>.</p>
<p>The fact is, as a technical lead compensating by doing more development work is the wrong decision. You’re failing to apply the very lesson explained in that book: if something unexpected goes work, if something that you relied upon fails in unexpected ways, you have no more capacity to fix it.</p>
<p>What would someone with the instinct of a manager do? They would refuse to take over more tasks than his team can deliver, asking for the proper resources or the proper time to build up capacity. Maybe you did, but then you let your developer instincts take over. That’s a really bad idea.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/allupo.wordpress.com/972/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/allupo.wordpress.com/972/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/allupo.wordpress.com/972/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/allupo.wordpress.com/972/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/allupo.wordpress.com/972/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/allupo.wordpress.com/972/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/allupo.wordpress.com/972/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/allupo.wordpress.com/972/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/allupo.wordpress.com/972/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/allupo.wordpress.com/972/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/allupo.wordpress.com/972/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/allupo.wordpress.com/972/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/allupo.wordpress.com/972/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/allupo.wordpress.com/972/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.lupi-software.com&amp;blog=5339219&amp;post=972&amp;subd=allupo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.lupi-software.com/2011/11/05/developer-manager-you-cant-do-both-jobs-at-the-same-time/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/78e13892b6611a140af58dbff95eeaea?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kitten Lulu</media:title>
		</media:content>
	</item>
		<item>
		<title>Stanford Engineering classes open for enrollment</title>
		<link>http://blog.lupi-software.com/2011/09/26/stanford-engineering-classes-open-for-enrollment/</link>
		<comments>http://blog.lupi-software.com/2011/09/26/stanford-engineering-classes-open-for-enrollment/#comments</comments>
		<pubDate>Mon, 26 Sep 2011 05:28:51 +0000</pubDate>
		<dc:creator>Roberto Lupi</dc:creator>
				<category><![CDATA[Everything else]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[machine learning]]></category>
		<category><![CDATA[Stanford]]></category>

		<guid isPermaLink="false">http://blog.lupi-software.com/?p=969</guid>
		<description><![CDATA[Both Introduction to Artificial Intelligence and Machine Learning are now open to enrollment. Hurry up, the courses start on October 10th.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.lupi-software.com&amp;blog=5339219&amp;post=969&amp;subd=allupo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Both <a href="http://www.ai-class.org">Introduction to Artificial Intelligence</a> and <a href="http://www.ml-class.org">Machine Learning</a> are now open to enrollment. Hurry up, the courses start on October 10th.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/allupo.wordpress.com/969/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/allupo.wordpress.com/969/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/allupo.wordpress.com/969/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/allupo.wordpress.com/969/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/allupo.wordpress.com/969/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/allupo.wordpress.com/969/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/allupo.wordpress.com/969/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/allupo.wordpress.com/969/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/allupo.wordpress.com/969/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/allupo.wordpress.com/969/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/allupo.wordpress.com/969/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/allupo.wordpress.com/969/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/allupo.wordpress.com/969/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/allupo.wordpress.com/969/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.lupi-software.com&amp;blog=5339219&amp;post=969&amp;subd=allupo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.lupi-software.com/2011/09/26/stanford-engineering-classes-open-for-enrollment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/78e13892b6611a140af58dbff95eeaea?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kitten Lulu</media:title>
		</media:content>
	</item>
		<item>
		<title>XML</title>
		<link>http://blog.lupi-software.com/2011/09/16/xml/</link>
		<comments>http://blog.lupi-software.com/2011/09/16/xml/#comments</comments>
		<pubDate>Fri, 16 Sep 2011 12:00:50 +0000</pubDate>
		<dc:creator>Roberto Lupi</dc:creator>
				<category><![CDATA[Everything else]]></category>

		<guid isPermaLink="false">http://blog.lupi-software.com/?p=964</guid>
		<description><![CDATA[XML is like violence &#8211; if it doesn’t solve your problems, you are not using enough of it. nokogiri.org<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.lupi-software.com&amp;blog=5339219&amp;post=964&amp;subd=allupo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<blockquote><p>XML is like violence &#8211; if it doesn’t solve your problems, you are not using enough of it.</p></blockquote>
<p><a href="http://nokogiri.org/">nokogiri.org</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/allupo.wordpress.com/964/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/allupo.wordpress.com/964/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/allupo.wordpress.com/964/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/allupo.wordpress.com/964/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/allupo.wordpress.com/964/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/allupo.wordpress.com/964/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/allupo.wordpress.com/964/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/allupo.wordpress.com/964/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/allupo.wordpress.com/964/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/allupo.wordpress.com/964/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/allupo.wordpress.com/964/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/allupo.wordpress.com/964/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/allupo.wordpress.com/964/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/allupo.wordpress.com/964/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.lupi-software.com&amp;blog=5339219&amp;post=964&amp;subd=allupo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.lupi-software.com/2011/09/16/xml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/78e13892b6611a140af58dbff95eeaea?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kitten Lulu</media:title>
		</media:content>
	</item>
		<item>
		<title>F# plugin for MonoDevelop 2.6</title>
		<link>http://blog.lupi-software.com/2011/09/14/f-plugin-for-monodevelop-2-6/</link>
		<comments>http://blog.lupi-software.com/2011/09/14/f-plugin-for-monodevelop-2-6/#comments</comments>
		<pubDate>Wed, 14 Sep 2011 06:08:48 +0000</pubDate>
		<dc:creator>Roberto Lupi</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[.NET Framework]]></category>
		<category><![CDATA[F#]]></category>
		<category><![CDATA[MonoDevelop]]></category>

		<guid isPermaLink="false">http://blog.lupi-software.com/?p=954</guid>
		<description><![CDATA[MonoDevelop 2.6 is now stable, but there is no official port of the F# plugin. I forked it on githuband got it to compile and install properly, but there is still a lot of things to do: When you create a new F# console solution, it won&#8217;t compile cleanly out of the box. You need to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.lupi-software.com&amp;blog=5339219&amp;post=954&amp;subd=allupo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://monodevelop.com/">MonoDevelop 2.6</a> is now stable, but there is no official port of the <a href="http://functional-variations.net/monodevelop/">F# plugin</a>. I <a href="https://github.com/robertolupi/fsharpbinding">forked it on github</a>and got it to compile and install properly, but there is still a lot of things to do:</p>
<ul>
<li>When you create a new F# console solution, it won&#8217;t compile cleanly out of the box. You need to add <em>mscorlib</em> as an explicit reference in the F# project. I had to switch to the .NET 4.0 toolset in mono to get the plugin to compile.</li>
<li>Code competition seems to be broken.</li>
</ul>
<div>I didn&#8217;t have much time to test the plugin yet, but I will continue to work until an official version comes out or my fork works fully.</div>
<h6 class="zemanta-related-title" style="font-size:1em;">Related articles</h6>
<ul class="zemanta-article-ul">
<li class="zemanta-article-ul-li"><a href="http://www.h-online.com/open/news/item/MonoDevelop-2-6-brings-new-features-1339437.html">MonoDevelop 2.6 brings new features</a> (h-online.com)</li>
<li class="zemanta-article-ul-li"><a href="http://tirania.org/blog/archive/2011/Jul-20.html">MonoDevelop on Lion</a> (tirania.org)</li>
<li class="zemanta-article-ul-li"><a href="http://tirania.org/blog/archive/2011/Sep-07.html">MonoDevelop 2.6 is out</a> (tirania.org)</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/allupo.wordpress.com/954/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/allupo.wordpress.com/954/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/allupo.wordpress.com/954/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/allupo.wordpress.com/954/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/allupo.wordpress.com/954/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/allupo.wordpress.com/954/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/allupo.wordpress.com/954/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/allupo.wordpress.com/954/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/allupo.wordpress.com/954/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/allupo.wordpress.com/954/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/allupo.wordpress.com/954/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/allupo.wordpress.com/954/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/allupo.wordpress.com/954/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/allupo.wordpress.com/954/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.lupi-software.com&amp;blog=5339219&amp;post=954&amp;subd=allupo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.lupi-software.com/2011/09/14/f-plugin-for-monodevelop-2-6/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/78e13892b6611a140af58dbff95eeaea?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Kitten Lulu</media:title>
		</media:content>
	</item>
	</channel>
</rss>
