Category Archives: Uncategorized

Hackfest wrapup

Short version: This hackfest was great!

Long version: This hackfest was great, I learned tons of stuff, had lots of fun and got lots of work done. Pinta now can download add-ins from a central repo, we’re working on setting up a central repo, and the Tomboy library is doing great. I finally mastered OAuth, and now all that remains is the actual sync operation. Erh. So… needs a bit more work, but it is getting real close! The Mac user interface that Jared is working on also looks great.

This week I have made nearly sixty commits! And I still have time to make a couple more in the three hours I have left before going to the airport for my flight back to Norway. (Two days from now, I’ll be starting in my new job at Norkart Geoservice! Expect updating of social network information and possibly a blog post in the semi-near future.)

On a personal note, it has been so great to meet so many cool and talented hackers in person. They’re all real funny and smart people, and getting them all together in a room for a week makes the sparks fly and the ideas come pouring out! I hope I get to see more of these fine folks in the future as well.

This lovely hackfest has been made possible due to the generous contributions of our sponsors:

Hackfest Continues: Experiences with Cydin

As mentioned, I’ve been working on add-ins for Pinta as part of my efforts at the hackfest. Part of that has been to wrangle the Cydin add-in server/build bot for use with Pinta. I’ve been excited about Cydin for quite a while, since the prospect of a fully automated infrastructure for building and distributing add-ins directly to the users sounds incredibly great. It combines ease of use for users with ease of use for maintainers and add-in developers, and that’s about all you can ask for!

Easy installs from the net to your Pinta!

Actually, talking to Stephen Shaw and Jared Jennings, we came up with the idea of maybe co-locating an add-in server for Pinta, Tomboy,  F-Spot and any other Mono.Addins users with some suitable domain name, which would be great in many ways! But first, we have to explore more Cydin.

