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.

August 07

Banshee 1.2.1 Planned for Tuesday

We're planning a Banshee 1.2.1 release for next Tuesday, primarily to ship updated translations. We have quite a few languages with good coverage, but it could be a lot better. Translators, please make sure Banshee is available in your language!

4 steps to make version control shine

In the beginning everything was flat.



Now, fortunately, it isn’t.



Background
Ok, why I’m writing this? Well, this week I had the chance to take a look at two great presentations from the OSCON 2008:

The first is from Mark Shuttleworth (Canonical, Ubuntu), titled Beyond Agile: Enabling the Next Wave of Software Development Methods, and talks about a number of very interesting topics such as Lean Software Development. You can find the slides here.

What I really liked was slide 17 where he says:
Branching and Merging
Keep trunk pristine,
Keep features flowing,
Release on demand.


And slide 20 where he mentions:
Pre-Commit Testing
I see you knocking
but you can't come in.


I also liked Code Reviews for Fun and Profit, from Alex Martelli (Google) which you can find here .

He mentions the following on slide 26:

ideally, CR mailing should happen BEFORE
actual commit/push of change-set to the
codebase -- upholds trunk/head/tip quality


Which also does look interesting, right?

So, I came up with this post.

The rules

Let’s try to find which ones are the key rules to make version control shine in the post-agile era:

Rule 1: Keep your main branch (trunk) pristine. Your main branch is your project! Don't use it as a garage (full of garbage) to park all the fixes and new features. Use branches instead!

Rule 2: Isolate changes in branches. It is a consequence of Rule #1. Place each bugfix and new feature inside its own branch. It will help keeping the main line clean, and it gives you all the power of real parallel development. It's also great for task switching and keeping track of intermediate changes.

Tip: Associate your branch with a task in your issue tracking system (Bugzilla, Mantis, Jira ...) and close the full cycle.


Rule 3
: Commit often, more often than you do now! If you develop on the main branch you won't commit every 5 minutes, changes often take longer! If you have your own branch for the task, you're free to commit as many times as you want to... and then you get private change history.

Rule 4: Review changes before they go to the mainline. In main branch development (and continuous integration) you run the test suite after the changes are merged. Don't! This is too late, code is already broken! Take the best out of your SCM tool, review your changes before integrating!



The good news is: there are tools supporting this model both on the commercial and the open source worlds: plastic, accurev, git (bazaar?)...

The bad news is some of the most extended tools out there can’t.

A new era is coming... get ready!

rejaw

Yesterday friends of mine have released Rejaw, a microblogging-like, Comet-based threaded web chat infrastructure. It is with a full set of API. The introduction can be read here. I was one of the alpha testing users.

There are already some articles introducing Rejaw:

|

@orph for 2008-08-06

The girl responded to post-date txt I sent. We have SMS parity again, leaving the door open to future communication! Yay! # This free software geek just spent another few bucks on iPhone apps. Crazy. # @ian wonder how many decades until we can get an ammendment binding the courts to Intl Court of Justice rulings? #

New Development Snapshot

Time for another snapshot.

Changes since previous development snapshot:

  • Removed support for building with GNU Classpath class library.
  • DatagramSocket: Implemented connected datagram sockets using .NET 2.0 API.
  • DatagramSocket: Used .NET 2.0 Socket.IOControl() API to disable WSAECONNRESET errors (when not connected).
  • DatagramSocket: Throw PortUnreachableException from receive() if we receive WSAECONNRESET while connected.
  • Various java.util.zip compatibility and bug fixes.
  • Fixed bytecode compiler not to generate unneeded GC.KeepAlive() in constructor for Exception types that don't have a finalize() method.
  • Fixed #2001802 contributed by Andy Malakov.
  • Fixed #2001799.
  • Fixed #2006953.
  • Fixed file I/O error handling incompatibilities.
  • Added ghost array tagging to be able to report the instantiated class (instead of the object[] which is allocated instead).
  • Fixed ldc <class> where <class> is a ghost array.
  • Fixed bug in instanceof <class> where <class> is a Serializable[].
  • Removed Mono workarounds that are no longer needed with Mono 2.0.

WARNING: THIS IS A DEVELOPMENT SNAPSHOT, NOT AN OFFICIAL RELEASE.

Development snapshots are intended for evaluating and keeping track of where the project is going, not for production usage. The binaries have not been extensively tested and are not strong named.

This version supports .NET 2.0 SP1 and Mono 2.0.

Binaries available here: ikvmbin-0.37.3141.zip

August 06

Writing Free Software - Part 4: configure.ac

In this section, we’ll create a minimalist configure.ac, re-name our Makefile to Makefile.am, generate a configure script, and use this configure script to produce a Makefile. The end result won’t do much more than our manually-created Makefile. It will, however, allow us to make use of the autoconf and automake infrastructure in future [...]

oGosh! IRC Meeting Aug 16 4pm EDT

Join me at an IRC chat to talk about open source civic technology projects, on Saturday, August 16 at 4pm Eastern time! The agenda will be a mix between seeing what various civic technology projects are up to like GovTrack (my site, powered by Mono), OpenCongress, and any others run by people who show up, and getting new people involved in ongoing projects. “oGosh” is Open Government Open Source Hacking (wiki | Facebook), what I’m calling the loose community that binds these projects together.

The chat will be in the #transparency channel on Freenode. For more information on the meeting (and on how to get to the chat), see http://wiki.opengovdata.org/index.php/OGosh.

Suggestions for agenda topics are most welcome either to me directly or by revising the wiki page above. Hope to see you there.

@orph for 2008-08-05

Mediocre results. The grand plan to watch the sunset was called due to weather. Blue Plate was lame. Taught her to drive scooter. 2 kisses. # @codinghorror Doctorow has a book where people’s survival is based on upmods. Down to 0 points = instant death. # @psykoyiko thanks!? It’s a bit of an experiment in free communication [...]

August 05

Fixing Linux, Part Two: Bridging the Gap

