Disclaimer: this is an automatic aggregator which pulls feeds and comments from many blogs of contributors that have contributed to the Mono project. The contents of these blog entries do not necessarily reflect Novell's position.
Yesterday, I introduced you to Moihang, our family's version of Hangman a popular word guessing game. Maria and Monica had suggested early on that we use sounds every time you pressed a keystroke. I then suggested to use different sounds for correct and missed guesses. Finally, it only made sense to play some sort of fanfare when winning and some sort of dramatic sound clip if you fail to guess the word.
Since we wanted to support Windows versions that we knew only had .NET Framework 1.1 I decided to make it the minimum Framework version. That left me P/Invoking winmm.dll for wave file sound playback. That was easy enough in Windows and I must admit that I ignorantly assumed that P/Invoking in Linux would be almost identical and just as easy...
About two solid days of Linux audio architectures and libraries research, I ended opting for programming my own shared library using ALSA. I also learned a bit about Pulseaudio, sox and esound.
You can look at how I use afileplay in Moihang here.
The other somewhat interesting thing that I tried to accomplish with the development and release of this application was to create a build system for a WinForms app that can integrate with the menus on the GNOME desktop as well as having an Inno Setup script for building the Windows Installer. Just last week I received an email from a fellow that wanted to support build systems for Linux as well as Windows programmers at his shop. He wanted to better understand the way that MonoDevelop generated Makefiles could help with that goal.
Well, I used the incredibly awesome MonoDevelop myself to create the initial build system (did a bit of manual tweaking but truly minimal) and ended up with something that autotools built quite nicely and maintainable.
I will stop talking about this now and give you the URLs already for download and further information on Moihang and the Afileplay library.
I hope to continue improving Moihang -- time and professional obligations permitting. I want to create a Gtk# version of the UI, maybe a Maemo version as well. I want to change the actual hanging depiction from my initial “easy way out” bitmap file sequencing to a 2D drawing system (GDI+, GDK, etc.).
For now, use it if you like and give me feedback or hack it some. Enjoy!
I am tinkering with ASP.NET MVC and jQuery and making my first baby steps in a whole new horrible world of web development. I found out that the JavaScript IntelliSense in Visual Studio 2008 is broken out of the box. The error is:
Warning 2 Error updating JScript IntelliSense: jquery-1.3.2.js: Object doesn't support this property or method @ 2173:1
The fix for Visual Studio 2008 SP1 by Microsoft can be found here:
KB958502 – JScript Editor support for “-vsdoc.js” IntelliSense doc. files

