14 ianuarie 2012

If you're a programmer, you were asked for this. Probably several times.

If you're a PHP programmer, you probably ended up using comma separated values for convenience.

My problem: exporting tens of thousands of records from the database to a spreadsheet using PHP.

CSV would be a nightmare for this. It's enough to say new lines, escape characters, the need to set filters when opening, differences between Microsoft Excel and LibreOffice and that fills your plate.

I haven't been able to find a proper library to write OpenDocument spreadsheets using PHP. All the libraries that I found, created the document in memory which is a big no for my problem. So I created a simple library that writes the file directly on the disk. And as a bonus, there's a simple php script that you can use to export directly a query's results to a OpenDocument spreadsheet.

And of course, it's free open source software, download it from here if you need it.

16 noiembrie 2011

Boot 2 Gecko (B2G) is an ambitious project to replace binary apps found on your Android phone with simple html pages and widgets. It's not an OS on its own, but the rendering engine gecko running on Android with a lot of new APIs . You will be able to design your home screen in plain html. Can't think why Google didn't think of this before.

Adapting to change was an interesting roundtable session. Lessons learned: be prepared for the change, always know why the change is needed, be aware of what discomfort change can cause to others, accept uncertainty.

Vito talked about translation with a TM, TM being a highly unused in the l10n world and without I couldn't imagine doing l10n. However, I found that anything else than ICE matches is only leading to mistakes. If you'd have a text to translate, e.g. "File:", a fuzzy match would be "File"; people often don't see the colon and leave it like that. Also even ICE match always need review. I know it's tempting, but in software you can't pretend that you'll have texts that will always be translated in the same way. A simple example is the text "Edit". It can be a menu, it can be a button. When it's a menu, you'd say in Romanian "Editing", because if you click it, there's no editing action. When it's a button, you'd keep it as Edit, as it's an action. Also, one interesting example is the File->New->Email account menu. Translating New does not work in Romanian because the words should be reversed, e.g. Email account menu that is new. To fix this, I often translate New with Create and that way I can keep that flow, e.g. Create -> Email account.

Chris Heilmann talked about how to be a kick-ass speaker. Really inspiring, the main point was that all these contributors should be on the stage of the country they live in. There shouldn't be a need to get people from outside to do the talks. Audio available, listening is highly recommended. Chris is also behind developer-evangelism.com which is a really great handbook for developers that are thinking of doing some evangelism.

Christ Heilmann again on browserid and apps. browserid.org (name subject to change) is a openid like service that is based on your email address instead of the usual openid url which normal people can't relate to. You register at browserid.org with an existing email address and you get an account there. All websites that have a button login with browserid, will use that account. And it's really simple to use browserid on your website. If you're too lazy to build your authentication system, check it out.

Had lunch with the other Romanian folks present at Mozcamp. It's always hard to count how many Romanians are really present there. Because you have romanians working from abroad as interns or even employees and they work directly for Mozilla, rather than contribution for the Romanian community in particular. So I always manage to find one Romanian at these events that I haven't heard of or seen before.

PDF.js is a Javascript library used by a Firefox extension to display PDF files inside your browser without Adobe Reader, using plain html 5. Online demo of PDF.js available here, Firefox extension available here. This is really impressive, the effort is huge, but well worth it.

Finally I listened to a presentation about how wikimedia does l10n. It's a really open approach that I admire, but it would not work in desktop software. You really need to make sure that the localized software is of quality because the software might sit like that on computers for up to years.