Skip to main content

the avatar of Andres Silva

Another Proposal

Hello friends

Here is an SVG wallpaper proposal for a default wallpaper on openSUSE 13.1. I tried to go for typical bamboo reeds and a dark background. The design reminds me a lot of regular plants that one can feature in an office so the idea here is to link that to the wallpaper. There is also a very subtle complexity on the graphics. I tried toning down the green strength so that it does not become busy.

I hope you like it.



Now remember that this submissions will end in about 6 weeks, at which time "Ilmehtar" will work with the images and start the packaging process and then the rest of the designs will continue to come up.

It is great seeing that a few of you have made submissions and be sure that they are taken into account once an overall design for the next distribution is started based on the chosen wallpaper.

Keep up the good work!

PS: I placed an SVG version of the "aurora" wallpaper I made a few weeks ago and it is on GIT. Obviously the quality is different and so are the colors. If there is a better feel for the svg version, let's work with that one.

-- Andy (anditosan)
the avatar of Klaas Freitag

What's on in Nightly?

We ownCloud Client devs were quite busy doing bug investigations and two releases the last couple of weeks. But that does not mean that nothing went into feature branches. It did, and now we can start to think of a release 1.3.0 with a couple of new features for the client.

Here is a small overview of what went into ocsync master (actually the dav branch) and into mirall master.

Note that this is alpha state software, but it’s already available for testing from our nightly builds at the ownCloud nightly repository.

If you enable the nightly package repository on your system, please be sure to use the machine for testing purposes only. Windows and Mac nightly builds can be found here to download.

csync: Big File Chunking

Handling big files over HTTP is difficult, if files grew bigger than a gigabyte, we faced multiple problems. To deal with that, we thought of splitting up big files and transmit the parts to let the server finally assemble the file again once all parts are there.

We wrote a little library to implement that, called httpbf. It is now integrated in the current development branch. You will see files big files split up into parts for transmission to the server. With that there should not be a filesize limit to work with any more, except the limits we have from the operating system etc.

Up- and Download Resume

With big file chunking, we also introduce up- and download resume. If a file transmission was interrupted and is started over again later, only the missing parts are going to be pushed again. However, we’re not yet transmitting only changed chunks for existing files yet, just to answer that question here before it comes up. That will be subject of more enhancements.

Source File Verification

Another problem with big files is that if one gets copied into the synced dir on the local machine, the copy is not finished before the sync acutally starts. That can result in useless transmissions because inconsistent data is synced.

We added code to the httpbf library that checks for the integrity of the source file. When the first chunk is transmitted, it is checked if the file has still the size and mod time from the beginning. If not, the library waits for two seconds and starts over with a check again. That way, it waits until the source file has stabilized. A final check if the source file hasn’t changed during upload is done for every file when the upload is finished.

CSync Context Reuse

There is the very unpleasant problem on some distros (namely Ubuntu and Fedora) that the ownCloud Client wastes file descriptors. We figured that this is because the system libraries on that platforms fail to unload the csync ownCloud module properly.

Version 1.2.5 contains a quick fix for that, but the real fix is to reuse the csync context within mirall and not build it up and down for every sync run as we did until now. So we developed the function csync_commit which commits the results of the sync run to the database and leaves the csync context intact for the next run. That way we just load and unload the ownCloud module on time and not every 30 seconds. The csync patch already went upstream.

Mirall: New Setup Dialog

newsetup_sThere is also the new setup dialog in the nightly builds: It is much more simplified compared to the old one, user only needs to add the url and user credentials and thats it. Also, it syncs the whole ownCloud to a local folder, just like other boxes do. That is one of the most often heard enhancement requests, and here we go.

That all I think would qualify for a good 1.3.0 release, but we need more time to fine tune,polish, test and bugfix. But we would appreciate if people could help test. Please report bugs in the client’s bugtracker. We need to find bugs prior the release, and that happens with your help!

Have fun & Thanks a lot for testing!

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

Fosscomm 2013 at Athens

Fosscomm is the annual conference of the Greek Free Software communities. This year took place on April 20-21 at the Harokopio University of Athens and I had a presentation with Ευστάθιος Ιοσιφίδης (Eustathios Iosifidis). We organized the road trip with friends from Volos and Thessaloniki.

openSUSE-el

The greek openSUSE community had a handful of presentations (most of them done by or together with Ευστάθιος Ιωσηφίδης (Efstathios Iosifidis). Iosifidis had a whole six of them, however i only managed to watch the first one about OwnCloud. Then we co-presented “Developments and Usage of E17 on openSUSE 12.3” a talk about the excellent Desktop Shell Enlightenment 17 and what work has been done for it to be packaged and ready so you can get an awesome openSUSE flavored experience while running it :). E-presentation