I programmed almost exclusively on Microsoft Windows and DOS from 1988 until 1999. I started doing batch files, Quick BASIC, Visual Basic, and soon thereafter C/C++ Windows SDK/MFC/ATL. Along the way I programmed for a few flavors of UNIX and most Mac OS versions (Power Plant/Carbon). There for a while a did quite a bit of Palm OS and other embedded systems.
Around the turn of the century -- I love to sound that old (Logan's Run kind of old!) -- I discovered Linux and Free BSD and above all... C#
As Dewey Cox would say: “It's been a beautiful ride”.
Yet playing a wave sound file on Linux from a desktop application is, in my opinion, somewhat harder than in Windows. Of course, there are obvious reasons for this. Microsoft as well as Apple and other commercial OS providers could always dictate a simple, standard and unified way to give you an API call with just a couple of input parameters (file name and/or path usually). The Bazaar nature of Linux programming with its multiple desktops and various low level audio interfaces give you many choices lost of granularity but with all that, comes a lot of homework for those who just want to have a sound clip play when an event in their application takes place.
My beloved daughter Monica is always asking my wife Maria and I to play 20 questions and other word guessing games from the back seat of the car whenever we go from point A to point B – In Texas that may take a long time since point A usually is at least 30 to 40 miles from any point B. One day, we started playing hangman in the car using a piece of paper and a pencil. Both Maria and Monica liked it, and I decided to make it a cross platform desktop app for all our computers.
Although, my first impulse was to make a Gtk# app -- 90% of our computing at home is done on Linux on top of a GNOME desktop -- I instead decided to use WinForms because I wanted try to create RPMs for openSUSE in hopes that I could virally propagate the good news of .NET and WinForms to billions of .NET/Mono embracers that I always read about in slashdot and OSnews <-- sarcasm alert.
Tomorrow, I will make another blog entry where I will share more about my humble solution to the simple programmatic playback of wave and au files while on Linux. Also, the Martinez-Figueroa family Hangman clone: Moihang
Scott Bellware has announced the MonoSpace Conference in Austin Texas on October 27-30th.
Scott has made a Call for Speakers:
The Monospace Conference is looking for teachers to give tutorials on the Mono framework, tools, languages, and platforms supported by Mono.Some tutorials are aimed at .NET developers with little experience with operating systems other than Windows, and others are geared to experienced Mono developers with exposure to the various Mono platforms.
The tutorials are two hour to three hour interactive sessions that can be any combination of follow-along examples, labs, and lecture.
We're looking for tutorials on subjects such as Linux, Mac, Windows, web, desktop, servers, message queues, databases, iPhone, Android, Amazon's EC2, among others.
You can track the progress of the conference at the MonoSpace Conf Blog.
You can also follow the progress on twitter.
Scott was one of the founders of the Alt.Net series of conferences.
Yesterday we shipped Mono 2.4.2, our long-term supported version of Mono. It ships Microsoft's opensourced ASP.NET MVC stack for the first time (you could get it before on your own, but now it is integrated) and fixes over 150 reported bugs.
Chris Toshok announced M/Invoke a tool to port applications that use P/Invokes on Win32 to Linux and MacOS.
What Chris does not talk about on his post is that he was trying to use some .NET software that interfaces via USB to his glucose meter and was trying to get this to run on Linux. The tool is mostly .NET with the usual handful of P/Invokes to Win32. And this is how M/Invoke was born: a tool to retarget P/Invoke happy applications into becoming pure managed applications.
This opens new doors to forcefully port more apps to Linux.
Alan McGovern released a new version of Mono.Nat one of the libraries used by MonoTorrent.
Jordi Mas released a new version of Mistelix a DVD authoring tool for Linux:
Jordi's GBrainy brain teaser game was picked up by MoLinux, a regional Linux distribution, and shipped it translated to Spanish:
Joe Audette's mojoPortal was being installed four times as much when it got included in in Microsoft's Web Platform Installer site (more stats here).
For years I have loved the Joel on Software rules for software engineering. And one of those rules is "Build in one step". We have not always succeeded, but we have always tried. Lluis delivers the one step to build and run for MonoDevelop on Windows: Load solution, Hit F5, up and running.
Google Chrome really lead the way here, and I want very badly to have all of Mono building in Visual Studio with one keystroke, but we are not there yet.
Stephane reports on some nice startup performance improvements for F-Spot. Loading time for 10 images from Stephane's own image collection went from 1.2 seconds to .5 seconds.
MonoDevelop got some enhanced support for autoconf integration.
Jeremy Laval released another version of ZenComic a desktop Comic reader:
David Siegel announced a new release of Gnome Do on behalf of the Gnome Do team. In particular, it is now easier to write "Docklets" for the Gnome Do panel and for those of us that like the Emacs keybindings, it is now possible to use C-N and C-P for navigation
And of course the Google Summer of Code is in full swing:
And we have various very exciting projects brewing.
Jonathan Pobst has been exploring integration points for Mono and Visual Studio 2010:
Guadec: I will sadly not be attending the Guadec/Akademy conference in Canaria next week. This is going to be a busy summer for us as we are shipping a lot of code in the next few months: Moonlight 2.0, Mono for Visual Studio, MonoTouch 1.0 and Mono 2.6.
A few days back MoLinux, the GNU/Linux distribution sponsored by the Castilla la Mancha government in Spain, released Molinux version 5.0.
As part of the different customizations and enhancements that they do to Ubuntu, they introduced a new program called El Sabio Frestón. The program is named after a character in El Quixote that was a smart guy. If you read the Quixote and cannot recall the character, do not worry, a friend of mine that spent five years doing her degree in Spanish Literature could not neither.
El Sabio Frestón is a gbrainy fork. I'm pretty happy about this because I think that one of the cool things about free software is that people can extend, modify and distribute the software beyond the original author capabilities and interests. These guys have just done this. Revamping the user interface to make it less nerdy and more child friendly, adding additional puzzles categories for literature, geography and verbal analogies. Probably this game will make it into another regional Linux distributions in Spain (gbrainy is available in all of them), since they usually share packets.

Unfortunately it will be difficult to leverage on their work for gbrainy, since most of the work that they have done can be hardly internationalized. On top of this, they used a year old version of gbrainy. However, I hope that better collaboration in the future could drive gbrainy to reuse their work.
I was also told recently that the city hall of Zaragoza is using gbrainy in memory workshops for senior citizens. As most researchers do, I believe that most of these games, if not all, do not provide any tangible benefits to a player's memory or mental ability. However, I'm sure that they will have fun playing and they will socialize more, things that are good too.
Mono 2.4.2 has been released, this is a maintenance release for Mono 2.4 and contains over 150 bug fixes. It can be downloaded from our downloads page.
This version is the first version to integrate Microsoft's open source ASP.NET MVC stack.
Check the release notes for more details.
I'm happy to announce the release of mojoPortal 2.3.1.0 available now on our download page.
This is primarily a bug fix release.
Fixed an issue in the WebStore where using EURO currency with PayPal the amounts returned from PayPal were not being correctly parsed.
Fixed a bug in CryptoHelper that was causing an error in some environments when encrypting or decrypting data.
Fixed missing titles on some edit pages that were a side effect of our refactoring of page titles to give more control over them in the last release.
Downgraded YUI from 2.7.0 to 2.6.0 when using the Google CDN, because of a bug in YUI 2.7.0 where an FCKeditor inside a YUI tab sometimes was not visible in IE.
Added required field validators in the Content Style Template editor because leaving the element blank could cause the FCKeditor to throw an error.
Implemented a Content Delete Handler provider system to make a more consistent way of deleting related content when a module instance is deleted. Previously some features were not cleaning out their data when a content instance was deleted.
Last release we introduced support for search results highlighting. This brought with it a possibility for an information disclosure if the user had view permissions on the page but not the module. In the past only the page title was shown so there was no disclosure of the content but with fragments of the actual content now being shown in search results we needed to store the module view permissions in the search index in order to be able to filter search results based on those roles in addition to page view roles. In order to get the view roles into your search index requires rebuilding the search index. In order to not break existing search indexes I had to keep the default to not filter by the module view roles otherwise since the roles are not in the exisiting index all search results would be filtered out. In a new installation the preferred settings are in user.config.sample so that new installations should always filter by module view roles. Those who upgrade and rebuild their search index should add this to their user.config file: <add key="SearchIncludeModuleRoleFilters" value="true" />
This issue only affects those who have content on a page filtered by module view roles in addition to page view roles and only if you are using search results highlighting.
There is a corresponding minor update release for Event Calendar Pro to make it write module permissions also to the search index for events. Customers can download the new 0.0.1.5 version from their purchase history.
Fixed an issue where our App Keep Alive feature did not work in IIS 7 using Integrated Pipeline mode.
Fixed an issue in our SmartCombo dropdown when using Chinese characters.
Fixed an issue in the Image Gallery where the Greybox did not work if the caption had an apostrophy.
Fixed a similar issue in the blog where a script error would occur in IE in the blog if Odiogo was enabled and the blog title had an apostrophy.
Previously some skins had corner rounders surrounding the PageMenu control but if there were no child pages for the current page in the SiteMenu then the PageMenu would not be visible but the corner rounders would still be there. We solved this by moving the CornerRounders into the PageMenu control and out of the layout.master. This way if the menu is not visible neither are the corner rounders.
We now force the use of a plain text editor in iPhone because none of the wysiwyg editors can work in iPhone due to the way they create png images of the page for zooming. So even though the editor rendered correctly because javascript is supported, there was no way to click in the editors. So now you can edit site content, make blog posts or anything you like using the iPhone though it does require knowledge of html.
Based on user feedback, I implemented additional CSS classes and and example skin showing how to layout forms with the labels above the form fields. Whereas most of the skins have the label on the left side of the input, andreasvicklund-02 now has forms with the labels above the inputs. Also I think now all the Cancel buttons have been changed to links which was also suggested as a usability improvement.
There was also a request to add a per instance unique CSS class on Html content instances so that it is easier when you want to style a particular content instance different that the others. I implemented this so that there is a wrapper div with class=modulex where x is the module id. This allows you to easily overrid ethe styles for particular instance. I did the same thing for blogs and links and a few other places.
Updated Italian resource files thanks to Diego Mora.
Here we have Mistelix 0.21. Mistelix is an open source DVD authoring application with also Theora slideshow creation capabilities for GNU/Linux systems.
Lots of stabilization work goes in this version that introduces 11 bug fixes and some updated translations. It can be download it from:
http://mistelix.org/files/mistelix-0.21.tar.gz
MD5SUM: 6b75a5a1a96169f7366223859278eae3
And it is already packaged from some distributions. If you test it and have questions, you can use the public forum. If you find bug, do report them.
This is the version that I will be showing during my lightening talk at GUADEC next Saturday 4th of July and later at GUADEC-ES, still to confirm if it will be the 7th or the 8th of July.
I believe Free Software developers should be free to work without their work being compared to terminal illness [0][1]
I believe Free Software developers should be free to pick and choose their development tools [2][3]
I believe Free Software developers should be free to contribute without being threatened with eviction from a community [4][5]
I believe Free Software thrives on diversity, and that there should always be a choice [6][7]
I believe we should welcome ALL developers, from any community, in helping to contribute towards Free Software [8][9]
I believe Free Software is about freedom – for both users and developers [10][11]
I believe that our priorities are our users and Free Software – meaning we should always strive to present our users with the very best Free Software has to offer [12][13]
Do you?
I got a g1 for Fathers’ Day (Thanks Hannah!) and I’ve been futzing with it a bit. I rooted it and set up a chroot debian system. It’s running an ssh server, openvpn and snmpd.
There’s been a lot of talk about getting flash working on the device. They just announced yesterday the next phone by HTC (the folks who make the hardware) which runs the Android OS. It sounds like there will be a ‘lite’ version of Adobe Flash available for that model. With all the natter about the new phone and flash, I thought it might be fun to get Mono running on the current model and see if I can get a Moonlight plugin shoe-horned in to the browser.
I got quite a bit of help from #android on freenode and #mono on gimpnet when I brought the topic up. At this point, I don’t think I can make it look native, but perhaps just getting the project off the ground is enough to start interest.
At a low level, it looks like the phone can manipulate the graphic display by blitting RGB565 pixmaps to the fbdev. This might be enough to put together a quick cairo back-end. Since moonlight draws to cairo, something like this would be required in order to get things moving.
Now to see if I can compile mono + moonlight in such a way that it’s tiny enough to not take up the whole flash….
I have done a massive amount of fixes to IKVM.Reflection.Emit to make it full featured (even though it still doesn't implement all Reflection.Emit APIs, the functionality should (almost) all be there, for example via different overloads).
I completed support for generics (I think) and fixed many bugs in that area, ikvmc only uses a very small amount of generics so these fixes are unlikely to affect it.
It's worth explicitly stating the design goals of IKVM.Reflection.Emit:
I've done some pretty heavy duty testing on it. It should be ready for external (i.e. non-ikvmc) usage now. If you decide to use it (or consider using it), please let me know. As always, feedback is appreciated.
Changes:
Binary available here: ikvm-refemit-0.41.3464.zip
Just to let you know that MonoDevelop’s Autotools deployment projects now allow you to add specific switch for the configure script.
Let’s say for instance that you want to enable at compile time a specific feature in your project. Now what you can do is add a switch to your deployment project which will be turned in something like --enable-super-feature on configure side (i.e. you will be able to run configure like ./configure --enable-super-feature).
This will actually define (as in #define) a symbol that you can use with #if … #endif constructs in your code to activate your specific feature.
Since we are at it, here is a little screenie :
I will add support asap for simple makefile projects. The UI is also probably a bit rough, if there are any usability expert out of there I will gladly accept any sensible criticism
.
This is a release that was lying around on my desk. It contains a little set of new features.
Zencomic is the comic strip-driven productivity enhancer that periodically makes your day funnier by showing comic like Dilbert or XKCD in a bubble.
Tarball : http://netherilshade.free.fr/mono/zencomic-0.1.3.tar.gz
Enjoy !
I've written another library, Catalina. It started as an example for using the threading library Iris and turned into what I think is a useful library. Catalina is an object data-store for glib and gobject. It provides access through a natural key/value pair interface.
Transparent serialization is supported to and from storage for types that can be stored in GValue's. A tight binary format is provided with the library. It supports basic types such as integers, doubles, floats and strings as well as GObjects in an endian-safe manner. However someone should go double check to call my bluff (and verify its correctness). A JSON serializer would be a quick hack if someone was interested.
In addition to serialization, Catalina supports buffer transformations to and from storage. Included is CatalinaZlibTransform which can apply compression using zlib. It will avoid compression on buffers smaller than the watermark property. This will help on data-sets that are occasionally small and compression would in fact enlarge them.
Catalina is an asynchronous data-store by design. The optimal way of accessing it is the same.
Everything is built upon Trivial DB (TDB) from the samba project. It was chosen over Berkeley DB because of its license. Like Catalina, it is LGPL and does not impose extra restrictions on linking applications such as BDB.
However, the one downside to using TDB is its lack of concurrent transactions. This means that if you have multiple threads doing work and updating storage the transactions would interleave. Since we are using iris, we can use message passing as a way to manage concurrent transactions. (This is done by queuing messages until the commit phase.)
Here is a short example using Vala to asynchronously open, serialize and store a bunch of "Person" GObjects. All the while compressing each buffer with zlib. Don't be scared by the mutex/cond, it's there to negate the need of a main loop.
I intend to add indexes soon, however that is going to take a bit of planning.
So there you have it, my newest hack.
git clone git://git.dronelabs.com/catalina
I seriously hate writing overly long blog posts, but this turned into one. You are forewarned.
What can Linux and the Free Desktop learn from recent marketing campaigns by Apple and Microsoft? Let's quickly take a look at a few of the campaigns over recent years from Apple.
I was surprised how well they were able to comfort users about switching to OS X. The same qualms exist for Linux and in very similar ways.
Rather than worry about migrating existing applications to OS X, (iPhone really, but it still applies,) Apple comforted the user in knowing that anything they want to do can be achieved. With Debian, for example, there are tens of thousands of applications. Do we have an app for that? Probably.
The first commercials that came out for OS X talked about how hardware just worked when you plugged it in. No extra installation of drivers or finding installation cd-roms was needed. Of course, now that more hardware vendors are supporting the platform, it is no longer the case. Linux has an advantage here due to frequent release cycles. The consistent releasing of new software and drivers gives a leg up for supporting current hardware sooner. Granted, someone still needs to be writing those new drivers. But if GkH is right, then Linux also has more drivers than any operating system ever written.
Apple talks about their iLife applications a lot. They are good and all but we have acceptable alternatives for them. Providing a full Office compatible product is quite important and you don't see either bringing that up. Granted, I would love to see an application as sleek as Apple's Keynote or Pages.
They also made hardware that developers wanted to play with such as the airtunes device. Has anyone made an airtunes-like device (airport express) with just F/OSS software. I'd think that pulseaudio could do most of what is needed.
Each of the framework libraries perform a single task well. Yet, they all still integrate together. For example, an application can control external windowing animations. Say that I'm writing a book reader and when the user turns the page I want the page to actually tear off the application window and fly across the screen. This is just not possible in a practical way today. Now that X has compositor support, shouldn't it be available to the application to provide custom control? I would love to make Marina have a native newspaper interface and do exactly that. This is just an example, many facets of the system layer need fresh innovation.
There are tools to write to make our daily lives easier. Streamlining development will only make our time-to-market sooner.
How is Microsoft reacting to the marketing campaigns from Apple? They have a few failed attempts at using celebrities such as Seinfeld. But more recently, are the "Laptop Hunters" ads. These are quite funny as you will notice they get laptops that don't match what they claimed to have wanted at all. Most importantly, though, they are attacking Apple on price and trendiness. I guess they tout gaming on PC's too. Gaming, however, is a strange problem since the total market share of PC gamers relative to PC users is quite small. It's also shrinking as the Xbox, Wii, and PS3 continue to expand their coverage. Regardless, they are both beat on price.
Additionally, I thought the slogan "Life without walls" was funny since without walls you can't have windows.
Many pundits, myself included, have talked about how netbooks can totally change the game. The iPhone was similar in the phone market. Do you think it would have been as successful without the developer platform and thousands of applications?
So finally, how can we replicate the positive results Apple had? What is missing from our platform today (can linuxhator kick our asses into shape)? What are our weaknesses (and how can we fix them to become strengths). What story do we have to tell developers? What do we really enjoy about our platform?
For a handful of good reasons (see Mike's mail), gtk-sharp, the gtk bindings for Mono and .NET, lately chose not to follow the hectic 6 months release plan of both gtk and glib teams but leverage on the almost perfect 2.12.x releases we have now (binding gtk 2.12 and glib 2.16) for a few extra months.Monologue is a window into the world, work, and lives of the community members and developers that make up the Mono Project, which is a free cross-platform development environment used primarily on Linux.
If you would rather follow Monologue using a newsreader, we provide the following feed:
Monologue is powered by Mono and the Monologue software.
Antti Juhani Oja
Ed Ropple
Fernando Herrera
Idan Gazit
James Wilcox
Jeff Tickle
John Luke
Jon Trowbridge
Leonardo Pires
Marcos Cobena
Mark Crichton
Martin Willemoes Hansen
Nidhi Rawal