Lam Loune is the winner of our first Race to Linux. Lam is from Australia and ported Microsoft's Small Business Starter Kit to Linux.
Lam picked Mono and XSP to do the port, he completed the port in five hours and twenty six minutes (5:26) since the race started.
Hector Ramirez from Mexico was the first to port the Small Business Starter Kit to Linux using Grasshopper (so the software runs on a Java VM). Sorry, I do not have the time for this one.
They both won Wii's.
The Small Business Starter Kit is a sample ASP.NET 2.0 application that Microsoft distributes for people to study the patterns and best practices while developing a web application.
This race shows that although Mono and Grasshopper do not have a 100% coverage for the entire application stack, it is possible to port most ASP.NET code out there.
And its also interesting that the port was done by two newcomers to Mono.
Check the Race to Linux page for upcoming articles describing how these applications were ported.
Congratulations to Hector and Lam, and good luck for the folks on the second Race!
Posted on 31 Mar 2007
Am flying to Mexico City for the week; Mauro convinced me to buy a cheap ticket through Kayak.
Tacos tonight!
Posted on 31 Mar 2007
Two fascinating bits today:
Google using solar power in the Google campus:
The move to solar made sense for Google, and not just "hippie Gaia-loving" sense. Ravitz said that Google will earn its investment back in 7.5 years, after which it will continue to enjoy inexpensive power for decades. With the company sprawled across a large campus of many low buildings, roof space was easily available. Solar also has the unique property of pumping out more energy when power is the most expensive --- peak afternoon hours. When air conditioners across California kick into action on sunny days, Google generates the most power.
Then the fantastic response to Viacom. Worth reading the whole thing:
Viacom is attempting to rewrite established copyright law through a baseless lawsuit. In February, after negotiations broke down, Viacom requested that YouTube take down more than 100,000 videos. We did so immediately, working through a weekend. Viacom later withdrew some of those requests, apparently realizing that those videos were not infringing, after all. Though Viacom seems unable to determine what constitutes infringing content, its lawyers believe that we should have the responsibility and ability to do it for them. Fortunately, the law is clear, and on our side.
Posted on 30 Mar 2007
A few years ago I met Andreas Proschofsky, a reporter that knew a lot about Mono dynamics, group and technicalities. It has ever since a pleasure to do interviews with Andreas as they are typically interesting conversations.
This year I did not attend the Brainshare conference so we did an email interview on the state of Mono. And this year he published it in English.
Re-reading my replies looks like they were answered by a robot though, it certainly felt more human when I originally replied to that email.
The crowd at OSNews got upset because I said advocate more collaboration between Mono and Microosft. It is hardly news, I advocated the same thing in August during an interview that I did with Sam Ramji from Microsoft, before I knew of any MS/Novell collaboration.
Posted on 26 Mar 2007
The last two weeks the "New Rules" Monologues from Bill Maher have been fantastic. They are now available on YouTube:
Posted on 25 Mar 2007
This is the official blog entry for the spicy Lame Blog an under-powered, static content, C# and rsync based blog system.
LameBlog is powered by almost nothing, the idea is that you edit text files with your favorite text editor on your computer, and when you feel like publishing your blog entries you type "make push".
Configuration of LameBlog is done through an XML file and editing a Makefile. It contains enough so you can hook reddit/digg and plug your Google Analytics, Google Reader sharing and to do posts with Google groups.
Ismael Olea has modified LameBlog for using Haloscan for comments and include a bunch of "flag me as a cool cat" options.
To download LameBlog, click on "download as tarball" on the link above, read the README file for details on how to install this.
Update: folks, I need your help. Please link to this blog entry, there are tons of Google matches for "Lame Blog", but only a piece of software deserves to be at the top spot, not some lame entry about blogging.
Posted on 24 Mar 2007
A follow up to yesterday's spoof ad from Novell. This is part 2. Click here for watching it at YouTube.
Alternatively, you can get the mpg or ogg files directly from Novell's site.
Posted on 21 Mar 2007
Yesterday at Brainshare Novell had this video spoof on Apple's campaign.
Mhm, it seems to go down (some "high database load" message or something). If you have problems go here: http://www.novell.com/video and then click on "PC Mac Linux (0:55)".
Or you can download the mpg file or ogg file.
Other videos from Brainshare are here.
Posted on 20 Mar 2007
The other day I wrote:
The other day Cody Russell was asking on IRC what we could do in the Mono universe to take advantage of some special instruction sets like SIMD or how to use C# to generate code for pixel shaders or vertex shaders.One idea that we discussed was the creation of a library that would be able to expose this kind of functionality.
jeevan.james pointed out on the comments to that blog entry that there is already a project that is working on precisely this idea.
The project is called Brahma-FX and is hosted at SourceForge. And its implemented in a similar spirit that I described on that post.
They use C# as the language to express the shading operations, they decompile the code at runtime and compile that to the hardware specific shading system.
For example to invert an image, they write:
public override void Compute (Vector2 kernel_position) { Vector4 color = Sample2D (0, kernel_position); Output = new Vector4 (1.0f - color.X, 1.0f - color.Y, 1.0f - color.Z, 1.0f); }
Currently they have a compiler only for DirectX (and stubs for OpenGL and XNA) it looks like a great project to contribute to.
Ananth's blog is here.
Posted on 19 Mar 2007
The other day Cody Russell was asking on IRC what we could do in the Mono universe to take advantage of some special instruction sets like SIMD or how to use C# to generate code for pixel shaders or vertex shaders.
One idea that we discussed was the creation of a library that would be able to expose this kind of functionality. Take for example the following Cg example:
// input vertex struct VertIn { float4 pos : POSITION; float4 color : COLOR0; }; // output vertex struct VertOut { float4 pos : POSITION; float4 color : COLOR0; }; // vertex shader main entry VertOut main(VertIn IN, uniform float4x4 modelViewProj) { VertOut OUT; OUT.pos = mul(modelViewProj, IN.pos); // calculate output coords OUT.color = IN.color; // copy input color to output OUT.color.z = 1.0f; // blue component of color = 1.0f return OUT; }
A C# rendering of the above would be:
class MyShader { struct VertIn { [Position] float pos; [Color] float color; }; // output vertex struct VertOut { [Position] float pos; [Color] float color; }; // vertex shader main entry public VertOut main(VertIn IN, [Uniform] float4x4 modelViewProj) { VertOut OUT; OUT.pos = mul(modelViewProj, IN.pos); // calculate output coords OUT.color = IN.color; // copy input color to output OUT.color.z = 1.0f; // blue component of color = 1.0f return OUT; } }
The above is a direct translation. Now, the value of the library would be basically a method that generates a delegate with the proper signature:
Delegate Compile (MethodInfo method)
It would be used like this:
delegate VertOut main_delegate (VertIn In, [UniForm][float4x4] model); ... main_delegate shader; shader = (main_delegate) Compile (typeof (MyShader).GetMethod ("main")); ... shader (my_in_data, model);
The Compile method would use the Cecil library to decompile the code, perform flow analysis and ensure that the code in the method passed (in this case main) meets the restrictions imposed by the target (in this case Cg's target).
In some cases (SSE instructions) you might want a delegate back, or a method token that you could then Reflection.Emit call. In some other cases you might want the code to give you some handle back that you can pass to your graphics hardware.
(Cecil has a very nice flowanalysis engine, the one used by db4objects to provide the LINQ-like functionality with today's C# compilers).
The above model can be extended to other operations, and in some cases the return value from Compile could be just a delegate to the original method (if the hardware is not supported).
Today a student interested in doing something very similar for the Summer of Code emailed me, so I decided to dump here some of the ideas.
Posted on 15 Mar 2007
The Google Summer of Code has started. Students interested in participating in the Summer of Code need to submit their applications in the next ten days.
Some ideas of interesting things that can be done with Mono are available in our Student Projects page.
If you think that you have a good idea for a project to be implemented for Mono, but is not listed on that page, feel free to submit your idea.
We are looking at improving Mono's OSX support (Winforms, debugger support, improving Cocoa#); new ports and improving existing Mono ports; Profiling Mono, Gtk#, MonoDevelop; low-level optimizations; New Windows.Forms widgets; Work on 3.0 components and libraries; Improving MonoDevelop and creating new C# class libraries for Mono.
Other Apps: We are also interested in tasks improving popular Mono-based applications for the desktop to showcase how great building applications with Mono is. Make sure you send your submission on time.
Posted on 15 Mar 2007
One of my favorite books is Bertrand Meyer's Object Oriented Software Construction
The book explores object oriented programming using the Eiffel language and one of the things that I always loved about Eiffel was the defensive programming techniques that it teaches and the strong focus on contracts and preconditions (a technique that is used extensively in Gnome).
Until very recently I had not noticed it, but the Eiffel compiler and the Eiffel suite of libraries and even the development IDE (EiffelStudio) were open sourced (Emmanuel mentions this to me during the Lang.Net conference and I do not remember any big news about it).
They have just launched a community site Eiffel Room.
There are a bunch of Flash-based presentations on Eiffels here.
In this presentation you can see a demo of the IDE. In particular see the "System Metrics" section.
Posted on 13 Mar 2007
Anyone has any idea of what is going on with value type comparisons against null in the Microsoft C# 2.0 compiler (and also the Orcas compiler exhibits this problem):
The compiler allows code like this:
DateTime dt = DateTime.Now; // this is a value type // Compare value type to null, invalid in CSC 1: if (dt != null){ // ... }
The problem is that the above is always known to be false (dt can not be null), so CSC generates generates the equivalent to "if (true)" every single time (it becomes a no-op).
Adding support for this to the Mono compiler is simple enough but this sounds wrong. Because those testing a value type against null are doing a pointless test and they might be under the mistaken impression that the test is guarding them from an invalid state which it is not.
A few folks have reported this, but I can not find any rationale for this in the ECMA spec, it sounds like a bug in Microsoft's compiler related to the nullable-type support in their compiler.
Posted on 13 Mar 2007
Everaldo and Wade have now published packages for Mono on the Nokia 770 and 800.
Visit our Maemo page to install the packages on your device.
The packages feature single-click install, and will add the repositories to your system so you can install only the pieces of Mono that you need to run specific applications.
Posted on 12 Mar 2007
As I said two days ago Bush is not really loved in Latin America.
Wonkette asks the question: "Are the protesters hot?" on their "South Americans Welcome George W Bush -- With Style".
The answer: not safe for work.
This is the first time I link to Pravda, but they got photos of the welcoming.
Posted on 09 Mar 2007
We are looking for a developer to work on Mono's JIT engine.
What: We are looking for someone that would be interested in porting the Ahead-of-Time compilation engine in Mono for ARM processors and look at improving Mono startup performance on small devices.
You would work on both the virtual machine and the class libraries to improve performance and reduce memory usage for embedded systems.
Experience with assembly language, compilers, virtual machines, performance and garbage collectors will be useful, but it is not necessary. We are looking for a talented individual that is not scared by hard tasks.
How: If you are interested, email me, you will later receive a challenging interview to respond to.
Where: You can either work in the Boston office, or from home.
Why: Because we got a fantastic logo, which is much better than Microsoft's logo for .NET and working on Mono is a blast.
Posted on 09 Mar 2007
From Google News a few minutes ago:
That made my day, funniest thing so far!
If you thought that Europe was less than supportive towards the Iraq war you have not seen Latin America. Unlike the US population that has kind of grown tired of the Iraq war in the last year, Latin America has been fuming over the retardedness of it way before it started.
He is not going to meet a friendly audience, so unless he throws money out of the windows, announces a withdrawal from Iraq, agrees to pay reparations and announced an "open doors policy" this trip is not going to win him any bonus points.
A timely Common Dreams article.
Update from Friday: This is now in Reddit's home page, it links to this article:
GUATEMALA CITY - Mayan priests will purify a sacred archaeological site to eliminate "bad spirits" after President Bush visits next week, an official with close ties to the group said Thursday."That a person like (Bush), with the persecution of our migrant brothers in the United States, with the wars he has provoked, is going to walk in our sacred lands, is an offense for the Mayan people and their culture," Juan Tiney, the director of a Mayan nongovernmental organization with close ties to Mayan religious and political leaders, said Thursday.
More updates, this is the Wonkette coverage. Wonkette asks the question: Are Brazilian protesters hot?: "Of course they’re hot! They’re Brazilian, for god’s sake.".
Posted on 08 Mar 2007
My "Turbocharging Linux With Mono" presentation from FOSDEM is now online, it is a pretty large file (300 megs) but you get to hear Coca Cola guy at the end.
The presentation is here.
At night, I kept running into Michael Meeks and Simon Phipps in all these tiny bars in town. Simon did a quick interview on Sunday.
Posted on 08 Mar 2007
Jackson has a couple of blog entries where he discusses how to use memcached for doing output caching of ASP.NET pages. Memcached was created to improve the performance of LiveJournal:
Danga Interactive developed memcached to enhance the speed of LiveJournal.com, a site which was already doing 20 million+ dynamic page views per day for 1 million users with a bunch of webservers and a bunch of database servers. memcached dropped the database load to almost nothing, yielding faster page load times for users, better resource utilization, and faster access to the databases on a memcache miss.
His memcached module is described here and an explanation on why and how to add caching to your ASP.NET controls is here.
What is interesting about Jackson's approach is that it hooks up to ASP.NET's caching system and allows caching to be parameterized based on some values (for example, your login name would update only the login-bound information, but information that does not depend on this would be rendered from the cache).
Hopefully Jackson's work will become a standard part of Mono installations in the future.
Jonathan Pobst has posted some screenshots showing the progress from Mono 1.2.3 released a few weeks ago and the current SVN for some of the 2.0 Strip controls:
click for full image.
The Winforms team has been using our Paint.NET 2.72 port as a test case, see Jonathan Pobst's blog for more screenshots.
Jackson is also running a screenshot contest for Mono's Windows.Forms.
Jeff Stedfast recently joined the Mono team, his first contribution was the implementation of a smart indenter for MonoDevelop's C# mode.
We basically wanted something that indented as well as Emacs would indent C# code. See his blog entry for details, the code is now checked into SVN in the module "monodevelop".
Marek got a few new features implemented for ASP.NET: Themes are now working, and MojoPortal 2.0 works with Mono now:
Marek also reduced the space that we consume for ASP.NET setups. Instead of creating a new temporary directory every time, we now create predictable directory names based on the assembly name.
We have run into a number of small problems with our TDS provider when porting applications that use MS-SQL stored procedures. Luckily Andreia Gaita has a patch that should be going into SVN in the next couple of days that resolves that.
Posted on 07 Mar 2007
Folks, it has come to my attention the fact that my blog uses Google Groups is not very Web 2.0-ish, or is not very bloggy of me or something. Either that, or people have not been flaming me in public as much as I hoped to.
Part of the challenge is that my blog system is based on purely static HTML pages, and I would like to keep it that way. I get it for free (Thanks Gonzalo!) and server side solutions feel like cheating.
So I had a two-prong idea to address the issue:
Now, it seems that posting to the Google Group requires to be signed on to the group, am not sure if that is even fixable, but I would love to hear your thoughts.
Now, the second issue must be solvable, there must be a simple set of steps, an HTTP url I can query that would load the content from Google Groups and then render it with some magic jay-son love on the client (just like the cute "shared" links thing on the right side of my blog).
Google probably already has some JSon generator for this, but I have been unable to Google this information. If anyone knows how to do this, please share your thoughts.
Again, the trick is that even if I could setup a server-side thing in my hosting provider, it has no hack value. So the trick is basically to do this without burning any CPU cycles on the blog server, am fine with delegating the cycle burning to third parties.
A combination of Yahoo Pipes, Google searches and clogging the series of tubes with tremendous amounts of material, tremendous amounts of JSon material are all acceptable solutions.
Posted on 07 Mar 2007
Very soon we will be launching the The Race to Linux 2.0 together with Mainsoft and IBM. The goal of the Race to Linux is to have ASP.NET developers port applications from Windows to Linux.
Wii consoles will be given out as prizes. Guys, it is a lot easier to port an application in ASP.NET from Windows to Linux in a record time than it is to keep bidding on EBay for the console and the controls. Been there, been outbidded time and time again.
The contest will start on March 23rd, if you are interested in participating, check the Race to Linux 2.0 web page.
What is the Race to Linux 2.0? |
|
Register for the Race |
|
Mark your calendars! Races start: Race #1 -Friday, March 23rd at 5:00 p.m. (PST) March 24th at 1:00 a.m. (GMT) Race #2 -Friday, March 30th at 9:00 a.m. (PST) March 30th at 5:00 p.m. (GMT) Race #3 -Friday, April 6th at 5:00 p.m. (PST) April 7th at 1:00 a.m. (GMT) |
If you are a Windows developer, you can get started downloading our VMWare image and reading on the various articles that DevX has published, or you can check Mono's own article archive.
A good introductory tutorial on porting your applications from Windows to Linux is Paul Ferrill's Migrating .NET Applications with Mono.
Also, Joe Audette has written a tutorial on how to he setup a Mono Development machine here for those that want to roll out your own installation instead of using our VMware image, but also contains tips for those who want the latest and greatest:
Posted on 07 Mar 2007
Dare is pondering what comes after Ajax, in response to Ted's Adobe Wants to be the Microsoft of the Web.
On Flash Ted says:
What is not appealing is going back to a technology which is single sourced and controlled by a single vendor. If web applications liberated us from the domination of a single company on the desktop, why would we be eager to be dominated by a different company on the web? Yet, this is what Adobe would have us do, as would the many who are (understandably, along some dimensions, anyway) excited about Flex? Read Anne Zelenka’s post on Open Flash if you don’t think that Flash has an openness problem. I’m not eager to go from being beholden to Microsoft to being beholden to Adobe.
And later touches on OpenLaszlo, but OpenLaszlo is a server-side engine used to generate Flash, so the runtime remains the same (Yes, I know that Laszlo can now generate DHTML, but Ted's point was that Javascript was too slow for large apps running on a browser).
Dare wants to add WPF/E to the list of web development technologies, and argues:
Ted Leung mentions two contenders for the throne; Flash/Flex and OpenLaszlo. I'll add a third entry to that list, Windows Presention Foundation/Everywhere (WPF/E). Before discussing what it will take for one of these contenders to displace AJAX, I should point out that being "open" has nothing to do with it. Openness is not a recipe for success when it comes to development platforms. According to TIOBE Java is the most popular programming language today and it was a proprietary language tightly controlled by Sun Microsystems. Before that, it was commonly stated that Visual Basic was the most popular programming language and it was a proprietary language controlled by Microsoft. I believe these count as existence proofs that a popular development platform can rise to the top while being controlled by a single vendor.
WPF/E has a number of challenges ahead of it: Flash-based development environments are very advanced both for designers and developers and are going through their Nth iteration, while WPF/E is not even officially launched.
WPF/E is currently limited to Windows and the Mac, which you could argue makes up the majority of the platforms, but Flash works today on Linux and various embedded systems and portable systems.
But like Flash, it is another proprietary tool, and the whole point of Anne Zelenka's post and Ted's comment. He wanted something that did not lock him into a vendor.
WPF/E best feature is probably the fact that generating XAML files is trivial and requires no special tools or compilers. echo, cat and perl will generate XAML output right away. A bonus feature would be deserialization from a JSON structure in addition to XML.
WPF/E feels more webby than Flash does.
Then again, Flash could add support for hydrating elements from an xml or json sources as well.
Unlike its "big brother", WPF, the WPF/E is framework looks fairly simple so far. The subset of WPF is reasonable, it is sufficiently opaque that a developer with a lot of spare time in its hands could implement it fairly rapidly.
A major drawback seems to be the use of WMV as a video format. If there is one thing that the video industry has learned is that WMV and MOV do not work. They barely work on their native platforms, they are ridden with glitches, upgrades sometimes break and of course they do not work on Linux.
Ignoring the WMV file format support, WPF/E has so few external dependencies today, that someone looking for a cool use for Antigrain could implement a prototype in a few weeks and get a community going in no time to finish it up (Alp has been showing around his record-time XPS renderer and viewer around).
Flash has really succeeded in the area of working out of the box, even on the Linux desktop the experience is outstanding (the proprietary Flash).
The best possible outcome for the world would be to follow Sun's path in open sourcing Java and open source both Flash and WPF/E.
Adobe is not making any money on the Flash player today on the desktop. On the mobile space the story is different, they could probably license Flash under terms that required mobile vendors to get a proprietary license (I imagine they could look into what Sun did with their mobile runtime, which would be a similar situation).
Microsoft is not going to be making any money on the WPF/E player either, and since they are limited to Windows and MacOS X (today) they are not going to be making any money on that one either.
If Microsoft is serious about WPF/E, open sourcing it would eliminate the doubts about WPF/E's future and the fact that some people perceive WPF/E to be a slippery slope to a full blown WPF use and tie-in (in my opinion, it is more of a rocky slope to move a WPF/E app to a WPF one).
But I think that Dare gets this wrong:
Before discussing what it will take for one of these contenders to displace AJAX, I should point out that being "open" has nothing to do with it. Openness is not a recipe for success when it comes to development platforms. According to TIOBE Java is the most popular programming language today and it was a proprietary language tightly controlled by Sun Microsystems.
Even if Java was tightly controlled by Sun in the past, they did have a mechanism that was open enough to get third party companies involved in the future of Java.
Anyone could argue that the JSR process has managed to mess up key components like Generics and has inflicted humanity with mistakes like the J2EE stack.
But the JSR process is still relatively open. And even before Sun open sourced Java in November there were a number of independent Java VM vendors, both open source and proprietary (specially on the embedded market).
Java became successful because it filled a space that was previously not properly serviced. At the time it hit a sweet spot.
In the meantime, as far as Rich Internet Application development goes, we will continue to use a mix of technologies. It seems that the browser is becoming the universal runtime and it has opened the doors for incredible opportunities with the mashups. WPF/E is ready to enter the mashup scene, something that am not sure WPF will ever do.
Update: Ted follows up.
Posted on 06 Mar 2007
This conference was just too good.
There is no blog entry that can make justice to how good this was. The tiniest details were taken care of, like having food and drinks all day (for those of us who could not make it to our hotel breakfasts this was a life saver).
I think that part of the success of FOSDEM is that after the conference adjourns, folks can go back to the hotels, freshen up, go to dinner and then bar hoping and run into the attendees until 3am in the morning.
FOSDEM deserves a full blog post in full detail, but for now a big thank to everyone that made this possible. I have not enjoyed a conference this much for years.
Posted on 01 Mar 2007
So I got to Mexico and my 3G connection did not work, so I repeated the European steps and called Cingular Tech Support to complain that something was wrong with my 3G card in Mexico.
Since neither the 2g or 3g lights turned on and this was working in Boston and Washington, it must have been some configuration issue on Cingular's side.
I explained to the tech guy my situation, and he walked me through the usual "connection manager", "try a different setting", "eject your card", and so forth and I pretended to do the Windows steps with the equivalent Linux command as far as I could.
My goal in this call was to avoid saying that I was using Linux, I feared they would just say "Sorry, we dont support that" and hang up.
There was the dangerous "What does the connection manager say?", to which I replied "Mhm, no network". And "What version of it you have?" to which I replied "Well, I use the equivalent, its called yast".
But then the fatal, "Which version of Windows is this?" to which I had to say "Linux".
Contrary to what I expected, he said "Can you configure the AT commands or enter them?", I said I could, I launched minicom and he walked me through the process of configuring the Sierra card (probing for providers, selecting the provider, reseting the card).
He determined during the call that there was a setup problem with Mexico's provider, he was able to patch that stuff on their end and got me going with a 2g connection after a little while.
Many thanks to Mr Robinson in tech support over at at&t
Posted on 01 Mar 2007