One of my projects running up to my Master’s degree was about testing the accuracy of using WiFi signals to track indoor positions, and after I moved on to my actual Master thesis and then left university my professor and my adviser built upon that work and wrote this paper. They presented it at the Auto-Carto conference last September and I must say I’m quite proud! To be honest, my main contribution was clarifying things regarding the work I had done and the software I developed, and I haven’t actually written a single word of the paper myself, but CREDIT IS CREDIT! :-D
Looking back at my project, I must say I have mixed feelings. Part of it was incredibly stressful, with constant delays and bureaucracy getting in the way, but I’m proud that I managed to land it in a decent way and get some useful results despite all that. My favourite thing was the way I built a position logging system from the ground up following the rules from The Pragmatic Programmer and really saw how useful the advice was. All in all a great learning experience!
This reminds me, I should probably put my actual master thesis up on this site soon. And that other paper I wrote on Open Source. I’m a sloth-like academic, it seems.
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:
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!
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!)
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!)
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!
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.
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:
Last night, Cameron White and Johnathan Morlock finished up all the packaging, uploads and release notes for Pinta 1.2, so now it’s officially released! New releases are always great, and this one has a bunch of bug fixes and general improvements. Head over to http://pinta-project.com/ to download the newest packaged awesomeness. I almost said “the latest and greatest”, but that’s not strictly true because new improvements for Pinta 1.3 have already started landing in our git master branch!
Pinta 1.1 was released about a half a year ago, and I’ve had a look at the download statistics we have on hand from our Github page:
- The Windows installer has had 12 483 downloads.
- The source Zip file has had 3,436 downloads.
- The source tarball has had 4,470 downloads.
In addition to that comes all the downloads through the package managers of various distros that we have no statistics for. But lets assume the number is a lot! I think that’s a reasonable assumption because when you have eight thousand people willing to compile it themselves there are probably a whole lot more who are willing to let someone else compile it for them.
An interesting point is the strong Windows download numbers, despite the fact that Windows is the platform that carries Paint.Net, Pinta’s ancestor and role model. It’s no problem for me to admit that Paint.Net is still ahead of Pinta on Windows, but obviously the fact that Pinta presents a consistent user interface over several platforms in addition to being open source (which Paint.Net no longer is) means we have carved out a good niche for ourselves.
Sadly, in this release we have had to postpone a Mac version once again because we don’t have hardware to test it on. This pains us quite a lot, and it’s also the reason 1.2 has taken a while to come out because we’ve been hoping to get it fixed before releasing. In the end, we had to prioritise getting new features out to those users we could reach. But read on, because potential good news is coming!
The Gnome/Mono Festival of Love 2012
Fingers crossed, if all the star signs align correctly and so on, I will be attending this years Boston hackfest for Gnome/Mono products! (Which will also be my first time visiting the land of tea parties, star spangled banners, and McDonalds.) The plan is for me to work with Jared Jennings on a new core library for Tomboy, and to hack away on miscellaneous improvements for Pinta.
I know that there will be several participants there owning the vaunted hardware from Cupertino with a half-eaten apple on it, and I plan to pester them into helping me solve Pinta’s most major Mac issues. With luck, we can again have a working version of Pinta for Mac by midsummer. Then we can make at least a interim Mac release, but personally I hope to have enough done by then that we can justify releasing Pinta 1.3. (At any rate, I plan to lobby my co-developers to do just that…) Here’s hoping for the future! Update: Like masters of magic, Cameron White and Jonathan Pobst have managed to come up with a working Mac edition (As yet known to be working under at least one configuration of Mac+Mono) within 24 hours of me writing this! So it looks like I’ll be able to put more time into other aspects of Pinta at the hackfest, although hammering out any Mac-specific issues that may appear is still a possibility. Looking forward to it!
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!
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!
- 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.
A couple of months ago I joined the Pinta team, a very exciting experience for me! We set to work fixing bugs and adding features, and we’re very proud of what we’ve achieved for version 1.1. However, the actual release has been delayed a couple of weeks now because of the tedious details involved in making a release. As a developer, using the newest Pinta is easy for me. All I have to do is open the freshly compiled executables I always have lying about. (The bleeding edge!) But for Average Joe User, they need to be packaged in to a nice and easy installer and that’s what we’ve had trouble producing.
First we had trouble producing a reliable Windows installer, during which I learned about the difference between .Net 3.5 and .Net 4. But we eventually got that licked, not least because we all have access to various Windows systems to test on. However, none of the current developers have a Mac. (Personally, I’ve never liked computers I can’t open up and mess up on the inside.) This makes it hard to debug to say the least, as we are dependent on sending test installers to gracious testers on the mailing list and interpreting what they report back (and copy from their terminals).
Adding to our troubles is the fact that Apple has made a habit out of completely breaking stuff like Mono and GTK# when they release Mac OS X updates, which means Mono and GTK# needs to be updated to meet those changes, so now there are a bunch of different versions of Mac OS X and GTK# mixed up among our users. Conducting a thorough investigation of what works with what and with Pinta 1.1 is hard enough to begin with, even when you’re not doing it via email with (lovely and awesome) volunteers.
Therefore, sadly, the release of Pinta 1.1 will probably be a beta version for Mac users. (But final for the other two platforms.) We will continue to try to fix the Mac installer with the help of user feedback so that we can hopefully make a 1.1 final release for Mac, but in the meantime all of our other users need to be able to use the latest and greatest Pinta.
PS: If you happen to know a developer who knows C# and has a Mac and some spare time, please don’t hesitate to point him our way!