Welcome, Matt!

by Jeff Waugh in eighty-eight miles per hour, Thu, 28 Aug 2008 04:53:51 GMT

It’s wonderful to see that Matt Zimmerman has finally given in and started blogging. As a welcoming gift, I’d like to give him a hackergotchi. If it seems familiar, it’s because I tried to lure him into the blogging world with it way back in 2005! (You might want to click through for a hackergotchi of more conventional size…)

getline.cs: Partying like its 1988

by Miguel de Icaza in Miguel de Icaza, Tue, 26 Aug 2008 21:34:00 GMT

In an age where the Unix shell is more relevant every passing minute, we need to have proper command line editing tools everywhere.

For a project of mine, this weekend I put together a command-line editing class for .NET shell applications. The Mono.Terminal.LineEdit class can be used by shell applications to get readline-like capabilities without depending on any external C libraries.

To use it, just do:

	using Mono.Terminal;

	LineEditor le = new LineEditor ("MyApp");
	while ((s = le.Edit ("prompt> ", "")) != null)
		Console.WriteLine ("You typed: "   s);
	
	

The code is self-contained, and can be easily reused outside of my project. To use it, you just need to include the getline.cs file in your project. This is built on top of System.Console, so it does not have external library dependencies and will work on both Mono and .NET (finally bringing joy to people building command-line applications that use ReadLine).

It supports the regular cursor editing, Emacs-like editing commands, history, incremental search in the history as well as loading and saving.

It is also licensed under the MIT X11 license and the Apache 2.0 license so there are no annoying licensing issues.

Second Life Demos

by Miguel de Icaza in Miguel de Icaza, Thu, 21 Aug 2008 20:05:00 GMT

Cool performance demos comparing SecondLife's LSL engine vs LSL running on Mono's VM.

View: Second Life Demos - More entries from Miguel de Icaza, Open Source

SecondLife rolls out Mono-powered servers

by Miguel de Icaza in Miguel de Icaza, Thu, 21 Aug 2008 01:40:00 GMT

Big news for the Mono team today.

Linden has started the roll out of their Mono-powered simulation servers.

Users can now opt into having their LSL scripts executed using the Mono VM (it remains an opt-in feature, because some scripts are timing sensitive and the performance increase could break code).

Some choice quotes from Jim Purbrick's blog post:

As well as providing immediate benefits, the integration of the Mono virtual machine makes many future improvements possible: the use of mainstream languages to script Second Life alongside the existing LSL language; the removal of arbitrary per-script limits on script resource usage and the use of mainstream libraries and tools for scripting to name a few.

And:

The integration of Mono is the first step in the evolution of Second Life into a true software development platform. Thank you to all the residents who have helped us take this first step.

Congrats to Linden on their launch!

The Technology

From a SecondLife developer perspective, some of the technical details about how Mono is integrated into the Second Life simulators can be found on their Wiki.

When a user opts into using Mono, a special LSL compiler that generates ECMA CLI byte codes is used. The resulting CLI byte codes are then instrumented with some magic (more below) and then the code is exectuted using the Mono VM which translated the bytecodes into native x86 code.

I find the SecondLife technology fascinating. Embedding Mono into SecondLife was not an ordinary task, it was not just a matter of linking with Mono and writing an LSL to CIL compiler.

SecondLife distributes the virtual world on hundreds of servers, and as visitors move through the virtual world, their inventory, character and scripts migrates from server to server.

This migration requires that running scripts be suspended, serialized to a database and their execution resumed on a different server. This means that all the state of a script, including the current location must be preserved while the user navigates across servers.

The technology to do this is absolutely brilliant. I strongly recommend the Lang.NET presentation that Cory and Jim did in 2006.

The first half of the video is an introduction to Second Life, the second delves into the hackery necessary to make it happen.

This are clearly hugenormous news for us, and for everyone that worked with Linden, for everyone that fixed bugs and implemented new features in Mono to run under the conditions that Linden has.

OSX Development with Oxygene, Cocoa and Mono

by Miguel de Icaza in Miguel de Icaza, Wed, 20 Aug 2008 19:49:00 GMT

The RemObject folks have been doing some tutorials on how to build applications with Visual Studio and Interface Builder to target both Windows and MacOS with .NET and Mono respectively.

