FLOSS Project Planets

Photographing Bats

Planet KDE - Sun, 2014-12-14 21:46
One evening last summer the dogs and I were on the beach near our home. Just as it got dark a group of bats came out of the brush and flew back and forth along the shore feeding on the mayfly hatch. Of course I wanted to get a photo. So began the saga. I learned an enormous amount, spent a substantial sum, and now want to describe it for posterity.

I chanced upon a location where a small number of bats are concentrated in a small area making it possible to get a photo. The beach was enclosed on one side by bush, the other by a dock. The access to the beach was a trail, and it seems that bats either head for open space or feel their way by following a boundary of some sort. So during the time of peak activity, about 15 minutes just as it got dark, there was a certain density in the air main it possible to capture the odd one in a frame. Another advantage was if I sat in a particular location, I could see the bats against the western sky and the reflection on the water.
The bats stayed close to shore for 10-15 minutes then spread out over the lake. It is very dark, the subject moves very quickly in unpredictable ways. And they are small. To capture them in a photo requires artificial light, a very short exposure to freeze movement, and some way to point and trigger the camera to get one in the frame.
Start with exposure. High speed photography is the art of capturing very fast events; a bullet, a balloon popping, drops of water. The extremely short exposure are created with a flash unit in a dark room. If you look at the specifications for an electronic flash unit you will see that the duration shortens as the power decreases. At full power the flash duration is close to the synchronization speed of your camera. My Pentax K3 is 1/180 of a second, my Metz 50 AF1 at full power has the light on for 1/125 of a second. At 1/4 power it is 1/2000 of a second, much better. That is approaching the exposure speed where you can freeze movement. Still too slow for a bat. I found 1/8 power, or 1/4000 of a second better. The photo above was at that speed. http://www.gock.net/2012/01/flash-durations-small-strobes/
Now for a lens. You can't focus in real time, they are too quick and you can't see them. So you want to set up a box in space that is in focus and illuminated. I tried different lenses; 35mm which had a wide field of view and captured lots of action, unfortunately was soft so the shots were unsatisfactory. 100 mm lens which was sharp but the area in focus was to far away to illuminate with the flashes that I had.
Intensity of light decreases at a rate of the square of the distance. The box was too far away. A 50 mm lens seemed to give me the best results.

