Monologue The voices of Mono http://www.go-mono.com/monologue/ http://backend.userland.com/rss Monologue worker: b-diddy powered Francisco Figueiredo: And now going to Toronto to see Niagara Falls Hi all!!<br /><br />Tomorrow I'm leaving Ottawa heading to Toronto to see Niagara Falls. I'll be taking a bus to go there and I hope to be able to get some guided tour to Falls. If not, I will go by myself anyway :)<br /><br />I will be at Backpackers on Dundas hostel and I plan to stay there until next Tuesday when I will go back to Ottawa for PG Con.<br /><br />So, if you are in Toronto and would like to talk about Npgsql, Postgresql or Mono, or just want to talk, please, drop me a mail.<br /><br />P.S.: Kangaroo (Mono irc, sorry if this isn't exactly your nickname) please, drop me a mail so we can have some beers in Toronto!<br /><br />See you. http://fxjr.blogspot.com/2008/05/and-now-going-to-toronto-to-see-niagara.html canada travel Npgsql niagarafalls mono toronto Francisco_x0020_Figueiredo@monologue.go-mono.com tag:blogger.com,1999:blog-15237920.post-3583753496413343229 Fri, 16 May 2008 23:54:00 GMT James Wilcox: Some things do change? Ever since zypper came along I hated it. It was slow, buggy, and used a ton of resources. Well, I installed openSUSE 11.0b3 yesterday and the zypper/libzypp there is massively improved. I don&#8217;t think it&#8217;s possible to overstate just how much of an improvement it really is. Normally I just make rcd/rug work [...] http://www.snorp.net/log/2008/05/16/some-things-do-change/ General James_x0020_Wilcox@monologue.go-mono.com http://www.snorp.net/log/2008/05/16/some-things-do-change/#comments http://www.snorp.net/log/2008/05/16/some-things-do-change/ Fri, 16 May 2008 15:26:43 GMT Everaldo Canuto: WebKit-Sharp and my FunnyBrowser In my <a href="http://ecanuto.blogspot.com/2008/05/mono-bindings-in-5-minutes.html">last article</a> I blogged about how to create Mono bindings using <a href="http://www.mono-project.com/GAPI">GAPI</a>, I used it to create WebKit-Sharp.<br /><br />After a quick search in Google I found another implementation of <a href="http://webkit.org/">WebKit</a> bindings for Mono, you can find them there (http://cmartin.tk/webkitgtk-sharp.html), the problem is that those bindings were done by hand without using GAPI, probably because the author didn't use "gapi2-fixup" to customize and fix some information about webkit (You can find more information about it <a href="http://www.mono-project.com/GAPI#Fixing_API_issues_and_Adding_Customizations">here</a>).<br /><br />Well, today I have just committed some of my local changes to webkit-sharp and the amazing "FunnyBrowser" sample, I have been using "FunnyBrowser" as my default browser now for one week and for basic navigation it works faster and uses less resources than Firefox.<br /><br />Next weekend I am also planning to make packages available for <a href="http://www.maemo.org/">Maemo</a> if <a href="http://webkit.org/">webkit</a> works on it, I will keep you guys posted.<br /><br /><a href="http://picasaweb.google.com/everaldo.canuto/Screenshots/photo#5201017812039279234"><img src="http://lh6.ggpht.com/everaldo.canuto/SC26JNUUooI/AAAAAAAAAcU/DYewHMGj1Is/s400/funnybrowser.jpg" /></a><br /><br />We haven't released webkit-sharp yet but you can found sources here:<br /><br /><a href="http://anonsvn.mono-project.com/viewcvs/trunk/webkit-sharp.tar.gz">http://anonsvn.mono-project.com/viewcvs/trunk/webkit-sharp.tar.gz</a><br /><br />OpenSUSE 10.3 packages are also available (including libwebkit) on my repository in the OpenSUSE Build Service:<br /><br /><a href="http://download.opensuse.org/repositories/home:/ecanuto:/webkit/openSUSE_10.3/">http://download.opensuse.org/repositories/home:/ecanuto:/webkit/openSUSE_10.3/</a><br /><br />I have plans to release FunnyBrowser as package when it works with GMail without problems. http://ecanuto.blogspot.com/2008/05/webkit-sharp-and-my-funnybrowser.html mono maemo Everaldo_x0020_Canuto@monologue.go-mono.com tag:blogger.com,1999:blog-568131786379599533.post-7577221973448950812 Fri, 16 May 2008 12:34:00 GMT Joe Audette: mojoPortal.com Makeover <p>With all the nice looking new skins from my <a href="http://www.mojoportal.com/help-me-pick-the-next-10-designs-for-mojoportal-skins.aspx">recent skinning campaign</a>, I decided it was time to give <a href="http://www.mojoportal.com">mojoPortal.com</a> a makeover. The previous design was about 2 years old and was starting to look a little dated. I also wanted to reduce the clutter on the home page and try to have a more succinct marketing message. I think in the past I've thought that most of my audience were developers so I was packing in a lot of technical information on the home page, but over time I've come to realize I should be targeting more towards business people and emphasizing the business value of mojoPortal more than the technical merits, at least on the home page. So I hope you like the new look! </p> <p><img width="500" height="514" src="http://www.mojoportal.com/Data/Sites/1/mojo-makeover.jpg" alt="screen shot of new site design" /></p><br /><br /><a href='http://www.mojoportal.com'>Joe Audette</a>&nbsp;&nbsp;<a href='http://www.mojoportal.com/mojoportalcom-makeover-2008-05-16.aspx'>...</a> http://www.mojoportal.com/mojoportalcom-makeover-2008-05-16.aspx Joe_x0020_Audette@monologue.go-mono.com Fri, 16 May 2008 12:21:30 GMT Gabriel Burt: Down and Out in Chicago I'm a big fan of Cory Doctorow, the person, the advocate, and the author. He's extremely eloquent, funny, and grounded. I got the chance to meet Cory tonight at <a href="http://craphound.com/?p=2056">a reading</a> of his latest book, <a href="http://craphound.com/littlebrother/">Little Brother</a> &mdash; which is fantastic; I couldn't put it down.<br /><br /><center><img style="text-align:center; border: 1px solid black;" src="http://bp3.blogger.com/_MXUP18ra1ik/SCz2YZ2Q2mI/AAAAAAAAAZ4/pXrJ6KxqXJM/s400/img_1807.jpg" alt="Cory Doctorow reading from Little Brother at a signing in Chicago" /></center><br /><br />I gave Cory a <a href="http://banshee-project.org">Banshee</a> shirt and told him about our <a href="http://gburt.blogspot.com/2008/05/banshee-10-beta-1-released.html">upcoming 1.0</a>, since he's a <a href="http://www.boingboing.net/2006/06/29/mark-pilgrims-list-o.html">GNU/Linux user</a> (his words <i>and</i> his actions speak volumes) and he popped into <a href="irc://irc.gnome.org/#banshee">#banshee</a> a while back.<br /><br /><center><img style="text-align:center; border: 1px solid black;" src="http://bp3.blogger.com/_MXUP18ra1ik/SCz3jZ2Q2rI/AAAAAAAAAaQ/7dybru8VgSI/s400/img_1808.jpg" alt="Cory Doctorow and yours truly" /></center><br /><br />Anyway, if you haven't <a href="http://gburt.blogspot.com/2007/05/inspiration-by-media.html">seen Cory speak</a>, he's able to explain difficult, technical issues to non-techies in a way that they can understand and makes geeks proud. I'm happy to have finally met him. http://gburt.blogspot.com/2008/05/down-and-out-in-chicago.html chicago banshee freeculture photos Gabriel_x0020_Burt@monologue.go-mono.com tag:blogger.com,1999:blog-33979271.post-186827808448979570 Thu, 15 May 2008 23:45:00 GMT Michael Giagnocavo: LINQ to the CRUD RTM <p> A bit ago, I posted some info on doing CRUD operations using LINQ: <a href="http://www.atrevido.net/blog/2007/08/26/A+LINQ+To+The+CRUD.aspx">http://www.atrevido.net/blog/2007/08/26/A+LINQ+To+The+CRUD.aspx</a> </p> <p> This is a lightweight way (no codegen at all, only 2 lines of code per table) to get some CRUD stuff with LINQ. It's not the most efficient or fantastic way of doing things, but it works fine in the several projects we've used it so far. And we get to use C# 3's expression trees, which is&nbsp;a fantastic and under-exploited feature.&nbsp;At any rate, it does show that doing disconnected work with LINQ is trivial. </p> <p> The code I posted was for Beta 2 and no longer works. I've since added a few new features, but the basic idea remains the same as before. I'm just posting the new code as I've gotten a few emails and one comment about the old code no longer working. </p> <p> <a href="http://www.atrevido.net/blog/content/binary/DatabaseBase.cs.txt">DatabaseBase.cs (10.47 KB)</a> </p> <p> While working on it in a real project, I started using our Tuple struct, so you'll need that too:<br> <a href="http://www.atrevido.net/blog/content/binary/Tuple.cs.txt">Tuple.cs (2.8 KB)</a> </p> <p> As always I welcome any criticism. </p> <img width="0" height="0" src="http://www.atrevido.net/blog/aggbug.ashx?id=5d7d8f43-f9d4-4a17-88b5-f01ffe5678ca" /> http://www.atrevido.net/blog/2008/05/15/LINQ+To+The+CRUD+RTM.aspx Code Michael_x0020_Giagnocavo@monologue.go-mono.com http://www.atrevido.net/blog/CommentView,guid,5d7d8f43-f9d4-4a17-88b5-f01ffe5678ca.aspx http://www.atrevido.net/blog/PermaLink,guid,5d7d8f43-f9d4-4a17-88b5-f01ffe5678ca.aspx Thu, 15 May 2008 19:49:12 GMT Joe Audette: Blog Improvements Landed in svn trunk <p>I put a little more love into the <a href="http://www.mojoportal.com">mojoPortal</a> blog feature in the last few days. </p> <p>We now have friendly urls for blog posts. Instead of the previous ~/BlogView.aspx?pageid=2&amp;mid=19&amp;ItemID=258, we now have ~/the-title-of-your-post.aspx</p> <p>I also added a Next Previous, navigation to make it easier to page through the posts.</p> <p>There is also a new Site Map for blog posts to make it easier for google and other search indexes to crawl your blog posts and improve your SEO. You can ad your blog site map to <a href="https://www.google.com/webmasters/tools/">google webmaster tools</a> as yoursiteroot/BlogSiteMap.ashx</p> <p>This is available in svn trunk now for developers and will be in the next release for everyone else.</p> <p>&nbsp;</p><br /><br /><a href='http://www.mojoportal.com'>Joe Audette</a>&nbsp;&nbsp;<a href='http://www.mojoportal.com/blog-improvements-landed-in-svn-trunk.aspx'>...</a> http://www.mojoportal.com/blog-improvements-landed-in-svn-trunk.aspx Joe_x0020_Audette@monologue.go-mono.com Thu, 15 May 2008 15:39:38 GMT Alan McGovern: The <a href="http://code.google.com/soc/2008/">Summer of Code</a> is starting soon, and I'm a student once again. So what are the big plans this year? Well, hopefully a lot! Here's a brief outlook on what to expect during this summer. Note, these are in no particular order<br /><br /><span style="font-weight: bold; font-style: italic;">MonoTorrent</span><br />1) DHT support in MonoTorrent. This is probably the most time-consuming feature that is planned.<br /><br />2) DBus based daemon for monotorrent. The idea behind this is to allow applications to consume torrent files without worrying about interop-ing with .NET. This would provide a system-wide torrent service which any application, or many simultaenous applications, could take advantage of.<br /><br />This daemon will expose a simplified API as compared to the monotorrent library itself.<br /><br />3) HTTP/Socks proxy support.<br /><br />4) A proper NUnit testing framework. All the essentials are now implemented in MonoTorrent to allow me to test stuff deep inside monotorrent relatively easily. Now i just need to implement my test harness and then some tests (work on that has started as of yesterday actually :) ).<br /><br />5) Implement support for both the Azureus and Libtorrent messaging protocols. Support is mostly there for the Libtorrent protocol. This will also allow user-defined messages to be sent via the torrent connection.<br /><br />6) As per usual, i'll be spending time with a profiler seeing where performance can be improved. Don't expect too much from this though, things are already pretty good ;)<br /><br /><span style="font-weight: bold; font-style: italic;">Monsoon</span><br />Now that we have a sweet GUI for monotorrent, which is going to be available in Suse 11.0 (other distros also have packages these days), we need to keep improving it. Once again there are in no particular order:<br /><br />1) Get Monsoon portable to both MacOS and Windows. 95% of this work has been completed already. So it's nearly done. Once this has been completed, i need to look into packaging installers for these platforms (or someone can offer to do that for me ;) ).<br /><br />2) Next we get cracking on the <a href="https://bugzilla.novell.com/buglist.cgi?cmdtype=runnamed&amp;namedcmd=Monsoon">buglist</a> and try and resolve those. Quite a number of cosmetic things need to be looked at and there are also a few bigger issues, such as that memory issue (which is still proving to be quite elusive!).<br /><br />3) General nicing up of everything. There isn't really a firm plan for monsoon yet. A more detailed timeline and suchlike will be created as soon i can get together with <a href="http://buchan.esoteriq.org/weblog/2007/08/20/monotorrent-gtk-interface-summer-wrap-up/">buchan</a> after my exams and see where we want to take this.<br /><br />All in all, a busy summer. http://monotorrent.blogspot.com/2008/05/summer-of-code-is-starting-soon-and-im.html Alan_x0020_McGovern@monologue.go-mono.com tag:blogger.com,1999:blog-29153919.post-4241084314987369025 Wed, 14 May 2008 20:02:58 GMT Khaled: Official Google Blog: Looking towards IPv6 <a href="http://googleblog.blogspot.com/2008/05/looking-towards-ipv6.html">Official Google Blog: Looking towards IPv6</a> http://madinatek.blogspot.com/2008/05/official-google-blog-looking-towards.html Khaled@monologue.go-mono.com tag:blogger.com,1999:blog-3460422861437029221.post-4904657999072225806 Wed, 14 May 2008 13:16:00 GMT Ben Maurer: More human computation with GWAP <p>It's oh so exciting to see that <a href="http://gwap.com">GWAP</a> (games with a purpose) has launched. GWAP is part of the research on human computation that started the <a href="http://recaptcha.net">reCAPTCHA</a> project. GWAP is a framework which allows researchers to create fun games which generate useful data. For example, "Matchin" is a game where you and a random stranger on the internet get a pair of images. You must agree on which one is "better" without talking with each other. The game is fast, fun, and very addicting. From this game, you can actually get quite a bit of useful information. Most importantly, it's possible to find the "good" photos from a site like Flicker.</p> <p>What I find most exciting about GWAP is that it is a production service. Many researchers will write papers about ideas, maybe create a prototype or a mock-up. However, they don't really do anything to bring their ideas to fruition. Luis's work is different. For example, with reCAPTCHA, we've spent months developing systems for serving CAPTCHAs to the internet. Most of this time was spent making our code reliable, scalable, and fast. Our efforts really payed off. reCAPTCHA now serves CAPTCHAs on a wide range of sites including Ticketmaster, Facebook, StumbleUpon, Twitter and Bebo.</p> <p>I think this tendency for productionizing is going to pay off with GWAP. Lots of time was spent on things like UI design and scalability. The UI makes the games fun to play, the scalability makes sure that the team can have a real world impact.</p> <p>Congrats to Mike and the rest of the GWAP team on a job well done.</p> http://bmaurer.blogspot.com/2008/05/more-human-computation-with-gwap.html Ben_x0020_Maurer@monologue.go-mono.com tag:blogger.com,1999:blog-14650593.post-9109099537020780469 Wed, 14 May 2008 02:22:42 GMT Mono: First Moonlight Source Code Release <p>To encourage users to try out Moonlight, we are doing a source-code only release of Moonlight for developers to try out Moonlight. <p>To try out Moonlight, you have two options: <ul> <li>Media codecs: you must do your own build from source code. <li>No-media codecs: we provide one-click addins for Firefox that will install with no effort. </ul> <p>Firefox addins are available from <a href="http://www.go-mono.com/moonlight">http://www.go-mono.com/moonlight</a>. <p>Source code for Moonlight is available from <a href="ftp://ftp.novell.com/pub/mono/sources/moon/moon-0.6.tar.bz2">here</a>. To compile Moonlight from source code follow <a href="http://www.mono-project.com/Moonlight">these instructions</a>. http://www.mono-project.com/news/archive/2008/May-13.html Mono@monologue.go-mono.com http://www.mono-project.com/news/archive/2008/May-13.html Tue, 13 May 2008 19:50:00 GMT Miguel de Icaza: Mono's Winforms 2.0 is now API Complete <p>Jonathan Pobst <a href="http://jpobst.blogspot.com/2008/05/big-finale.html">has posted</a> the update on our Windows.Forms 2.0 work. <p>Some interesting points from his blog entry: <ul> <li>We are now API complete, which means that our public API is exactly the same as .Net's (all 12,776 methods). <li>The first check-in to our current Winforms implementation was on July 8th, 2004. It took 4 years to get here, and 6,434 individual SVN commits. <li>The toolkit is made up of 115k lines of code. </ul> <p>Also: <ul> <li>We currently have three backends: X11, OSX and Win32. <li>There is a Google Summer of Code effort to improve our theming and OS integration this summer. <li>Winforms 2.0 will also debut support for XIM to allow input for CJK character sets. <li>We have a nice binding to Gecko as our implementation for WebControl which we started last year (currently we are limited to Gecko on X11 though, no Mac support yet for this WebControl). <li>The Desktop team at Novell is adding <a href="http://www.mono-project.com/Accessibility:_Architecture">UI Automation and accessibility</a> support to Windows.Forms integrating it with Gnome's ATK. They have a full team dedicated to that goal. <li>R-to-L support: It is not an priority for us at this point, but it would be nice if someone with RtoL needs were to complete the work that Sebastien did last year to <a href="http://pages.infinit.net/ctech/200708.html">use Pango inside GDI+</a>. </ul> <p>Winforms 2.0 was the last piece of code holding off the Mono 2.0 release. We anticipate that there will be bugs, so we want to encourage folks to submit <a href="http://www.mono-project.com/Bugs">their bug reports</a> and to evaluate the portability of their sofwtare using our <a href="http://www.mono-project.com/Moma">Mono Migration Analyzer</a> tool. <p>Congratulations to the Winforms team, and everyone that provided bug reports, test cases, contributed code, tested and worked with us to bring it to where it is today. http://tirania.org/blog/archive/2008/May-13.html Miguel_x0020_de_x0020_Icaza@monologue.go-mono.com http://tirania.org/blog/archive/2008/May-13.html Tue, 13 May 2008 14:05:00 GMT Miguel de Icaza: First Moonlight Release <p><img src="http://primates.ximian.com/~miguel/pictures/moonlight_logo.png" align="right">Today we are making the first public release of Moonlight, supporting the Silverlight 1.0 profile for Linux. The release comes in two forms: <ul> <li>No-media codecs supported, but easy to install: head to <a href="http://www.go-mono.com/moonlight">http://www.go-mono.com/moonlight</a> and click on the cute installer for Moonlight. This currently hosts builds for Linux x86 and x86-64 for Firefox. <li>Source-code compilation, but you can optionally compile FFMpeg codecs yourself. To do this, download our <a href="ftp://ftp.novell.com/pub/mono/sources/moon/moon-0.6.tar.bz2">moon-0.6.tar.bz2</a>. And follow the <a href="http://www.mono-project.com/Moonlight">build instructions</a>. </ul> <p><b>Update:</b> I apologize for the confussion; This is not Moonlight 1.0, this is the first <b>source code</b> release that we are making of Moonlight for interested contributors and developers. This release is not even a Beta release, as <b>we are not yet feature complete</b> (missing components in media codecs, the media pipeline, as well as fixing about 70 known bugs). Apologies for any confussion. <p>Although Moonlight works on Firefox 2 and Firefox 3, recent changes in Firefox 3 prevent Silverlight and Moonlight from working (For details see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=432371">#432371</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=430965">#430965</a>). There is a <a href="http://blog.sublimeintervention.com/userscripts/slff3unfuck.user.js">user contributed Greasemonkey script</a> that will work around this bug for some sites (requires Greasemonkey). <p><b>Windowless:</b> Moonlight supports "windowless" mode, a mechanism that allows Silverlight content to blend with other HTML ements on a page. This is only supported by Firefox 3, users of older versions of Firefox might run into Silverlight applications and web sites that do not work correctly as many Silverlight applications depend on this functionality (Flash sites have the same problem with Firefox 2). <p><b>1.1 and 2.0 support:</b> This release only supports the Silverlight 1.0 profile. The 1.1 support is no longer maintained and the release happened at the time when we are transitioning the APIs to 2.0. <p>If you find bugs, <a href="http://www.mono-project.com/Bugs">please file them</a> for us to fix. http://tirania.org/blog/archive/2008/May-13-1.html Miguel_x0020_de_x0020_Icaza@monologue.go-mono.com http://tirania.org/blog/archive/2008/May-13-1.html Tue, 13 May 2008 12:07:00 GMT Jonathan Pobst: The Big Finale Last night, we hit a very important milestone in our support for Winforms. We are API complete, which means that our public API is exactly the same as .Net's (all 12,776 methods).<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_4IfYnHLEdnY/SCmxB_3jTWI/AAAAAAAAADM/NgVHFd_JLG8/s1600-h/class.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_4IfYnHLEdnY/SCmxB_3jTWI/AAAAAAAAADM/NgVHFd_JLG8/s400/class.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5199881892658367842" /></a><br /><br />I wasn't around at the time, but the first check-in of Winforms occurred on July 8th, 2004, meaning it has taken almost 4 years to implement. Since then, there has been 6,434 commits to Winforms.<br /><br />Thank you to everyone who helped us get here! Thank you people who contributed code! Thank you people who contributed tests! Thank you people who contributed Bugzilla reports!<br /><br />What's next? Well, as with your typical 115k line cross-platform windowing/widget kit, there are bound to be bugs. So we'll be working to fix those. If you come across any, please report them so we can fix them too! Go <a href="http://www.mono-project.com/Bugs">here</a> to report them.<br /><br />All of this will ship with our upcoming Mono 2.0 release. http://jpobst.blogspot.com/2008/05/big-finale.html Jonathan_x0020_Pobst@monologue.go-mono.com tag:blogger.com,1999:blog-1368115163566068223.post-5791198617520651613 Tue, 13 May 2008 11:14:00 GMT Atsushi Enomoto: Linq to DataSet <p> Since (I thought) I'm done with winforms XIM support, I moved away and started working on <a href="http://anonsvn.mono-project.com/source/trunk/mcs/class/System.Data.DataSetExtensions/">System.Data.DataSetExtensions</a> two days ago. Now it's feature complete. </p> <p align="right"> <!-- [<a href="http://groups-beta.google.com/group/tiraniaorg-blog-comments/post?subject=Linq+to+DataSet on 2008/05/14">Post Comment</a>] | [<a href="http://groups-beta.google.com/group/tiraniaorg-blog-comments/search?group=tiraniaorg-blog-comments&amp;q=Linq+to+DataSet on 2008/05/14&amp;qt_g=Search+this+group">Comments</a>] --> <a href="javascript:HaloScan('2008/05/14');" target="_self"><script type="text/javascript">postCount('2008/05/14');</script></a> | <a href="javascript:HaloScanTB('2008/05/14');" target="_self"><script type="text/javascript">postCountTB('2008/05/14'); </script></a> </p> http://veritas-vos-liberabit.com/lb/archive2008/5-14.html Atsushi_x0020_Enomoto@monologue.go-mono.com http://veritas-vos-liberabit.com/lb/archive2008/5-14.html Tue, 13 May 2008 11:00:00 GMT Joe Audette: mojoPortal 2.2.5.4 Released <p>I'm very excited to announce the release of <a href="http://www.mojoportal.com">mojoPortal</a> 2.2.5.4</p> <p>Its available now on the <a href="http://www.mojoportal.com/download.aspx">download page</a>.</p> <p>The main focus of this release is making mojoPortal more attractive, with the addition of 21 good looking new skins for a total of 34 skins now included with mojoPortal. There were also a few minor bug fixes for things reported in the Forums since the last release.</p> <p>Those of you upgrading should do a full upgrade, don't try to just upload the new skins as there were code changes needed to support some of these new designs. You should <a href="http://www.mojoportal.com/uploadingfilestoahostedserver.aspx">upload all the new files</a> and restore your customizations to <a href="http://www.mojoportal.com/webconfig.aspx">Web.config or user.config</a>.</p> <p>My goals in producing all these skins was to make mojoPortal more popular and also to prove just how skinnable mojoPortal is. You can have a site fully populated with content and dramatically change the look of it with one click by changing the skin. This shows that we really have achieved good separation of presentation from content in mojoPortal. Those of you following this blog have surely seen the screen shots over the last 20 days as I implemented these new skins. 21 skins in 20 days is not bad if I do say so myself. It says a lot about the quality of the rendered markup produced by mojoPortal that one can go and find nice standards based designs and create mojoPortal skins from them relatively easy at least if you have an understanding of html and css. All these included skins can be used as a starting point for further customization to make your own custom skins as well.</p> <p>I'd like to extend a huge thanks to the great designers who have made their work available. All the new skins in this release are the work of only 7 designers, <a href="http://andreasviklund.com/">Andreas Viklund</a>, <a href="http://www.freecsstemplates.org/">FreeCssTemplates</a>, <a href="http://www.graformix.com/">Graformix</a>, <a href="http://www.mitchinson.net/">Denise Mitchinson</a>, <a href="http://fullahead.org/">snop</a>, <a href="http://www.styleshout.com/">styleshout</a>, and <a href="http://arcsin.se/">arcsin</a>.</p> <p>As always, be sure and backup your site and database before upgrading and if you have any trouble let us know in the forums.</p><br /><br /><a href='http://www.mojoportal.com'>Joe Audette</a>&nbsp;&nbsp;<a href='http://www.mojoportal.com/mojoportal-2254-released.aspx'>...</a> http://www.mojoportal.com/mojoportal-2254-released.aspx Joe_x0020_Audette@monologue.go-mono.com Mon, 12 May 2008 13:47:12 GMT Sandy Armstrong: Tomboy 0.11.0 released, et UIA This morning I <a href="http://lists.beatniksoftware.com/pipermail/tomboy-list-beatniksoftware.com/2008-May/000706.html">released</a> the first development release in the 0.11.x series. Tomboy 0.11.0 features <a href="http://calvinrg.blogspot.com/2008/03/tasque-at-brainshare-08.html"> Boyd's Tasque add-in</a>, the beginning of<a href="http://blog.sontek.net/"> John Anderson</a>'s rewrite of the printing add-in (goodbye libgnomeprint!), and even a patch or two from <a href="http://www.beatniksoftware.com/blog/">our founding father</a>. The new printing add-in lacks a few features, most notably text styling/formatting. We'll make sure to get it fixed before 0.12.0 is released, but if you want to see it fixed faster, patches are welcome. :-P<br /><br />Last week didn't feel very productive at work. I made one commit and a <a href="http://www.mono-project.com/Accessibility:_Control_Status">table mapping winforms controls to UIA ControlTypes</a>. I don't really understand where the time went. :-( How many hours did I lose wrestling with my Vista VM, or exploring the Mono implementation of the WebBrowser control? Fortunately, as the table shows, I have PLENTY of work to do! So I'd better get to it... http://automorphic.blogspot.com/2008/05/tomboy-0110-released-et-uia.html a11y work tomboy Sandy_x0020_Armstrong@monologue.go-mono.com tag:blogger.com,1999:blog-2867321763955747460.post-6497764073203255437 Mon, 12 May 2008 13:36:00 GMT Gabriel Burt: F-Spot Summer of Code I am excited to be mentoring <a href="http://apart-dev.blogspot.com/">Andrew Wytyczak-Partyka</a> this summer as part of <a href="http://code.google.com/soc/">GSoC</a>. Andrew <a href="http://code.google.com/soc/2008/gnome/appinfo.html?csaid=8D8DC56497DE0A13">will create</a> a library implementing the Digital Photo Access Protocol (<a href="http://en.wikipedia.org/wiki/Digital_Audio_Access_Protocol">DPAP</a>) and integrate it into F-Spot. I'm not familiar with DPAP, so any experts please feel free to give us pointers.<br /><br />Andrew previously did <a href="http://apart-dev.blogspot.com/2007/07/svn-rev-21.html">work on face recognition</a> for F-Spot/GSoC. I see he's already been added to Planet GNOME, so you should be hearing from him before too long. Work officially starts on <a href="http://code.google.com/opensource/gsoc/2008/faqs.html#0.1_timeline">May 26</a>.<br /><br />F-Spot was lucky enough to get three SoC students this year. The other two are <a href="http://weblog.savanne.be">Ruben Vermeersch</a> working on the <a href="http://code.google.com/soc/2008/gnome/appinfo.html?csaid=1EF7F7EDFE7E57BE">sidebar and possibly GEGL integration</a>, and Vasiliy Kirilichev working on <a href="http://code.google.com/soc/2008/gnome/appinfo.html?csaid=EA52069810BFAB27">color profile support</a>. It's great to see F-Spot getting this much attention. I'm also looking forward to seeing the results of Cosimo Cecchi's work on <a href="http://code.google.com/soc/2008/gnome/appinfo.html?csaid=15C2B5BC19A9276A">GNOME media integration</a>.<br /><br />Thanks to Google for creating and sponsoring the SoC, and to Novell for giving many of its engineers, including me, time to participate. http://gburt.blogspot.com/2008/05/f-spot-summer-of-code.html freesoftware gnome f-spot Gabriel_x0020_Burt@monologue.go-mono.com tag:blogger.com,1999:blog-33979271.post-1955161212093481286 Mon, 12 May 2008 11:23:00 GMT Joe Audette: 20th Skin Completed freecsstemplates-level2 <p>I've just completed the 20th and final skin of this skinning campaign. Later this afternoon/evening I will be making a release to include all the new skins.</p> <p>This one is based on <a href="http://www.opendesigns.org/preview/?template=944">freecsstemplates-level2</a>.</p> <p><img width="500" height="490" alt="freecsstemplates-level2 skin screen shot" src="http://www.mojoportal.com/Data/Sites/1/freecsstemplates-level2.gif" /></p><br /><br /><a href='http://www.mojoportal.com'>Joe Audette</a>&nbsp;&nbsp;<a href='http://www.mojoportal.com/20th-skin-completed-freecsstemplates-level2.aspx'>...</a> http://www.mojoportal.com/20th-skin-completed-freecsstemplates-level2.aspx Joe_x0020_Audette@monologue.go-mono.com Mon, 12 May 2008 07:53:33 GMT Everaldo Canuto: Mono Bindings in 5 minutes Last month at <a href="http://fisl.softwarelivre.org/">FISL</a> 9 I met again with my good friend <a href="http://bergie.iki.fi/">Henri Bergius</a>, and he told me about <a href="http://www.midgard-project.org/">Midgard</a> news and showed me some changes on version 2 of Midgard Core. Midgard Core is a glib based library that could be used to persist glib objects on databases. Since it uses the GLib object model it is very easy to create binding for Mono, and that's what we did it at FISL days.<br /><br />That was not the first time that I created Mono bindings for GLib libraries, I had done it before for Maemo libraries, and this weekend again for <a href="http://webkit.org/">WebKit</a>, but at this time I decide to create a project skeleton so everybody that is interested in creating Mono binding for Glib based libraries could use this skeleton for easy bindings creation.<br /><br />The steps below describe how I easily created <a href="http://webkit.org/">WebKit</a> bindings without typing any lines of C# code.<br /><br />First, download the skeleton file, unpack it and rename it to "webkit-sharp":<br /><pre><br /># wget http://anonsvn.mono-project.com/viewcvs/trunk/monoskel-gapi.tar.gz<br /># tar -xzf monoskel-gapi.tar.gz<br /># mv monoskel-gapi webkit-sharp<br /></pre><br />Now, go into this new directory and run the script that will perform the magic:<br /><pre><br /># cd webkit-sharp<br /># chmod +x autogen.sh skel-create.sh<br /># ./skel-create.sh webkit-sharp<br /># ./autogen.sh<br /></pre><br />We now have our source tree ready with autotools and makefiles. In the next step we must tell gapi where the C header files of the library that we want to make bindings for are. Open sources/webkit-sharp-sources.xml with your preferred text editor and type the following content:<br /><br /><pre>&lt;?xml version="1.0"?&gt;<br />&lt;gapi-parser-input&gt;<br />&lt;api filename="webkit-sharp-api.raw"&gt;<br />&lt;library name="webkit-1.0"&gt;<br />&lt;namespace name="WebKit"&gt;<br />&lt;dir&gt;/usr/include/webkit-1.0/webkit&lt;/dir&gt;<br />&lt;/namespace&gt;<br />&lt;/library&gt;<br />&lt;/api&gt;<br />&lt;/gapi-parser-input&gt;<br /></pre><br />Here, the important information is "WebKit" that will be used as our namespace and "dir" that indicates the directory where our header (.h) files are.<br /><br />And that is all, no changes needed anymore, you just need to run "make api" on the sources directory every time you change "webkit-sharp-sources.xml".<br /><pre><br /># cd sources<br /># make api<br /></pre><br />You can now follow the normal procedure to compile and install the linux package. On the package root directory, just type:<br /><pre><br /># ./configure<br /># make<br /># make install<br /></pre><br />If you are a developer, it should be easy to understand and create more samples in "samples" dir. There are also some "Package settings" that can be changed on top of "configure.in".<br /><br />I did some other changes in my webkit-sharp like creation of webbrowser sample and checking for installed WebKit in configure.in. On my next post I will show webkit-sharp in action.<br /><br />More information about GAPI could be found <a href="http://www.mono-project.com/GAPI">here<span style="text-decoration: underline;">.</span></a><a href="http://www.mono-project.com/GAPI"></a> http://ecanuto.blogspot.com/2008/05/mono-bindings-in-5-minutes.html mono Everaldo_x0020_Canuto@monologue.go-mono.com tag:blogger.com,1999:blog-568131786379599533.post-3608989763731841431 Mon, 12 May 2008 06:40:00 GMT Maurits Rijk: GIMP# 0.15 released Finally a new GIMP# release. Major highlights for this release: Many improvements to get the Photoshop actions plug-in usable: 10 copyright-free actions are now verified and can be downloaded from SourceForge An abandoned plug-in to load GEM image files was ported The Russian translation was updated (thanks Alexandre!) The next GIMP# version will be released as soon as I&#8217;ve [...] http://maurits.wordpress.com/2008/05/12/gimp-015-released/ C# GIMP Maurits_x0020_Rijk@monologue.go-mono.com http://maurits.wordpress.com/2008/05/12/gimp-015-released/#comments http://maurits.wordpress.com/?p=85 Mon, 12 May 2008 05:05:05 GMT Joe Audette: 19th Skin Completed - mitchinson-golden <p>I've just completed the 19th new skin of my campaign, <a href="http://www.mitchinson.net/designs/67_golden/index.html">mitchinson-golden</a>, which can be seen on <a href="http://demo.mojoportal.com">demo.mojoportal.com</a></p> <p><img width="500" height="524" alt="mitchinson-golden skin screen shot" src="http://www.mojoportal.com/Data/Sites/1/mitchinson-golden.jpg" /></p> <p>One more to go and I'm finished with skinning for a while!</p><br /><br /><a href='http://www.mojoportal.com'>Joe Audette</a>&nbsp;&nbsp;<a href='http://www.mojoportal.com/19th-skin-completed---mitchinson-golden.aspx'>...</a> http://www.mojoportal.com/19th-skin-completed---mitchinson-golden.aspx Joe_x0020_Audette@monologue.go-mono.com Sun, 11 May 2008 11:44:26 GMT Joe Audette: 17th and 18th New Skins, mitchinson-khaki, styleshout-coolwater <p>I've just completed the 18th new skin for mojoPortal, far exceeding <a href="http://www.mojoportal.com/BlogView.aspx?pageid=2&amp;ItemID=433&amp;mid=19">my original goal of 10 new skins</a>. This one is named <a href="http://www.mitchinson.net/designs/51_khaki/index.html">mitchinson-khaki</a>, and the one below is <a href="http://www.styleshout.com/templates/preview/CoolWater1-0/index.html">styleshout-coolwater</a>, which I completed yesterday. You can see these skins now on <a href="http://demo.mojoportal.com">demo.mojoportal.com</a>. I still have 2 more designs that I want to try and make skins with today while I have skinning momentum. Tomorrow I will package a new release of mojoPortal to include all these new skins. I've been working full blast on skins since April 23rd until today. I'm very happy with the results, but ready to get working on other priorities.</p> <p><img width="500" height="527" alt="mitchinson-khaki skin screen shot" src="http://www.mojoportal.com/Data/Sites/1/mitchinson-khaki.jpg" /></p> <p><img width="500" height="546" alt="styleshout-coolwater skin screen shot" src="http://www.mojoportal.com/Data/Sites/1/styleshout-coolwater.jpg" /></p><br /><br /><a href='http://www.mojoportal.com'>Joe Audette</a>&nbsp;&nbsp;<a href='http://www.mojoportal.com/17th-and-18th-new-skins-mitchinson-khaki-styleshout-coolwater.aspx'>...</a> http://www.mojoportal.com/17th-and-18th-new-skins-mitchinson-khaki-styleshout-coolwater.aspx Joe_x0020_Audette@monologue.go-mono.com Sun, 11 May 2008 06:02:16 GMT Andres G. Aragoneses: A new community devolopment model? <!--img src="http://superalumnos.net/files/images/chequeAdsense.preview.jpg" /--><br /><h4 id="ANewCommunityDevModel-long">Long story</h4> (Go to the <a href="#ANewCommunityDevModel-short">short story</a> if you're too lazy to read a lot.)<br /><br />Some time ago I <a href="http://knocte.blogspot.com/2006/09/el-software-libre-ms-comercial-que.html">wrote</a> about the usual confusion between the terms "commercial" and "propietary". FLOSS <strong>is</strong> commercial software because it's not only driven by the generosity of some developers with their spare time. A FLOSS developer can be paid by a software company, either by being employed (the most common case currently) or either by a consultancy/bounty basis. And there are still even <a href="http://www.db4o.com/about/productinformation/whitepapers/db4o%20Whitepaper%20-%20db4objects%20and%20the%20Dual%20Licensing%20Model.pdf">open source companies which still indirectly refer to FLOSS as non-commercial</a> when they compare both most popular development models nowadays by saying "open source VS commercial software".<br /><br />And why the bounty system is not so popular? Well, because:<br />1) It's very project-driven: bounties are usually published in means very related to the project. This can be considered an advantage because only motivated/interested developers will apply, but sometimes the project is too small, too recent or not very popular, or with a lot of similar projects around.<br />2) There's no strong system to manage the bounty in respect to requirements, secure payment, trust system between parts, etc.<br />3) Many people don't advocate for it (or they advocate for a bounty system that works as a task exchange without money intervention: <em>I fix this for you if you fix this for me</em>) because, we know, one of the reasons of the excellence of free software is because developers love what they do without rewards. (But IMHO one of the big downsides is also because there are also important tasks in a project that nobody likes to do. Besides, I think people tend to spend less spare time on free software as their age grows.)<br /><br />An exception to the 1st item could be <a href="http://www.bountycounty.org/">bountycounty.org</a>: a site that tries to announce bounties from free software projects. However, it seems to be an initiative that hasn't got much audience (the last bounty is 2 years old), either because the people that offer bounties forget to notify to this system, or, maybe because in the end the bounty development model doesn't work in FLOSS?<br /><br />Well, I don't think this is the case, because there's a bounty system that is succeeding, and which is also an exception to the (2) item of the above list: Google Summer of Code.<br /><br />However, GSoC has the following disadvantages to be "complete" for this matter:<br />a) Only students can apply.<br />b) All projects happen in the same time-frame and have the same duration (a summer).<br />c) All bounties are the same for each developer.<br />d) A concrete company controls all the process (because, it's true, they put the money).<br /><br />But we need something similar to GSoC (similar in the "It Works" aspect) and that saves these problems and is not a mere "announcement" site like BountyCounty.org.<br /><br />Some initiatives have appeared that tried to solve these situation: BountySource.com and SourceForge.net marketplace. The common problem to both is that they try to solve it by attracting the developers to host their projects, so this causes big and mature projects not to apply (because they have currently good hosting solutions, or are self-hosted, like Mozilla projects for instance).<br /><br />One of the ideas is to implement a bounty system in our bug tracking system software, like <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=124096">Bugzilla</a>. If I had time and liked Perl more, I would try to contribute something for it. Maybe we're in the chicken-egg problem here: we need a bounty system for that task.<br /><br />Surprisingly, there's already a general purpose web-based service for this task: <a href="http://www.rentacoder.com/">RentACoder.com</a>. But I haven't seen any free software projects using it, because it seems very focused on propietary developments.<br /><br />And then <strong>it happened</strong>: Some weeks ago a new FLOSS-oriented service was born: <a href="http://www.fossfactory.org/">FOSS Factory</a>. I wanted to start using it by publishing some mini-bounties (which hopefully would grow if other people are interested, similarly to voting systems in Bug Tracking software), but I got disappointed when even the project creation had a cost. But yesterday I received this e-mail:<br /><br /><em><br />Andres G. Aragoneses,<br /><br />Thanks so much for your interest in FOSS Factory! As one of our early adopters, I wanted to keep you in the loop on two very important developments.<br /><br />First, in response to user feedback, we've removed all costs for creating FOSS Factory projects! Instead, we now charge a 5% transaction fee on payouts. This aligns our interests with yours by ensuring that we will only make money if your projects succeed. It also enables developers to post their own projects without having to spend money.<br /><br />Second, we recently released our website source code under a FOSS license. You can now download the code from http://www.fossfactory.org/get-source.php. Our primary reason for doing this was so that we could take advantage of our own system to help improve the site. In case you're interested, we've already posted a few bounties for improvements that we haven't had time to implement ourselves: http://www.fossfactory.org/project.php?p=p30&tab=subprojects. Please feel free to participate.<br /><br />If you have any questions or concerns, please either reply to this message, or email me directly at jjgignac {at} fossfactory {dot} org. Your feedback is very important to us!<br /><br />Sincerely,<br /><br />John-Paul Gignac<br />President and Founder<br />FOSS Factory Inc.<br /></em><br /><br />Unfortunately, there's a 5% transaction charge for each bounty, but hey, we need to support their service! Also, the software is PHP based, so I won't likely spend time on improving it (you know, I already fled from PHP and Perl some years ago ;) ).<br /><br />But I like the initiative and I'll start to publish the bugs/features I consider interesting to have, but have no time/interest to hack on. Here are the first ones (take in account that, if every voter of the bug payed 10$, the bounty would be enough attractive for a developer I guess, because they are not very complicated):<br /><br />- Thunderbird/Seamonkey feature <strong><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=11048">Auto-watch threads you've posted to</a> (21 votes)</strong><br />- Thunderbird/Seamonkey regression <strong><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=11048">Allow edit of unsent message (Unsent folder messages should open to a compose window when double click)</a> (26 votes)</strong><br />- Bugzilla's feature (or fix for highly confusing workflow for newcomers) <strong><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=11368">Move all bug activity onto main bug screen</a> (17 votes)</strong><br />- Banshee's feature (currently handled by an outdated addin AFAIK) <strong><a href="http://bugzilla.gnome.org/show_bug.cgi?id=361210">Banshee needs a way to cleanup (remove stale tracks)</a> (reporter+4CC; no voting system in BGO)</strong><br />- Banshee's feature (patch proposed but I guess someone should make it apply to trunk) <strong><a href="http://bugzilla.gnome.org/show_bug.cgi?id=421376">[Patch] Automatically scan music folders for new songs</a> (reporter+6CC; no voting system in BGO)</strong><br />- Gnome's bug (someone wrote a patch but not sure if it will finally make it for 2.24...) <strong><a href="http://bugzilla.gnome.org/show_bug.cgi?id=47893">The ``Replace File'' dialog should display the two file sizes, times, etc.</a> (reporter+23CC; no voting system in BGO)</strong><br />- Monsoon's crazy feature (maybe implies the creation of a new Gtk widget) <a href="https://bugzilla.novell.com/show_bug.cgi?id=378750"><strong>When the option "Minimize to notification area on close" is not enabled, we should have a new widget on the title bar for that action</strong></a> (just me)<br />- Real fix for Mono's issue (because we already have a workaround) <a href="https://bugzilla.novell.com/show_bug.cgi?id=375987"><strong>System.Windows.Forms dependency on GTK makes code to crash if it uses ATK# and GTK_MODULES contains 'atk-bridge'</strong></a><br /><br />The last of the issues affected <a href="http://www.mono-project.com/Accessibility">our project</a> until we found a workaround overriding environment variables. If we reach our milestones properly and nobody has fixed it at that time, we could have a try! Now we still have <a href="http://www.mono-project.com/Accessibility:_Mapping_UIA_to_ATK">tons of work</a> which Calvin and the team have perfectly outlined. Unfortunately I haven't helped in this doc effort because I was busy debugging the issues I mentioned in my last post, which turned out to be an invalid bug (but at least gave me an idea for a <a href="http://nestor.babuine.net/?p=36">Gendarme Rule</a>) and a GAPI parser bug that Mike fixed) and because on thursday afternoon I was affected by <a href="http://automorphic.blogspot.com/2008/03/fevers-and-hacking-go-together-like.html"> some small rock ;)</a> and probably was the cause of me trying to debug something I didn't correctly updated on Friday (and maybe because of our dumb deployment methodology that <a href="http://mkestner.blogspot.com/">Mike</a> has already blamed). Well, I'll talk about this in a later entry...<br /><br /><h4 id="ANewCommunityDevModel-short">Short story</h4>Maybe this day will be remembered in the Free Software community as the day in which a first software draft is presented in order to fill some <a href="http://nat.org/2005/january/#bountysystem">awesome ideas from devs like Nat Friedman</a> about a general-purpose bounty system:<br /><h3><a href="http://www.fossfactory.org/">FOSS Factory</a></h3><br />Especially interesing is their <a href="http://www.fossfactory.org/why.php">reasonings</a> for its creation. http://knocte.blogspot.com/2008/05/new-community-devolopment-model.html Mozilla Programacion SoftwareLibre Ingenieria General CSharp Mono Andres_x0020_G._x0020_Aragoneses@monologue.go-mono.com tag:blogger.com,1999:blog-13199395.post-628234887210510310 Sat, 10 May 2008 17:59:00 GMT Jeffrey Stedfast: Wouldn't it be nice if... Over the past week, I've been spending some time hacking on Evolution again because of my frustration with the current IMAP backend. This got me to wondering... why hasn't anyone stepped up to the plate and rewritten Evolution's IMAP code yet?<br /><br />I think the reason can be summed up with the following 2 problems:<br /><br />1. IMAP is hard<br />2. Coding something complicated like a multithreaded multiplexed IMAP client library in C is harder.<br /><br />That got me and Michael Hutchinson wondering... wouldn't it be nice if we could write Camel provider plugins in C# or in any other managed language that we might prefer?<br /><br />I think Camel, like Evolution itself, should allow developers to implement plugins in C# as well. I really think this might help lessen the burden of implementing new mail protocol backends for Camel/Evolution.<br /><br />On that note, I've created a new svn module called camel-imap4 which can be built against your installed evolution-data-server devel packages.<br /><br />Currently, however, it'll probably only work with e-d-s >= 2.23.x because some things (and assumptions) in Camel have changed recently.<br /><br />One problem I'm having is that the symbol camel_folder_info_new() used to not exist in older versions of e-d-s, but recently that symbol was added and makes use of g_slice_alloc0(). The problem is that the way providers used to allocate CamelFolderInfo structures before was using g_new0() themselves. Why does this pose a problem? There's no guarantee that I'm aware of that you can mix and match g_malloc/g_slice_free or g_slice_alloc/g_free.<br /><br />This makes it difficult for me to implement a plugin that builds and works with my installed version of Evolution (2.12) and also work with Evolution svn (2.23). This is quite unfortunate :(<br /><br />While I'm at it, allow me to also propose some changes to the GChecksum API. Please, please, please make it so that we ned not allocate/free a GChecksum variable each time we need to checksum something?<br /><br />I propose the ability to do the following:<br /><br />GChecksum checksum;<br /><br />g_checksum_init (&checksum, G_CHECKSUM_MD5);<br />g_checksum_update (&checksum, data, len);<br />g_checksum_get_digest (&checksum, digest, &len);<br /><br />Then I'd like to be able to either call g_checksum_init() on checksum <i>again</i> or maybe have another function to clear state, maybe g_checksum_clear() which would allow me to once again use the same checksum variable for calculating the md5 of some other chunk of data.<br /><br />Camel generates md5sums for a lot of data, sometimes in loops. Having to alloc/free every iteration is inefficient and tedious.<br /><br /><b>Update:</b> It now builds and works with Evolution 2.12 (I haven't tested anything else). But the new and improved IMAP back-end for Evolution is now actually working. Whoohoo! http://jeffreystedfast.blogspot.com/2008/05/wouldnt-it-be-nice-if.html mono evolution Jeffrey_x0020_Stedfast@monologue.go-mono.com tag:blogger.com,1999:blog-203063759820106893.post-2242048895043945677 Sat, 10 May 2008 17:49:00 GMT Francisco Figueiredo: Going to Canada... Hi, all!!<br /><br />It's a great pleasure to say I'm going to attend PGCon2008 this year!! :)<br /><br />I'm going to Canada tomorrow (May, 11) and hope to enjoy Ottawa and Canada before conference starts.<br /><br />If you live in Ottawa and would like to talk about Npgsql, Mono, .Net or anything else, please drop me a mail.<br /><br />About Npgsql, I posted on npgsql-devel list about an <a href="http://lists.pgfoundry.org/pipermail/npgsql-devel/2008-May/000704.html">Npgsql2 beta4 release this week</a>. But unfortunately it won't be possible. Josh is fixing some last bugs and will be doing a release next week. Sorry for any problems this announce may have caused.<br /><br /><br />So, that's it!<br /><br />Stay tuned! http://fxjr.blogspot.com/2008/05/going-to-canada.html canada travel Npgsql viagem Francisco_x0020_Figueiredo@monologue.go-mono.com tag:blogger.com,1999:blog-15237920.post-1590232489820430033 Sat, 10 May 2008 17:05:00 GMT Joe Audette: 2nd Skin for 11th Design - styleshout-envision <p>I've completed the second skin of 3 for the 11th design of my <a href="../../../BlogView.aspx?pageid=2&amp;ItemID=439&amp;mid=19">11 design campaign</a>, <a href="http://www.styleshout.com/templates/preview/Envision1-1/index.html">styleshout-envision</a> which can be seen on <a href="http://demo.mojoportal.com/">demo.mojoportal.com</a>. Of course since its a public demo site, someone may come along and change it, but you can change it back or checkout the different skins by (key icon) Administration Menu &gt; Site Settings.</p> <p><img width="500" height="537" alt="styleshout-envision skin screen shot" src="http://www.mojoportal.com/Data/Sites/1/styleshout-envision.jpg" /></p> <p>Coming up next,</p> <p><a href="http://www.styleshout.com/templates/preview/CoolWater1-0/index.html">styleshout-coolwater</a></p> <p>.</p><br /><br /><a href='http://www.mojoportal.com'>Joe Audette</a>&nbsp;&nbsp;<a href='http://www.mojoportal.com/2nd-skin-for-11th-design-styleshout-envision.aspx'>...</a> http://www.mojoportal.com/2nd-skin-for-11th-design-styleshout-envision.aspx Joe_x0020_Audette@monologue.go-mono.com Sat, 10 May 2008 05:51:38 GMT Joe Audette: 11th Design Completed - styleshout-refresh <p>I've completed one skin of 3 for the 11th design of my <a href="http://www.mojoportal.com/BlogView.aspx?pageid=2&amp;ItemID=439&amp;mid=19">11 design campaign</a>, <a href="http://www.styleshout.com/templates/preview/Refresh1-0/index.html">styleshout-refresh</a> which can be seen on <a href="http://demo.mojoportal.com">demo.mojoportal.com</a>. Of course since its a public demo site, someone may come along and change it, but you can change it back or checkout the different skins by (key icon) Administration Menu &gt; Site Settings.</p> <p>There are 2 more skins coming, <a href="http://www.styleshout.com/templates/preview/CoolWater1-0/index.html">styleshout-coolwater</a>, and <a href="http://www.styleshout.com/templates/preview/Envision1-1/index.html">styleshout-envision</a>, but they are really just variations on the same design.</p> <p><img width="500" height="539" alt="styleshout-refresh skin screen shot" src="http://www.mojoportal.com/Data/Sites/1/styleshout-refresh.jpg" /></p> <p>This will be in svn trunk later today for developers and will be in the next release of mojoPortal for everyone else.</p><br /><br /><a href='http://www.mojoportal.com'>Joe Audette</a>&nbsp;&nbsp;<a href='http://www.mojoportal.com/11th-design-completed---styleshout-refresh.aspx'>...</a> http://www.mojoportal.com/11th-design-completed---styleshout-refresh.aspx Joe_x0020_Audette@monologue.go-mono.com Fri, 09 May 2008 11:40:19 GMT Jackson Harper: Inversion Tables <a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_4wtItLnZ3X0/SCRs5LNiUGI/AAAAAAAAAIQ/iJMkKBpRvVk/s1600-h/inversion-table.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_4wtItLnZ3X0/SCRs5LNiUGI/AAAAAAAAAIQ/iJMkKBpRvVk/s320/inversion-table.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5198399599410303074" /></a><br /><br />Has anyone ever tried one of these? My back has been totally killing me for the last couple weeks and none of the usual stuff is helping.<div class="feedflare"> <a href="http://feeds.feedburner.com/~f/JacksonsActivityLog?a=sAZ9QH"><img src="http://feeds.feedburner.com/~f/JacksonsActivityLog?i=sAZ9QH" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/JacksonsActivityLog?a=dbCm7H"><img src="http://feeds.feedburner.com/~f/JacksonsActivityLog?i=dbCm7H" border="0"></img></a> </div> http://jacksonito.blogspot.com/2008/05/inversion-tables.html Jackson_x0020_Harper@monologue.go-mono.com tag:blogger.com,1999:blog-4677537836173626009.post-5369882005449140923 Fri, 09 May 2008 11:22:00 GMT Alan McGovern: It's funny. I always thought that DRM should be used as a way to make life difficult for people pirating software/music. I never though it would be used as a way to convince people that pirating software is the better way:<br /><br />http://www.theinquirer.net/gb/inquirer/news/2008/05/07/mass-effect-wins-award-worst-pc<br /><br />Seriously, what are these people thinking? http://monotorrent.blogspot.com/2008/05/its-funny.html Alan_x0020_McGovern@monologue.go-mono.com tag:blogger.com,1999:blog-29153919.post-7635672926238868863 Fri, 09 May 2008 09:18:00 GMT Jeroen Frijters: Compiler Intrinsics <p> Most compilers have some (or in some cases many) <a href="http://en.wikipedia.org/wiki/Intrinsic_function">intrinsic functions</a>. HotSpot has a number of them (see <a href="https://openjdk.dev.java.net/source/browse/openjdk/jdk/trunk/hotspot/src/share/vm/classfile/vmSymbols.hpp?rev=257&view=markup"> here</a>, search for &quot;intrinsics known to the runtime&quot;) as does the CLR JIT. IKVM has had a couple as well (<a href="/PermaLink.aspx?guid=6d43cef3-f478-4af7-bd8d-e73d30884d61">System.arraycopy()</a>, <a href="/PermaLink.aspx?guid=5402bb0a-5f05-4939-9d13-fd42166155b6"> AtomicReferenceFieldUpdater.newUpdater()</a>, <a href="/PermaLink.aspx?guid=33aed348-a990-40bd-9a01-7b903b918b55"> String.toCharArray()</a>). These were sort of hacked into the compiler and I finally decided to clean that up a little and add more scalable support for <a href="http://ikvm.cvs.sourceforge.net/ikvm/ikvm/runtime/intrinsics.cs?view=markup"> adding intrinsincs</a>. The trigger to do this was that I added four more intrinsics: <a href="http://java.sun.com/javase/6/docs/api/java/lang/Float.html#floatToRawIntBits(float)"> Float.floatToRawIntBits()</a>, <a href="http://java.sun.com/javase/6/docs/api/java/lang/Float.html#intBitsToFloat(int)"> Float.intBitsToFloat()</a>, <a href="http://java.sun.com/javase/6/docs/api/java/lang/Double.html#doubleToRawLongBits(double)"> Double.doubleToRawLongBits()</a> and <a href="http://java.sun.com/javase/6/docs/api/java/lang/Double.html#longBitsToDouble(long)"> Double.longBitsToDouble()</a>. </p> <p> <b>Benchmark</b> </p> <p> Here's a micro benchmark: </p> <p> <code><font color="#0000FF">public class</font> <font color="#2b91af">test</font> {<br> &nbsp; <font color="#0000FF">public static void</font> main(<font color="#2B91AF">String</font>[] args) {<br> &nbsp;&nbsp;&nbsp; <font color="#0000FF">long</font> sum = 1;<br> &nbsp;&nbsp;&nbsp; <font color="#0000FF">long</font> start = <font color="#2B91AF">System</font>.currentTimeMillis();<br> &nbsp;&nbsp;&nbsp; <font color="#0000FF">for</font> (<font color="#0000FF">int</font> i = 0; i &lt; 10000000; i++) {<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sum += <font color="#2B91AF">Double</font>.doubleToRawLongBits(sum);<br> &nbsp;&nbsp;&nbsp; }<br> &nbsp;&nbsp;&nbsp; <font color="#0000FF">long</font> end = <font color="#2B91AF">System</font>.currentTimeMillis();<br> &nbsp;&nbsp;&nbsp; <font color="#2B91AF">System</font>.out.println(end - start);<br> &nbsp;&nbsp;&nbsp; <font color="#2B91AF">System</font>.out.println(sum);<br> &nbsp; }<br> }</code> </p> <p> Here are the results: </p> <table border="0" cellpadding="0" cellspacing="0"> <tr> <td style="border-right: solid 1px black; border-bottom: solid 1px black"> &nbsp;</td> <td style="border-bottom: solid 1px black"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x86 (aligned)</td> <td style="border-bottom: solid 1px black"> &nbsp;&nbsp;&nbsp; x86 (unaligned)</td> <td style="border-bottom: solid 1px black"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; x64</td> </tr> <tr> <td style="border-right: solid 1px black"> JDK 1.6 HotSpot Server VM&nbsp;&nbsp;&nbsp; </td> <td align="right"> 287</td> <td align="right"> &nbsp;</td> <td align="right"> 109</td> </tr> <tr> <td style="border-right: solid 1px black"> JDK 1.6 HotSpot Client VM</td> <td align="right"> 335</td> <td align="right"> &nbsp;</td> <td align="right"> &nbsp;</td> </tr> <tr> <td style="border-right: solid 1px black"> IKVM 0.36 .NET 1.1</td> <td align="right"> 479</td> <td align="right"> 565</td> <td align="right"> &nbsp;</td> </tr> <tr> <td style="border-right: solid 1px black"> IKVM 0.36 .NET 2.0</td> <td align="right"> 570</td> <td align="right"> 704</td> <td align="right"> 124</td> </tr> <tr> <td style="border-right: solid 1px black"> IKVM 0.37</td> <td align="right"> 338</td> <td align="right"> 468</td> <td align="right"> 101</td> </tr> </table> <p> <br> Since the x86 .NET results are highly sensitive as to whether the double on the stack <a href="/PermaLink.aspx?guid=f300c4e1-15b0-45ed-b6a6-b5dc8fb8089e"> happens to be aligned or not</a>, I included both results. </p> <p> <b>Implementation</b> </p> <p> Here's the MSIL that IKVM generates for the loop: </p> <p> <code>IL_000b:&nbsp;&nbsp; ldloc.2<br> IL_000c:&nbsp;&nbsp; ldc.i4&nbsp;&nbsp;&nbsp; 0x989680<br> IL_0011:&nbsp;&nbsp; bge&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IL_0028<br> IL_0016:&nbsp;&nbsp; ldloc.0<br> IL_0017:&nbsp;&nbsp; ldloc.0<br> IL_0018:&nbsp;&nbsp; conv.r8<br> IL_0019:&nbsp;&nbsp; ldloca.s&nbsp; V_3<br> IL_001b:&nbsp;&nbsp; call&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int64 [IKVM.Runtime]IKVM.Runtime.DoubleConverter::ToLong(float64,<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;valuetype [IKVM.Runtime]IKVM.Runtime.DoubleConverter&amp;)<br> IL_0020:&nbsp;&nbsp; add<br> IL_0021:&nbsp;&nbsp; stloc.0<br> IL_0022:&nbsp;&nbsp; ldloc.2<br> IL_0023:&nbsp;&nbsp; ldc.i4.1<br> IL_0024:&nbsp;&nbsp; add<br> IL_0025:&nbsp;&nbsp; stloc.2<br> IL_0026:&nbsp;&nbsp; br.s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IL_000b</code> </p> <p> The conversion isn't actually inlined, but instead a local variable of value type <code>IKVM.Runtime.DoubleConverter</code> is added to the method and a static method on that type that takes the value to be converted and a reference to the local variable is called. Here's the code for <code>IKVM.Runtime.DoubleConverter</code>: </p> <p> <code>[<font color="#2B91AF">StructLayout</font>(<font color="#2B91AF">LayoutKind</font>.Explicit)]<br> <font color="#0000FF">public struct</font> <font color="#2B91AF">DoubleConverter</font> <br> {<br> &nbsp; [<font color="#2B91AF">FieldOffset</font>(0)]<br> &nbsp; <font color="#0000FF">private double</font> d;<br> &nbsp; [<font color="#2B91AF">FieldOffset</font>(0)]<br> &nbsp; <font color="#0000FF">private long</font> l;<br> <br> &nbsp; <font color="#0000FF">public static long</font> ToLong(<font color="#0000FF">double</font> value, <font color="#0000FF">ref</font> <font color="#2B91AF">DoubleConverter</font> converter)<br> &nbsp; {<br> &nbsp;&nbsp;&nbsp; converter.d = value;<br> &nbsp;&nbsp;&nbsp; <font color="#0000FF">return</font> converter.l;<br> &nbsp; }<br> <br> &nbsp; <font color="#0000FF">public static double</font> ToDouble(<font color="#0000FF">long</font> value, <font color="#0000FF">ref</font> <font color="#2B91AF">DoubleConverter</font> converter)<br> &nbsp; {<br> &nbsp;&nbsp;&nbsp; converter.l = value;<br> &nbsp;&nbsp;&nbsp; <font color="#0000FF">return</font> converter.d;<br> &nbsp; }<br> }</code> </p> <p> It uses the .NET feature that allows you to explicitly control the layout of a struct&nbsp; to overlay the double and long fields. Note that this construct is fully verifiable. </p> <p> For comparison, the standard <a href="http://msdn.microsoft.com/en-us/library/system.bitconverter.doubletoint64bits(VS.71).aspx"> System.BitConverter.DoubleToInt64Bits()</a> uses unsafe code and looks something like this: </p> <p> <code><font color="#0000FF">public static unsafe long</font> DoubleToInt64Bits(<font color="#0000FF">double</font> value)<br> {<br> &nbsp; <font color="#0000FF">return</font> *((<font color="#0000FF">long</font>*)&amp;value);<br> }</code> </p> <p> For some reason (probably because it isn't verifiable) the JIT doesn't like this so much and doesn't inline this method. </p> <p> <b>JIT Code</b> </p> <p> Here's the x86 code generated by the .NET 2.0 SP1 JIT: </p> <p> <code>049E15CE&nbsp; cmp&nbsp;&nbsp;&nbsp; ebx,989680h<br> 049E15D4&nbsp; jge&nbsp;&nbsp;&nbsp; 049E1600 <br> 049E15D6&nbsp; lea&nbsp;&nbsp;&nbsp; ecx,[esp+8] <br> 049E15DA&nbsp; mov&nbsp;&nbsp;&nbsp; dword ptr [esp+10h],esi <br> 049E15DE&nbsp; mov&nbsp;&nbsp;&nbsp; dword ptr [esp+14h],edi <br> 049E15E2&nbsp; fild&nbsp;&nbsp; qword ptr [esp+10h] <br> 049E15E6&nbsp; fstp&nbsp;&nbsp; qword ptr [esp+10h] <br> 049E15EA&nbsp; fld&nbsp;&nbsp;&nbsp; qword ptr [esp+10h] <br> 049E15EE&nbsp; fstp&nbsp;&nbsp; qword ptr [ecx] <br> 049E15F0&nbsp; mov&nbsp;&nbsp;&nbsp; eax,dword ptr [ecx] <br> 049E15F2&nbsp; mov&nbsp;&nbsp;&nbsp; edx,dword ptr [ecx+4] <br> 049E15F5&nbsp; add&nbsp;&nbsp;&nbsp; eax,esi <br> 049E15F7&nbsp; adc&nbsp;&nbsp;&nbsp; edx,edi <br> 049E15F9&nbsp; mov&nbsp;&nbsp;&nbsp; esi,eax <br> 049E15FB&nbsp; mov&nbsp;&nbsp;&nbsp; edi,edx <br> 049E15FD&nbsp; inc&nbsp;&nbsp;&nbsp; ebx <br> 049E15FE&nbsp; jmp&nbsp;&nbsp;&nbsp; 049E15CE</code> </p> <p> Here's the x64 code generated by the .NET 2.0 SP1 JIT: </p> <p> <code>00000642805B8A90&nbsp; cmp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ecx,989680h<br> 00000642805B8A96&nbsp; jge&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00000642805B8AB1 <br> 00000642805B8A98&nbsp; cvtsi2sd&nbsp;&nbsp; xmm0,rdi <br> 00000642805B8A9D&nbsp; lea&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rax,[rsp+20h] <br> 00000642805B8AA2&nbsp; movsd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mmword ptr [rax],xmm0 <br> 00000642805B8AA6&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rax,qword ptr [rax] <br> 00000642805B8AA9&nbsp; add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rdi,rax <br> 00000642805B8AAC&nbsp; add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ecx,1 <br> 00000642805B8AAF&nbsp; jmp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00000642805B8A90</code> </p> <p> In both cases the construct is inlined properly. It is also obvious why the x64 code is so much faster, it uses SSE (as we've seen before) and only uses one memory store/load combination. </p> <p> <b>HotSpot</b> </p> <p> For completeness, here's the code generated by HotSpot x64: </p> <p> <code>0000000002772EA0&nbsp; cvtsi2sd&nbsp;&nbsp; xmm0,r11 <br> 0000000002772EA5&nbsp; add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ebp,10h <br> 0000000002772EA8&nbsp; movsd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mmword ptr [rsp+20h],xmm0 <br> 0000000002772EAE&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r10,qword ptr [rsp+20h] <br> 0000000002772EB3&nbsp; add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r10,r11 <br> 0000000002772EB6&nbsp; cvtsi2sd&nbsp;&nbsp; xmm0,r10 <br> 0000000002772EBB&nbsp; movsd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mmword ptr [rsp+20h],xmm0 <br> 0000000002772EC1&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r11,qword ptr [rsp+20h] <br> 0000000002772EC6&nbsp; add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r11,r10 <br> 0000000002772EC9&nbsp; cvtsi2sd&nbsp;&nbsp; xmm0,r11 <br> 0000000002772ECE&nbsp; movsd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mmword ptr [rsp+20h],xmm0 <br> 0000000002772ED4&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r10,qword ptr [rsp+20h] <br> 0000000002772ED9&nbsp; add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r10,r11 <br> [...]<br> 0000000002772FC0&nbsp; cvtsi2sd&nbsp;&nbsp; xmm0,r10 <br> 0000000002772FC5&nbsp; movsd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mmword ptr [rsp+20h],xmm0 <br> 0000000002772FCB&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r11,qword ptr [rsp+20h] <br> 0000000002772FD0&nbsp; add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r11,r10 <br> 0000000002772FD3&nbsp; cmp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ebp,r9d <br> 0000000002772FD6&nbsp; jl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0000000002772EA0</code> </p> <p> It actually unrolled the loop 16 times (which appears not be helping in the case), but otherwise the code generated is pretty similar to what we saw on the CLR. Of course, in HotSpot <code>Double.doubleToRawIntBits()</code> is also an intrinsic because in Java the only alternative would be to write it in native code and the JNI transition would add significant overhead in this case. </p> <img width="0" height="0" src="http://weblog.ikvm.net/aggbug.ashx?id=0404dd8a-88a8-4d62-9bcb-98324d57a2a9"> http://weblog.ikvm.net/PermaLink.aspx?guid=0404dd8a-88a8-4d62-9bcb-98324d57a2a9 Jeroen_x0020_Frijters@monologue.go-mono.com http://weblog.ikvm.net/CommentView.aspx?guid=0404dd8a-88a8-4d62-9bcb-98324d57a2a9 http://weblog.ikvm.net/PermaLink.aspx?guid=0404dd8a-88a8-4d62-9bcb-98324d57a2a9 Fri, 09 May 2008 05:27:51 GMT Rodrigo B de Oliveira: Towards Extensible Parsing <p style="font-size: 15px;">Almost four years ago <a href="http://jira.codehaus.org/browse/BOO-1">the first feature request</a> was entered into the boo issue tracker.</p> <blockquote> <p style="font-size: 15px;">There should be a way to extend the parser so it could recognize custom measurement unit literals such as <strong>1kg</strong> and <strong>2cm</strong>.</p> </blockquote> <p style="font-size: 15px;">Since then boo has improved a lot but with no solution for BOO-1 in the horizon.</p> <p style="font-size: 15px;">I think I'm getting close to solve it in a interesting way using <a href="http://citeseer.ist.psu.edu/643425.html">PEGs</a> implemented as a <a href="http://en.wikipedia.org/wiki/Interpreter_pattern">graph of expression objects</a>.</p> <p style="font-size: 15px;">PEGs are very likable. Conceptually simple and composable.</p> <p style="font-size: 15px;">Take the PEG that recognizes integer expressions involving the <strong>+</strong> and <strong>*</strong> operators:</p> <blockquote> <p style="font-size: 15px;">grammar &lt;- spaces addition eof<br /> addition &lt;- term ("+" spaces term)*<br /> term &lt;- factor ("*" spaces factor)*<br /> factor &lt;- [0-9]+ spaces<br /> spaces &lt;- (' ' / '\t')*<br /> eof &lt;- !.</p> </blockquote> <p style="font-size: 15px;">where:</p> <blockquote> <p style="font-size: 15px;"><strong>()</strong> means grouping.</p> <p style="font-size: 15px;"><strong>*</strong> means zero or more matches.</p> <p style="font-size: 15px;"><strong>+</strong> means one or more matches.</p> <p style="font-size: 15px;"><strong>/</strong> is the prioritized choice operator. If the first expression succeeds, the whole expression succeeds. If the first expression fails, it backtracks and evaluates the second expression.</p> <p style="font-size: 15px;"><strong>!</strong> is the not predicate operator which succeeds if its operand fails. It never consumes any input.</p> <p style="font-size: 15px;"><strong>.</strong> matches any input.</p> </blockquote> <p style="font-size: 15px;">The grammar can be translated to boo very simply using the <strong>peg</strong> macro from <a href="http://code.google.com/p/boo-extensions/source/browse/trunk/extensions/src/Boo.Pegs">Boo.Pegs</a>:</p> <blockquote> <pre> <font color="#000000"><font color="#006699"><strong>import</strong></font> Boo.Pegs peg<font color="#000000"><strong>:</strong></font> grammar <font color="#000000"><strong>=</strong></font> spaces, addition, eof addition <font color="#000000"><strong>=</strong></font> term, <font color="#000000"><strong>--</strong></font><font color="#000000"><strong>(</strong></font><font color="#FF00CC">"</font><font color="#FF00CC">+</font><font color="#FF00CC">"</font>, spaces, term<font color="#000000"><strong>)</strong></font> term <font color="#000000"><strong>=</strong></font> factor, <font color="#000000"><strong>--</strong></font><font color="#000000"><strong>(</strong></font><font color="#FF00CC">"</font><font color="#FF00CC">*</font><font color="#FF00CC">"</font>, spaces, factor<font color="#000000"><strong>)</strong></font> factor <font color="#000000"><strong>=</strong></font> <font color="#000000"><strong>++</strong></font><font color="#000000"><strong>[</strong></font><font color="#FF0000">0</font><font color="#000000"><strong>-</strong></font><font color="#FF0000">9</font><font color="#000000"><strong>]</strong></font>, spaces spaces <font color="#000000"><strong>=</strong></font> <font color="#000000"><strong>--</strong></font><font color="#000000"><strong>(</strong></font><font color="#CC00CC">'</font><font color="#CC00CC"> </font><font color="#CC00CC">'</font> <font color="#000000"><strong>/</strong></font> <font color="#CC00CC">'</font><font color="#CC00CC">\t</font><font color="#CC00CC">'</font><font color="#000000"><strong>)</strong></font> eof <font color="#000000"><strong>=</strong></font> <font color="#006699"><strong>not</strong></font> any<font color="#000000"><strong>(</strong></font><font color="#000000"><strong>)</strong></font> <font color="#0099FF"><strong>assert</strong></font> grammar.Match<font color="#000000"><strong>(</strong></font>PegContext<font color="#000000"><strong>(</strong></font><font color="#FF00CC">"</font><font color="#FF00CC"> </font><font color="#FF00CC"> </font><font color="#FF00CC">6</font><font color="#FF00CC">*</font><font color="#FF00CC">6</font><font color="#FF00CC"> </font><font color="#FF00CC">+</font><font color="#FF00CC"> </font><font color="#FF00CC">6</font><font color="#FF00CC"> </font><font color="#FF00CC">"</font><font color="#000000"><strong>)</strong></font><font color="#000000"><strong>)</strong></font></font> </pre> </blockquote> <p style="font-size: 15px;">I had to be a little creative in mapping the PEG operators to valid boo expressions because as it must be clear by now boo doesn't allow the introduction of completely new syntax and that's what the fuss is all about here.</p> <p style="font-size: 15px;">I actually like the way it looks.</p> <p style="font-size: 15px;">Implementing something more useful such as expression evaluation on top of that requires a few semantic actions operating a stack:</p> <blockquote> <pre> <font color="#000000"><font color="#006699"><strong>import</strong></font> Boo.Pegs <font color="#006699"><strong>import</strong></font> System.Collections.Generic stack <font color="#000000"><strong>=</strong></font> Stack<font color="#000000"><strong>[</strong></font><font color="#006699"><strong>of</strong></font> <font color="#009966"><strong>int</strong></font><font color="#000000"><strong>]</strong></font><font color="#000000"><strong>(</strong></font><font color="#000000"><strong>)</strong></font> push <font color="#000000"><strong>=</strong></font> stack.Push pop <font color="#000000"><strong>=</strong></font> stack.Pop peg<font color="#000000"><strong>:</strong></font> grammar <font color="#000000"><strong>=</strong></font> spaces, addition, eof addition <font color="#000000"><strong>=</strong></font> term, <font color="#000000"><strong>--</strong></font><font color="#000000"><strong>(</strong></font><font color="#FF00CC">"</font><font color="#FF00CC">+</font><font color="#FF00CC">"</font>, spaces, term, <font color="#000000"><strong>{</strong></font> push<font color="#000000"><strong>(</strong></font>pop<font color="#000000"><strong>(</strong></font><font color="#000000"><strong>)</strong></font> <font color="#000000"><strong>+</strong></font> pop<font color="#000000"><strong>(</strong></font><font color="#000000"><strong>)</strong></font><font color="#000000"><strong>)</strong></font> <font color="#000000"><strong>}</strong></font><font color="#000000"><strong>)</strong></font> term <font color="#000000"><strong>=</strong></font> factor, <font color="#000000"><strong>--</strong></font><font color="#000000"><strong>(</strong></font><font color="#FF00CC">"</font><font color="#FF00CC">*</font><font color="#FF00CC">"</font>, spaces, factor, <font color="#000000"><strong>{</strong></font> push<font color="#000000"><strong>(</strong></font>pop<font color="#000000"><strong>(</strong></font><font color="#000000"><strong>)</strong></font> <font color="#000000"><strong>*</strong></font> pop<font color="#000000"><strong>(</strong></font><font color="#000000"><strong>)</strong></font><font color="#000000"><strong>)</strong></font> <font color="#000000"><strong>}</strong></font><font color="#000000"><strong>)</strong></font> factor <font color="#000000"><strong>=</strong></font> <font color="#000000"><strong>++</strong></font><font color="#000000"><strong>[</strong></font><font color="#FF0000">0</font><font color="#000000"><strong>-</strong></font><font color="#FF0000">9</font><font color="#000000"><strong>]</strong></font>, <font color="#000000"><strong>{</strong></font> push<font color="#000000"><strong>(</strong></font><font color="#009966"><strong>int</strong></font>.Parse<font color="#000000"><strong>(</strong></font>$text<font color="#000000"><strong>)</strong></font><font color="#000000"><strong>)</strong></font> <font color="#000000"><strong>}</strong></font>, spaces spaces <font color="#000000"><strong>=</strong></font> <font color="#000000"><strong>--</strong></font><font color="#000000"><strong>(</strong></font><font color="#CC00CC">'</font><font color="#CC00CC"> </font><font color="#CC00CC">'</font> <font color="#000000"><strong>/</strong></font> <font color="#CC00CC">'</font><font color="#CC00CC">\t</font><font color="#CC00CC">'</font><font color="#000000"><strong>)</strong></font> eof <font color="#000000"><strong>=</strong></font> <font color="#006699"><strong>not</strong></font> any<font color="#000000"><strong>(</strong></font><font color="#000000"><strong>)</strong></font> <font color="#0099FF"><strong>assert</strong></font> grammar.Match<font color="#000000"><strong>(</strong></font>PegContext<font color="#000000"><strong>(</strong></font><font color="#FF00CC">"</font><font color="#FF00CC"> </font><font color="#FF00CC"> </font><font color="#FF00CC">6</font><font color="#FF00CC">*</font><font color="#FF00CC">6</font><font color="#FF00CC"> </font><font color="#FF00CC">+</font><font color="#FF00CC"> </font><font color="#FF00CC">6</font><font color="#FF00CC"> </font><font color="#FF00CC">"</font><font color="#000000"><strong>)</strong></font><font color="#000000"><strong>)</strong></font> <font color="#0099FF"><strong>assert</strong></font> <font color="#FF0000">42</font> <font color="#000000"><strong>=</strong></font><font color="#000000"><strong>=</strong></font> pop<font color="#000000"><strong>(</strong></font><font color="#000000"><strong>)</strong></font></font> </pre> </blockquote> <p style="font-size: 15px;">Semantic actions are just closures that get executed as matching succeeds. <strong>$text</strong> returns the text matched so far by the current rule.</p> <p style="font-size: 15px;">Beautiful.</p> <p style="font-size: 15px;">The underlying implementation based on a graph of expression objects really shines when one considers what it takes to extend the grammar above with support for hexadecimal literals:</p> <blockquote> <pre> <font color="#000000">peg<font color="#000000"><strong>:</strong></font> <font color="#CC0000">//</font><font color="#CC0000"> </font><font color="#CC0000">rebind</font> factor.Expression <font color="#000000"><strong>=</strong></font> hex_number <font color="#000000"><strong>/</strong></font> factor.Expression hex_number <font color="#000000"><strong>=</strong></font> <font color="#FF00CC">"</font><font color="#FF00CC">0x</font><font color="#FF00CC">"</font>, <font color="#000000"><strong>++</strong></font>hex_digit, <font color="#000000"><strong>{</strong></font> push<font color="#000000"><strong>(</strong></font><font color="#009966"><strong>int</strong></font>.Parse<font color="#000000"><strong>(</strong></font>$text<font color="#000000"><strong>[</strong></font><font color="#FF0000">2</font><font color="#000000"><strong>:</strong></font><font color="#000000"><strong>]</strong></font>, NumberStyles.HexNumber<font color="#000000"><strong>)</strong></font><font color="#000000"><strong>)</strong></font> <font color="#000000"><strong>}</strong></font>, spaces hex_digit <font color="#000000"><strong>=</strong></font> <font color="#000000"><strong>[</strong></font><font color="#FF0000">0</font><font color="#000000"><strong>-</strong></font><font color="#FF0000">9</font>, a<font color="#000000"><strong>-f</strong></font>, A<font color="#000000"><strong>-<span style="font-weight: normal;">F</span></strong></font><font color="#000000"><strong>]</strong></font> <font color="#0099FF"><strong>assert</strong></font> grammar.Match<font color="#000000"><strong>(</strong></font>PegContext<font color="#000000"><strong>(</strong></font><font color="#FF00CC">"</font><font color="#FF00CC"> </font><font color="#FF00CC"> </font><font color="#FF00CC">0xa</font><font color="#FF00CC">*</font><font color="#FF00CC">2</font><font color="#FF00CC"> </font><font color="#FF00CC">+</font><font color="#FF00CC"> </font><font color="#FF00CC">11</font><font color="#FF00CC">*</font><font color="#FF00CC">0x02</font><font color="#FF00CC">"</font><font color="#000000"><strong>)</strong></font><font color="#000000"><strong>)</strong></font> <font color="#0099FF"><strong>assert</strong></font> <font color="#FF0000">42</font> <font color="#000000"><strong>=</strong></font><font color="#000000"><strong>=</strong></font> pop<font color="#000000"><strong>(</strong></font><font color="#000000"><strong>)</strong></font></font> </pre> </blockquote> <p style="font-size: 15px;">It's not yet clear how this extensibility mechanism will be exposed at the boo language level but the simplicity at the peg level is encouraging.</p> <p style="font-size: 15px;">One last feature worth pointing out is the ability to match based on a previously matched rule. For instance, the closing tag of a xml element must match the name in the starting tag:</p> <blockquote> <pre> <font color="#000000"><font color="#006699"><strong>import</strong></font> Boo.Pegs peg<font color="#000000"><strong>:</strong></font> element <font color="#000000"><strong>=</strong></font> <font color="#CC00CC">'</font><font color="#CC00CC">&lt;</font><font color="#CC00CC">'</font>, tag, <font color="#CC00CC">'</font><font color="#CC00CC">&gt;</font><font color="#CC00CC">'</font>, content, <font color="#CC00CC">'</font><font color="#CC00CC">'</font>, @tag, <font color="#CC00CC">'</font><font color="#CC00CC">&gt;</font><font color="#CC00CC">'</font> tag <font color="#000000"><strong>=</strong></font> <font color="#000000"><strong>++</strong></font><font color="#000000"><strong>(</strong></font>a<font color="#000000"><strong>-</strong></font>z<font color="#000000"><strong>)</strong></font> content <font color="#000000"><strong>=</strong></font> <font color="#000000"><strong>--</strong></font><font color="#000000"><strong>(</strong></font>element <font color="#000000"><strong>/</strong></font> text<font color="#000000"><strong>)</strong></font> text <font color="#000000"><strong>=</strong></font> <font color="#006699"><strong>not</strong></font> <font color="#FF00CC">"</font><font color="#FF00CC">&lt;</font><font color="#FF00CC">"</font>, any<font color="#000000"><strong>(</strong></font><font color="#000000"><strong>)</strong></font> <font color="#0099FF"><strong>assert</strong></font> element.Match<font color="#000000"><strong>(</strong></font>PegContext<font color="#000000"><strong>(</strong></font><font color="#FF00CC">"</font><font color="#FF00CC">&lt;</font><font color="#FF00CC">foo</font><font color="#FF00CC">&gt;</font><font color="#FF00CC">&lt;</font><font color="#FF00CC">bar</font><font color="#FF00CC">&gt;</font><font color="#FF00CC">Hello</font><font color="#FF00CC">&lt;</font><font color="#FF00CC">/</font><font color="#FF00CC">bar</font><font color="#FF00CC">&gt;</font><font color="#FF00CC">&lt;</font><font color="#FF00CC">/</font><font color="#FF00CC">foo</font><font color="#FF00CC">&gt;</font><font color="#FF00CC">"</font><font color="#000000"><strong>)</strong></font><font color="#000000"><strong>)</strong></font></font> </pre> </blockquote> <p style="font-size: 15px;">I've found the idea for the <span style="font-style: italic;">last</span> <span style="font-style: italic;">match</span> operator <strong>@</strong> first described in <a href="http://www.mail-archive.com/peg@lists.csail.mit.edu/msg00020.html">this article</a>. Great idea.</p> <p style="font-size: 15px;">I've been also greatly inspired by conversations I've had with <a href="http://primates.ximian.com/~massi/blog/">Massi</a> who's <a href="http://primates.ximian.com/~massi/blog/archive/2008/Feb-03.html">exploring similar territory</a> and <a href="http://evain.net/blog/">Jb</a> during the last Mono Meeting in <del>Barcelona</del> Madrid and with <a href="http://www.ohloh.net/accounts/3973">Cedric</a> over a beer in Paris. I think Massi will be pleased to know that I haven't given any thoughts to performance leaving all the fun to him.</p> <p style="font-size: 15px;">Extensible parsing. Soon in a boo compiler close to you.</p> <p style="font-size: 15px;"><br /></p> http://blogs.codehaus.org/people/bamboo/archives/001688_towards_extensible_parsing.html Rodrigo_x0020_B_x0020_de_x0020_Oliveira@monologue.go-mono.com http://blogs.codehaus.org/people/bamboo/archives/001688_towards_extensible_parsing.html Fri, 09 May 2008 00:40:19 GMT Gabriel Burt: Banshee Podcast Support Coming in Beta 2 First, a quick note to people using the Ubuntu Banshee 1.0 PPA packages. Unfortunately, the packager messed up and at first released packages without iPod or MTP support. And now it has come to my attention (via comments and bugs from disappointed users) that the packages include the podcast extension, when it is pre-alpha and should not have been included. Hopefully the Ubuntu guys will get fixed packages out soon, and be more careful with packaging in the future. <a href="http://stompbox.typepad.com/blog/">Jorge</a> is working to make things right.<br /><br />We do expect to have the podcast extension ready by Beta 2. And Beta 2 will have auto-rip support which I just committed last night. After enabling it in your Preferences, whenever you insert a CD it will automatically begin importing it, if it's not already in your library and if MusicBrainz information can be found for it. Very useful if you are ripping many CDs. http://gburt.blogspot.com/2008/05/banshee-podcast-support-coming-in-beta.html banshee freesoftware gnome Gabriel_x0020_Burt@monologue.go-mono.com tag:blogger.com,1999:blog-33979271.post-1825229502850185800 Thu, 08 May 2008 13:32:00 GMT Joe Audette: 10th Design of 11 Completed - styleshout-stylevantage and styleshout-cistrusisland <p>I've completed the 10th design of my <a href="http://www.mojoportal.com/BlogView.aspx?pageid=2&amp;ItemID=439&amp;mid=19">11 design campaign</a>, which resulted in 2 skins, <a href="http://www.styleshout.com/templates/preview/Stylevantage1-0/index.html">styleshout-stylevantage</a> and <a href="http://www.styleshout.com/templates/preview/CitrusIsland1-1/index.html">styleshout-citrusisland</a>, which can be seen on <a href="http://demo.mojoportal.com/">demo.mojoportal.com</a>. Of course since its a public demo site, someone may come along and change it, but you can change it back or checkout the different skins by (key icon) Administration Menu &gt; Site Settings.</p> <p><img width="500" height="545" alt="styleshout-stylevantage skin screen shot" src="http://www.mojoportal.com/Data/Sites/1/stylevantage-screen.jpg" /></p> <p><img width="500" height="545" alt="styleshout-citrusisland skin screen shot" src="http://www.mojoportal.com/Data/Sites/1/citrusisland-screen.jpg" /></p><br /><br /><a href='http://www.mojoportal.com'>Joe Audette</a>&nbsp;&nbsp;<a href='http://www.mojoportal.com/10th-design-of-11-completed-styleshout-stylevantage-and-styleshout-cistrusisland.aspx'>...</a> http://www.mojoportal.com/10th-design-of-11-completed-styleshout-stylevantage-and-styleshout-cistrusisland.aspx Joe_x0020_Audette@monologue.go-mono.com Thu, 08 May 2008 12:06:53 GMT Joe Audette: 9th Design of 11 Completed - styleshout-brightsideoflife <p>I've completed the 9th design of <a href="http://www.mojoportal.com/BlogView.aspx?pageid=2&amp;ItemID=439&amp;mid=19">my 11 design campaign</a>, <a href="http://www.styleshout.com/templates/preview/BrightSide1-0/index.html">styleshout-brightsideoflife</a>, which can be seen on <a href="http://demo.mojoportal.com">demo.mojoportal.com</a>. Of course since its a public demo site, someone may come along and change it, but you can change it back or checkout the different skins by (key icon) Administration Menu &gt; Site Settings.</p> <p><img width="500" height="490" src="http://www.mojoportal.com/Data/Sites/1/brightside-screen.jpg" alt="styleshout-brightsideoflife skin screen shot" /></p> <p>This will be in svn trunk later today for developers and will be in the next release of <a href="http://www.mojoportal.com">mojoPortal</a> for everyone else, hopefully available sometime this weekend.</p><br /><br /><a href='http://www.mojoportal.com'>Joe Audette</a>&nbsp;&nbsp;<a href='http://www.mojoportal.com/9th-design-of-11-completed-styleshout-brightsideoflife.aspx'>...</a> http://www.mojoportal.com/9th-design-of-11-completed-styleshout-brightsideoflife.aspx Joe_x0020_Audette@monologue.go-mono.com Thu, 08 May 2008 05:08:36 GMT Gabriel Burt: Banshee 1.0 Beta 1 Released We have just released <a href="http://banshee-project.org/Releases/0.99.1">Banshee 1.0 Beta 1</a>, aka 0.99.1! This release adds some major features and lots of polish.<br /><br /><ul><li> View the <a href="http://banshee-project.org/Releases/0.99.1">release notes</a><br /><li> <a href="http://banshee-project.org/files/banshee/banshee-1-0.99.1.tar.bz2">Banshee 1.0 Beta 1 Source (bz2)</a><br /><li> <a href="http://opensuse.org/">openSUSE</a> 10.3 users can <a href="http://download.opensuse.org/repositories/Banshee:/Preview/openSUSE_10.3/banshee.ymp"><img src="http://banshee-project.org/files/1click-install-button.png" border="0"></a><br /><li> Foresight 2.0 users: Use PackageKit or Conary to install banshee-1</ul><br />MTP and iPod device support have landed! Both MTP and iPod support <b>album artwork</b>, on-the-fly <b>transcoding</b> (converting between file formats), and <b>video support</b>!<br /><br /><img src="http://banshee-project.org/files/shots/banshee_0.99.1_animated.gif" alt="Animation showing Banshee playing music, transferring files to a MTP device, and showing large cover art." width="600" height="397" /><br /><span style="font-size:small;"><i>Banshee playing music, showing cover art, and transferring to an MTP device</i></span><br /><br />Other features and fixes include:<br /><ul><li>Fullscreen video playback (go to Now Playing and press f or hit the Fullscreen button)</li><li>Extensions can be enabled and disabled in the new Mange Extensions tab within your Preferences.</li><li>Banshee <a href="http://mail.gnome.org/archives/banshee-list/2008-May/msg00000.html">can be scripted</a> using <a href="http://boo.codehaus.org/">Boo</a></li><li>Improved gstreamer error handling (for missing files, codecs, etc)</li><li>A bug with play counts, introduced in Alpha 3, has been fixed</li><li>Writing metadata to file was not working in the Alphas, is fixed</li><li>Issues with the play queue should all be resolved</li><li>Limiting smart playlists by file size or duration works</li><li>Shuffle and repeat are automatically disabled while playing Last.fm</li></ul><br /><div style="float: right;"><img src="http://bp1.blogger.com/_MXUP18ra1ik/SCDJPMlTlfI/AAAAAAAAAZw/gD0vmFWRfTc/s400/default_smart_playlists.png" alt="Default smart playlists in Banshee" border="0" width="179" height="247" /><br /><span style="font-size:small;"><i>Default Smart Playlists</i></span></div>This release also features default smart playlists, created for new users and users with zero smart playlists. There is a more extensive list of predefined smart playlists, including the defaults, available in the <i>New Smart Playlist</i> dialog.<br /><br />Thanks to <a href="http://abock.org">Aaron Bockover</a>, <a href="http://blogs.mediati.org/alex">Alexander Hixon</a>, Bertrand Lorentz, Christopher Rogers, <a href="http://themonkeysgrinder.blogspot.com/">Scott Peterson</a>, Sebastian Dröge, and <a href="http://uwstopia.nl/blog/">Wouter Bolsterlee</a> for code contributions for this release, and to Daniel Nylander (sv), Gabor Kelemen (hu), Jordi Mas (ca), and Wouter Bolsterlee (nl) for updated translations! And to <a href="http://stompbox.typepad.com/blog/">Jorge Castro</a> for testing and release notes help, and Michael Monreal and Andrew Conkling for testing and bugzilla work!<br /><br />You can follow the posts of Banshee contributors on <a href="http://planet.banshee-project.org/">Planet Banshee</a>. We are a friendly, vibrant community and always glad to have people join us! If you have been wanting to contribute back to free software and GNOME, I think you'll find Banshee's code and C# a <a href="http://gburt.blogspot.com/2008/03/banshee-10-alpha-1.html">pleasure to work</a> in, and a healthy amount of support and encouragement from a very active community. <a href="http://banshee-project.org/Developers">Join us</a> on our <a href="http://mail.gnome.org/mailman/listinfo/banshee-list">mailing list</a>, in our <a href="irc://irc.gnome.org/#banshee">IRC chatroom</a>, and on our <a href="http://banshee-project.org/Main_Page">wiki</a>!<br /><br /><font size="small"><a href="http://digg.com/linux_unix/Banshee_1_0_Beta_1_Released_MTP_iPod_Sync_Including_Video"><strong>Digg It!</strong></a></font><br /><p style="padding-top: 1em"><script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></p> http://gburt.blogspot.com/2008/05/banshee-10-beta-1-released.html banshee freesoftware gnome Gabriel_x0020_Burt@monologue.go-mono.com tag:blogger.com,1999:blog-33979271.post-384459606710991212 Tue, 06 May 2008 19:11:00 GMT Vladimir Vukicevic: Well Isn?t That Qt I and a few others have been poking at our widget layer for the past few weeks, looking at adding Qt support.  There was an earlier attempt at a Qt backend, but it never really got maintained, and there wasn't much interest in it back then.  Recently, though, Qt has made great strides on embedded [...] http://blog.vlad1.com/2008/05/06/well-isnt-that-qt/ Mozilla gecko gfx qt widget Vladimir_x0020_Vukicevic@monologue.go-mono.com http://blog.vlad1.com/2008/05/06/well-isnt-that-qt/#comments http://blog.vlad1.com/?p=55 Tue, 06 May 2008 15:53:12 GMT Miguel de Icaza: Cross-platform, standalone Silverilght Applications <p>Tamir Khason <a href="http://blogs.microsoft.co.il/blogs/tamir/archive/2008/05/02/stand-alone-multiplatform-silverlight-application.aspx">published an interesting approach</a> at hosting standalone Silverlight applications. <p>His solution is a Windows.Forms application that hosts a Windows.Forms.WebControl and inside the WebControl he hosts Silverlight. <p>Unlike <a href="http://tirania.org/blog/archive/2008/Apr-17.html">my proposal</a> for standalone Silverlight Applications that is currently Moonlight-specific (and currently limited to Linux/X11) this approach works on Windows with .NET and with Linux using Mono and Moonlight: <center> <img src="http://primates.ximian.com/~miguel/pictures/image_bd3dfa68-9af8-41c0-bb75-eb150c3500eb.png"> <p><i>Left side: .NET hosting WebControl and Silverlight on Windows; Right side: Mono hosting WebControl and Moonlight running on Linux.</i> </center> <p>In addition to hosting the WebControl for hosting Silverlight, a thread is running to dispatch http requests locally using HttpListener. HttpListener is an embeddable HTTP server that is part of the class libraries, and exposes a very limited API. You can host ASP.NET with HttpListener by doing the bindings by hand, or you could use our Mono.WebServer library (part of our XSP/mod_mono distribution) to allow your applications to have a fully hosted ASP.NET server. <p>Mono.WebServer is what <a href="http://www.ifolder.com">iFolder</a> uses to embed the ASP.NET server to expose SOAP-based WebServices to clients. <p>Of course, this currently does not work on MacOS X as we do have no implementation of WebControl for Windows.Forms on OSX, something that a contributor might want to look into. <p>You can get the source for the sample from <a href="http://blogs.microsoft.co.il/blogs/tamir/archive/2008/05/02/stand-alone-multiplatform-silverlight-application.aspx">Tamir's page</a>. http://tirania.org/blog/archive/2008/May-06-1.html Miguel_x0020_de_x0020_Icaza@monologue.go-mono.com http://tirania.org/blog/archive/2008/May-06-1.html Tue, 06 May 2008 15:41:00 GMT Miguel de Icaza: Consulting Gig at Novell <p>We are looking for consultants to work on a six to nine month project at Novell to write a prototype for a Visual Studio addin in C# or C++ that will connect Visual Studio and its debugging infrastructure to a remote Linux machine running Mono and the Mono Debugger. <p>If you are interested in working with us in this project, you must have good C# and C++ skills, experience with networking and protocol design, knowledge of COM and assembly language programming are pluses. <p>We are looking to bring two consultants for the duration of this project. If you are interested, please <a href="mailto:miguel@novell.com?Subject=VSDebuggerApplication">click this link</a> and attach your resume, pointers to some existing projects of yours and so on. http://tirania.org/blog/archive/2008/May-06.html Miguel_x0020_de_x0020_Icaza@monologue.go-mono.com http://tirania.org/blog/archive/2008/May-06.html Tue, 06 May 2008 14:06:00 GMT Andres G. Aragoneses: Now Gnash is to Flash what Mono is to .NET And we have to thank the cool <a href="http://www.osnews.com/story/19703/Adobe_Launches_Open_Screen_Project">Adobe's Open Screen Project</a> for this. Why is this positive (extracted originally from <a href="http://barrapunto.com/comments.pl?sid=76487&cid=1039558">here</a>)?<br /><br />1) Projects that seek to implement this standard (like <a href="http://www.gnu.org/software/gnash/">Gnash</a>), won't have to do reverse engineering anymore (unless the spec is not enough for some things, or the official Adobe software contradicts the specs because of bugs/typos).<br /><br />2) These projects will provide implementations for architectures that are not supported by the official Adobe propietary software.<br /><br />3) The implementations will no longer be considered risky because of future patents or intellectual property violations.<br /><br />But, BEWARE:<br /><br />a) this doesn't mean that Flash is now free/open source. This only means that projects like Gnash are analogous as Mono right now: they are open source projects that follow a standard published by a company with an open spec.<br /><br />b) this doesn't mean that any flash content is patent-free either, because you can still embed proprietary formats inside it like MP3.<br /><br />What I'll do now is start supporting Gnash, firstly by testing it and reporting any bugs I find. Fortunately I have <a href="http://software.opensuse.org/search">some packages ready for OpenSUSE</a>!<br /><br />This news is positive, of course, but now let me give my technical opinion of this technology:<br /><br />- The programming languages you can use with it are very few (some months ago I think the only one was ActionScript, which has the majority of limitations of JavaScript) and still today AFAIK there's no statically typed language you can use.<br />- AFAIK it's not accessible (and I mean for disabled people and for automation technologies like search-engine-bots).<br /><br />However, with Moonlight, you already know that you can use C# with it so the first of these disadvantages doesn't affect it. And in respect to the last item, well, the second phase of my project in Novell is bring accessibility support to it so this item will be hopefully solved soon.<br /><br />Will this mean the end of the Flash monopoly? Will this force Adobe to open its software too?<br /><br />BTW, is Moonlight/Silverlight one of the reasons for publishing Flash specs freely? All I can see is that in Adobe they are start to changing their minds quickly. One of the most important facts of this is the liberation of the Tamarin project, which has supposed a big step forward in the Mozilla community (FYI, <a href="http://ejohn.org/blog/why-tamarin-instead-of/">the Mono VM was also a candidate for the Tamarin current job</a>, but unfortunately wasn't considered in the end).<br /><br />Well, and how's the progress of the first phase of the A11Y project? We're progressing slowly, but hopefully cooking the base for the ton of work we already lack. Many issues are because we needed to complete Atk#, and other ones are appearing which may be related with the runtime (hopefully not, but here they are if you want to have a look: <a href="https://bugzilla.novell.com/show_bug.cgi?id=386802">386802</a>, <a href="https://bugzilla.novell.com/show_bug.cgi?id=387221">387221</a>). I have to thank <a href="http://mkestner.blogspot.com/">Mike Kestner</a> for all his help in this side (thanks to him I'm learning a lot about bindings, and about how delicate :) are the glib/gtk/atk bindings in particular; I love when someone is so meticulous for maintaining a project!), and <a href="http://automorphic.blogspot.com/">Sandy</a> for all the help on the bridge (which recently got a nice refactoring, but I already got some additional ideas I need to share...). <a href="http://mgorse.freeshell.org/">Mike Gorse</a> seems to progress a lot (and now <a href="http://blog.floopily.org/2008/04/23/codethink-d-bus-based-accessibility/">there will be cooperation with Nokia as well on the CORBA->DBUS migration!</a>), and <a href="http://blog.carrion.ws/">Mario</a> is starting with us these days, welcome Mario! Unfortunately I don't deal too much with the rest of the <a href="http://www.mono-project.com/Accessibility:_Team">team</a> (Brian, Calen, Neville, Ray) but they seem very busy too all the time! http://knocte.blogspot.com/2008/05/now-gnash-is-to-flash-what-mono-is-to.html Miscelanea Mozilla Programacion General CSharp Mono WebDev Andres_x0020_G._x0020_Aragoneses@monologue.go-mono.com tag:blogger.com,1999:blog-13199395.post-7349654879373348139 Tue, 06 May 2008 10:18:00 GMT Sandy Armstrong: Mario Kart Wii Friend Code Forgot to mention...got Mario Kart Wii. Beat all 50CC races but still can't beat Jordan. I don't think there's ever been a video game where I could beat my friends. :-)<br /><br />Here's my Mario Kart