Check out their tutorial and their notes on cross platform development. The lessons in the tutorial also apply to C#-based development.

It is also worth noting that recent versions of their Oxygene compiler now support generics.

Pleo Days

by Miguel de Icaza in Miguel de Icaza, Wed, 20 Aug 2008 17:34:00 GMT

I just got my Google Android present! An awesome Pleo Dinosaur!.

So cute. SO CUTE!

View: Pleo Days - More entries from Miguel de Icaza, Open Source

Dynamic Method Invocation Performance

by Miguel de Icaza in Miguel de Icaza, Thu, 14 Aug 2008 18:34:00 GMT

Jon Skeet has an in-depth explanation of how to improve the performance of code that needs to dynamically invoke methods through reflections.

The bottom line is that if you have performance sensitive code that needs to invoke methods that you fetch from reflection, you should avoid using MethodInfo.Invoke() and instead create a delegate from the MethodInfo, and perform the invocations that way:

[...]Using a delegate invocation is only about 10% slower than direct invocation, whereas using reflection takes over 600 times as long. Of course these figures will depend on the method being called - if the direct invocation can be inlined, I'd expect that to make a significant difference in some cases.

This is a well-known trick, but Jon provides a great exploration of the subject.

Protocol Buffers for .NET

Additionally, you can see that Jon's effort to port Google's Protocol Buffers to C# are almost complete.

There are currently three separate approaches to support Protocol Buffers in .NET. Jon's effort essentially mimics the existing support for C# and integrated with the Google implementation and compilers. The other efforts have taken slightly different approaches, one of them is designed with the WCF approach in mind: use C# classes/interfaces as the actual public contract, as opposed to the .proto files.

First preview of Mono 2.0 is out

by Miguel de Icaza in Miguel de Icaza, Sat, 02 Aug 2008 00:00:00 GMT

Our first preview for Mono 2.0 is out; It has been almost six months since we branched version 1.9 so this is a gigantic update to Mono.

Many of the features are listed on the release notes, but the release notes do not even begin to capture the enormous number of fixes, performance improvements, tuning and work that went into this release.

As usual, this is our "best release ever", but it is also the longest we have gone without doing interim releases, so it is possible that we might have regressed where our test suite lacks tests. We would love to get folks to test this, with their code, and to bug reports on any issues they find before our final 2.0 release.

See our Roadmap for more details on the release schedule and the upcoming post-2.0 releases.

No Twitter Sex For You

by Jeff Waugh in eighty-eight miles per hour, Wed, 30 Jul 2008 18:41:47 GMT

<img class="size-full wp-image-1173 alignnone" title="No Twitter sex for you" src="http://bethesignal.org/wp-content/uploads/2008/07/notwittersex.png" alt=""No Twitter sex for you" by ChipX86" width="500" height="320" />

No Twitter sex for you” by ChipX86. :-)

The World’s Most Famous McDonald’s Sign: Yass, Australia

by Jeff Waugh in eighty-eight miles per hour, Wed, 30 Jul 2008 11:35:51 GMT

Yass’ most famous export (other than Pipka!) appeared in FailBlog today. Hooray for Yass! Hooray for FailBlog! … and hooray for annoying my entire adopted family. ;-)

fail owned pwned pictures
see more pwn and owned pictures

Flickr Photo Album

by Jeff Waugh in eighty-eight miles per hour, Tue, 29 Jul 2008 07:19:50 GMT

I forgot to mention one WordPress plugin I enjoy using in my previous post, because I wasn’t sure if it was still being maintained. Turns out the maintainer, Joe Tan, just did a release today, bringing it up to speed with WordPress 2.6…

Flickr Photo Album makes it easy to use Flickr images in your blog, and the latest version integrates really nicely with the new “add media” user experience in WordPress 2.6 — it adds a Flickr icon to the toolbar, and pops up a great user interface for finding images to use (from your stream, from albums, from search results against those and all CC-BY images, etc).

Now for some celebratory Flickr-inspired imagery as tribute… :-)

balloons

Update: Boh, looks like the caption shortcode is not working. That’s Balloons by orphanjones (linked), and hopefully the caption will make this comment redundant soon. :-)

GovTrack.Us Interview with Joshua Tauberer

by Miguel de Icaza in Miguel de Icaza, Mon, 28 Jul 2008 16:00:00 GMT