Aperture? Here a depth of field table is useful (http://www.dofmaster.com/dofjs.html). Depth of field is the space in which the lens is in focus. A large aperture, or lower f-stop number gives a narrow depth of field. The closer your subject the narrower the depth of field. The longer the lens in mm the narrower the depth of field. For our purposes the further away, the shorter the lens and the higher the f-stop the larger the box where things are in focus will be. But the further away the more light you will need. The further away the smaller the bat will be in your frame. Same with a short lens. The higher the f-stop you may run into distortion as well. I found f8, focusing at 10 feet with a 50mm lens gave me a box about 4 x 4 3/4 x 3 feet.
One flash isn't enough. I had three. One Metz 50 AF1 on the camera, and two Yongnuo 560ii manual flash units assisting. All on 1/8 power. This was the challenging part. There are a few ways to trigger multiple flashes. 1/4000 is .25 milliseconds. The Yongnuo units are a bit slower than that, but bear with me. Optical triggering, which I used takes .06 ms, or roughly a quarter of the total exposure time. Wireless radio triggers take about .25 ms to trigger, meaning that the master flash would be almost finished before the slave units would begin. I noticed that the shots where the bat was flying across the frame were soft, possibly indicating too long of an exposure. That extra .06 ms may have been the difference. In any case speed is of the essence.
I initially had the the flash units close together, but found that the images were unpleasant. 

A 5 ft long piece of aluminum angle made a bracket with the camera in the middle and the flash units on either end. It made a very big difference in image quality.

How to capture the varmints? I used a remote shutter trigger so I could sit where they were visible, then held down the button. I would take hundreds of shots and get maybe two dozen with something in the frame, and maybe one or two that were interesting.
This pray and spray method has a drawback. The flash units need to regenerate between exposures, and will shut off from time to time to cool off, or to allow the battery discharge to catch up. I used Duracell precharged NiMH 1.2 v 2400mah AA batteries, freshly charged for each session. They worked very well. I have one set of Eneloops and found they didn't keep up with the Duracell's. Even then I would get dark exposures as one or more of the flashes missed. The solution is to shoot less. I learned discipline, which helped. I also invested in a trigger device, but ran out of time. The weather changed, or the hatch changed and the bats stopped hanging around the shore.
So next year. I am already planning and accumulating. Another two flashes. I will wire them together, getting rid of any latency. At the same distance I might be able to set them to 1/16 power. The wire harness is ready and tested. I need another support, which entails the purchase of a light stand. And I intend to test the trigger device to figure out how to set it up.
I got about 80% of the way there. The shots are decent but not excellent. My goal is to get enough excellent shots where they are also doing something interesting. Just getting one was a challenge. Now to get a good one.
Categories: FLOSS Project Planets

Justin Mason: Links for 2014-12-14

Planet Apache - Sun, 2014-12-14 18:58
Categories: FLOSS Project Planets

Drupal core announcements: Drupal core security release window on Wednesday, December 17

Planet Drupal - Sun, 2014-12-14 18:15
Start:  2014-12-17 (All day) America/New_York Online meeting (eg. IRC meeting) Organizers:  David_Rothstein

The monthly security release window for Drupal 6 and Drupal 7 core will take place on Wednesday, December 17.

This does not mean that a Drupal core security release will necessarily take place on that date for either the Drupal 6 or Drupal 7 branches, only that you should prepare to look out for one (and be ready to update your Drupal sites in the event that the Drupal security team decides to make a release).

There will be no bug fix release on this date; the next window for a Drupal core bug fix release is Wednesday, January 7.

For more information on Drupal core release windows, see the documentation on release timing and security releases, and the discussion that led to this policy being implemented.

Categories: FLOSS Project Planets

Gregor Herrmann: GDAC 2014/14

Planet Debian - Sun, 2014-12-14 16:27

I just got a couple of mails from the BTS. like almost every day, several times per day. now it made me realize how much I like the BTS, & how happy I am that it works so well & even gets new features. – thanks to the BTS maintainers for their continuous work!

this posting is part of GDAC (gregoa's debian advent calendar), a project to show the bright side of debian & why it's fun for me to contribute.

Categories: FLOSS Project Planets

Mario Lang: Data-binding MusicXML

Planet Debian - Sun, 2014-12-14 15:30

My long-term free software project (Braille Music Compiler) just produced some offspring! xsdcxx-musicxml is now available on GitHub.

I used CodeSynthesis XSD to generate a rather complete object model for MusicXML 3.0 documents. Some of the classes needed a bit of manual adjustment, to make the client API really nice and tidy.

During the process, I have learnt (as is almost always the case when programming) quite a lot. I have to say, once you got the hang of it, CodeSynthesis XSD is really a very powerful tool. I definitely prefer having these 100k lines of code auto-generated from a XML Schema, instead of having to implement small parts of it by hand.

If you are into MusicXML for any reason, and you like C++, give this library a whirl. At least to me, it is what I was always looking for: Rather type-safe, with a quite self-explanatory API.

For added ease of integration, xsdcxx-musicxml is sub-project friendly. In other words, if your project uses CMake and Git, adding xsdcxx-musicxml as a subproject is as easy as using git submodule add and putting add_subdirectory(xsdcxx-musicxml) into your CMakeLists.txt.

Finally, if you want to see how this library can be put to use: The MusicXML export functionality of BMC is all in one C++ source file: musicxml.cpp.

Categories: FLOSS Project Planets

Indian couple (1 Xoogler) buys small US bank, innovates online payments

LinuxPlanet - Sun, 2014-12-14 14:31

By Vasudev Ram

Interesting story of innovation in the financial space, involving an Indian couple (of whom one is a Xoogler a.k.a ex-Googler), a small US bank, and cheaper / faster online money transfers / payments:

(Did you know that the English word bank supposedly comes from the old Italian word banca (for bench)?

An Indian couple has bought a small bank in Weir, Kansas, USA, and is using it to innovate in the online financial payments / money transfers space (while preserving and improving the existing brick-and-mortar business of the bank). The site through they allow faster / cheaper payments or money transfers from the US to India (and currently, or soon, other countries), is globalremit.com. Their rate for sending a payment under $1000 USD is $2.50, which works out to 0.25 percent. For above $1000, it is free (disclaimer: all this is according to what I saw on the site recently).

Suresh Ramamurthi earlier worked at Google on the Checkout product, and Suchitra Padmanabhan earlier worked at Lehman Brothers and Bankers Trust.

I saw this news via this tweet by Quentin Hardy (@qhardy), Deputy Tech Editor, The New York Times. (Saw it from a retweet by Bernard Lunn.)

The tweet goes thusly:

"Guy from India learns payments at Google, buys tiny Kansas bank, transforms money. Great, from @nathanielpopper dealbook.nytimes.com/2014/12/13/sma…"

And here is the New York Times article referred to in the tweet:

Small Bank in Kansas Is a Financial Testing Ground

- Vasudev Ram - Dancing Bison Enterprises

Signup for email about new products from Vasudev Ram.

Contact Page

Share | var addthis_config = {"data_track_clickback":true}; Vasudev Ram

Categories: FLOSS Project Planets

Drupal Association News: Introducing the Drupal.org User Personas

Planet Drupal - Sun, 2014-12-14 14:15

As part of our mission to reinvent Drupal.org, we’ve been digging deep to understand who uses the website and how. At DrupalCon Austin, we began the process of discovering the personas of users who visit Drupal.org: to do so, we interviewed numerous Drupal.org users and asked questions about how frequently they use Drupal.org, how they use the website, their frustrations with Drupal.org, the things they enjoy about the site, and how we can make it easier for people to learn, use, and connect on Drupal.org.

Once we had that data, we set about looking for patterns and common themes. We built categories where we grouped people's similar experiences and frustrations together, and at the end of the process we had come up with five distinct personas that can apply to everyone who visits Drupal.org. These personas detail our users’ familiarity with Drupal software and Drupal community, how they use Drupal.org, how they contribute (or don’t), and more.

The five personas that we drew up are based on proficiency in Drupal and the Drupal ecosystem. They are:

  • Newcomer: This person has heard of Drupal, but has never built a Drupal site and doesn’t know where to start.
  • Learner: This person knows a bit about Drupal and the general Drupal ecosystem. He or she may have built a Drupal website, but likely has used only a few contrib modules and hasn’t made any customizations.
  • Skilled: This person understands and is fluent in Drupal-specific terminology, can build a Drupal website themselves using contributed modules, themes or distributions, or with the help of Drupal service providers. She or he has spent a decent amount of time working with Drupal, and is lightly engaged with the community, often not directly, via some sort of liaison.
  • Expert: This person has a deep understanding of Drupal and the Drupal ecosystem, knows how to build advanced websites with Drupal. Expert typically has been working with Drupal for at least a couple of years, is actively engaged with the community online and via local/national events, and actively contributes back in a variety of ways.
  • Master: This person has pervasive knowledge of Drupal and the Drupal ecosystem. He or she knows how to build Drupal websites of great complexity, is deeply engaged in the Drupal community, knows and has access to other Masters. Usually this person has been using Drupal and been around the Drupal community for a long time.

Proficiency-based personas are a new facet through which we can look at our community. It’s important to note that these personas are NOT only about developers. All kinds of roles can be on different levels of this ladder — UX designers, project managers, and business owners can be Experts and Masters, just like developers and themers. Simultaneously, people can have different backgrounds and be experts in other areas, but when it comes to fluency in Drupal and Drupal ecosystem, they would be represented as Newcomers, or Learners, or any of the other personas.

How will we use personas?

User personas will guide feature prioritization and feature development for Drupal.org, as we improve the site to make it easier for our users to progress from Newcomers to Masters. There are a variety of different ways we can go about it, but since our resources are limited, we will focus on just a few critical areas that will have the biggest impact on the overall user experience. So, to start our work, we’ll be focused on removing barriers and helping our users move more easily from Learners to Skilled. We found that our users have great success moving from Newcomer to Learner today, whereas moving from Learner to Skilled is much more difficult, since so much of the project is focused on doing things “the Drupal way” and learning the processes. Our secondary focus will be on moving users from Skilled to Expert.

Growing our pool of Skilled users is crucial, because by doing so we grow the number of people who own and/or build websites using Drupal, thus grow Drupal adoption. On the path from Skilled to Expert is when our users begin to give back by contributing patches, writing documentation, building and sharing modules and themes, helping others in the issue queues, and bringing in their friends. By growing the number of Skilled and Expert users on Drupal.org, we’ll directly grow our community. It’s a win-win.

By growing Drupal adoption and growing our community, we directly support our mission and goals as an organization (you can read more about those in our 2015 Leadership plan and budget), and that’s why improving Drupal.org is one of our organizational imperatives in the coming year. The 2015 Drupal.org roadmap outlines the numerous ways we’re planning to do it.

As we use personas in our work, you may hear us refer to our “Primary” (Learner and Skilled), “Secondary” (Expert), and “Tertiary” (Master and Newcomer) personas — these distinctions correspond to the order of conversions we look to make easier, not to the users’ importance. Every Drupal.org user is important to us!

As we modify Drupal.org, we’ll be using the personas to help us make the experience for the whole community better. After all, that’s what these personas are — a representation of the entire Drupal community. To help bring our personas to life, we talked to five different community members, each representing one user persona. Over the next few days we’ll share the stories of each person’s unique Drupal journey so that we can see how they got to where they are now. We’d like to say a big thank you to each of our volunteers for sharing their personal stories — as always, they’ve reminded us how fantastic our community really is.

At the end of the series, we’ll close it all off with interviews with several prominent community members who will share their views on how personas can be used outside of Drupal.org development.

We enjoyed working on the user research project and are excited to share user personas with the Drupal community. As a reminder, you can view and download the full report. Take them, use them, go out and make great things!

Personal blog tags: drupal.org user research
Categories: FLOSS Project Planets

First Theme added

Planet KDE - Sun, 2014-12-14 13:13

Today I added my first theme for Pairs. You can find that here.  In my current project “Theme Designing for Pairs” which is a project from “Season of KDE” and mentored by Heena Mahour, the main task is adding themes.

When designing a theme for a game designed for pre-school children, you can’t just draw some pictures and add. The pictures will be educational and easily identifiable. So as my first theme I designed a theme of fruits. It contain 8 fruits; apple, banana, pineapple, mango, strawberry, pairs, orange and grapes. It will support the “Pairs”, “Relations”, “Logic” and “Words” game modes. A screenshot from “Pairs” game mode will look as follows:

To create the image files in the svg format, I have used inkscape.  Even though it took some time to be familiar with its functionality first, once you draw a thing or two you get addicted to it with its cool features.



Filed under: KDE, Open Source Tagged: KDE edu, Pairs, SoK
Categories: FLOSS Project Planets

Friendly Machine: Drupal 8 and Backdrop CMS - A Brief Comparison

Planet Drupal - Sun, 2014-12-14 12:28

I recently had the opportunity to see Nate Haug deliver a presentation about the Backdrop CMS project and it's upcoming 1.0.0 release (Jan. 15). It had been a while since I had taken a look at Backdrop and I came away quite impressed with both its progress and direction.

Many of you reading this will be familiar with Backdrop, but for those of you who haven't heard of the project, it is the first fork of the Drupal project, and the source of a great deal of controversy and angst in the Drupal community.

Backdrop has been perceived as a threat by many Drupalists, but I think as we step through the features and approaches of the two projects, those fears will be at least somewhat allayed. My own take is that the two systems seem complementary instead of competitive.

As a bit of background for the origin of Backdrop CMS, Nate told the story of his reaction to the massive changes in Drupal 8. He realized that his own business, Webform.com, was going to have major issues with the upgrade path.

It was going to take a huge effort to upgrade his site - we're talking many, many months - to simply replicate the work he had already done in Drupal 7. He didn't want to throw away the huge investment he had already made in his business and start over. His solution to the problem was forking Drupal to create Backdrop CMS.

And then...all hell broke loose.

Feature Comparison

I'll set the controversy behind Backdrop aside and get straight into a comparison of the features. Keep in mind, however, I'm using the term "features" here a bit loosely. That's because I also want to talk about how Backdrop is managed as well as other differences between the two projects. This list is not exhaustive. It just has some of the things that seem to me the most significant or interesting.

Target Market

I know many will squirm uncomfortably when I say this, but the target market for Drupal 8 is large enterprises. By contrast, the target for Backdrop is small to medium size businesses and non-profits - really the original market of the Drupal project. As we go through this list, you'll see how this targeting plays out in some of the decisions the two projects have made.

Configuration Management

This has been widely touted as the killer feature of Drupal 8. If you've dreamed of having all the cool configuration management features in D8 available for Drupal 7, then Backdrop may be tempting because that is essentially what it offers. Instead of using YAML files to store configuration data, however, Backdrop uses JSON. Otherwise, it's pretty much the same.


Another one of the major additions to Drupal 8 is the Twig template engine. This is a big plus for many front-end folks and it's something that is not available in Backdrop at this time - and I'm not sure I would look for it in the near future. Backdrop currently uses the Drupal 7 PHPTemplate theme engine.

Responsive Images

As a front-end developer, I have a particular interest in this one. Drupal 8 includes the Responsive Image module, which is essentially a reworking of the Picture module in D7.

At this writing, Backdrop doesn't have a responsive image solution. I asked Nate about this and he's not a fan of the Picture module approach (he favors using srcset, something that may possibly be added in versions 1.1 or 1.2 of Backdrop), so if that is something you require, it will need to be added as either a custom or contributed module.

Contributed Modules

Speaking of contrib, most of you reading this will be familiar with Drupal's massive collection of contributed modules. The contributed modules for Backdrop CMS will be hosted on GitHub and managed similar to how the jQuery project organizes its plugin registry. I don't think there have been any ports as of yet (all the energy is going to the 1.0.0 release), so this is pending.

Some of you may have heard that Drupal 7 modules will be compatible with Backdrop. This isn't true, primarily due to modules needing to be rewritten to support configuration management. Porting a Drupal 7 module should be fairly straightforward, however. Instead of storing config in the variables table, it needs to be in JSON files. Here's a video that will help get you started.

As a quick aside, having Backdrop (and eventually the contrib modules) hosted on GitHub seems like it will be a more familiar and friendly environment for potential project contributors.

Project Organization

The "do-ocracy" that is the Drupal project has been much discussed lately. Nate has organized the Backdrop CMS project along the same lines as the Project Management Committee of the Apache project. That was very wise in my opinion. It bodes well for the project.


Another really nice thing in Drupal 8 is the inclusion of a default WYSIWYG editor. Love them or hate them, virtually every client wants one, so now with D8 you won't have to add one yourself for every project. As of version 1.0.0, Backdrop doesn't have this functionality, but look for it in version 1.1 or 1.2.

I remember Nate saying something about it being ironic that Backdrop was launching both without Twig or a WYSIWYG since he and Backdrop co-founder Jen Lampton had been instrumental in bringing those to Drupal 8.

I suppose I should mention that Backdrop minor versions - from 1.0 to 1.1, for example - will occur regularly at an interval of about three or four months. So for the features mentioned that may be in version 1.1 or 1.2, it means they can be expected in either late spring or late summer.

Panels and Views

How about Panels and Views in core? Yeah, I like it! And that's what you get with Backdrop. Drupal 8 provides Views in core, but not Panels. It may be a while before Panels is ready for D8, but it may also be a while before D8 is ready, so I guess that's not a problem.

System Requirements and Backwards Compatibility

It may seem odd to group these two, but this is one point where the intended audiences (enterprise vs small organizations) are put into stark contrast. For example, Backdrop is intentionally friendly to cheap hosting. Drupal 8, by contrast, is almost certainly going to use more server resources than Drupal 7, potentially causing issues for those on shared hosting plans. 

For large organizations, the cost of hosting is not a big deal, but for some small organizations, it can be. So a solution architected to work well with limited resources may be attractive and also serves to highlight the different approaches between the two projects.

With backwards compatibility, we see the same philosophical divergence. Drupal has never focused much on backwards compatibility, making it a pain in the ass (and often expensive) to upgrade across major versions. The benefit of that approach is that Drupal has been able to innovate without being constrained by past decisions.

Backdrop, however, places a lot of value on carefully managing change so that existing sites can be upgraded affordably. I would recommend looking at Backdrop's philosophy, because it's there where you really find the motivations for the project and how it differs (and will differ more in the future) from the Drupal project. From system requirements, to upgrade path, to reaching out to hear voices not found in the issue queue, Backdrop CMS is consistently friendly to the needs of the little guy.

Wrap Up

Again, this isn't a comprehensive list of all the features or differences between the two systems. There is an issue on GitHub that might be of some help in learning more as well as this Drupal 8 feature list.

To me, these two projects don't compete with one another. Sure, some enterprises may use Backdrop and many small organizations may use Drupal 8. But really, the changes in Drupal 8 are a move toward the enterprise and the talk around Drupal 8 has reinforced that message. Having an alternative for small organizations on a budget and with a need to preserve software investments isn't a bad thing.

You may politely leave any comments below.

Categories: FLOSS Project Planets

Gregor Herrmann: RC bugs 2014/49-50

Planet Debian - Sun, 2014-12-14 11:01

it's getting harder to find "nice" RC bugs, due to the efforts of various bug hunters & the awesome auto-removal-from-testing feature. – anyway, here's the list of bugs I worked on in the last 2 weeks:

  • #766740 – gamera: "gamera FTBFS on arm64, testsuite failure."
    sponsor maintainer upload
  • #766773 – irssi-plugin-xmpp: "irssi-plugin-xmpp: /query <JID> fails with "Irssi: critical query_init: assertion 'query->name != NULL' failed""
    add some speculation to the bug report, request binNMU after submitter's confirmation, close this bug afterwards
  • #768127 – dhelp: "Fails to build the index when invalid UTF-8 is met"
    apply patch from Daniel Getz, upload to DELAYED/5
  • #770672 – src:gnome-packagekit: "gnome-packagekit: FTBFS without docbook: reference to entity "REFENTRY" for which no system identifier could be generated"
    provide information, ask for clarification, severity lowered by maintainer
  • #771496 – dpkg-cross: "overwrites user changes to configuration file /etc/dpkg-cross/cross-compile on upgrade (violates 10.7.3)"
    tag confirmed and add information, later downgraded by maintainer, then set back to RC by submitter …
  • #771500 – darcsweb: "darcsweb: postinst uses /usr/share/doc content (Policy 12.3): /usr/share/doc/darcsweb/examples/darcsweb.conf"
    install config sample into /usr/share/<package>, upload to DELAYED/5
  • #771501 – pygopherd: "pygopherd: postinst uses /usr/share/doc content (Policy 12.3): /usr/share/doc/pygopherd/examples/gophermap"
    sponsor NMU from Cameron Norman, upload to DELAYED/5
  • #771727 – fex: "fex: postinst uses /usr/share/doc content (Policy 12.3)"
    propose patch, installing config templates under /usr/share/<package>, upload to DELAYED/5 later, patch then integrated into maintainer upload
  • #772005 – libdevice-cdio-perl: "libdevice-cdio-perl: Debian patch causes Perl crashes in Device::Cdio::ISO9660::IFS's readdir: "Error in `/usr/bin/perl': realloc(): invalid next size: 0x0000000001f05850""
    reproduce the bug (pkg-perl)
  • #772159 – ruby-moneta: "ruby-moneta: leaves mysqld running after build"
    apply patch from Colin Watson, upload to DELAYED/2
Categories: FLOSS Project Planets

Enrico Zini: html5-sse

Planet Debian - Sun, 2014-12-14 10:32
HTML5 Server-sent events

I have a Django view that runs a slow script server-side, and streams the script output to Javascript. This is the bit of code that runs the script and turns the output into a stream of events:

def stream_output(proc): ''' Take a subprocess.Popen object and generate its output, line by line, annotated with "stdout" or "stderr". At process termination it generates one last element: ("result", return_code) with the return code of the process. ''' fds = [proc.stdout, proc.stderr] bufs = [b"", b""] types = ["stdout", "stderr"] # Set both pipes as non-blocking for fd in fds: fcntl.fcntl(fd, fcntl.F_SETFL, os.O_NONBLOCK) # Multiplex stdout and stderr with different prefixes while len(fds) > 0: s = select.select(fds, (), ()) for fd in s[0]: idx = fds.index(fd) buf = fd.read() if len(buf) == 0: fds.pop(idx) if len(bufs[idx]) != 0: yield types[idx], bufs.pop(idx) types.pop(idx) else: bufs[idx] += buf lines = bufs[idx].split(b"\n") bufs[idx] = lines.pop() for l in lines: yield types[idx], l res = proc.wait() yield "result", res

I used to just serialize its output and stream it to JavaScript, then monitor onreadystatechange on the XMLHttpRequest object browser-side, but then it started failing on Chrome, which won't trigger onreadystatechange until something like a kilobyte of data has been received.

I didn't want to stream a kilobyte of padding just to work-around this, so it was time to try out Server-sent events. See also this.

This is the Django view that sends the events:

class HookRun(View): def get(self, request): proc = run_script(request) def make_events(): for evtype, data in utils.stream_output(proc): if evtype == "result": yield "event: {}\ndata: {}\n\n".format(evtype, data) else: yield "event: {}\ndata: {}\n\n".format(evtype, data.decode("utf-8", "replace")) return http.StreamingHttpResponse(make_events(), content_type='text/event-stream') @method_decorator(never_cache) def dispatch(self, *args, **kwargs): return super().dispatch(*args, **kwargs)

And this is the template that renders it:

{% extends "base.html" %} {% load i18n %} {% block head_resources %} {{block.super}} <style type="text/css"> .out { font-family: monospace; padding: 0; margin: 0; } .stdout {} .stderr { color: red; } .result {} .ok { color: green; } .ko { color: red; } </style> {# Polyfill for IE, typical... https://github.com/remy/polyfills/blob/master/EventSource.js #} <script src="{{ STATIC_URL }}js/EventSource.js"></script> <script type="text/javascript"> $(function() { // Manage spinners and other ajax-related feedback $(document).nav(); $(document).nav("ajax_start"); var out = $("#output"); var event_source = new EventSource("{% url 'session_hookrun' name=name %}"); event_source.addEventListener("open", function(e) { //console.log("EventSource open:", arguments); }); event_source.addEventListener("stdout", function(e) { out.append($("<p>").attr("class", "out stdout").text(e.data)); }); event_source.addEventListener("stderr", function(e) { out.append($("<p>").attr("class", "out stderr").text(e.data)); }); event_source.addEventListener("result", function(e) { if (+e.data == 0) out.append($("<p>").attr("class", "result ok").text("{% trans 'Success' %}")); else out.append($("<p>").attr("class", "result ko").text("{% trans 'Script failed with code' %} " + e.data)); event_source.close(); $(document).nav("ajax_end"); }); event_source.addEventListener("error", function(e) { // There is an annoyance here: e does not contain any kind of error // message. out.append($("<p>").attr("class", "result ko").text("{% trans 'Error receiving script output from the server' %}")); console.error("EventSource error:", arguments); event_source.close(); $(document).nav("ajax_end"); }); }); </script> {% endblock %} {% block content %} <h1>{% trans "Processing..." %}</h1> <div id="output"> </div> {% endblock %}

It's simple enough, it seems reasonably well supported besides needing a polyfill for IE and, astonishingly, it even works!

Categories: FLOSS Project Planets

cc1: all warnings being treated as errors

LinuxPlanet - Sun, 2014-12-14 09:54
While compiling big source codes, written in C, most often using make, we can pass many options called as flags, to gcc compiler, to control the behaviour of the compiler while compilation.

Encountering warnings in any code is common, but some times while running the make command we might hit the error.

cc1: all warnings being treated as errors

This is because the compiler has been instructed not to ignore the warnings and treat all the warnings as errors. This is done by passing the options -Werror to gcc compiler. Ignoring warnings in bigger codes is not considered a good practice and to avoid the same the -Werror option is used.

For example the make file could have a like passing the options as below.

TARGET_CFLAGS = -ffreestanding -Os -DGRUB_MACHINE_PCBIOS=1 -Wall -W -Wshadow -Wpointer-arith -Wmissing-prototypes -Wundef -Wstrict-prototypes -fno-strict-aliasing -g -falign-jumps=1 -falign-loops=1 -falign-functions=1 -mno-mmx -mno-sse -mno-sse2 -mno-3dnow -fno-dwarf2-cfi-asm -DGRUB_MACHINE_PCBIOS=1 -m32 -fno-stack-protector -mno-stack-arg-probe -Werror

We can see that the last option is -Werror. This flag causes the error that we saw above. So if we do not want to treat warnings as errors, we just need to remove -Werror from the list of Target Flags. But be careful, it might not be the wisest thing to do.
Categories: FLOSS Project Planets

Daniel Leidert: Issues with Server4You vServer running Debian Stable (Wheezy)

Planet Debian - Sun, 2014-12-14 08:58

I recently acquired a vServer hosted by Server4You and decided to install a Debian Wheezy image. Usually I boot any device in backup mode and first install a fresh Debian copy using debootstrap over the provided image, to have a clean system. In this case I did not and I came across a few glitches I want to talk about. So hopefully, if you are running the same system image, it saves you some time to figure out, why the h*ll some things don't work as expected :)

Cron jobs not running

I installed unattended-upgrades and adjusted all configuration files to enable unattended upgrades. But I never received any mail about an update although looking at the system, I saw updates waiting. I checked with

# run-parts --list /etc/cron.daily

and apt was not listed although /etc/cron.daily/apt was there. After spending some time to figure out, what was going on, I found the rather simple cause: Several scripts were missing the executable bit, thus did not run. So it seems, for whatever reason, the image authors have tempered with file permissions and of course, not by using dpkg-statoverride :( It was easy to fix the file permissions for everything beyond /etc/cron*, but that still leaves a very bad feeling, that there are more files that have been tempered with! I'm not speaking about customizations. That are easy to find using debsums. I'm speaking about file permissions and ownership.

Now there seems no easy way to either check for changed permissions or ownership. The only solution I found is to get a list of all installed packages on the system, install them into a chroot environment and get all permission and ownership information from this very fresh system. Then compare file permissions/ownership of the installed system with this list. Not fun.

init from testing / upstart on hold

Today I've discovered, that apt-get wanted to update the init package. Of course I was curious, why unattended-upgrades didn't yet already do so. Turns out, init is only in testing/unstable and essential there. I purged it, but apt-get keeps bugging me to update/install this package. I really began to wonder, what is going on here, because this is a plain stable system:

  • no sources listed for backports, volatile, multimedia etc.
  • sources listed for testing and unstable
  • only packages from stable/stable-updates installed
  • sets APT::Default-Release "stable";

First I checked with aptitude:

# aptitude why init
Unable to find a reason to install init.

Ok, so why:

# apt-get dist-upgrade -u
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/4674 B of archives.
After this operation, 29.7 kB of additional disk space will be used.
Do you want to continue [Y/n]?

JFTR: I see a stable system bugging me to install systemd for no obvious reason. The issue might be similar! I'm still investigating. (not reproducible anymore)

Now I tried to debug this:

# apt-get -o Debug::pkgProblemResolver="true" dist-upgrade -u
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Starting
Starting 2
Investigating (0) upstart [ amd64 ] < 1.6.1-1 | 1.11-5 > ( admin )
Broken upstart:amd64 Conflicts on sysvinit [ amd64 ] < none -> 2.88dsf-41+deb7u1 | 2.88dsf-58 > ( admin )
Conflicts//Breaks against version 2.88dsf-58 for sysvinit but that is not InstVer, ignoring
Considering sysvinit:amd64 5102 as a solution to upstart:amd64 10102
Added sysvinit:amd64 to the remove list
Fixing upstart:amd64 via keep of sysvinit:amd64
The following NEW packages will be installed:
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/4674 B of archives.
After this operation, 29.7 kB of additional disk space will be used.
Do you want to continue [Y/n]?

Eh, upstart?

# apt-cache policy upstart
Installed: 1.6.1-1
Candidate: 1.6.1-1
Version table:
1.11-5 0
500 http://ftp.de.debian.org/debian/ testing/main amd64 Packages
500 http://ftp.de.debian.org/debian/ sid/main amd64 Packages
*** 1.6.1-1 0
990 http://ftp.de.debian.org/debian/ stable/main amd64 Packages
100 /var/lib/dpkg/status# dpkg -l upstart
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
hi upstart 1.6.1-1 amd64 event-based init daemon

Ok, at least one package is at hold. This is another questionable customization, but in case easy to fix. But I still don't understand apt-get and the difference to aptitude behaviour? Can someone please enlighten me?

Customized files

This isn't really an issue, but just for completion: several files have been customized. debsums easily shows which ones:

# debsums -ac
I don't have the original list anymore - please check yourself
Categories: FLOSS Project Planets

Obey the Testing Goat: [OT] HiDPI on Ubuntu with a Samsung Ativ 9

Planet Python - Sun, 2014-12-14 08:42

This post isn't about TDD, but I just wanted to gather some notes into one place about how to get Hi-DPI working on Ubuntu. I found other sources but my hope is that this will bring all the important tips into one place.

I have a character flaw as regards overly shiny laptops, and when my golden Sony Vaio Z series finally packed in after 3 years of service, it was time to get a new one. The sensible choice would have been a Thinkpad or a Galago from System 76, but then I saw this thing, and I had to have it. It has a ridiculous 3200x1600 Hi-DPI screen, which I knew for sure was never going to work properly under Linux. But then, GNU/Linux is meant to be a bit rough on the desktop. It's all part of the fun.

Hi-DPI on Ubuntu in brief
  • Set two Gnome UI settings:
gsettings set org.gnome.settings-daemon.plugins.xsettings overrides "{'Gdk/WindowScalingFactor': <2>}" gsettings set org.gnome.desktop.interface scaling-factor 2

(You can also install gnome-tweak-tool to fiddle with these, cf the "Window" section for the most important one).

  • In Firefox and Thunderbird, open about:config and change layout.css.devPixelsPerPx to somewhere between 1.6 and 2

(Do not touch layout.css.dpi, that's a red herring).

  • Then fix up your grub prompt and TTY consoles, more info on that below.

Credit to the ever-impressive Arch linux documentation for those tips.

Adjusting the grub boot menu to make it readable

You'll have noticed that the GRUB boot menu is in a ridiculously small font because of all our teeny-tiny pixels. Fix it by generating a new font in 30-point:

sudo grub-mkfont -s 30 -o /boot/grub/DejaVuSansMono.pf2 /usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf

DejaVu works well because it has all the glyphs for the line art, others may not work so well.

Edit /etc/default/grub and add a line saying GRUB_FONT=/boot/grub/DejaVuSansMono.pf2, and run update-grub to commit. There's more info here. While you're at it, why not add a delightful background image to your boot screen? Check out the Ubuntu wiki for details.

Adjusting your TTY console

One final thing that's pretty much unusable out of the box are the TTY consoles you get from pressing, eg, CTRL+ALT+F1. To change their font, you'll want to do a:

sudo dpkg-reconfigure console-setup

I picked the VGA font in 32x16, and it looks fine, if somewhat retro.

And that's your lot!

Loads of things will still look pretty wrong. Chromium is a bit broken, but I don't use it enough to warrant a lengthy investigation. I haven't tried any non-gnome apps, but presumably they will suffer.

Next challenge is getting reasonably good touchscreen support!

I leave you with a screenshot...

So. Many. Pixels.

Categories: FLOSS Project Planets

Paul Booker: Updating a user role when a class (group) is flagged as finished

Planet Drupal - Sun, 2014-12-14 08:38
function mymodule_training_class_node_form_submit($form, &$form_state) { if ($form_state['input']['field_class_is_finished']['und'] == 1) { $nid = $form_state['values']['nid']; $query = db_select('og_membership', 'ogm') ->condition('ogm.gid', $nid, '=') ->fields('ogm', array('etid')); $result = $query->execute(); foreach ($result as $record) { $uid = $record->etid; _mymodule_training_class_assign_alumni_role($uid); } } } function _mymodule_training_class_assign_alumni_role($uid){ $rid = db_select("users_roles", "ur") ->fields("ur", array("rid")) ->condition('ur.uid', $uid, '=') ->execute() ->fetchField(); if (empty($rid)) { db_insert('users_roles') ->fields(array( 'uid' => $uid, 'rid' => ALUMNI, )) ->execute(); } } mysql> describe field_data_field_class_is_finished -> ; +-------------------------------+------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------------------------+------------------+------+-----+---------+-------+ | entity_type | varchar(128) | NO | PRI | | | | bundle | varchar(128) | NO | MUL | | | | deleted | tinyint(4) | NO | PRI | 0 | | | entity_id | int(10) unsigned | NO | PRI | NULL | | | revision_id | int(10) unsigned | YES | MUL | NULL | | | language | varchar(32) | NO | PRI | | | | delta | int(10) unsigned | NO | PRI | NULL | | | field_class_is_finished_value | int(11) | YES | MUL | NULL | | +-------------------------------+------------------+------+-----+---------+-------+ 8 rows in set (0.00 sec) mysql> mysql> describe og_membership; +-------------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | type | varchar(255) | NO | | | | | etid | int(10) unsigned | NO | MUL | 0 | | | entity_type | varchar(32) | NO | | | | | gid | int(11) | NO | MUL | NULL | | | group_type | varchar(32) | NO | MUL | | | | state | varchar(255) | YES | | | | | created | int(11) | NO | | 0 | | | field_name | varchar(255) | NO | | | | | language | varchar(12) | NO | | | | +-------------+------------------+------+-----+---------+----------------+ 10 rows in set (0.00 sec) mysql> select * from og_membership where gid=1304; +------+----------------------------+-------+-------------+------+------------+-------+------------+--------------+----------+ | id | type | etid | entity_type | gid | group_type | state | created | field_name | language | +------+----------------------------+-------+-------------+------+------------+-------+------------+--------------+----------+ | 8275 | og_membership_type_default | 1 | user | 1304 | node | 1 | 1402485115 | og_user_node | en | | 8276 | og_membership_type_default | 10106 | user | 1304 | node | 1 | 1402485280 | og_user_node | en | | 8277 | og_membership_type_default | 10113 | user | 1304 | node | 1 | 1402485286 | og_user_node | en | | 8278 | og_membership_type_default | 10114 | user | 1304 | node | 1 | 1402485292 | og_user_node | en | +------+----------------------------+-------+-------------+------+------------+-------+------------+--------------+----------+ 4 rows in set (0.00 sec) mysql> describe users; +------------------+------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------------+------------------+------+-----+---------+-------+ | uid | int(10) unsigned | NO | PRI | 0 | | | name | varchar(60) | NO | UNI | | | | pass | varchar(128) | NO | | | | | mail | varchar(254) | YES | MUL | | | | theme | varchar(255) | NO | | | | | signature | varchar(255) | NO | | | | | signature_format | varchar(255) | YES | | NULL | | | created | int(11) | NO | MUL | 0 | | | access | int(11) | NO | MUL | 0 | | | login | int(11) | NO | | 0 | | | status | tinyint(4) | NO | | 0 | | | timezone | varchar(32) | YES | | NULL | | | language | varchar(12) | NO | | | | | picture | int(11) | NO | MUL | 0 | | | init | varchar(254) | YES | | | | | data | longblob | YES | | NULL | | +------------------+------------------+------+-----+---------+-------+ 16 rows in set (0.01 sec) mysql> select * from users where uid=10106; +-------+----------------------+---------------------------------------------------------+------------------------------------------------+-------+-----------+------------------+------------+------------+-------+--------+------------------+----------+---------+------------------------------------------------+------+ | uid | name | pass | mail | theme | signature | signature_format | created | access | login | status | timezone | language | picture | init | data | +-------+----------------------+---------------------------------------------------------+------------------------------------------------+-------+-----------+------------------+------------+------------+-------+--------+------------------+----------+---------+------------------------------------------------+------+ | 10106 | user_authenticated_1 | $S$DBGDqh770IDr09aztKD8Ey8aNGxwx8iiCaYo/rGCcBpa5XzNKnDF | identity+user_authenticated_1@paulbooker.co.uk | | | full_html | 1401792983 | 1401794533 | 0 | 1 | America/New_York | | 0 | identity+user_authenticated_1@paulbooker.co.uk | NULL | +-------+----------------------+---------------------------------------------------------+------------------------------------------------+-------+-----------+------------------+------------+------------+-------+--------+------------------+----------+---------+------------------------------------------------+------+ 1 row in set (0.00 sec) mysql> select * from users where uid=10113; +-------+----------------------+---------------------------------------------------------+------------------------------------------------+-------+-----------+------------------+------------+--------+-------+--------+------------------+----------+---------+------------------------------------------------+------+ | uid | name | pass | mail | theme | signature | signature_format | created | access | login | status | timezone | language | picture | init | data | +-------+----------------------+---------------------------------------------------------+------------------------------------------------+-------+-----------+------------------+------------+--------+-------+--------+------------------+----------+---------+------------------------------------------------+------+ | 10113 | user_authenticated_2 | $S$DeG84e0QP/H2h2rGv6cw93krL3CDoQ6CZOzhiSQCZa4OpZOAeP21 | identity+user_authenticated_2@paulbooker.co.uk | | | full_html | 1402485227 | 0 | 0 | 1 | America/New_York | | 0 | identity+user_authenticated_2@paulbooker.co.uk | NULL | +-------+----------------------+---------------------------------------------------------+------------------------------------------------+-------+-----------+------------------+------------+--------+-------+--------+------------------+----------+---------+------------------------------------------------+------+ 1 row in set (0.00 sec) mysql> select * from users where uid=10114; +-------+----------------------+---------------------------------------------------------+------------------------------------------------+-------+-----------+------------------+------------+--------+-------+--------+------------------+----------+---------+------------------------------------------------+------+ | uid | name | pass | mail | theme | signature | signature_format | created | access | login | status | timezone | language | picture | init | data | +-------+----------------------+---------------------------------------------------------+------------------------------------------------+-------+-----------+------------------+------------+--------+-------+--------+------------------+----------+---------+------------------------------------------------+------+ | 10114 | user_authenticated_3 | $S$D4xWR53hWUcyoZmIuZOLv7K8oasOsPCmqWaQGT.kpMQiX9k7XpfD | identity+user_authenticated_3@paulbooker.co.uk | | | full_html | 1402485256 | 0 | 0 | 1 | America/New_York | | 0 | identity+user_authenticated_3@paulbooker.co.uk | NULL | +-------+----------------------+---------------------------------------------------------+------------------------------------------------+-------+-----------+------------------+------------+--------+-------+--------+------------------+----------+---------+------------------------------------------------+------+ 1 row in set (0.00 sec) mysql> select rid from users_roles where uid=10106; +-----+ | rid | +-----+ | 7 | +-----+ 1 row in set (0.00 sec) Tags:
Categories: FLOSS Project Planets

Krita 2.9: First Beta Released!

Planet KDE - Sun, 2014-12-14 07:00

Last week, the first preparations for the next Krita release started with the creation of the first Krita 2.9 beta release: Krita 2.9 Beta 1. This means that we’ve stopped adding new features to the codebase, and are now focusing on making Krita 2.9 as stable as possible.

We’ve come a long way since March, when we released Krita 2.8! Thanks to the enthusiastic support of many, many users, here and on kickstarter, Krita 2.9 has a huge set of cool new features, improvements and refinements.

Here’s a short list to wet your appetite — a full intro to all new features will be presented when we present the final 2.9 release. That’s expected to happen in January, by the way.

  • Interface:
    • Krita can now open more than one image in a singe window, and the same image in more than one window. You can choose between sub windows and tabs in the preferences.
    • You can now organize the favorite presets in the pop-up palette using tags.
    • You can also increase the amount of brushes available in the pop-up palette at a time in preferences.
    • You can select more than one layer at a time and delete, move or drag and drop them in the layer docker.
    • New options for the cursor, including one to show a dot at the center of the brush outline.
    • The thumbnails for resources like brushes, gradients or patterns are resizable by using ctrl+scrollwheel over them.
    • Editing gradients have been improved.
    • You can now choose between giving the first layer a default color and giving the image a non-transparent background.
    • You can create palette files inside Krita.
    • The compositions docker stores the collapsed state, you can update compositions and control which compositions you export.
    • A new type of gradients: selection-shape based gradients was added.
  • Layers, Selections and Masks
    • A new mask type was added: non-destructive transformation masks.
    • Many new ways to convert between layers and masks.
    • The rendering of vector graphics at various image resolution settings was fixed.
    • It’s now possible to edit the alpha channel separately.
    • You can split a layer into several layers, one for each color on the layer, which is useful together with G’Mic’s recolorize[comics] feature for coloring artwork.
    • You can isolate a layer by using the shortcut alt-select.
    • You can edit selections directly as if it were a black and white image.
  • Brushes and painting:
    • The anti-aliasing quality of thin lines has been improved greatly.
    • The smudge brush was improved.
    • The Flow option has finally been separated from opacity.
    • Steps in the undo history can now be merged.
    • The brush preset system was extended to make it possible to keep changes to a certain preset during a session, instead of resetting to the original preset on every brush preset switch.
    • You can lock the size of the brush when switching between paint and erase mode, or have a separate size for each mode.
    • New painting assistants for working with vanishing points and rulers.
    • the line tool will use all sensors now! Rotation, speed, tilt, etc.
    • There’s a sticky key available for accessing the straight line tool from the freehand brush (V).
    • a delayed-stroke based stabilizer option was added for stroke smoothing
    • the weighted smoothing and stabilizer have a ‘delay’ option now, which allows you to create a dead area around your cursor for extra sharp corners.
    • a scalable distance option was added to the weighted stroke smoothing, so now the weight is relative to the zoom.
  • The transform tool has been enormously extended:
    • Perspective transformation was added
    • Liquify transformation was added
    • Cage transformation was added (and is super-fast, too)
    • Selecting multiple nodes in the cage and warp tools is now possible. You can resize, rotate and move a whole section at once.
  • Color selectors:
    • A new color selector with accurate sliders, for every color model, was added
    • HSY’ and HSI color models are supported in both the new slider docker, the MyPaint shade selector, and the advanced color selector. You can even customise the weights for the HSY’ calculation.
    • All color selectors are now color managed, and also work when you paint in HDR mode.
    • You can paint in HDR mode now, with the LUT docker and OCIO.
    • There are sticky keys for gamma and exposure with HDR painting.
  • Filters:
    • The G’Mic plugin (controls filters) was updated to the latest version of G’Mic. On-canvas and miniature preview was added.
    • A posterize filter was added.
    • Index-colors filter was added, which is very useful in the HD-pixel art painting technique.
  • Files:
    • Some improvements to the PSD import/export filter: resource blocks are round-tripped, all but four PSD blending modes are now supported, Krita can now load some CS6 PSD files, PSD layer groups are loaded, support for 16 bit multi-layer files is improved, Krita vector layers are saved (as raster layers) to PSD.
    • The OpenEXR filter can now load and save single-channel grayscale EXR files, and was fixed for loading images with very small alpha values, and images with zero alpha but non-zero color values
    • Support for raw
    • Saving 16 bit grayscale images to tiff, jpeg and ppm now works
    • support for r16 and r8 heightmap files were added

Missing in 2.9 are Photoshop layer styles and PSD layer masks: we’re working hard on those, but they aren’t done yet. All the scaffolding is done, and most of the drop shadow effect, except the integration, is in the rendering process… We’re working to have them ready by the end of January. The animation tool has been disabled for refactoring. In Beta 1, Sketch and Gemini have been disabled.


There are still  234 bugs at the moment, some of which might cause dataloss, so users are recommended to use the beta builds for testing, not for critical work!

For Linux users, Krita Lime will be updated on Monday. Remember that launchpad is very strict about the versions of Ubuntu it supports. So the update is only available for 14.04 and up.

OpenSUSE users can use the new OBS repositories created by Leinir:

Windows users can choose between an installer and the zip file. You can unzip the zip file anywhere and start Krita by executing bin/krita.exe. The Surface Pro 3 tablet offset issue has been fixed! We only have 64 bits Windows builds at the moment, we’re working on fixing a problem with the 32 bits build.

OSX users can open the dmg and copy krita.app where they want. Note that OSX still is not supported. There are OSX-specific bugs and some features are missing.

Categories: FLOSS Project Planets

Calligra 2.9 Beta Released

Planet KDE - Sun, 2014-12-14 05:37

We’re pleased to present you the first beta release in 2.9 series of Calligra Suite for testing! We will focus on fixing issues including those that you’d report. All thus to make the final release of 2.9 expected in January 2015 as stable as possible!

Support Calligra!

When you update many improvements and a few new features will be installed, mostly in Kexi and Krita as well as general ones. Finally in 2.9 a new app, Calligra Gemini, appears. Read below to see why it may be of interest to you.

New Features and Improvements in This Release New Integration: Displaying office documents in Okular

Calligra document plugin for Okular showing a DOC file

A new plugin for Okular, KDE’s universal document viewer, enables Okular to use the Calligra office engine for displaying documents in the formats OpenDocument Text (ODT), MS Word (DOC, DOCX) and WordPerfect (WPD). It supplements the existing plugin from Calligra that gives Okular ability to display OpenDocument Presentation (ODP) and MS Powerpoint (PPT, PPTX) formats.

The Calligra office engine has been used for the default document viewers on the smartphones Nokia N9 and Jolla, the Android app COffice, and other mobile editions of Calligra. So it makes sense to also use the Calligra office engine for the document reader from KDE, coming with a UI designed for document consumption for people who want to read, but not edit office documents.

New application: Calligra Gemini

The same text document edited on laptop computer and in tablet mode

Calligra Gemini debuts in 2.9, a novel application encasing word processor and presentation Calligra components can function both as a traditional desktop application used with a mouse and keyboard, and transform into a touch friendly application on the go. This changes the experience to one suitable for all-touch devices without the inconvenience of having to switch to a separate application.

Read more about story behind the app.

Kexi – Visual Database Applications Builder

Many usability improvements and bug fixes. Forms have finally been ported from Qt 3 to Qt 4.

  • General:
    • New: Simplify and automatize bug reporting; OS and Platform information is auto-selected on bugs.kde.org.
    • New: Make side panes lighter by removing frames in all styles except Oxygen
    • New: Added “Close all tabs” action to main window tabs.
    • Improve appearance of main tabbed toolbar for GTK+ and Oxygen styles. (bug 341150)
    • Improve handling permission errors on database creation. Do not allow to create a new SQLite-based .kexi file if: non-writable folder is selected, relative path is selected (unsafe), non-file path is selected (perhaps a folder).
    • Do not crash when Kexi is unable to find plugins; display message and exit.
    • Fix right-to-left user interface support in side panes.
    • Simplify “Save password” checkbox text in database connection editor and add direct what’s this button.
    • Disable ability of setting left/right sidebars floatable (like in Dolphin, improve stability)
    • Remove redundant ‘find’ action from the main toolbar. It’s already available in local context where it really works.
    • Move the ‘Export data table’ from the main toolbar to a local table and query object’s menu.
    • Improve user-visible messages.
  • Forms:
    • New: Port Kexi Forms to Qt4’s scroll area, a milestone leading to Qt5-based Kexi.
    • Improve translation support in Forms’ action selection dialog
  • Reports:
    • New: Added inline editing for labels in Report Designer.
    • New: Added “Do you want to open exported document?” question when report is exported to a Text/Spreadsheet/as Web Page.
    • Print reports in High DPI (precision). (bug 340598)
Krita – Creative Sketching & Painting App
  • New: Krita can now open multiple images in one window
  • New: Perspective transform
  • New: Liquify transform
  • New: Cage transform
  • New: Selection-shaped gradients
  • New: Several new filters
  • New: A HSV color selector
  • New: It’s now possible to edit the alpha channel separately
  • New: A new feature to split a layer into several layers by color
  • Thin line quality has been improved
  • Anti-aliasing of the transform tool has been improved
  • It’s now much easier to create masks and convert between masks and layers
  • Vector object scaling and resolution has been fixed
  • The smudge brush has been made more correct
  • Steps on the Undo history can now be merged
  • The brush preset system has been improved to make it possible to temporarily lock changes to a preset during a session
  • The G’Mic filter has been updated and there are previews now
  • Missing: Photoshop layer styles and PSD layer masks: we’re working hard on those, but they aren’t done yet. We’re working to have them ready by the end of January. The animation tool has been disabled for refactoring. In Beta 1, Sketch and Gemini have been disabled.
Calligra Words – Word Processor

Layouting has been reworked to fix many small rendering glitches. It is the first required step before more page layouting features can be added as well as dynamic page layout changes.

Try It Out What’s Next and How to Help?

We’re approaching the era of 2.9 to be released in early 2015. It will be followed by Calligra 3.0 based on new technologies later in 2015.

You can meet us to share your thoughts or offer your support on general Calligra forums or dedicated Kexi or Krita forums. Many improvements are only possible thanks to the fact that we’re working together within the awesome community.

(some Calligra apps need new maintainers, you can become one, it’s fun!)

How and Why to Support Calligra?

Calligra apps may be totally free, but their development is costly. Power, hardware, office space, internet access, travelling for meetings – everything costs. Direct donation is the easiest and fastest way to efficiently support your favourite applications. Everyone, regardless of any degree of involvement can do so. You can choose to:

About Calligra

Calligra Suite is a graphic art and office suite developed by the KDE community. It is available for desktop PCs, tablet computers, and smartphones. It contains applications for word processing, spreadsheets, presentation, databases, vector graphics, and digital painting. See more information at the website http://www.calligra.org.

} .button:hover{ padding:11px 32px; border:solid 1px #004F72; -webkit-border-radius:10px; -moz-border-radius:10px; border-radius: 10px; font:18px Arial, Helvetica, sans-serif; font-weight:bold; color:#E5FFFF; background-color:#3BA4C7; background-image: -moz-linear-gradient(top, #3BA4C7 0%, #1982A5 100%); background-image: -webkit-linear-gradient(top, #3BA4C7 0%, #1982A5 100%); background-image: -o-linear-gradient(top, #3BA4C7 0%, #1982A5 100%); background-image: -ms-linear-gradient(top, #3BA4C7 0% ,#1982A5 100%); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#1982A5', endColorstr='#1982A5',GradientType=0 ); background-image: linear-gradient(top, #3BA4C7 0% ,#1982A5 100%); -webkit-box-shadow:0px 0px 2px #bababa, inset 0px 0px 1px #ffffff; -moz-box-shadow: 0px 0px 2px #bababa, inset 0px 0px 1px #ffffff; box-shadow:0px 0px 2px #bababa, inset 0px 0px 1px #ffffff;

} .button:active{ padding:11px 32px; border:solid 1px #004F72; -webkit-border-radius:10px; -moz-border-radius:10px; border-radius: 10px; font:18px Arial, Helvetica, sans-serif; font-weight:bold; color:#E5FFFF; background-color:#3BA4C7; background-image: -moz-linear-gradient(top, #3BA4C7 0%, #1982A5 100%); background-image: -webkit-linear-gradient(top, #3BA4C7 0%, #1982A5 100%); background-image: -o-linear-gradient(top, #3BA4C7 0%, #1982A5 100%); background-image: -ms-linear-gradient(top, #3BA4C7 0% ,#1982A5 100%); filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#1982A5', endColorstr='#1982A5',GradientType=0 ); background-image: linear-gradient(top, #3BA4C7 0% ,#1982A5 100%); -webkit-box-shadow:0px 0px 2px #bababa, inset 0px 0px 1px #ffffff; -moz-box-shadow: 0px 0px 2px #bababa, inset 0px 0px 1px #ffffff; box-shadow:0px 0px 2px #bababa, inset 0px 0px 1px #ffffff; }

.button a,.button a:link, .button a:visited, .button a:hover, .button a:active { color:#E5FFFF; } -->

Categories: FLOSS Project Planets

Edward J. Yoon: 2014년도를 떠나며

Planet Apache - Sun, 2014-12-14 05:05
몇 일이 지나면 전세계인은 2014년도를 떠나보내야 한다. 나 역시 14년을 떠나고 이젠 새로이 준비를 해야하는 시점이 되었네.

나에게 2014년은 참 많은 일들이 일어났고, 그렇게 원하던 창업을 하면서 다양한 경험과 사람을 겪어본 한 해. 한 가지 크게 느낀 것이 있다면, 알게 모르게 사람들은 나를 지켜보고 평가한다는 것 (물론 그렇다고 의식하진 않지만), 모든 결정은 언제나 후회가 남는다는 것, 선동은 몇 마디로 가능하지만 그를 반박을 위해서는 수십개의 근거자료가 필요하다는 것 등등.

솔직히 엔지니어로써 커리어에는 이러한 것들은 도무지 쓸데 없는 경험일지 모르겠다. 이 때문에 한편으로는 계속 하던일에 몰두했어야하나 살짝 걱정도 되긴하나 분명 나에게 크나큰 밑거름이 되었음을! 결국 내가 살아가는 세상은 "사회"이니까.

부작용이라하면 내 몸안에 사파 무림 고수의 광기가 다소 누그러진 정도? ㅋ 그렇게 잘때려맞추던 미래가.. 이제는 1년 후의 미래도 잘 안보인다 :/

2015년, .. 광기에 의존하기보다는 좀 더 체계적이고 과학적인 접근으로 문제를 하나씩 털어보기로 하자!
Categories: FLOSS Project Planets

Dirk Eddelbuettel: rfoaas

Planet Debian - Sat, 2014-12-13 19:20

A new version of rfoaas is now on CRAN. The rfoaas package provides an interface for R to the most excellent FOAAS service -- which provides a modern, scalable and RESTful web service for the frequent need to tell someone to eff off.

The FOAAS backend gets updated in spurts, and yesterday a few pull requests were integrated, including one from yours truly. So with that it was time for an update to rfoaas. As the version number upstream did not change (bad, bad, practice) I appended the date the version number.

CRANberries also provides a diff to the previous release. Questions, comments etc should go to the GitHub issue tracker off the GitHub repo.

This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.

Categories: FLOSS Project Planets

Justin Mason: Links for 2014-12-13

Planet Apache - Sat, 2014-12-13 18:58
  • littleBits Synth Kit

    Wow, this looks cool. $159

    littleBits and Korg have demystified a traditional analog synthesizer, making it super easy for novices and experts alike to create music. connects to speakers, computers and headphones. can be used to make your own instruments. fits into the littleBits modular system for infinite combos of audio, visual and sensory experiences

    (tags: diy hardware music littlebits gadgets make analog synths)

Categories: FLOSS Project Planets
Syndicate content