Αγγελος Τζότσος (Aggelos Tzotsos) also took part as openSUSE community representative at the panel held before the closing of the conference.

Gentoo-el

This year the greek Gentoo community also had a booth in the conference like openSUSE and Fedora. There were Gentoo stickers of varying sizes and for the price of 1 Euro one could get a Gentoo pin to support the foundation. Παύλος Ράτης (Pavlos Ratis) also took part as Gentoo representative at the Communities Panel held before the closing of the conference.

Other Presentations and Stuff

This year a few new community members and friends tagged along (Φανή Δήμου (Fani Dimou) and Χάρης Αντωνάτος (Charis Antonatos)), we also watched a few presentations together and participated in a mini workshop for the LibreOffice BoF.

Winnie: a framebuffer window system

In this presentation Ελένη-Μαρία Στέα (Eleni-Maria Stea) showed us her new project. A windowing system named Winnie that talks directly to the framebuffer (thus needs no X to run). Mandatory Screenshot and link to source: Winie screenie Source Code Demo Video

CSS in the 4th dimension: Not your daddy’s CSS animations

In this presentation done by Λία Βέρου (Lea Verou) we learned about the upcoming support in recent(or not that recent) versions of web browsers of CSS features like Transitions and Animations.

Dancing with teraFLOPS: parallelism and multiprocessing

John Tsiobikas talked about openC, GPU programming technologies and about openMP. He also showed a few video examples of the progression of a raytracing demo from running in a serial way to being parallelised with openMP.

PROTOS: An Open Source Early Warning System

In this presentation done by Vasilios Vlachos we learned about the PROTOS warning system. The PROactive Thread Observatory System, which is basically a server/client based IDS, PROTOS

Security BoF

I don’t remember the precise title of this session but it was really interesting, here we talked about topics ranging from mobile to distro and enterprise security standards. We also discussed a few recent insidents and breaches that happened this year.

LibreOffice / Vocabulary / Linguistics / Thesaurus BoF

This BoF was coordinated by Pantelis Koukousoulas a Libre Office contributor and a founder/developer of openthesaurus.gr. We discussed about the current state of Greek Vocabularies and Thesaurus in LibreOffice, how people could help resolve the issues and how one could contribute to the projects.

I spent the rest of the conference helping around at the various booths (mostly on Gnome-el, Gentoo-el, openSUSE-el) and talking with people. I also met old friends and people i had only talked to online (via IRC).

Congratulations to the people from HUA for the organization! :)

Here are a few albums with photos from the conference fosscomm photos

  • Update: Fixed the description for winnie and added a more recent Demo Video
a silhouette of a person's head and shoulders, used as a default avatar

Decorating your Xamarin.iOS code with Behaviors

Note: this is the post in which I'm getting out of the closet and make it clear that I had an affair with Silverlight. I'm still thinking about it sometimes, and when I do, this is what happens...

Every time you have to ask your user "What's your favourite colour" or "What is the air-speed velocity of an unladen swallow?" from within your iOS application, you have to ask yourself "Wait, will the field still be visible with the virtual keyboard displayed ?"

I don't know how you do it (experience sharing is welcome), but me, I do it this way:

public override void ViewDidLoad ()
{
 base.ViewDidLoad ();

 //Set Bindings and Commands
 placeField.Bind (ViewModel, "Place");
 sendButton.Command (ViewModel.SendCommand);
 busyIndicator.Bind (ViewModel, "IsBusy");

 //Slide the view on keyboard show/hide
 placeField.EditingDidBegin += (sender, e) => {
  UIView.BeginAnimations ("keyboardslide");
  UIView.SetAnimationCurve (UIViewAnimationCurve.EaseInOut);
  UIView.SetAnimationDuration (.3f);
  var frame = View.Frame;
  frame.Y = -100;
  View.Frame = frame;
  UIView.CommitAnimations();
 };

 placeField.EditingDidEnd += (sender, e) => {
  UIView.BeginAnimations ("keyboardslide");
  UIView.SetAnimationCurve (UIViewAnimationCurve.EaseInOut);
  UIView.SetAnimationDuration (.3f);
  var frame = View.Frame;
  frame.Y = 20;
  View.Frame = frame;
  UIView.CommitAnimations();
 };

}