In my last blog post, I discussed a few issues I see with Linux as an operating system (as opposed to the higher-level stuff; eventually I’ll put a few words into that, but right now I’m still running with an interesting idea drawn out of a question from a friend of mine: “how do you [...]

Demoing Mono in Games

I'm trying to plan some examples of using Mono in game development, so that we have time to get together some solid demos and samples for next year's GDC.

I'm primarily interested in showing how Mono fits into the existing games development ecosystem; we don't really have an XNA-like story for developing fully managed games in Mono at this point. The focus of the demos will therefore be:

  • How easy it is to embed Mono into a game and use it for scripting and gameplay programming.
  • How the Mono and .NET development tools make development faster, easier and more robust.
  • How Mono's performance compares to popular scripting engines such as Lua and Python.
  • (Possibly) using Moonlight as a Mono-scriptable, artist-friendly UI engine.

Does anyone know of any complete games or cool demos for which source or C/C++ SDKs are available, so that Mono could be embedded as a scripting engine? (I'm already considering Source Engine and Quake 3).

Nice ideas for demos would be useful too, though obviously developing a serious game from scratch is out of the question...

read more

Writing Free Software - Part 3: Command line options

Introduction In this installment, we will look at parsing command-line options. We’re going to use Jon Pryor’s NDesk.Options library. Since he has not made a .deb package yet, we’ll use curl to integrate NDesk.Options.cs into our codebase. Get back to our workspace $ cd ~/src/greeting Get curl $ sudo apt-get install curl Pull down a copy of NDesk.Options $ curl [...]

boo, ometa and extensible parsing I

Meanwhile in a repository not far away:

    namespace metaboo

    import Boo.Lang.Compiler
    import Boo.Lang.Compiler.Ast
    import Boo.OMeta
    import Boo.OMeta.Parser

    syntax Units:
        atom = mass | super
        mass = (integer >> value as Expression, "kg") ^ [| Mass($value, "kg") |]

    syntax Ranges:
        atom = integer_range | super
        integer_range = (integer >> begin as Expression, DOT, DOT, integer >> end as Expression) ^ [| range($begin, $end) |]

    def parse(code as string):
        compiler = BooCompiler()
        compiler.Parameters.References.Add(System.Reflection.Assembly.GetExecutingAssembly())
        compiler.Parameters.Input.Add(IO.StringInput("code", code))
        compiler.Parameters.Pipeline = CompilerPipeline()
        compiler.Parameters.Pipeline.Add(BooParserStep())
        return compiler.Run()

    code = """
    import metaboo.Units
    import metaboo.Ranges

    a = 3kg
    print a
    for i in 1..3:
        print i
    """

    result = parse(code)
    assert 0 == len(result.Errors), result.Errors.ToString()
    assert 1 == len(result.CompileUnit.Modules)
    print result.CompileUnit.Modules[0].ToCodeString()

And the output is, of course:

	import metaboo.Units
	import metaboo.Ranges
	
	a = Mass(3, 'kg')
	print a
	for i in range(1, 3):
		print i

mojoPortal 2.2.6.7 Released

mojoPortal 2.2.6.7 is now available on the download page.

This is primarily a bug fix release. There was a change in the search engine architecture in recent versions that did not work in Medium Trust hosting environments that has now been fixed.

It seems like a constant battle to avoid medium trust issues, so I started a small document here with some notes for developers about things to avoid that can cause problems under medium trust.

http://www.mojoportal.com/developing-for-medium-trust.aspx

Its not comprehensive so if anyone else has any suggestions for things to list on this page let me know. Sometimes its surprising when seemingly innocuous things don't work under medium trust. The problem we encountered was when we changed the search engine to use a queue for writing/updating the search index to ensure things happen in correct sequence. We were serializing our task object into a row in the database then our little task service would deserialize it and run it on a new thread in the background. As it turned out the SoapFormatter we were using to do the serialization throws a security exception under medium trust so you can't use it. I had to re-work the code to use the XmlSerializer.

Since a lot of people are hosted in medium trust I thought it important to get this fix out quickly.

This release also fixes a few other minor bugs as mentioned in the forums. I was surprised how many people are experimenting with our WebStore feature. Several bug fixes and improvements have been made in WebStore. Most of the bugs were only affecting the MS SQL version, whereas the store on this site is runningunder MySql

UPDATE: I've just uploaded a new set of files versioned 2-2-6-7-b because a significant bug was found today in the task framework. The changes I made to the way we serialize tasks to fix the medium trust issue introduced a bug that allowed multiple instances of the same task to run at the same time and this would use up additional threads from the threadpool, potentially causing hangs and performance problems. I also upgraded to FCKeditor 2.6.3.



Joe Audette  ...

@orph for 2008-08-04

Need to see man on wire # Saw Gonzo. It’s bad journalism. But god damn I love that man. # Going to look for copies of Great Shark Hunt and On the Campaign Trail. # The comic I was reading was transmet, which is much better journal of Hunter. At least in the few I’ve read so far. [...]

Fixing Linux, Part One: “The Space Between”

I’ve been thinking about how to best improve the Linux* userland over the last few days. I was venting pretty loudly about my Linux gripe of the day–I don’t even remember what I was complaining about at the time, but it was a mess of shell scripting, pipes, and about half a dozen command line [...]

August 04

Pé quebrado - Broken foot


Olá, pessoal!

Ontem eu quebrei o meu pé descendo as escadas!! Tristeza total. :(
Vou ficar 30 dias com gesso e esperar pelo melhor.

A parte boa disso é que eu vou ter mais tempo para o Npgsql e para ver TV :)

-------------

Hi, all!
Yesterday I broke my foot while I was going down the stairs!! Absolute sadness :(
I'm going to stay 30 days in plaster e hope for the best.

The good part of all this is that I'll have more time for Npgsql and to watch TV :)


Gendarme News Week #31, 2008

at 8/4/2008 7:49:47 PM poupou said...

Back from (gray and rainy) vacations. Tweaked some of Gendarme maintainability rules to lower false positives, use recent rocks (better readability) and, probably (not timed), a bit more performance (since memory requirements should be decreased).


at 8/3/2008 12:32:58 PM poupou said...

Simplified Gendarme's ConsiderUsingStopwatchRule using the new Instruction rocks. Also make the rule work with Ref and Out parameters and added full coverage by unit tests.


at 7/28/2008 8:36:31 PM poupou said...

Fixed a few buglets in Gendarme console runner to show specific error messages instead of depending on the global catch-all exception.


Read older news...

Building an IDE Navigation History

MonoDevelop has a code navigation history. When you switch views, or jump around between definitions, it logs the history, and you can browse back and forth like a web browser. However, it has some major issues -- the history it generates is unintuitive and erratic. It seems like it should be a really useful feature, but in practice is frustrating to use, so I recently decided to give it an overhaul.

Unfortunately, navigation isn't an easy thing to get right in an IDE. It's easy to log too many points. For example, if navigation points are logged every time the user switches between all their open document tabs looking for something, it gets very cluttered.

The most important thing is how it fits into the users' code navigation, so I decided to blog in order to get some feedback on my current thoughts.

In my opinion the following actions should not trigger logging of navigation points:

  • Switching through files by control-tabbing or clicking on the tabs.
  • Jumping using the search pad or the error pad
  • Navigation between items using the document outline or the class browser
  • Moving the cursor around with the keys and/or mouse (but this should alter/update the existing nav point)

Whereas the following points should be logged:

  • The destination of a "Go to definition" command
  • The point that's left behind when executing a "Go to definition" command, if it's not too close to the current point
  • A jump to an event handler from a designer
  • Locations in which text is edited, though these points should be carefully pruned so that there are no more than one or two per file

In summary, only direct interaction with the document -- and in particular, large jumps -- should be logged.

How will this fit into your coding flow?

read more

A New Adventure

Some may have noticed that I haven't been around the Mono irc channels lately. I recently started working at Applied Signal Technology in Salt Lake City on July 7th.

One project I work on is an embedded board with some Xilinx FPGAs, one of which has an embedded ppc processor. It runs embedded linux and does signal processing in the FPGA. The kernel and embedded linux has been a long time favorite of mine.

The other project is a state-of-health hardware and environment monitoring system written in C++/QT. Having been using Python for monobuild and been in the Gnome/Mono circle for a few years, it has been quite the shift to use C++. I found an interesting white paper comparing C++/qt and Java, but have not formalized any opinions yet. Comments?

I wanted to give an update on my disappearance as well as express my graditude to Novell, my fellow co-workers, and the Mono community. It was a great 3 years and an awesome experience. Thanks especially to Andrew and Marc to taking over the build and release processes. We spent my last week or two at Novell transitioning things over and I've also spent some time since then helping them out. I'm fully confident they will do a superb job with Mono 2.0.

Good luck to everyone with the upcoming release. I wish y'all and the Mono project the best.

Office humor

It’s been just about a year since I started working at Ontario Systems. I’d always been lacking evidence that it’s a pretty fun place to work. Well now I have a few pictures of some of the more subtle goings-on. Here are the present contents of the album, sure to grow as our shenanigans [...]

Tomboy 0.11.1 Released

I finally got some time this weekend to take care of some irritating Tomboy bugs, so today I present to you Tomboy 0.11.1, "A PhD in Horribleness":
  • New tray icon code using GtkStatusIcon (kill libegg, #349265, Stefan Cosma).
  • Fix crashers: #544406, #460642, #544996, #523035
  • Fix bugzilla addin to accept bug IDs of one or more digits (#533024).
  • Fix behavior when start note is recreated (#508982, Jon Lund Steffensen)
  • Include .mdb files during install. Allow --debug, --trace, and --profile options when running Tomboy.
  • Translation updates: ar, bg, ca, de, es, et, fr, gl, he, nb, nl, oc, pt_BR, sk, sv, th, vi, zh_CN
Major things left to do before 0.12.0 is released: Finish port to GtkPrint, fix major outstanding bugs in synchronization, and, if there's time, do some work on startup performance. All help is welcome, especially on the GtkPrint stuff! :-)

How to use Plastic SCM and TechExcel DevTrack I

As you may have already seen on previous post, Plastic SCM provides with the option of using it integrated with different task tracking tools as it integrates with some of the most extensively used systems in the market, you can have a look at the list of options here.

One of them is TechExcel DevTrack!


On this post I am going to explain with examples, how to use Plastic SCM integrated DevTrack.

First of all we have to know that Plastic SCM not only integrates with this system, but also offers customizable options for the integration.

Why do we provide with different options? So you can use the one that better adjusts to your working pattern: Let´s see the “Task on Branch” working mode on this post.

The first step in order to set up the DevTrack extension on your client machine you have to copy “devtrackextension.dll” on the folder where Plastic SCM client is installed and add the following lines (circled in red) in order to indicate the client to use this extension:



And you would also need to create a file “devtrackextension.conf”, its appearance by default is the following one:


<devtrackextensionconfiguration >
<dtlinkplusurl>
http://192.168.1.237/LinkPlusWebService/WSDTIncident.asmx
</dtlinkplusurl>

<user>terry-j</user>

<projectid>daveProject</projectid>

<systemid>daveSystem</systemid>
<branchprefix>issue</branchprefix>
<dtbuginfobrowserurl>
http://192.168.1.237/scripts/texcel/devtrack/buginfo.dll
</dtbuginfobrowserurl>
</devtrackextensionconfiguration>



Finally, you need to make sure that:
the devtrackextension.dll file is on the Plastic SCM client folder.

And by default the “Task on Branch” option is set, or you can specifically set it as follows:


<devtrackextensionconfiguration>

<dtlinkplusurl>
http://192.168.1.237/LinkPlusWebService/WSDTIncident.asmx
</dtlinkplusurl>

<user>terry-j</user>
<projectid>daveProject</projectid>
<systemid>daveSystem</systemid>
<branchprefix>issue</branchprefix>
<dtbuginfobrowserurl>
http://192.168.1.237/scripts/texcel/devtrack/buginfo.dll
</dtbuginfobrowserurl>

<workingmode>
TaskOnBranch
</workingmode>

</devtrackextensionconfiguration>


Now that the extension is set up:

The first step to start working with it would be creating a new bug on our task/bug tracking system; DevTrack in this case.

In DevTrack tasks can be submitted as either defects or new features, and they can also be classified into several categories such as Minor Improvement, Future Enhancement, Discrepancy Report, etc.


As the new task is created, it is on state “NEW” and assigned to a developer. “
The title given to this new task is "Additional options: Customization".
By saving the task we can see the number D given to it, in this case it is issue number 106, and we could indicate the system to send an email to the developer in order to let him know that we have assigned him a new task.



When the assigned developer, in this case Paul, is ready to start working on task 106, he will easily create a new branch and name it according to the task created on DevTrack, and add his comments accordingly.

You can also set the branch base and it will be remembered by the branch every time a user switches to work on it... if you are interested on learning more about Plastic smart branches you can find it here.



After the branch has been created, by going to the top left on the branch view we can display the extended information of branches, which will show information on the DevTrack related bug when selecting a branch.

On the following image we select the newly created branch /scm00106 and on the right hand side we can immediately see the information of issue 106 on DevTrack: its ID, owner, title and comments are shown on the custom view:



And as soon as the task is accomplished we double clicking on the dialogue or just click on the extension button, which will take us to the DevTrack tasks, where we can change the status, which will be refreshed on Plastic:




Easy!, Hope you like it!

@orph for 2008-08-03

The best part about today is that I get to come home to new comic books. # “Text messages for the SF marathon are being delayed due to technical difficulties at the race site…” Hope Jacob finished alright! # Why do cute college girls always fall for potheads? Has anyone else noticed this occurence? # Anyone want to [...]

August 03

interesting article on how MySpace and Facebook are failing in Japan

This article mostly explains correctly why MySpace and Facebook are not accepted by Japanese.

joining SNS by real name regarded as dangerous

Yes, when Facebook people visited Japan and explained their strategy to expand their market in Japan, by advertising "trusted by real name" network, we found it mostly funky. As the article explained, it is already achieved by mixi. And by that time, mixi is already regarded as dangerous "by exposing real name too widely".

One of the example accidents happened in 2005 August, at the comic market. Comic market place is usually flooded by terrible numbers of otaku people, and they used to be looking bad in general. One of a part time student workers at a hot dog stand wrote an entry in "mixi diary" like: "there was a lot of ugly otaku people there. eek!"

While it is pretty much straightforward, those otaku guys got hurt (at least some of them loudly claimed so), upset and started "profiling" who is that student. It was very easy in mixi, because mixi at that time encouraged to put real-life information with real name. No sooner she was then flooded by a lot of blaming voices, she disappeared from mixi.

OK, she was too careless, or ideally she should not write it (it is always easy to say something ideal). But she was not a geek and does not really understand how the network (mixi) is "open" to others (it is not really "open" by invitation filters, but as mixi grew up to have millions of users, it is of course not "trusted network" anymore). She didn't blame a specific person, and hadn't felt guilty until the company forced her to apologize. This kind of "careless" accidents has kept happening in mixi and it became a social problem.

Nowadays we have the same issue around "zenryaku-prof", where not a few children has faced troubles (for example sexual advances) by the face that the network is "open" to the web by default, while they think it isn't.

Though there must have been similar incidents outside Japan too (for example people fired by his or her blogs), the above (I believe) is the general understanding of the situation in Japan.

Mobile web madness

Another obvious point for Japanese, but would not for else, is that Japanese mobile web support is more important than anything, to get more people joined. Mixi is of course accessible from our cell phones. Even more funky example is "mobage-town", which used to limit access only from cell phones(!). (It is done by sending "contract ID", which is terrible BTW.) Mobage-town is one of the mega hit site in Japanese mobile web. It is mostly for games on the cell phones, but also has a huge SNS inside. It is also funky that the network used to be mostly filled by under-20 children. (Now children grew up to above 20, so the number is not obvious.)

Typically Japanese people spend a lot of boring time, between home and their offices or schools, on trains or buses. They can only do some limited "interesting" stuff. It used to be readings for example, and nowdays it is the mobile web.

Twitter was very successful unlike those failing players. Though I don't think the explanation on the TechCrunch article is right. Twitter had spread by "movatwitter", which is designed as the mobile web UI (and twitter is fully accessible by the API) as well as some additional values such as on-the-fly photo uploader (like Gyazickr for iPhone). It also filled our need (microblogging is a very good way to fill our boring time during our daily move). It lived very well in the mobile web land: no Javascript, no applets, no requirements for huge memory allocation.

When facebook is advertised with its API, what came to my mind was: "Is it even possible to make it for Japanese mobile web? nah"

While we, as a member of "open" world wide web, do not really like this mobile-only web (probably we should read Jonathan Zittrain), it is not a trivial demand that a cell phone is accessible to the mobile-only network. For example, iPhone 3G does not support it (iPhone BTW lacks a lot of features that typical Japanese people expect: for example, camera shake adjuster, it does not provide mobile TV capability, the mobile wallet etc.). It is often referred as "Galapagos network", which is intended as failing to expand their businesses abroad (one of the commentor on the TechCrunch entry mentions it. It is even funny that those iPhone enthusiasts try to claim that their web applications are "open" (as compared to Japanese mobile-only network).

BTW a commentor on the TechCrunch entry tries to object the fact written by the article by quoting google trends worldwide. But (including the graph on top of the article) it is a typical failure on measuring Japanese web access statistics: it does not reflect mobile web access. It is already explained (in Jaanese) very well. The simple fact is that it is becoming less ambient through Alexa, google trends or whatever similar.

SNSes are often domain specific

We would have seen similar phenomena in everywhere else. In China it is QQ. Orkut quickly became SNS for Brazil. There is no universal best.

What other SNSes find business chances in non-mainland countries is some specific purpose. For example, MySpace in Japan is good for producing musicians with its rich UI (many of them would also use mixi as well though).

|

Writing Free Software - Part 2: Makefiles

Okay, so now we know how to write hello world in C#, compile it and run it. Next, let’s try to automate the build portion a bit. It’s not going to be very much of an improvement to start out with; we’re just replacing the gmcs command with a make command. But [...]

@orph for 2008-08-02

@tberman: breakfast at bakesale betty’s in berzerkeley. # @codinghorror if your’re itching to start a revolt for cecession, I’m in! # Hey, whoever borrowed my Dell Widescreen LCD monitor 3 years ago, give it back please. # The huge widescreen TV that someone left here a year ago is now gone. Strange how I grow to like objects [...]

August 02

Writing Free Software - Part 1

There are a lot of folks who want to learn how to write software, I hear. So I’ll see if I can write something up about it. I’m going to assume that the reader has at their disposal an i386-class computer running Ubuntu or Debian. This will all probably work for other operating systems, [...]

Grurrah.com: Web 2.0 isn't just for getting teenagers laid


After a trip to Canada last Christmas I realized I wasn’t doing enough to limit my impact on the environment. My friends back home were reducing, recycling and reusing and all I had been doing was watching crappy reality shows on VH1.

So I did some googling for things like “How to be more environmentally friendly” and didn’t find much. There weren’t any big, long lists anywhere. Just collections thrown together by editors. Very Web 1.0, and not very useful.

The lack of useful information out there and the Gaiaware Programming Contest, motivated me to start working on Grurrah.com.


What is Grurrah.com?
It haz a cheezburger?

Grurrah is the latin name for a rare species of Giraffe that will actually attack humans. I felt it was fitting to have an animal ‘fighting back’ against humans as the mascot for the site.

(I want to eat your face)

Sadly, the last paragraph is a lie. It’s just a made up word because every domain in the world is already taken.

Grurrah.com is an open repository of green ideas. Anyone can create, edit, tag and rate any of the ideas in the repository. By being totally open, and allowing anyone to contribute, I hope we can come up with something more useful than the sites I encountered when searching for green resources.


What can you do at Grurrah.com?
Meet Girls?


(I is so confused)

Without creating an account you can create, edit and tag ideas. However, if you create an account you can track the green things you are doing or the things you would like to do. Eventually I would like to tie this into a facebook app, so you can display to your friends the things you would like to do and the things you are doing. Who knows, maybe this will help someone meet girls.


Why should I Participate?
Meet Girls?


(Free Beer?)


I’m not going to bother debating the merits of being more green. Even the staunchest anti-environmentalist can probably find something on grurrah.com that will make their life better (once we get more ideas on the site). A lot of things that reduce our environmental impact also simplify our life.


This is amazing, how can I help out?
Should I tell da girls?


(Confusing Diagrams make people think you are smart)


Well, the most obvious thing you could do, is register and create some green ideas. Short of that, I could use a good google bombing campaign. I’d really like to improve my ranking for “green ideas”.

If you have a local green store, you could tell the owners. Most of these stores have mailing lists and I’d love to be mentioned on their lists.

If you know anyone interested in contributing ideas, send them a link. You can send them my email address too.

If you are a software developer, web designer, artist or even a sys admin, I could certainly use your help. Grurrah.com is an OSS project, and there are lots of things I could use help with. I’d especially like help with the opensocial and facebook integration and cleaning up my disgusting CSS.


Are you going to blog about this site a lot?
It’s not really Mono related and you are terribly boring. 



(I is so bored I dressed as a wolf)


Yes! But not on Monologue. I have another blog specific to Grurrah development that I will use. I am planning on writing another entry about how I developed the site, the architecture, the ins, the outs and the what-have-yous. I think that entry might interest Mono devs, so that one will probably make it’s way onto Monologue.


@orph for 2008-08-01

Dinner with the ex, who has started seeing someone else. Feeling pretty lonely. # To fight the creeping urbanity, I’ve been practicing staring straight ahead without looking at others. Vector path. # @migueldeicaza wow. How is Costin? Spare no detail! # @migueldeicaza what is cafe Pamplona like since I stopped working there in, what, ‘03? Is the old [...]

Douchebag move of the week

Always ingenious, John Stewart delivers one of the best reviews of what went on this week with McCain's campaign reaching for new lows with their attack adds aimed at painting a picture of an "elitist Obama"

Update: Priceless comment from reddit:

http://www.reddit.com/comments/6uis9/jon_stewart_mccains_celebrity_attack_add_is_the/c04wkkx

August 01

First preview of Mono 2.0 is out

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.

First Preview for Mono 2.0 is out

Marc Christiensen has announced the release of our first preview for Mono 2.0. You can read our preliminary release notes for this release.

The preview release is available from our preview download directory. The source code for this release is available here.

Please report any bugs that you may find using our Bugs page, AND reply to this thread with the bug numbers so we can track them! http://www.mono-project.com/Bugs

You can see the bugs we're tracking for Mono 2.0 here: https://bugzilla.novell.com/buglist.cgi?bug_file_loc_type=allwordssubstr&bug_file_loc=http%3A%2F%2Fwww.go-mono.com%2Farchive%2F2.0%2F&order=bugs.bug_status%20

The earlier you file the bugs and reply to this message, the more likely your bugs will get fixed.

Special attention is given to regressions, so if you can tell us a version of Mono where the bug worked and you tag the summary of the bug with [Regression], then it is much more likely your bug will get fixed.

Please help the Mono team to make 2.0 the best ever.

The new Delicious!

The new version of del.icio.us (complete with a domain name change) was released yesterdayish and looks a lot nicer. Oh, but wait. About two out of three page loads: “Sorry, you’ve been temporarily blocked for accessing Delicious too rapidly.” Did Delicious hire the Twitter engineers, or what?

@orph for 2008-07-31

Need to keep this streak of having fun all the time going. Anything going on 2nite? # Helped my neighbor friends move today. They are being evicted to. # A pig, a cock, and a serpent. Ignorance, desire, and malice. # @natfriedman *blush* Dangerous idea tho, paying for a twitter feed. # I keep wondering when and how we’ll [...]

July 31

autotools help on IRC

It has come to my attention that there is a lack of autotools (autoconf, automake, autoheader, libtool, etc) help on IRC. If anybody is looking, they might check out #mono on irc.gimp.net; there are quite a few folks there who are familiar with the suite, and if I can ever figure out how to [...]

System.Scripting

Plume

Two days ago, I was sharing what I was foreseeing for C# 4 and .net 4, and the integration with the DLR.

Turns out that today, by reading this post, my eye was caught by the namespace I was thinking about: System.Scripting.

But this post is about the beta 4 of IronPython 2, that hasn’t been released yet. But heh, it’s easy to forget that latest IronPython code can be downloaded from CodePlex’s TFS.

And it indeed turns out, that in the latest revision, Microsoft.Scripting.Core namespace has been renamed to System.Scripting, and that the DLR AST has been merged into System.Linq.Expressions.

So yeah, I guess we can safely admit that C# 4 will have statements support inside expression trees.

And that .net 4 will contain very cute features for dynamically generating programs, without resorting to emitting plain IL, simply using the DLR, contained in a new assembly (or namespace, if they move some to parts to System.Core), System.Scripting.

@orph for 2008-07-30

My iphone got me a date with a beautiful NYU law student. I met her getting off BART. She had just been to the Apple store. # @tberman @ian wow, you’ve never been? http://www.sunflower-restaurant.com, 16th + valencia. # @tberman @ian 8 works for me. # @tberman dumbass. It’s not a vegan restaurant. Don’t ask for the menu if [...]

July 30

No Browser Left Behind

If you've been reading my blog, you probably know that one of the pieces of the web platform that I'm most involved in is the HTML5 Canvas.  It's a very direct way of getting 2D (and soon 3D) graphics into web pages, and removes many of the barriers between developers and graphics rendering.  One of [...]

Banshee 1.2 Released

A month and a half after 1.0, we are happy to announce the release of Banshee 1.2, packed with new features and tons of bug fixes and improvements.

Several of these features were things we had in Banshee 0.13.2 or before, but are new to the Banshee 1.x series.

Big new features and fixes:

  • 10-band Equalizer
  • Internet Radio
  • Music Recommendations
  • DAAP Client
  • Playlist Importing (.pls, .m3u)
  • Multi-Artist (Compilation) Album Support
  • Manual Reordering of Playlists and Play Queue
  • Amarok migration (including ratings, playcounts, and podcasts)



Recommendations based on what's playing on internet radio station


And a host of smaller features and fixes, including:

  • More robust parsing of podcast (RSS) files
  • Find and use cover art from the album folder (cover.jpg, etc)
  • Add Last.fm as a cover art provider
  • The last playback source is used when the Play Queue is empty
  • Better performance (start up time, memory usage, searching, etc)
  • Disable the screensaver when in fullscreen mode
  • Much improved performance and UI for automatic cover art fetching
  • Fix issues with importing and playing files in folders named Music*
  • Over 80 bugs were fixed since 1.0


We had been hoping to get library folder watching in for 1.2, but wasn't finished in time. Read the release notes for the full scoop!

Digg It!

Plastic SCM working with JIRA part II

Let´s see now how to use Plastic SCM and JIRA using the "task on changeset" working mode: the first steps for setting up the extension would be the same ones as explained on the previous post for the "task on branch" option, the only difference is on the "jiraextension.conf" file, in this case its configuration must be the following one:


<JiraExtensionConfiguration>
<HttpUrl>http://192.168.1.14:8080</HttpUrl>
<User>root</User>
<Password>root</Password>
<Projectkey>PR</Projectkey>
<Branchprefix>SCM</Branchprefix>
<workingmode>TaskOnChangeset</workingmode>
</JiraExtensionConfiguration>



Once the extension is set we can start working with it!

You must take into account that even though on the previous case: "task on branch", only one task in Jira was linked to one Plastic branch; in this case you can link one or more tasks with one or more changesets.

In order to start working, the project manager must have created issues in Jira and assigned them; as using this working mode, the pattern used would be “Mainline development” pattern or “Branch per developer", so in this case the user does not create a new branch for the task he is going to work on, but he checks out the files he wants to modify, makes his changes and check them in. At this point a check in information dialog will be displayed, as shown on the figure below, on this dialog the user will be able to write comments on the operation and on the "Checkin Linked Tasks" he can include the Jira issues to be linked with that changeset or commit operation:



By clicking on the "Add new issue" option on the previous dialog a new one will be displayed to indicate the ID or number of the issue to be linked, several issues can be linked to one changeset and viceversa:



Once the changeset has been linked to the issue or task in Jira, we can go to the changesets´ view where the information of the extension is displayed just by selecting a changeset. From this view users can also add new issues or delete previous ones; and by clicking on each of them an Explorer window with the associated information in Jira.

@orph for 2008-07-29

@claylevering interesting. Imagine a future war of guerilla information freedom fighters vs. Big Telco Bandwidth Control. # @migueldeicaza welcome to MS versus Apple circa 1988 # Tshirt idea: “everyone here is trying to figure it out” # Everyone getting along is kind of boring. # Science is nothing. # Iphone fail. # Can’t communicate. # Ruza Markov. # IMAX Dark Knight! # the [...]

July 29

Smuxi 0.6.1 + Debian and Ubuntu Packages + Windows Package

I made a minor bugfix + minor feature release of Smux together with packages for Debian, Ubuntu and Windows. Big thanks for all the feedback I received from the users!
But at the same time I seek possible Smuxi contributors for things like artwork (logo, icons, theming, etc), translations, package maintainers for Linux distributions (OpenSUSE, Gentoo, ArchLinux, ForeSight, etc), patches, frontend and protocol developers are very welcomed and wanted bigsmile.png
If you are interested in helping the project in any way, just join #smuxi on irc.oftc.net

Back to the topic, here are the release notes of Smuxi 0.6.1 and the downloads.

Npgsql2 RC1 Released!

Hi, all!

It's a great pleasure to say Npgsql Development Team made a new release of Npgsql2. We are closer to the final release!

On the highlights, thanks to Josh Cooley, we have support for newer version of EntityFramework 3.5sp1beta.

Another highlight is that we fixed the cast problem some people had when using Npgsql2 beta4. Now, Npgsql will only use casts if the user explicitly specify a DbType or NpgsqlDbType value.

Also, thanks Andreas Schönebeck, who provided us with testcases and feedback, we have a much better threadabortexception handling. Those exceptions were making Npgsql be instable and sometimes unusable.

Please, if you had any problem, give RC1 a try and help us to improve Npgsql for final release.

Other changes can be seen in our changelog.

Donwload Npgsql2RC1 from our usual place

Thank you to all who helped us with this release with feedback, bug fixes, bug reports and comments.

Tachikoma 3D Model?

Dear lazy web,

I'm hoping someone might have some handy links to a (preferably free) 3D CG model of a tachikoma that I'd be able to use in a s3kr3t side-project of mine (oops, I guess it's not so secret anymore, huh?). Since I'm planning on animating the tachikoma, it would preferably have hooks for this or be componentized or something (not sure how 3D CG models are "built" to allow animation, so... excuse my ignorance).

Failing that, a technical blueprint would be greatly helpful if I am forced to model my own.

Credit will be given to the modeler (or draftsman) in my project if it ever reaches the point where I release it to the public (which I'll do if/when it becomes more than a pipedream... currently just in the planning stages and the project is likely beyond my abilities, but we'll see).

.net 4, C# 4, and the DLR

On the road again

UPDATE: turns out that there’s some true in those previsions, a small follow up.

I’ve been thinking a bit about the discussion in this video, about the future of C#, and specifically about its next version. If nothing is said clearly and loudly, as they’re most probably waiting for the PDC, you can still get a glimpse of what C# 4 and .net 4 will get as new features.

I’m mostly interested in one aspect of those new features. It’s the possible integration of the DLR inside the framework, and in the C# language.

The DLR, as we used to have it in IronPython, has been split into two separate assemblies, Microsoft.Scripting, and Microsoft.Scripting.Core a few months ago.

Microsoft.Scripting.Core is probably the part that will make it into the framework. It’s the part that contains a generalist AST, a compiler for this AST, using both LCG and traditional SRE for the debug scenarios. It also comes with a fast dynamic call site implementation, and an hosting API. So are we going to have a new System.Scripting assembly?

An interesting change in the DLR, is the naming of the AST factory and nodes. I’ve spent the last months working on LINQ and the LINQ compiler in Mono, and comparing the LINQ expression AST with the DLR AST is an interesting thing to do.

The DLR AST is now basically the LINQ expression AST, with statements added. And it looks like the current DLR AST has been tinkered around what has been already shipped inside .net 3.5 in the namespace System.Linq.Expressions.

Here’s a small example. In System.Linq.Expressions, pretty much all node from the AST extends the type Expression. Each Expression has a NodeType property, of type ExpressionType.

And you can find the same thing now in the DLR, but with some stuff added.

public enum ExpressionType {
    // some traditional expressions

    Add,
    AddChecked,

    // ...
    Call,

    // ...

    IfStatement,
    SwitchStatement,   

    // ...
}

So for the DLR, a statement is an expression. It makes kind of sense for a dynamic language you’ll tell me, but it looks a bit weird to be implemented this way.

Anyway, C# 3 already has a way to create expression trees to support some basic meta programming features, I guess we can only wonder if C# 4 will extend the meta programming features to support not only expressions but also statements, using the DLR tree.

I have no idea how they’ll deal with the fact that the existing stuff is in System.Linq.Expressions. Are they going to obsolete the whole namespace, and redirect everything to a possible System.Scripting.Ast (sounds less likely)? Are they moving the DLR AST to System.Linq.Expressions (sounds more likely)? Who knows? Not me (I’ve never lost control).

Interesting speculations anyway :)

So for now, the only change I can foresee for C# 4, is that you’ll be able to get full code blocks instead of only expressions when asking for an Expression of T.

But here’s another interesting one we can have a glimpse here, is duck typing support based the DLR.

At the language level, it’s difficult to say if they’re going to rely

  • on a dynamic code block, like the example shows in this blog entry,
  • on a custom marker type,
  • on another syntax for message passing to dynamic objects,

All in all, it looks like C# 4 will have some nifty stuff, let’s wait for the PDC.

mojoPortal 2.2.6.6 Released

I'm happy to announce the release of mojoPortal 2.2.6.6

This is a minor upgrade and bug fix release. There is a new option to show or hide any content instance based on whether the user is signed into the site or not. There is a new Traditional Chinese translation, thanks to Alex Ho!

There are a couple of bug fixes for the MS SQL version of WebStore and a few mnior improvements to a few admin pages in the WebStore.

There is a bug fix for a forums error that would occur if anonymous posting is enabled, though I still don't recommend allowing anonymous posting.

As usual, be sure and backup your site and database before upgrading, and post in the forums if you run into any troubles.

UPDATE: I've released a new set of files versioned 2-2-6-6-b, there was a packaging bug in the first set of files and it was missing some .htm files used by TinyMCE editor. I also fixed a few more bugs in the WebStore that were discovered today.



Joe Audette  ...

@orph for 2008-07-28

I do love this city. Chapelle was right: there’s no place where people get along better! # Btw, “Where you headed next?” isn’t the right exit question for success. # “We remind you that any inappropriate jokes or comments regarding airport security may result in your arrest.” # @daniesq I started cracking up maniacally, then got nervous I [...]

New York's Finest?

A NYPD officer intentionally, violently battered a random, non-aggresive bicylist to the ground in front of a crowd of onlookers last Friday. This makes me incredibly angry.

Officer standing in middle of the road heads into path of oncoming cyclist.
Cyclist tries to avoid hitting the officer.
Officer leans into cyclist, shoving him into the ground.

Is this the kind of bicycle-friendly city Mayor Bloomberg is trying to create? One where innocent cyclists are threatened not only by dangerous roads and traffic, piston-produced pollution, but by the police?

Watch the entire video on YouTube to see it for yourself. Even if you aren't a fan of bicycling, critical mass, young people, etc - nobody deserves to be treated like this.

Digg It!

July 28

Gendarme News Week #30, 2008

at 7/27/2008 10:02:44 PM poupou said...

Fixed the Gendarme wizard to be more usable on high-DPI display (bnc 392556). Not perfect since some UI elements don't resize wrt to DPI - but I'm not sure it's an easy job to achieve better using straight SWF.


at 7/26/2008 9:05:18 PM poupou said...

Fixed two issues in Gendarme AvoidUncalledPrivateCodeRule. First one is about (unreported) unused properties (bnc #410000). The second is another case with generics.

I also found a bug in TreeView.Sort under Vista (MS code, not Mono) that leads the wizard into infinite recursion (sorting rules). The fix was much easier than finding the problem (since I wrongly blamed my async code).


at 7/24/2008 8:51:07 PM poupou said...

Two quick fixes for today (dull gray day with enough rain this evening to affect my net connectivity). First fixed a false positive for DoNotRoundIntegerRule and a bug that affected the Gendarme wizard when analyzing more than once an assembly with debugging symbols.


at 7/23/2008 10:15:28 PM poupou said...

Fixed generic and explicit interfaces support for Gendarme's BadRecursiveInvocationRule. Took some extra time to make it a bit faster and to reduce it's memory requirements.


at 7/23/2008 12:17:42 PM poupou said...

On vacations and... lots of rain ahead :( Slowly fixing issues being reported with the Gendarme preview release (many thanks to all reporters). I'll try to sneak in a few optimizations as well ;-)


Read older news...

Plastic SCM working with JIRA Part I

On the series of posts about Plastic SCM extension I am going to explain how to use Plastic SCM and JIRA for the benefit of users of this task tracking system. Plastic SCM for Atlassian JIRA provides reliable data mapping features that allow data type transformation between both tools; this highly improves your development´s traceability. Let´s see how it works!
First we have to set up the extension, in order to do this a new "Custom Field" named Plastic SCM must be created in Jira, if you want to have a look at further information on how to create a custom field in Jira you can go to our Extension´s Guide.

On the Plastic side, in order to start working you must have copied "jiraextension.dll" on the Plastic SCM client folder, adding the following lines (circled in red, which will indicate that Jira is the extension used), on the client.conf file:


The next step to ensure that the extension is properly set up is creating a "jiraextension.conf" file; on this file we indicate the extension parameters. Here we have to options, the first one is the "Task on branch" option which is used to link one task in Jira with a branch in Plastic, in order to use this option the "jiraextension.conf" file must have the following appearance:

<JiraExtensionConfiguration>
<HttpUrl>http://192.168.1.14:8080</HttpUrl>
<User>root</User>
<Password>root</Password>
<Projectkey>PR</Projectkey>
<Branchprefix>SCM</Branchprefix>
<workingmode>TaskOnBranch</workingmode>
</JiraExtensionConfiguration>

And now we are all set to start working!

The person in charge of creating new tasks and assigning them has created a new Jira issue on the task tracking tool, which has been give number 3 on the project we are working on, as you can see on the following figure:


Once the task has been assigned (in this case to root as shown on the previous image), the developer will start working on it: he goes to Plastic and creates a new branch, giving it the same name as the Jira issue with the prefix stated on the "jiraextension.conf" file, in this case SCM:


Now to see how the extension works, if we go to the branch view and click on the "Show extended information option" on the top and select the newly created branch we can see on a menu on the right the information of the issue linked to that branch displayed as shown on the following image:



The extension information shows the name of the Jira issue as well as its owner, title, comment and status. By clicking on it, an Explorer window with the associated branch issue is opened, whenever the user wants to change the status of the issue, he will only have to refresh it on the Plastic branch extended information and the new information will appear.

On the next post I will explain how to use the "task on changeset" working mode working with Plastic SCM and Jira!

How is this not a bigger story?

PA Bonusgate.

My favorite part.

State employees were routinely diverted from their jobs to provide political services and, in the case of Mr. Veon, to transport his motorcycles to South Dakota for his vacation and to provide dinners to members of Mr. Veon's informal basketball league.

GovTrack.Us Interview with Joshua Tauberer

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

openSUSE 11.0 + Intel Graphics

A very unfortunate update was pushed to openSUSE 11.0 update servers. As of a week ago today, new Intel packages were pushed which changed the default AccelMethod from XAA -> EXA. This has the unfortunate side effect of making text 10% as performant, and most compositing operations ~80-90% as performant. The reason for the change is obscure crashes on i965 with XAA and Intel opting to no longer support XAA. I personally think this never should have been pushed in an update, but should have moved to a point release, and as such I looked into the reasoning behind this change. (NOTE: I'm on i915 so the crashes have absolutely no bearing to me). It turns out the only problem with XAA+i915 is unsupported XV, but this can be worked around by a patch from the Ubuntu folks. I've side ported that patch and provided patched RPMS here. I've also fixed a crash in the default xorg server packages using EXA that could crash your moonlight or firefox.

If you decide to use my packages I strongly suggest adding the following lines to your xorg.conf to make your desktop usable again:
Option "