As far as I know, Cydin has only ever been deployed for Monodevelop’s add-in infrastructure, so while it has been very commendably designed to be versatile and usable for other projects, there are still some little niggles remaining when it comes to issues like documentation and independence of Monodevelop. (Perfectly understandable, of course.) Therefore I’ve made some small pull requests to Cydin to fix some of the issues, and are documenting the rest of them here for future reference.

  • When you set up the “Application” information defining a application that users can upload add-ins for, you need to fill in the “Supported Platforms” information with machine-readable single words separated by spaces. (Not formatted for humans, in other words.) So “Linux Mac Windows” is fine and creates repositories for Win, Mac and Linux, but “Windows, Linux , Mac OS X” will result in repositories for “Windows,”, “Linux,”, “Mac”, “OS”, and “X”.
  • There is a bug where Cydin tries to create “Files” folder at the directory level above the one you excute on, but since the default value is hardcoded as “..\\Files” (Windows style), it will actually create a subdirectory called “..\Files” on Linux. This is not cool because other parts of the code seem to interpret things correctly and things bollocks so it can’t find the folder. I’ve raised an issue about it but haven’t made a pull request because I’m not sure how to put code like “Path.DirectorySeparatorChar” into a DataMember DefaultValue. You would be advised to edit this value to suit your platform before running Cydin for the first time, because after that the Config values are stored in the SQL database which is a slight pain to edit.
  • Side note: The Configuration table in the database has a table called “Key”, which is a reserved word in MySQL and has to be escaped with backticks (`) when you reference it.
  • These two pull requests (1, 2) are important as well, so if they haven’t been merged by the time you read this, pull them in.
  • The artwork in Cydin is Monodevelop-specific, so you have to go into the Resources folder and change them. (Like I’ve done in this wonderful screenshot!)

 

The superbeta Pinta Cydin Repo.

 

 

Hackfest day 3 & Pinta goodness

Today my work at the hackfest is dedicated to add-ins and stuff for Pinta. My first task has been to build up the Pinta Demo Add-in to actually do something, and I have chosen to make it a random colour pencil. (Because the world needs more random colour!)

Random Colour Goodness!

Tasks for the rest of the day will include setting up a test add-in server using Cydin, hashing out some documentation on making add-ins, and looking for a place to put a production add-in server for Pinta. Then I might look into other types of add-ins than effects and brushes, like for example file formats.

 

As always, we are grateful to our sponsors GNOME, Fluendo, Microsoft, Xamarin and Plural Sight. This hackfest is so much fun!

Hackfest Adventures, day 2

So here I am in America, currently on day two of the Mono & Gnome Festival of Love, enjoying myself immensely. America is a lot like Europe, only hotter, wider, with more police, more manual labour doing menial tasks and a penchant for writing words on roadsigns instead of pictograms.

The view from the NERD centre.

During the first day we all got cracking! Jared is working on a MonoMac interface for our Tomboy library, and I’ve been working on the library itself. All our current unit tests are greenlit, so in theory we have the ability to build a Tomboy client that works for storing notes locally without sync. In practice I bet we’ll have a lot more bugs to fix as Jared starts using the library in practice, later today. In the meantime I’m working on the difficult nut that is getting online sync to work properly, liberally using code from Tomboy but doing a lot of my own stuff as well. Fingers crossed that this won’t take all week…

This lovely hackfest has been made possible due to the generous contributions of our sponsors:

Adding some documents

Today I added a documents section to the website, and I started off by adding a poster from a previous project that was accepted for display at Geoforum 2011, and my project report regarding a testing framework for indoor positioning systems from the autumn. I believe that since university is all about discovering and sharing knowledge, and we in Norway get it all paid for by the state anyway, there is no reason why one shouldn’t share as much as possible of what one produces as long is someone might find it interesting to read. (And I know that several people in the Norwegian geomatics community agree with me on that.)

Sometime soon I also hope to post a paper I wrote last year on ownership transfer in open source projects which I was quite pleased with, but it needs a bit of updating and polishing first. So stay tuned!

Translation (Oversettelse, Traduction, Übersetzung)

Lost in translation by gcbb on Flickr, (CC-BY)

They say that every contribution to open source software starts with a developer scratching his or her own itch, and this is probably true. (It certainly is for me!) The problem is that as a project grows in popularity and users, you have to start paying attention to other people’s itches. A common type of itch-scratching, which is important both because it can make your program more accessible to new users and because it draws in new contributors, is translation.

Lots of lovely people spend time translating various programs to their native languages, but often they don’t have the programming knowledge that’s needed to make changes to the actual program. Which means that whenever you as a programmer add a some text to the program that is untranslatable because you forgot to call the translations or concatenate it in some way that hinders translation lookups, you are hindering them from scratching their itch and new users from getting a completely satisfactory experience.

Personally I’m horrible about this, probably because I think in English and always have my systems set to English.  It’s a time-honoured tradition that whenever I add any new feature to a program, be it Pinta or Tomboy, I forget that someone has to be able to translate this. This leads to extra work for testers and translators because they have to find my mistakes, and then again for me because I have to fix them. The other thing one might do is to not realize that a particular piece of text can mean different things depending on where it is. An example from Pinta is “Open Images”, which in one context is a command to open several files at once, but in another context is a description of a list of already opened files. For some languages there is a distinct difference in words depending on the context, which again means more work to either clarify the context in translation notes or find different wording.

So if you want to be a tidy and efficient programmer, there’s one more thing you have to check before you commit: Go over what you’ve written and ask yourself “Is this technically translatable?” and then “Can this text have multiple meanings depending on context?”. Think of the translators!

Two Geoserver observations

  • Putting symlinks (on Linux) in your data_dir does not work. (At least not for GeoTiff images.) But you can use absolute paths from the Geoserver control panel if you want to.
  • Native JAI Image-IO needs to be ver. 1.1, not 1.0. Otherwise, geotiffs will not render. However, you don’t get any warnings other than the log files informing you that a method is missing and blank tiles being returned.

.Net 4 is not .Net 3.5 or newer (If you’re going to be strict about it)

Recently I installed Windows XP in a VM for some Pinta-related work, and started by installing Visual Studio 2010 and .Net 4. When I then tried to install a couple of necessities like Git Extensions and GTK#, the installers errored out telling me that I did not have .Net 3.5 or greater installed. This surprised me, because last time I checked four was greater than three and a half.

However, it turns out that you can have .Net 4 installed completely independently of .Net 3.5, so .Net 4 does not set the registry keys for .Net 3.5. And since WiX-based installers check those registry keys, they think there is no .Net at all. (WiX is an open source installer framework for Windows, and therefore is very popular for open source projects.) The easy fix is simply to install .Net 3.5 alongside, for a more complicated version you can always try some trickery.

Ubuntu either doesn’t know how important they’ve become, or they don’t care.

So recently a lot of dust hs been kicked up over the fact that Ubuntu at UDS recently decided to take Banshee and Tomboy Notes off the default CD image. I won’t speak to the technical reasons other than to say that I feel they are rather weak, especially since the exact same reasoning was used to switch Rhythmbox with Banshee last time around. (Full disclosure department: being a Tomboy contributor it’s pretty obvious that I think Tomboy’s the best thing since sliced bread and grilled cheese and that removing it sucks.) What I am going to talk about is the total lack of communication and transparency in the decision-making process. Obviously I’m not the first to have opinions on this: Go to Jo Shield’s blog for a long and well-argued comment on the subject.

Now, what I have to add is this: Ubuntu either doesn’t know how important they’ve become, or they don’t care. Developers in upstream apps know that getting exposure in Ubuntu means an incredible influx of new users, which in turn leads to new bug reporters, which finally means new contributors. It’s well known that each of these groups is an order of magnitude smaller than the last, so making sure the user group is as big as possible is vital for an application. And because upstream knows this, they are willing to bend over backwards to accommodate Ubuntu’s wishes. Banshee added the U1 music store as core feature rather than a community extension, while when Tomboy was informed that they were temporarily off the Oneric CD due to Tomboy being the only app dependent on gnome-sharp early in the release cycle the developers dropped just about everything to get that fixed sharpish. How was Tomboy informed? One helpful soul forwarded an email that had been posted to the ubuntu-desktop mailing list announcing that Tomboy was being dropped until the dependency was removed. Evidently nobody on the desktop team thought it was worth taking the time to ask the Tomboy developers if it was an easy fix. (Which it turned out to be.)

Upstreams would be more than happy to do a lot of stuff for Ubuntu if only Ubuntu actually let them know what they wanted in some sort of predictable fashion. The trouble is, I’m not even sure that Ubuntu has a predictable system for making such decisions, much less communicating them. Listening to the recording from the relevant UDS session, it seems like it’s a bunch of guys larking about and having laughs while they make up the agenda as they go along. I’m also given to understand that there was in fact no official mention of the now controversial plans before the session started, and the record-keeping, a rather thin etherpad, just doesn’t cut it.

OK, I get it. Formalities are boring. But formalities tend to go hand in hand with responsibility. When Ubuntu wields such incredible clout over upstream development (and also so many people use Ubuntu and are interested in how it develops), they really should get bit more boring by properly formalizing procedures for things like this. They also need to make sure it all gets communicated to the people who need to know about it before it’s too late, so that they can help resolve any issues that might arise. After all, Ubuntu is Linux for human beings. And I hear that developers are human beings too.

Video Game Review – Ace Combat: Assault Horizon

Disclaimer: This review is written by a longtime Ace Combat fanboy.

Here’s a trailer of the game in order to set the stage and give you a little on what to expect:

Second disclaimer: If this trailer full of awesome explodeyness and allround adrenalin-pumping didn’t get you interested, you probably have no interest in the rest of this review.

Ace Combat has always been about flying awesome planes around in awesome aerial combat whilst shooting down others in at fist-pumpingly awesome manner, and this game is no different. However, they’ve had a go at spicing it all up with some new stuff that wasn’t in previous games and shaking it all about. Gritty dark reboot type thing, like Batman Begins.

Here’s some of the new stuff:

  • Moving from a parallel dimension to more or less our dimension. Previously, all AC games were on a sort of parellel earth with different geography and countries (although always vaguely reminiscent of real countries), but all the same plane manufacturers as we have in our world. That allowed us to have great mixes of planes without having to think over why someone had Russian and American planes in the same air force. Since they had developed it over several games, I felt a rather strong attachement to it and was concerned that putting things in the real world would make things more boring. However, they avoided this by completely disregarding boring stuff like politics, economy and logistics which is a bit silly at times but generally rather fun. Also, doing battle over cities you recognize from the real world is kinda awesome and gets automatic bonus points from me since I study geomatics.
  • Helicopters! (Aw hellyeah-acopters.) For the first time in AC you get to hover if you want to, but then you’ll probably get shot down by a PRG-toting maniac on the ground. Quite fun, but some issues with control and general playability. Still, it’s fun to ambush armoured columns by waiting for them to drive onto the Moscow boulevard you’re hovering at the end of.
  • Miniguns! You get to stand behind a minigun and blast the hell out of people on the ground. Makes for a nice distraction, but glad it’s not the entire game.
  • Strategic bombers and AC-130s ! What’s not to like? Eminently satisfying one-off missions, just the right amount of this kind of gameplay.
  • Dogfight mode. As seen in the trailer, you can initiate dogfights where you get up close and personal. To begin with I thought it was kinda silly, but by the end I had really warmed to it. Adrenalin-pumping excitement which really gives life to encounters with enemy aces and lets you fly through some ridiculous setpieces.

The new stuff is generally good, and the old stuff is classic Ace Combat, the kind of game where when you get shot down you pound the sofa pillows and shout “I’ll get you next time, Markov! AGAIN!”.

Third disclaimer: This kind of behaviour may worry girlfriends, boyfriends or anyone else within hearing distance.

Also, there’s a bunch of online stuff which I haven’t tried yet, but it’s probably a bit less off the hook and considerably harder. (But still fun, no doubt.) I would recommend this game to anyone has enjoyed previous Ace Combats and anyone who thinks a video game directed by a Japanese Michael Bay sounds fun. All in all, I give this game fanboy/10.