Jon Udell interviews Joshua Tauberer on his service GovTrack.us that helps citizens track legislation and voting in the US.

Economic clustering and Free Software release coordination

by Mark Shuttleworth in Mark Shuttleworth, Mon, 28 Jul 2008 15:59:00 GMT

I had the opportunity to present at the Linux Symposium on Friday, and talked further about my hope that we can improve the coordination and cadence of the entire free software stack. I tried to present both the obvious benefits and the controversies the idea has thrown up.

Afterwards, a number of people came up to talk about it further, with generally positive feedback.

Christopher Curtis, for example, emailed to say that the idea of economic clustering in the motor car industry goes far further than the location of car dealerships. He writes:

Firstly, every car maker releases their new models at about the same time. Each car maker has similar products - economy, sedan, light truck. They copy each other prolifically. Eventually, they all adopt a certain baseline - seatbelts, bumpers, airbags, anti-lock brakes. Yet they compete fiercely (OnStar from GM; Microsoft Sync from Ford) and people remain brand loyal. This isn’t going to change in the Linux world. Even better, relations like Debian->Ubuntu match car maker relations like Toyota->Lexus.

I agree with him wholeheartedly. Linux distributions and car manufacturers are very similar: we’re selling products that reach the same basic audience (there are niche specialists in real-time or embedded or regional markets) with a similar range (desktop, workstation, server, mobile), and we use many of the same components just as the motor industry uses common suppliers. That commonality and coordination benefits the motor industry, and yet individual brands and products retain their identity.

Let’s do a small thought experiment. Can you name, for the last major enterprise release of your favourite distribution, the specific major versions of kernel, gcc, X, GNOME, KDE, OpenOffice.org or Mozilla that were shipped? And can you say whether those major versions were the same or different to any of the enterprise releases of Ubuntu, SLES, Debian, or RHEL which shipped at roughly the same time? I’m willing to bet that any particular customer would say that they can’t remember either which versions were involved, or how those stacked up against the competition, and don’t care either. So looking backwards, differences in versions weren’t a customer-differentiating item.  We can do the same thought experiment looking forwards. WHAT IF you knew that the next long-term supported releases of Ubuntu, Debian, Red Hat and Novell Linux would all have the same major versions of kernel, GCC, X, GNOME, KDE, OO.o and Mozilla. Would that make a major difference for you? I’m willing to bet not - that from a customer view, folks who prefer X will still prefer X. A person who prefers Red Hat will stick with Red Hat. But from a developer view, would that make it easier to collaborate? Dramatically so.

Another member of the audience came up to talk about the fashion industry. That’s also converged on a highly coordinated model - fabrics and technologies “release” first, then designers introduce their work simultaneously at fashion shows around the world. “Spring 2009″ sees new collections from all the major houses, many re-using similar ideas or components. That hasn’t hurt their industry, rather it helps to build awareness amongst the potential audience.

The ultimate laboratory, nature, has also adopted release coordination. Anil Somayaji, who was in the audience for the keynote, subsequently emailed this:

Basically, trees of a given species will synchronize their seed releases in time and in amount, potentially to overwhelm predators and to coordinate with environmental conditions. In effect, synchronized seed releases is a strategy for competitors to work together to ensure that they all have the best chance of succeeding. In a similar fashion, if free software were to “release its seeds” in a synchronized fashion (with similar types of software or distributions having coordinated schedules, but software in different niches having different schedules), it might maximize the chances of all of their survival and prosperity.

There’s no doubt in my mind that the stronger the “pulse” we are able to create, by coordinating the freezes and releases of major pieces of the free software stack, the stronger our impact on the global software market will be, and the better for all companies - from MySQL to Alfresco, from Zimbra to OBM, from Red Hat to Ubuntu.

What if fonts were people?

by Jeff Waugh in eighty-eight miles per hour, Sun, 27 Jul 2008 08:52:10 GMT

Hilarious video for Font Fascists (such as myself), via André Pang:

 

Open Source

Open source is a set of principles and practices that promote access to the production and design process for various goods, products, resources and technical conclusions or advice. The term is most commonly applied to the source code of software that is made available to the general public with relaxed or non-existent intellectual property restrictions. This allows users to create user-generated software content through incremental individual effort or through collaboration.

Feeds