Skip to main content

the avatar of Andres Silva
a silhouette of a person's head and shoulders, used as a default avatar

Run over by a truck.

As promised I got back in to writing, and pumped out a few articles. You might have noticed a lull in my posting recently. Well, I got hit by a truck. Seriously, not joking. On the 13th I was visiting with friends and went to go get something from the nearby grocery. I crossed one half of the street, then waited on the median to see how the traffic was so I could cross the rest of the way. As typical I step out a bit to make sure drivers can see me, and the two approaching cars slow down. I proceed to cross, and suddenly notice the SUV hasn't stopped and it was too close and too fast to react. After tumbling through the air for some while I landed on my back, in the middle of the street. Assessing the damage I realize that I wasn't too badly hurt... except for the bones protruding from my right leg.

I spent a little over a week in the hospital. They implanted metal rods into the fibula and tibia as opposed to casting it. I prefer the rods since I think that'll make things more usable quicker. So now I have to be pushed around in a wheelchair, or hobble about with a walker. The latter I can't do very much of at this point. I imagine I'll be more mobile in about a week.

I've had some articles brewing. Among them you can anticipate the following:

How to make Gnome 3 act more like Gnome 2 simply using extensions.
Crossover for Linux vs. WINE, is it worth it?
Fluendo DVD player review.
Fluendo Codec Pack review.
Steam on Linux beta review.
the avatar of Klaas Freitag

ownCloud Sync Client 1.2.0 final

1.2.0_final Yesterday, ownCloud Client 1.2.0 was released. You can get it from here. We worked on this since end of november last year, you might have seen my other blogs about the beta versions we had for this release.

What is interesting about the release from a more technical point of view? Here are a couple of examples.

One of the things which often was complained about was the performance of the client. Performance is a very broad term, so we have to examine the details: Many people felt like its a performance problem that former clients polled the local file system for changes on the MacOSX and Windows platform. That was recommended from other projects which have experience with going through large file collections. QFileSystemWatcher seemed not to be designed for this usecase.

Polling was ok for desktop computers with up-to-date hardware, but on devices running from batteries this was a energy drain. Good that we could fix that with 1.2.0 using native implementation of change detectors on Windows and MacOSX. They detect changes within a file system tree. If a change is detected, a sync run is started. But note, this is only for local file systems. Detection of changes on the server is a different story which has to be told as well.

Another performance problem was within the file upload which is done by a HTTP PUT request. Month ago (pretty after my start at ownCloud) I implemented it using a tmp file in between. That means, the source file was copied to a tmp file, and from that it was processed to the request body. Improvement was needed and we changed the code to directly read from the file descriptor of the opened source file.

Another thing that was improved with 1.2.0 is the error reporting to the user. Former versions of the client sometimes provided error messages which were not really accurately describing the problem. The reason for that was that csync uses errnos (yes, the ones from errno.h) to name errors as csync maps everything to a POSIX file interface. That surely works as long as you’re on a kind of file system. But it’s hard to map HTTP communication problems onto that. So we decided to add our own “custom” errnos and enhance the whole idea to use these to describe problems. That works more accurate now.

The next things on the list are for example a more convenient setup dialog for the client. Also we will get away from the kind of hard coded target file name on the cloud. A better network recognition will also be next as well as better handling of big files. And more…

Thanks a lot to all who helped to get 1.2.0 finished! It is big fun to work in such a great community :-)

a silhouette of a person's head and shoulders, used as a default avatar

LibreGraphicsMeeting 2013 coming soon

Once a year all or most of the applications around graphics from the free software world come together and work on new ideas and features for there software. The event where they come together is called LibreGraphicsMeeting. Oyranos participated always the last years in that meeting and got a lot of feedback and ideas from it. This year the LibreGraphicsMeeting will take place in Madrid/Spain and there is still time to submit interesting presentations around free software and graphics. As always the LibreGraphicsMeeting tries to collect some money for travel costs of the participating developers.

But there is more, last year we tried to get Gustav Gonzalez to the LGM and it didnt happen. This year Sirko started an campaign very early, as Gustav needs an visa for Spain he has to show flight tickets and accomodation for get it until 15th of February. Now we have nearly the sum for the flights, we looked for flights and we only need arround 200$ for them and another 150$ for accomodation. In case you dont know who Gustav Gonzalez is….