It works fine, but looks messy next to readable code setting bindings or commands (those come from a very light Binding library I'm working on). Then yesterday evening, I had a realisation. It looks very similar to Silverlight Behaviors, so this code could just be like:

 placeField.Attach (new SlideOnEditBehavior (View, defaultPosition:20, alternatePosition:-100));

And the SlideOnEditBehavior is kept aside (OnDetaching implementation left out for clarity):

public class SlideOnEditBehavior : Behavior
{
 UIView view;
 int defaultPosition;
 int alternatePosition;

 public SlideOnEditBehavior (UIView view, int defaultPosition, int alternatePosition)
 {
  this.view = view;
  this.defaultPosition = defaultPosition;
  this.alternatePosition = alternatePosition;
 }

 protected override void OnAttached ()
 {
  base.OnAttached ();
  AssociatedObject.EditingDidBegin += (sender, e) => {
   UIView.BeginAnimations ("keyboardslide");
   UIView.SetAnimationCurve (UIViewAnimationCurve.EaseInOut);
   UIView.SetAnimationDuration (.3f);
   var frame = view.Frame;
   frame.Y = alternatePosition;
   view.Frame = frame;
   UIView.CommitAnimations();
  };

  AssociatedObject.EditingDidEnd += (sender, e) => {
   UIView.BeginAnimations ("keyboardslide");
   UIView.SetAnimationCurve (UIViewAnimationCurve.EaseInOut);
   UIView.SetAnimationDuration (.3f);
   var frame = view.Frame;
   frame.Y = defaultPosition;
   view.Frame = frame;
   UIView.CommitAnimations();
  };
 }
}

Cleaner. Simpler. Reusable. And it also supports BehaviorCollections:

 placeField.Attach (new BehaviorCollection {
  new SlideOnEditBehavior (View, defaultPosition:20, alternatePosition:-100),
  //Any other behavior here
 });

As expected, the code for all of this is trivial, but if you like the idea and save yourself the 30 minutes it takes to write it, it's on Github.

[UPDATE: 2013-04-26] I updated the code as per Stuart Lodge suggestion (of MvvmCross) to use WeakReference to NSObjects. Doesn't change the API at all.


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

Scheme? Functional Programming? Why?

Studying functional programming is an opportunity to greatly broaden your horizons, discover a whole new way to represent programs, to approach problems and reach solutions while thinking about languages. Programming in a functional language is pretty much fundamentally similar to programming in any other type of language (like logic programming), it represents programs and algorithms through distinct forms of abstraction and gives you a new toolset with which to solve programming problems. many of the techniques of functional programming are beginning to be included in new mainstream languages, so taking the time now to immerse yourself in them will leave you with a headstart and a thorough understanding of those techniques.

In that regard i started learning Scheme and reading/solving the exercises in the book “Structure and Interpretation of Computer Programs. Scheme is a very small language which is one of the two major lisp dialects (the other being Common Lisp), one of the oldest functional programming languages. Scheme is small and elegant (the entire language can be built on top of a handful of primitive list manipulating operations), there is also a multitude of sources and educational material to choose from (should you decide to study it too). As such, Scheme is the perfect place to dive into the techniques of functional abstraction. In your new venture make sure to have a look and get accustomed with techniques like:

  • recursion
  • macros
  • closures
  • first class functions
  • lamda expressions

Vim ? with a Lisp Variant?

Yes, i love vim and in no way am i changing editor just to write in a new language so no Emacs is not an option.

Movement

" A few lisp specific settings
 set lisp               " enable vim's lisp mode
 set autoindent         " new lines copy previous indent 
 set showmatch          " shows matching paren/brace/bracket
 set cpoptions=-m       " when included a showmatch will always wait half a second,
                        " when not it will either wait half a second or until you type a char.
 set foldmethod=indent  " fold indented text

 %     " find the matching paren/brace/bracket
 [(    " go to previous unmatched "("
 [)    " go to previous unmatched ")"

 " this saved me a few keystrokes
 :map [9 [(
 :map [0 [)

 " these can help for searching "(" or ")"
 :map <C-F9> /(<cr>
 :map <C-F10> /)<cr>

 " selecting stuff
 ib   " inner block selection
 ab   " outer block selection

 " like C you can indent and reindent stuff with "=" and "=="

TSlime.vim

TSlime is a simple vim script to send portion of text from your vim buffer to a running interpreter session. You only need to be running vim inside a tmux session and provide the session name,window,pane number to tslime so that it knows where to send subsequent commands.

Then you just select your desired block of text and send it over with

the avatar of Han Wen Kam

My openSUSE 12 Journal 14: IBM Notes 9 on 12.3

Syed Tassawur Hussain, this is for you.  Thank you for prodding and giving me the motivation to complete this blog entry on how to install the GA version of IBM Notes 9 Social Edition. :)

Back in the days of using 12.2, IBM Notes 9 was in Beta and I have blogged about how I installed and configured this combination here.

With my move to 12.3, I was going to install the now GA version of IBM Notes 9.  Given how impressed I was with 12.3, and all the additional software and customizations applied in 12.2 seems to transfer seemlessly to 12.3, I was naturally mildly surprised (and annoyed) that installation of IBM Notes 9 did not go quite as smoothly as Notes 9 Beta on 12.2.

Let me jump to the crux of the matter, one particular library (libjpeg62) has been removed from the media and default online repositories of 12.3.  This libjpeg62 was previously in 12.2 and earlier versions of openSUSE.  As such, IBM Notes 9 installer and even zypper were not able to install execute successfully.

Here's how I arrive at this conclusion and was able to successfully install IBM Notes 9 on openSUSE 12.3.  While I have not tried this on the enterprise flavour of openSUSE (ie SUSE Linux Enterprise Desktop 11), should you encounter the same challenges, the steps below may be of help.


Read more »

the avatar of Klaas Freitag

ownCloud Nightly Builds

as you might have heard, we’re providing nightly builds of the parts of ownCloud, which is ownCloud community server as well as the ownCloud client on its supported platforms Linux, Windows and Mac.

The nightly builds of the client for Windows and Mac and the source balls can be downloaded from the nightly directory on our download server. They are named after the last release, followed by a date time stamp, which is simply a concatentation of the year, month and day the nightly was built on. For linux we maintain a so called nightly repository in the openSUSE Buildservice which builds for various distributions. That can be added to the linux package management system and that way every morning, an update is there for you. The ownCloud server is built only in the nightly repository from this daily source.

What are nightlies for?

To test ownCloud is a very difficult task. ownCloud is a complex system consisting of variuos parts (anybody thought ownCloud is just a “LAMP web app”?) which supports a huge variety of environments. That multiplies to a huge variety that needs to be tested. We had issues with that in the past and as a result, providing easy access to ready-to-run testing versions is one important action we are taking to improve quality as that enables more people to participate on tests.

Of course nightly builds are not released software, nor got they extensive testing. Nightly builds must never be used on production installations, please, really don’t do.

But maybe you have a test server or virtual machine somewhere in spare. So it would be great if you could install a nightly version on that, combine it with a nightly built client, and see if everything runs as you would expect it.

Another great purpose of the nightly builds is to use it for bug verification. In client development we often comment on bugs with sentences like this is fixed now, please verify with the current nightly build. That way bug reporter get a very quick way to verify the fix of their issue and developers can be sure that their fix really is sufficient.

How are nightlies built?

We are doing the nightly builds through an instance of Jenkins, a continous integration server. With a little script we wrote Jenkins feeds the OBS every night, so this is completely automatted. But more on that in a subsequent blog.

the avatar of Klaas Freitag

ownCloud Client Release 1.2.5

Today is release day!

We just release ownCloud Client 1.2.5, hurrah! It’s a small bug fix release, but it will make more people happy users! It fixes three ugly crashes we found with the help of encouraged bug hunters. One of them was an race between our thread which runs csync and the Qt SSL stack we’re obviously using. That caused a crash which happened after quite some run time, or also never… Hard to reproduce and debug, but finally Danimo and his mighty friends were able to nail that.

The new client can be found through it’s download page, here is the Changelog.

If you find issues, please help us to improve ownCloud by commenting or reporting the bugs on our bugtracker. Thanks!

the avatar of Andrew Wafaa

Overview of the openSUSE ARM Hackathon

I just published a blog post on ARM’s corporate blog with an overview of the recent openSUSE ARM Hackathon. We didn’t quite manage all the tasks that we had hoped for, but we did get the big ones done. For me it was great to meet so many old friends, and some new ones. I’d like to say a few thanks to some of the people involved, they all did so much and this is just some of the things that they did:

the avatar of Han Wen Kam

My openSUSE 12 Journal 13: NetworkManager Config for Cisco LEAP Wireless

This is my 100th blog entry!  :)

In short, I wasted a few days and a weekend to get my shiny new 12.3 to connect with my company's Cisco LEAP (henceforth referred to as just LEAP) wireless network.

For those who do not have a requirement to connect to wifi via LEAP but are curious anyways, please see this link for LEAP.

To save you the same grief, here is the answer (see screenshot below) on how to configure NetworkManager:

The one on the Left WORKED; the one on the Right did NOT work for me
Disclaimer: Your mileage may vary (YMMV) because I did not test this against another LEAP wifi network outside of my company's implementation.

Read more »