He is the main developer of Tupi, an cool QT 2D animation tool. Which makes it very easy to draw animations. Tupi is an fork of KToon where nobody works on anymore :( But what he has achieved since he forked it, is amazing. Meeting other developer from graphic applications would surly good for him and bring him new ideas for Tupi. SO it would be definitly a benefit to send him to LGM.

a silhouette of a person's head and shoulders, used as a default avatar

C++ bindings for monotouch using SWIG

cold cold light
(c) S. Delcroix 2013
I love bindings. I've always loved them. Back in the days, I was binding gtk+ and other gobject libs to C# for fun and f-spot usage. Then I bound some obj-C libs to monotouch for a client and some for pleasure.

But last week I faced something new. I wanted to bind (for monotouch) a C++ iPhone lib for which I only received the binaries and the headers files. The component was too large to even think about doing a manual C glue code. I googled about the possible solutions and the only valuable advice was to use SWIG, without any rationale or tutorial. This is then probably a first. An explanation on why SWIG can help you for this, the problem I ran into and the solutions I found.



Mono.Cxxi is sexy, but not all-purpose

I'm not the kind of guy who blindly follows recommendations, so my first try was to use anything but SWIG. I opted for Mono.Cxxi and created a full binding in a few hours. It was really easy after I figured out the gcc-xml installation steps and caveats with clang. But when I first tried to use inside my monotouch project, it was to no avail. A quick reality-check confirmed my fears:


That being said, Mono.Cxxi is great stuff, check it out. But don't count on it for static AOT.

Go SWIG

Miguel was, once again right. SWIG was the only sensible option. I've used SWIG in the 90's for python (iirc), and it looks like the website hasn't left this era. But that's for the surface only. The tool is quite capable, is well suited for .NET and you can customise it to your liking. There's even a tutorial so I won't cover the basics. 
pro-tip: on Mac, install swig with homebrew

 1. Get the DllImports right

The first thing to get right, is the DllImportAttribute for P/Invoke. It has to be like this
[DllImport ("__Internal")]
public static extern void hello ();
You can instruct swig to do that by passing the -dllimport option
swig -c++ -csharp -dllimport __Internal

2.  Generate an obj-c++ wrapper

Swig generates glue code for you in a .cxx file. It turns out that, by simply renaming it to .mm, you get a perfectly valid Obj-C++ file. Create a new (Foo_wrapper) library project with Xcode, link both that .mm file and the includes of the original library, and you'll easily get an iPhone-suited wrapper.

3. Getting rid of the AssemblyLoadExceptions

As is, the generated code compiles with smcs but crashes with an AssemblyLoadException as soon as you try to run it on the device or the simulator. That's because some SWIG generated helpers use reverse callbacks and those callbacks are usually JIT'ed by mono, which is not possible with static AOT. The solution for this is then to tag the (autogenerated) SetPending*Exception() and CreateString() with [MonoPInvokeCallback]. I do that by patching the file after the SWIG step.

4. Putting all the pieces together

So here's a (simplified) Makefile that you can use to turn your SWIG foo.i interface file to a Foo.dll assembly wrapping and embedding your original libFoo.a and the generated libFoo_wrapper.dll

5. One last thing, set IsCxx = true

Don't forget to get your AssemblyInfo.cs right, i.e. setting IsCxx to true in your LinkWithAttribute.


Wrapping up

At this point, you should be all set and you should be able to use your native c++ library directly from within monotouch. Now you have to use your brain, mess with your foo.i file and .NET-ify a bit your API.

Would you have any issue with this, or any other binding or mobile development related stuff, contact me, I'm available for contracting.


a silhouette of a person's head and shoulders, used as a default avatar

KDE Platform, Workspaces, Applications 4.10 RC3: openSUSE packages available

Following up on the announcement from KDE, the openSUSE KDE team is happy to announce the availability of 4.10 RC3 packages.  Remember that they are packages meant for testing and reporting bugs, so that the next release will be as polished as possible.

You will find the packages in the KDE:Distro:Factory repository. An updated live media based on the upcoming openSUSE 12.3 ([see previous post]({{ site.url }}/2013/01/test-the-upcoming-opensuse-12-3-and-kde-workspace-applications-and-platform-4-10-rc2)) is also available (files named KDE4-4.10.RC3) .  The openSUSE 12.2 based version is also available (files named KDE Reloaded) at the same address.

Enjoy!

the avatar of KDE at openSUSE

Replacing kio_sysinfo with kinfocenter

From openSUSE 12.3 on and currently already for the RC packages of KDE SC 4.10, kio_sysinfo will be replaced by kinfocenter. The icon for kinfocenter is still missing in the Kickoff > Computer tab but will be added soon. Until then you can start kinfocenter from the normal Kickoff menu.

The main reason for the replacement is that kio_sysinfo is basically unmaintained and hence bugs do not get fixed.

If you were using kio_sysinfo, please check whether kinfocenter provides all the info and functionality you used with kio_sysinfo. If not, post your suggestions here or to the opensuse-kde mailinglist.

Missing information from kinfocenter’s  summary I noticed so far:

  • temperatures
  • free hard disk space for each partition
  • current CPU frequency

Most info is available, even in more detail than kio_sysinfo did show it, yet not as part of the summary. E.g. graphics info, memory stats etc.

the avatar of Klaas Freitag

ownCloud Client 1.2.0 beta2

Yesterday the ownCloud Client team released the ownCloud Client 1.2.0 beta 2. It includes a couple of improvements compared to beta 1 which was released before Christmas.

The release of version 1.2.0 is planned for the next week if things go smooth.

[caption id=“attachment_219” align=“alignright” width=“595”]New Sync Protocol Dialog New Sync Protocol Dialog[/caption]

In particular, the the following improvements were added:

  • Proxy authentication fixed (Basic auth, NTLM will not yet work)
  • The status dialog now provides statistics on the last sync run (via the info button). It will tell in detail which files have been synced, added or deleted.
  • Client will go offline while the server in in maintenance mode (feature available with ownCoud master only)
  • Improved SSL Certificate acceptance
  • All sizes of the new icons are available.
  • Support files > 2 GB on all platforms for uploading.
  • Fixed some minor memory leaks and again saved some server requests through optimizations.
  • Improved error reporting to the user.
  • Remove legacy theming support.

We would appreciate if you give this release a test ride. Note that because it is beta you should make extra sure to have have backups of your data.

If you want to give feedback, please use our mailing list for general discussion and the issue tracker for bug reports. Please read our new guidelines on bug reporting before!

Download Links:

Sources:

Have fun!

the avatar of Han Wen Kam

My openSUSE 12 Journal - 8: IBM Notes 9.0 public beta

I was going to install Lotus Notes 8.5.3 on openSUSE 12.2... but a good friend of mine (Lotus geek) informed me that the next great version IBM Notes 9.0 is ready as an open beta.  He challenged me to live life on the edge again and, I accepted! L-)

Link to download IBM Notes/Domino 9.0 public beta
Link to the public beta forum.

I would like to draw your attention to the fact that IBM has dropped the Lotus brand and name this new major version IBM Notes 9.0 Social Edition.  This is a great statement of intent and direction for this product/solution.

Installation:

Pre-requisite:  You will need to uninstall previous versions of Lotus Notes (if any).  Note that installing both 8.5.x and 9.0b is not supported (officially).

After you have downloaded the tarball for Notes 9.0b, untar it.  You will notice a bunch of RPMs and a smartupgrade.sh script.  Run/execute the script as root.  Its really that simple. :)

[Update on 23 Jan 2013]:  If running smartupgrade.sh script did not work for you, don't fret.  In the same directory where all the ibm_* rpms reside.  Execute, as root, zypper in ibm_*.rpm and let zypper figure out all the dependencies for you.  All good. :)

The Notes 9.0b icon can be found via Application Launcher -> Applications -> Office -> More Programs -> IBM Notes.  You can right-click and select Add to Favourites so that you don't have to navigate that much just to start it later.

Note that in your very first startup, it will launch a text console for you to accept the license... just in case you miss it and wonder why you are stuck at the splash screen and nothing happens.

Read more »

the avatar of Han Wen Kam

My openSUSE 12 Journal - 7: Printing to PDF

One more thing... that I forgot to mention in my previous entry is the topic of printing to PDF.

I'm quite surprised this capability is not included in the base openSUSE 12.2 install since we have OSS version of the Adobe PDF reader (Okular). :-/

Scenario/Use Case:
You need to print out a document directly into a PDF format file, instead of killing trees.  Some examples are:
  • Printing online receipts directly into a PDF for your electronic filing
  • Converting some page or document into PDF format using the Print function
Do note that if your document can be opened and edited in LibreOffice (comes with 12.2), and you want to convert that document into a PDF, you can do that by clicking the PDF button within LibreOffice.

Solution:

Read more »