Search Results: "spa"

27 April 2010

Bdale Garbee: TeleMetrum in Stock

First, I was pleasantly surprised to discover that TeleMetrum is now the subject of a post on the Make magazine site. Very cool! As reported last week, I've been waiting for better GPS antennas to arrive, but heavy snow here in Colorado last Friday delayed delivery. They finally arrived, and as I hoped, they appear to completely solve our signal strength problem! So... [drum roll, please!]... I am very happy to announce that the first production build of TeleMetrum boards and starter kits are now "in stock" at the Garbee and Garbee web store, along with other products designed by the Altus Metrum community! Keith and I are still working on the new Java-based ground station software and user documentation for the system. Watch this space for updates. I hope we'll have both ready for download by the time customers actually receive hardware...

Diego Escalante Urrelo: Summer lessons

Over the last few months I ve been working for Igalia, as an intern, fixing regressions in Epiphany, which extends to WebKitGTK+ sometimes. Surely a dream job: working on my favourite projects, on a great company, surrounded by great teammates and friends. Igalia: Free Software Engineering I m happy about it, really really happy. I love this job, totally, completely!. I ve had the chance to learn a lot. Here I d like to share some things I have learned so far, I look forward to post again with more ideas, but meanwhile here you have two. Different timezones are hard The time when I find most of the Igalia crew online is between 2am and 12pm. Of course this doesn t mean you can t find them past 12pm, but it s already 7pm or 8pm in Europe then. I m on UTC-5 and Spain is on UTC+1 or (now) UTC+2. You probably agree that asking anyone to wake up at 7am in summer is unrealistic. Luckily, Igalia doesn t make me pass a turing test everyday at a fixed time. This rocks.

valpo
Valpara so, Chile I love it when people understand that a happy hacker working at midnight is better than an unhappy hacker working on a set in stone schedule. Kudos to Igalia for that. Your code should explain and defend itself My written expression teacher says Your text should be good enough to explain and defend itself . This applies to code too. I confirmed this at the expense of Xan s patience. It s a common situation: when the maintainer reviews your patch you are not around to explain it, or present the rationale you put into the change. The solution? well, simple, your patch and commit log should explain by themselves.

Felix, chillin
Don t just post a patch and do this.
Review it yourself. I saw, after realising how much ping-pong Xan and I had to play to get a patch in, that my patches lacked a harder review by myself before being posted. You have to be your first reviewer. Be a severe judge of your patch, ask yourself if you would accept such a patch, if you would like a commit message like that, if that variable name is really good, if someone could quickly grasp what s it all about, etc. Get into the flippy flops of the maintainer, don t assume everything is obvious to everyone.

26 April 2010

Obey Arthur Liu: Welcome to our 2010 Debian Google Summer of Code students!

I d like to extend a warm welcome to our selected students for the 2010 Debian Google Summer of Code! They should pop up on Debian Planet soon and you re welcome to come talk to them on #debian-soc on irc.debian.org Aptitude Qt by Piotr Galiszewski, mentored by Sune Vuorela Qt GUI for aptitude. Currently, KDE users need to use Aptitude via the console interface, or install the newly developed GTK frontend, which does not fit well into KDE desktop. Making Qt frontend to Aptitude would solve this problem and bring an advanced and fully Debian-compliant graphical package manager to KDE. Content-aware Config Files Upgrading by Krzysztof Tyszecki, mentored by Dominique Dumont When a package deliver configuration files, the problem of merging user data with new configuration instructions will arise during package upgrades on users systems. Sometimes merging can be done with 3 way merge, but this process does not insure that the resulting file is correct or even legal. This project intends to create standards, tools an heuristics to make the scary config file conflict resolution debconf prompt a thing of the past. Debbugs Bug Reporting and Manipulation API by David Wendt Jr., mentored by Bastian Venthur Currently debbugs supports a SOAP interface for querying Debian s Bug Tracking System. Unfortunately this operation is read-only. This project would create an API for debbugs which supports sending and manipulating bug reports, without having to resort to email. This project does not intend to replace email as mean to manipulate the BTS but rather to enhance the BTS to allow other means of bug creation and manipulation. Debian High Performance Computing on Clouds by Dominique Belhachemi, mentored by Steffen Moeller The project paves a way to combine the demands in high performance computing with the dynamics of compute clouds with Debian. Combining the Eucalyptus cloud computing infrastructure with the TORQUE resource manager and preparing the components for dynamically added and removed instances provides the user with a attractive high performance computing environment. Such a system allows users to share resources with large compute centers with minimal changes in their workflow and scripts. Debian-Installer on Neo FreeRunner and Handheld Devices by Thibaut Girka, mentored by Gaudenz Steinlin This project aims to improve the installation experience of Debian on handheld devices by replacing ad-hoc install scripts by a full-blown and adapted Debian-Installer. The Neo FreeRunner is used as it is the most convenient and open device from a development standpoint, but other devices will also be explored. Hurd port and de-Linux-ization of Debian-Installer by J r mie Koenig, mentored by Samuel Thibault The primary means of distributing the Hurd is through Debian GNU/Hurd. However, the installation CDs presently use an ancient, non-native installer. The goal of this project is to port the missing parts of Debian-Installer to Hurd. To achieve this, all problematic Linux-specific code in Debian-Installer will be replaced by less or non-kernel dependent code, paving the way for better support of other non-Linux ports of Debian. Multi-Arch support in APT by David Kalnischkies, mentored by Michael Vogt Hardware like 64bit processors are perfectly able to execute 32bit opcode but until now this potentiality is disregard as the infrastructure tools like dpkg and APT are not able to install and/or solve dependencies across multiple architectures. The project therefore focuses on enabling APT to work out good solutions in a MultiArch aware environments without the need of hacky and partly working biarch packages currently in use. Package Repository Analysis and Migration Automation by Ricardo O Donell, mentored by Neil Williams Emdebian uses a filter to select packages from the main Debian repositories that are considered useful to embedded devices, excluding the majority of packages. The results of processing the filter are automated but maintaining the filter list is manual. This project seeks to automate certain elements of the filtering process to cope with specific conditions. This project will also generalize to more elaborate and intelligent algorithms to improve the transitions of the main Debian archives. Smart Upload Server for FTP Master by Petr Jasek, mentored by Joerg Jaspert Making packages upload smarter, more interactive and painless for uploaders by switching from anonymous FTP and Cron jobs to a robust protocol and modern package checking and processing daemon. This daemon would test early and report early, saving developers time. More details coming soon on http://wiki.debian.org/gsoc Congratulations everyone and have a fruitful summer!

25 April 2010

Gregor Herrmann: RC bugs 2010/15, 2010/16

my current list of worked on RC bugs; not many for two weeks but I was on vacation for almost a week ...

Tiago Bortoletto Vaz: Government Resquest tool fails

So it s no surprise that Google, like other technology and telecommunications companies, regularly receives demands from government agencies to remove content from our services. Of course many of these requests are entirely legitimate, such as requests for the removal of child pornography (1). We also regularly receive requests from law enforcement agencies to hand over private user data. Again, the vast majority of these requests are valid and the information needed is for legitimate criminal investigations. However, data about these activities historically has not been broadly available. We believe that greater transparency will lead to less censorship (2).

source
(1)
Do your statistics cover all categories of content removals? No. Our policies and systems are set up to identify and remove child pornography whenever we become aware of it, regardless of whether that request comes from the government. As a result, it s difficult to accurately track which of those removals were requested by governments, and we haven t included those statistics here.
(So, why did you mention this as these requests ?)

(2)
* Chinese officials consider censorship demands as state secrets, so we cannot disclose that information at this time.
(where s the real transparency?) Furthermore, I tell you the incorrectness regarding requests/removals data from Brazil in your tool is a big truth.

Russell Coker: Links April 2010

Sam Harris gave an interesting TED talk about whether there are scientific answers to moral questions [1]. One of his insightful points was that when dealing with facts certain opinions should be excluded it would be good if journalists who report on issues of science could understand this. Another insight was that religious people most strongly agree with him regarding the issue of whether there are factual answers to moral questions but they think that God just handed the answers to their ancesters rather than making it an issue that requires consideration. He cites the issue of gay marriage as being a distraction from moral issues such as genocide and poverty. He asks how have we convinced ourself that every culture has a point of view worth considering? . He asks how the ignorance of the Taliban on the topic of physics is any less obvious than on the topic of human well-being. Dan Gilbert gave an insightful TED talk titled Why Are We Happy? [2]. One interesting fact he cites is that people who become paraplegic are no less happy in the long term than people who win the lottery. He points out that a shopping mall full of Zen monks is not going to be particularly profitable and uses this fact to explain the promotion of natural happiness over synthetic happiness in our society. Dan Barber gave an amusing and informative TED talk How I Fell in Love with a Fish [3]. He speaks about ecological fish farming and how the fish are more tasty as well as the farm being good for the environment. The farm in question is in the south-west of Spain, hopefully there will be more similar farms in other parts of the world soon. Gary Lauder gave an interesting brief TED talk about road signs [4]. His main point was to advocate a road sign saying take turns , but there are already signs in the US at freeway on-ramps saying that 1 or 2 cars may enter every time the light turns green which is a similar concept. The innovative thing he did was to estimate the amount of time and petrol wasted by stop signs, add that over a year based on the average income and then estimate that an annuity covering that ongoing expense would cost more than $2,000,000. This makes two stop signs at an intersection have an expense of $1,000,000 each. He suggests that rather than installing stop signs it would be cheaper to buy the adjacent land, chop down all trees, and then sell it again. Alan Siegel gave an insightful TED talk about simplifying legal documents [5]. He gives an example of an IRS document which was analysed with a Heat Map to show which parts confused the readers the IRS adopted a new document that his group designed which made it easier for taxpayers. He advocates legislation to make legal documents easier to understand for customers of financial services. Tim Berners Lee gave an interesting TED talk about Open Data, he illustrated it with some fantastic videos showing how mashups have been used with government data [6] and how the Open Street Map project developed over time. Martin F. Krafft gave an interesting Debconf talk about Tool Adoption Behavior in the Debian project [7]. One thing that I found particularly interesting was his description of the Delphi Method that he used to assemble a panel of experts and gather a consensus of opinion. The post-processing on this talk was very good, in some sections Martin s presentation notes are shown on screen with the video of him in the corner. As an aside, I think we really do need camera-phones. The Big Money has an interesting article comparing the Mafia Bust Out with the practices of US banks [8]. Mark Roth gave an exciting TED talk about using Hydrogen Sulphide to trigger suspended animation [9]. They are now doing human trials for suspending people who have serious injuries to reduce tissue damage during the process of surgery. Pawan Sinha gave an interesting TED talk about how brains learn to see [10]. He started by talking about curing blindness in people who have been blind since birth. But he then ended by showing some research into the correlation between visual processing and Autism, he showed that an Autistic child had significantly different visual patterns when playing Pong to an NT child. Adora Svitak gave an insightful TED talk about what adults can learn from kids [11]. She made some particularly interesting points about the education system requiring that adults respect children more and expect them to do better than their parents which is essential for all progress in society. The NY Times has an interesting article on animal homosexuality [12]. In terms of research it focusses on lesbian relationships between albatrosses. But a large part of the article is devoted to the politics of scientific research into animal sexuality. BrowserShots.org shows you what your web site looks like in different web browsers [13]. Cory Doctorow wrote an insightful article titles Can You Survive a Benevolent Dictatorship about the Apple DRM [14]. He describes the way the Apple Digital Restrictions Management (DRM) doesn t stop copyright violation but does reduce competition in the computer industry. He is not going to sell his work on the Apple store (for the iPad or iPhone etc) and suggests that customers should choose a more open platform. It s unfortunate that he didn t suggest a better platform.

23 April 2010

Joerg Jaspert: Bash power

Something that regularly happens when I get to see other peoples shell scripts is me thinking Why do they not use the powers of bash? . Sometimes it s fine to not use bash specific features, like when you are limited by the Operating System you have to run on (don t you try some commercial Unix systems. Or this WIndows crap. Brrr). Sometimes you want it for some perceived performance win, sometimes a full bash doesn t fit the target system (think embedded devices). Thats all fine, don t come up with those, I know them. What I mean is - people are using things that bind you to bash and your hashbang also makes your script use bash. But people still jump out to a different command just for some variable modification which are easily doable in bash too. A few examples follow, always imagine them in a script starting with the header of
#!/bin/bash
set -e
set -u

Example Get rid of newlines (actually, any replacement you can think of):
var1="something with
space and
linefeeds"
var1=$ var1//
/_ 
echo $var1
This is a simple but powerful demonstration of the Pattern substitution bash can do for you. Read its manpage, it can do much more than what I list here, but the above simply replaces all occurences of a linefeed with an _. Make the double // a single one and it is just the first that is replaced.
Example Removing a prefix (or suffix) from a string:
VAR1=$ VAR1##sync:archive: 
This removes the text sync:archive: from the beginning of the VAR1 variable. Replace the ## with %% and its gone from the end. The topic to look for in the manpage of bash is Remove matching prefix pattern (or suffix, of course).
There are many more possibilities, you might want to look through the Advanced Bash-Scripting Guide, it contains some helpful information. Or read the bash manpage. Or (shameless self-ad) look at the latest ftpsync script, the one and only official (mirroradm) supported mirror synchronization for the ftp.*.debian.org mirrors.

Alexander Wirt: FrOSCon 2010 Call for Papers

On 21st and 22nd August 2010 the fifth (wow, impressive how fast time goes) FrOSCon is taking place St. Augustin (near Bonn) Germany. Like in the past its hosted by the faculty of computer science of the University of Applied Sciences Bonn-Rhein-Sieg in collaboration with the student body and the Linux/Unix User Group St. Augustin.

A few days ago this years Call for Papers started and will end on May 23rd. So if you want to attend on a really cool conference please submit your paper - and even if you don't want to give a talk join us at the Debian booth :).
<script defer="defer" src="http://static.zemanta.com/readside/loader.js" type="text/javascript"></script>

Wouter Verhelst: Touching up a video with Cinelerra

I found myself with a problem: trying to linearly edit a movie clip with a non-linear editor isn't very simple, nor is it meant to be. Case at hand: I have about 1 hour and 40 minutes of film material that was recorded with dvswitch, and which is 90% fine; but given what we wish to do with it, we really wish to remove the errors from the recording things like failed transitions, rogue camera movements, and so on. This is why we recorded the individual video streams on tape too, so that we could indeed do some retouching afterwards. Cinelerra, however, is not really made for that. If you want to create a transition, you need to have two segments of clips that are stuck together on the timeline, and the transition is then applied to the border between the two. You can create multiple video tracks, but you cannot cut from one track to another; you really have to add a clip to the timeline. Doing that has obvious issues if you have multiple video streams that were recorded on the same time and that can be time-synced on multiple tracks. You would prefer to just select one track or the other on a certain point in time, but cinelerra just doesn't do that. So the workflow that I found is the following: Add all video streams to the time line, each on a separate track. Make sure the to-be-touched-up stream is on top; when multiple tracks are in use, and the are not faded to 50% or so, cinelerra will only show the top stream in the final rendition. Synchronize the streams: first, create a rough alignment by moving them with the mouse. Then, press arrow-down until you can see the streams on a frame-by-frame basis. Now for each of your camera streams, do the following:
  1. In the 'main' stream, search a section that was filmed by the camera which we are trying to align.
  2. Hit 'l' to create a label
  3. Search for the exact same frame in the camera stream. It may help to disable playback for the 'main' stream temporarily to visually verify that the frame is the same in the compositor window.
  4. Move the cursor to that frame, and create another label.
  5. If the streams are indeed desynced, then one of the tracks will lead, and the other will follow. If the leading track is the 'main' track, arm the main track and any tracks that you have already synced before, and make sure to remember the audio tracks. If, on the other hand, this is the camera track, then only arm that camera track. At any rate, make sure to disarm the track(s) that are following.
  6. Use the control and arrow keys to select the first label. Use control, shift, and the arrow keys to select the section up to the second label.
  7. At the bottom right of the program window, you can see three entry boxes with time indexes. The first is the time index to your first label; the third the time index to your second label; an in between those, the second is the length of the interval from the first label to the second label. Set the contents of the first box to all-zeroes, to move the selection to the beginning of the time line; then press tab (to move to the second entry box) and enter (to confirm that you wish to create a selection of that length at the beginning of the timeline).
  8. Press Shift-Space to insert silence at the location of the selection. This will move the armed tracks to the right, and not touch the not armed tracks.
  9. If you did everything right, the two tracks should now be aligned. Move the cursor to the second label, and verify that this is true by disabling 'play' for the main track and any tracks in between the main track and the track you're syncing. The frame in the compositor window should not change if you re-enable the main track. If it does, use 'z' for undo, remove your labels and try again.
Once your video tracks are aligned, you need one final video track that comes all the way on top. This is an empty, 'override' track. Anything you put in this track will override the main track. This way, you do not have to cut from the main track to another camera; instead, you just copy from a camera track and paste on the override track. It is, of course, possible to paste onto the main track, but that has the disadvantage that you cannot easily undo such edits after a 'save' operation. Using a separate 'override' track does allow that. To copy from one track to another track without moving in time, use the following method:
  1. Select the region where you wish to select another camera.
  2. Arm the camera track that you wish to copy from, and make sure not to arm any other track.
  3. Hit 'c' to copy the clip at that point.
  4. Disarm the camera track, and arm the 'override' track
  5. Without moving or removing the selection, hit 'v' to paste onto the override track.
All this may be basic knowledge for people who are more flexed in nonlinear editors than me; but I couldn't find this procedure on the Internet, so I thought I'd put it out there so that the next person who tries this doesn't have to try for days on end to come up with this, as I had to do.

22 April 2010

Matt Brubeck: Headless Web Workers: Does the web need background apps?

At my last job, I created several web applications designed to replace built-in apps on mobile phones. While modern browsers and HTML5 made this incredibly easy in many ways, we still ended up writing native (i.e. non-web) code for most of our applications. There were a few different areas where the browser alone didn't meet our needs, but one that I found suprisingly common was background processing. Consider the following mobile applications: Ideally, each of these apps will perform some actions even when the user does not have it open. (Background processing is not strictly necessary for the e-reader, but it would be useful to ensure the library is up-to-date even when opened in a place with no network connection.) You can't do this with a web app. Web Workers don't solve the problem, because they run only while the web page is open. What we need are headless web workers.1 The API Headless workers could use almost the same API as Web Workers. Instead of responding to messages from a web page, they would listen to events from the host system (browser or OS). These events might include time intervals, power-on/resume, changes in network connection, geographic locations, or "push" notifications from a remote server. The event-driven architecture of JavaScript in the browser allows the host system a high level of discretion over resource consumption. There's no special code needed to suspend processes and later restore their state, because JavaScript workers are naturally inactive between events. The host can provide limits on CPU or memory usage per event, with a separate message to notify processes whose handlers were aborted. And it can limit the number of concurrent processes by choosing when to dispatch events to listeners. Some listeners could even be disabled completely at times (like if the device is busy or the battery is low), and notified later of the events they missed. This is almost a return to the old days of cooperative multitasking. Mobile computing is definitely driving everyone towards higher-level process control in the OS, and different assumptions for applications. It's not surprising that my whole proposal resembles Android and iPhone 4.0 multitasking in several ways, since I've been doing development on Android for the last 18 months and encountering many of the same issues. The UI Headless workers do need some way to interact with the user. They could display standard system notifications (via Growl on the Mac, libnotify on Ubuntu, the status bar in Android, etc.) using W3C Web Notifications, which already have an experimental implementation in Chrome. Users also needs to know which sites have background tasks installed. Headless workers could be represented by icons in a standard location (perhaps a toolbar in desktop browsers, or the home screen on a mobile device). The icons could display ambient status; clicking one would reveal a menu with options to configure or remove it. Questions This proposal might be hard to standardize, especially where it's tied to specific OS capabilities. For now I'm just curious: would it be useful? You can write a native app or a browser extension to solve this problem today. But would it be worthwhile to have a standard, cross-platform way to do it? Has anyone else run into problems that this approach could solve?
  1. Because all web standards should have names that sound like Harry Potter creatures.

Chris Lamb: Locating source for any Python module

When I'm too lazy to find API documentation I just read the source code. To make this slightly easier in Python, here's what I use in my ~/.$ SHELL rc:
cdp ()  
  cd "$(python -c "import os.path as _, $ 1 ; \
    print _.dirname(_.realpath($ 1 .__file__[:-1]))"
  )"
 
For packages, this takes you to the corresponding source directory:
$ cdp twisted.web
$ pwd
/usr/share/pyshared/twisted/web
$ ls
_auth/  domhelpers.py  html.py  iweb.py  resource.py
[..]
The realpath and [:-1] hackery follow any python-support symlinks. For "standalone" .py (or .so) modules, cdp will take you to the directory it resides in:
$ cdp subprocess
$ pwd
/usr/lib/python2.5
$ ls subprocess.py
subprocess.py

21 April 2010

Russell Coker: Upgrading a SE Linux system to Debian/Testing (Squeeze)

Upgrade Requirements Debian/Squeeze (the next release of Debian) will be released some time later this year. Many people are already upgrading test servers, and development systems and workstations that are used to develop code that will be deployed next year. Also there are some significant new features in Squeeze that compel some people to upgrade production systems now (such as a newer version of KVM and Ext4 support). I ve started working on an upgrade plan for SE Linux. The first thing you want when upgrading between releases is a way of supporting booting a new kernel independently of the other parts of the upgrade. Either supporting the old user-space with the new kernel or the new kernel with the old user-space. It s not that uncommon for a new kernel to have a problem when under load so it s best to be able to back out of a kernel upgrade temporarily while trying to find the cause of the problem. For workstations and laptops it s not uncommon to have a kernel upgrade not immediately work with some old hardware, this can usually be worked around without much effort, but it s good to be able to keep systems running while waiting for a response to a support request. Running a Testing/Unstable kernel with Lenny Policy deb http://www.coker.com.au lenny selinux In Lenny the version of selinux-policy-default is 2:0.0.20080702-6. In the above APT repository I have version 2:0.0.20080702-18 which is needed if you want to run a 2.6.32 kernel. The main problem with the older policy is that the devtmpfs filesystem that is used by the kernel for /dev in the early stages of booting [1] is not known and therefore unlabeled so most access to /dev is denied and booting fails. So before upgrading to testing or unstable it s a really good idea to install the selinux-policy-default package from my Lenny repository and then run selinux-policy-upgrade to apply the new changes (by default upgrading the selinux-policy-default package doesn t change the policy that is running we consider the running policy to be configuration files that are not changed unless the user requests it). There are also some other kernel changes which require policy changes such as a change to the way that access controls are applied to programs that trigger module load requests. Upgrading to the Testing/Unstable Policy While some details of the policy are not yet finalised and there are some significant bugs remaining (in terms of usability not security) the policy in Unstable is usable. There is no need to rush an upgrade of the policy, so at this stage the policy in Unstable and Testing is more for testers than for serious production use. But when you upgrade one thing you need to keep in mind is that we don t to support upgrading the SE Linux policy between different major versions of Debian while in multi-user mode. The minimum requirement is that after the new policy package is installed you run the following commands and then reboot afterwards: setenforce 0
selinux-policy-upgrade
touch /.autorelabel If achieving your security goals requires running SE Linux in enforcing mode all the time then you need to do this in single-user mode. The changes to names of domains and labeling of files that are entry-points for domains is significant enough that it s not practical to try and prove that all intermediate states of partial labeling are safe and that there are suitable aliases for all domains. Given that you need to reboot to install a new kernel anyway the reboot for upgrading the SE Linux policy shouldn t be that much of an inconvenience. The relabel process on the first boot will take some time though. Running a Lenny kernel with Testing/Unstable Policy In the original design SE Linux didn t check open as a separate operation, only read/write etc. The reason for this is that the goal for SE Linux was to control information flows. The open() system call doesn t transfer any data so there was no need to restrict access to it as a separate operation (but if you couldn t read or write a file then an attempt to open it would fail). Recent versions of the SE Linux policy have added support for controlling file open, the reason for this is to allow a program in domain A to open a file and then let a program in domain B inherit the file handle and continue using the file even if it is not normally permitted to open the file this matches the Unix semantics where a privileged process can allow an unprivileged child to inherit file handles or use Unix domain sockets to pass file handles to another process with different privileges. SELinux: WARNING: inside open_file_mask_to_av with unknown mode:c1b6 Unfortunately when support was added for this a bug was discovered in the kernel, this post to the SE Linux mailing list has the conclusion to a discussion about it [2]. The symptom of this problem is messages such as the above appearing in your kernel message log. I am not planning to build a kernel package for Lenny with a fix for this bug. The command dmesg -n 1 will prevent such messages from going to the system console which is something you want to do if you plan to login at the console as they can occur often.

Jan Hauke Rahm: Mini DebConf 2010 Berlin. See you there?

Hi everyone!Mini DebConf 2010 Berlin - I'm attending I hope you all have already seen at least parts of our preparation for a Mini DebConf in Berlin this year. There are various posts on planet, some mails on -project and -events-eu and as I saw just today even identi.ca is not spared. If you haven t heard of it, this is your chance. Every year the LinuxTag (Linux day) is a four-day event in Berlin, Germany, likely comparable to other OpenSource events. It provides talks, discussion and a lot of booths of various Free Software projects. This year s LinuxTag will be on June 9th till 12th. Since it s held on a huge fairground, we were able to get quite some piece of it for our own use. We will have two areas, one for talks, the other as a hack lab and use right the middle of the LinuxTag for the Mini DebConf: June 10th and 11th with the hack lab open all through the night of course. Finding sponsors was the hardest deal in the beginning and we re not done with it yet. We got enough money, though, to make the decision and we still hope to get everything covered. Luckily we also have hardware sponsors and help on various issues we would not be able to deal with on our own. What s still missing, is you! :) The schedule for the talks is almost full, yet the hack lab could need more man power. Our idea is since we will be in freeze by then, right? to do a BSP incl. help for newbies. That means we will not only try to help users, we also would like to teach how to squash bugs and thus attract possible maintainers and other contributors. All that of course only works if we are enough people there. Now I understand this might seem to be only attractive to german developers as most of the talks will be held in german. But I strongly believe we can deal with it if you don t speak german. :) And at least on the first day of the event, you can meet our new DPL zack who will have the pleasure to provide the opening talk. Yay! Having said all this, you are more than invited to attend and help. Find more info (and a way to offer help) in the debconf wiki and enjoy more press announcements within the next few weeks. http://wiki.debconf.org/wiki/Miniconf-LT-Berlin/2010 On OFTC:
/join #debian-miniconf-berlin

Jan Hauke Rahm: Mini DebConf 2010 Berlin. See you there?

Hi everyone!Mini DebConf 2010 Berlin - I'm attending I hope you all have already seen at least parts of our preparation for a Mini DebConf in Berlin this year. There are various posts on planet, some mails on -project and -events-eu and as I saw just today even identi.ca is not spared. If you haven t heard of it, this is your chance. Every year the LinuxTag (Linux day) is a four-day event in Berlin, Germany, likely comparable to other OpenSource events. It provides talks, discussion and a lot of booths of various Free Software projects. This year s LinuxTag will be on June 9th till 12th. Since it s held on a huge fairground, we were able to get quite some piece of it for our own use. We will have two areas, one for talks, the other as a hack lab and use right the middle of the LinuxTag for the Mini DebConf: June 10th and 11th with the hack lab open all through the night of course. Finding sponsors was the hardest deal in the beginning and we re not done with it yet. We got enough money, though, to make the decision and we still hope to get everything covered. Luckily we also have hardware sponsors and help on various issues we would not be able to deal with on our own. What s still missing, is you! :) The schedule for the talks is almost full, yet the hack lab could need more man power. Our idea is since we will be in freeze by then, right? to do a BSP incl. help for newbies. That means we will not only try to help users, we also would like to teach how to squash bugs and thus attract possible maintainers and other contributors. All that of course only works if we are enough people there. Now I understand this might seem to be only attractive to german developers as most of the talks will be held in german. But I strongly believe we can deal with it if you don t speak german. :) And at least on the first day of the event, you can meet our new DPL zack who will have the pleasure to provide the opening talk. Yay! Having said all this, you are more than invited to attend and help. Find more info (and a way to offer help) in the debconf wiki and enjoy more press announcements within the next few weeks. http://wiki.debconf.org/wiki/Miniconf-LT-Berlin/2010 On OFTC:
/join #debian-miniconf-berlin

20 April 2010

Brandon Holtsclaw: My Email Setup

A few People on IRC have ask me to elaborate on my email reading setup. ( As far as hosting I use Google Apps for your domain, but I wont be getting into the details of that. )

First this will work for anyone that uses IMAP to currently fetch their mail, no matter the provider even though I'll be hi-lighting Gmail because thats what I use. This also works well for GMail and/or IMAP Backup of your email.

In short the setup is as follows:
IMAP Server --> offlineimap --> Local Maildir --> Evolution Reading Local Maildir

Soo lets get to the meat of this, first install offlineimap sudo apt-get install offlineimap then lets configure it, below is my config file, most everything should be straight forward (the formating below seems wrong on planet click the post link to copy/paste):
[general] accounts = brandonholtsclaw maxsyncaccounts=1 ui = Noninteractive.Basic metadata=~/.offlineimap [Account brandonholtsclaw] localrepository = gmailLocal remoterepository = gmailRemote [Repository gmailLocal] type = Maildir localfolders = /home/bholtsclaw/.maildir/brandonholtsclaw/ sep = / [Repository gmailRemote] type = Gmail remoteuser = me@brandonholtsclaw.com remotepass=XXXX realdelete = no # This translates folder names such that everything (including your Inbox) # appears in the same folder (named root). #nametrans = lambda foldername: re.sub('\[G.*ail\] ^\.INBOX\.*', '.', re.sub('^', './', foldername)) nametrans = lambda foldername: re.sub('^(\[G.*ail\] INBOX)', '.', foldername) # This excludes some folders from being synced. You will almost # certainly want to exclude 'All Mail', 'Trash', and 'Starred', at # least. Note that offlineimap does NOT honor subscription details. folderfilter = lambda foldername: foldername not in ['[Gmail]/All Mail', '[Gmail]/Trash','[Gmail]/Spam','[Gmail]/Starred']
Save that file as ~/.offlineimaprc and then create the directory ~/.maildir/

Make sure to chmod 0600 ~/.offlineimaprc so because it stores your email password and you dont want anyone else reading that. Other than that you are now all set, just Setup a new email account in Evolution and tell it to use Maildir , point it at your ~/.maildir directory and your golden.

If anyone else uses a setup similar to this and noticed something glaring I missed please drop me a comment, and I'll update the post ( plus I might learn something new ).

Cheers!
P.S. Dont forget to add a crontab to run offlineimap once in a while ( every ~10 minutes ) to check for new mail and sync your local changes back to the IMAP server.

19 April 2010

MJ Ray: Samsung N150 Netbook and Ubuntu Netbook Remix

That was a pretty good weekend. I set up someone s new Samsung N150 netbook with Ubuntu Netbook Remix. If you like Windows, you might want to skip this long paragraph: the N150 came with Microsoft Windows 7 Starter. When I realised what that was, I thought it was some sort of joke. It s more like an advert for Windows than a proper operating system. They even removed the option to replace the branded backdrop image, which gives you an idea of the pettiness of that distribution. I read that Win7 Starter used to have a 3 simultaneous application limit but an update removed it because of the sheer volume of complaints and rumblings about court cases to get money back. Microsoft justify all the limits with the argument that it s optimised for low-power netbooks, but the N150 goes like stink compared to my own (7-year-old) work laptop and how much power is saved by loading the Windows logo backdrop instead of a nice picture anyway? What did that make me want to do? Well this:
Windows 7 Sins But I d read that Samsung view nuking Win7 Starter from orbit as voiding the warranty and I couldn t see anything to confirm or reject that in the paperwork, so I made it dual-boot with Ubuntu netbook remix. If it ever has to go back to the shop, I ll hide the boot menu. I had enough trouble installing it that I did contemplate get.debian.net with some of the Debian Eee PC things, but I wasn t sure what I needed and I didn t have that much time. There were two big gotchas when installing:
  1. When you switch between Ubuntu and Windows, it won t boot the first time. Second and subsequent boots are fine, but the first one just reboots immediately. I suspect this would be the same for all GNU/Linux distributions.
  2. I didn t realise that the current ndisgtk (or the underlying ndiswrapper?) couldn t use Win7 drivers. Once I downloaded some XP drivers, it worked. There are some native drivers for the rtl8192 but I didn t have time to go compiling on it yet.
After figuring those out, Ubuntu seems to work fine. Better than the Windows. I got particularly appreciative comments about the large clickable spaces on the launcher that netbook remix uses (which is what I d expect from Fitts s Law). Debian probably has a similar launcher, but I don t know what it s called yet. It looks like some Gnome window or file manager and I m a GNUstep throwback. Setting up the mobile phone for internet access was also a breeze. It s a later model than my old k608i, so it supports PANU, so after the Bluetooth pairing, it appeared in the networking menu on the top panel bar and it just worked. On Sunday, I cycled to Clevedon (7 miles away as the crow flies, but 12 by bike because of a missing river crossing). Pretty good weekend.

16 April 2010

Vincent Sanders: Claudia black makes this look good

OK maybe the title is a bit of a reach, but she is pretty and my topic is dull.

It is the school holidays and between entertaining the kids I have been experimenting with the vala (see there is the link to the title) language. Overall I really like it, building a usable graphical GTK application is a snap and that side of it works well.

Unfortunately, and here comes a a whole pile of fail, the documentation is lacking, not just poor but mostly non-existent. You rapidly discover yourself using the Glib and GTK library documentation to try and infer how things work.

Underneath, the vala compiler is clever, it is really a c code generator. It takes your vala source file converts it to c and compiles it. When it works smoothly it works very well, when something is not quite right you can end up with a large pile of pieces complete with the C compiler spitting out cryptic nonsense.

This is all exasperated to new heights of madness when you want to access a simple c library. I say simple because if you want to access a Glib based library its easy and "there is an app for that". Because vala is object oriented c interfaces must be described as an object. This description is performed using vapi files. The file format is documented by the simple approach of "we already wrapped a load of libs go look at their vapi files"

For my small starter project I wanted to access a tiny c library I had written. The entire interface described in a single header header (excluding copyright) is:
typedef enum motor_dir  
motor_off = 0,
motor_forward = 1,
motor_back = 2,
motor_brake = 3,
motor_dir;

int edgerbtarm_init(void);
int edgerbtarm_close(void);
void edgerbtarm_ctrl_motor(int motorn, motor_dir direction);

Yes that is it! one enum, an initialise a finalise and a single operation function. The vapi file I came up with after a great deal of trial, error and head scratching was.
[CCode(cheader_filename = "libedgerbtarm.h",
lower_case_cprefix = "edgerbtarm_",
cprefix = "")]
namespace edgerbtarm
[CCode(cprefix = "motor_")]
public enum motor_dir
off,
forward,
back,
brake


public int init();
public int close();
public void ctrl_motor(int motorn, motor_dir direction);
This seemed to work until I tried to use the motor_dir type within my vala code at which point the c compiler started throwing errors about undeclared macros
arm.vala.c:297: error:  EDGERBTARM_TYPE_MOTOR_DIR  undeclared (first use in this function)
I struggled for some time and finally ended up asking my friend Enrico for help. He initially suggested I simply use an int instead of the motor_dir type and cast when I needed to. This approch worked and let me compile the program, it did however seem a bit grubby and removed the type safety of the enum.

Then Enrico came up with the "correct" solution. the enum description in the in the vapi file needed an extra parameter so vala would know the enum did not have a Glib type...yeah it was obvious to me too :-/

so by altering the vapi file enum declaration to
[CCode(cprefix = "motor_", has_type_id = false)]
public enum motor_dir
off,
forward,
back,
brake
Everything works as you might expect and the motor_dir enum can be used as a type within the vala program with no more fuss.

So the outcome of all this is that while vala is an interesting language which I may well use again in future, one should be aware that it is still very immature as a solution and has nowhere near enough documentation especially round the awkward stuff where it needs it most.

Dirk Eddelbuettel: Rcpp 0.7.12

A new bug fix versions 0.7.12 of Rcpp is awaiting inclusion into CRAN and Debian. It is also available from here. This is another bug-fix version related solely to a build failure on Windows. Trying to protect paths with spaces has the side-effect of breaking backticks use, which unfortunately is already in use by a number of package that since broke during CRAN autobuilds. No other changes were made. As always, full details are in Rcpp Changelog page and the Rcpp page which also leads to the downloads, the browseable doxygen docs and zip files of doxygen output for the standard formats. A local directory has source and documentation too. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page

David Welton: Make Life Easier for European Startups: Simpler/Cheaper Limited Liability Companies

As I've mentioned here before, one of the differences between "Europe" and the US is just how cheap it is to start a company in the US. Before we go any further, I'll take a moment to add the standard "yes, I know that Europe is not one country" disclaimer, and specify that I'm mostly talking about continental Europe. Starting a company in the UK or Ireland isn't nearly as bad. In Oregon, I spent $55 to create DedaSys LLC. If I'd created it with one or more partners, I would have spent something on a lawyer in order to create a solid agreement, but that is of course a voluntary expenditure that we would pay for because it provided us with some value. In Italy, it costs thousands of Euros just to get started with a company; before you've made any money at all. And, while there are gradual improvements, it's still a bureaucratic process that pretty much must involve at least an accountant and a notary public. And you have to involve the very arbitrary number of 10,000 euros of capital in the company, supposedly there as a guarantee for the people you're doing business with. But 10,000 is not nearly enough to cover some kinds of problems you might cause, and way more than, say, a web startup with a couple of guys and their laptops need. My friend Salvatore says it's possible to sort of "get around" sinking the full 10K into your company, but in any case, the principal of "caveat emptor" is a more sensible one. At most, make a transparency requirement so that people dealing with companies can tell exactly how much reserves they have. During a recent bout of cold/flu, compliments of our daughter's nursery school, when I had some extra time on my hands, I decided to do something about this, however much it may be pissing into the wind. I set up a site: http://www.srlfacile.org (warning: Italian only) As well as a Google Group, and petition for people to sign, in an attempt to make a little bit of noise about the problem, here in Italy. While it's likely that the actual bureaucratic mechanisms are more smoothly oiled in other European countries, I have my doubts as to whether the actual amount of paperwork can compete with the very minimal page or two required by many US states. And in any case, the costs are still quite high, and while we all have different levels on the idea of the role of government, and ideal levels of taxation, I think we can agree that it's sensible to levy taxes only after a company has begun to make money! So - how about it? Anyone want to create sister initiatives in other countries in Europe where things aren't as simple and easy as they should be? Anyone care to tell of how this problem has been fixed elsewhere? I've heard tell that in Germany, there is now a simpler/cheaper way to create limited liability companies.

15 April 2010

Gustavo Noronha Silva: WebKit2 and WebKitGTK+

So you ve seen people talking about WebKit2, perhaps have seen someone claiming it drops support for Linux , and you ve been wondering what the hell that means for WebKitGTK+. Well, welcome to the preemptive Q&A section with WebKitGTK+ maintainers =D. Let s first explore some history so we can better understand what exactly is going on. What exactly is WebKit2? Currently, when we say WebKit we really mean one of the ports that are built on top of WebCore using the WebKit layer. WebCore is the part that does all of the hard Web-related work, WebKit an API layer that exposes WebCore functionality in a coherent way, so that the platform-specific ports can expose a public API layer for their applications to use, which is usually also called WebKit . This WebKit layer was designed by Apple to build the Mac, and Windows ports it maintains, and was later released as Free Software so that other ports, such as the GTK+, Qt, EFL ports could be built on top of it, instead of having to do all the heavy lifting from WebCore directly.

Current WebKit model WebKit2 is nothing more than the second version of that interface, with a whole lot of changes on what you can expect from it, and on how it interacts with WebCore, and the platform-specific API and UI. First of all, the first WebKit was not API stable, and that interface was usually not made public by the various ports - they only exposed their platform-specific APIs. WebKit2 is being designed to provide a stable, cross-platform, C-based, non-blocking public API. This is huge. It will allow cross-platform code to be written without having to consider language, and port differences for basic functionality. The second big change is the API will be made fully non-blocking. Currently most things you do are asynchronous already, but some of them may be completed in a synchronous ways (like, loading a string into WebKit instead of an URI). This is important for responsiveness, and is also a very important need for what comes next: process splitting. WebKit2 will bring into WebKit proper the concept of splitting the UI process from the Web process, similar to what Chromium has. It also much more awesome than what Chrome has for a large number of reasons, including, but not limited to:

  1. It s being contributed directly to the WebKit project, in a cross-platform way that lets ports such as WebKitGTK+ take advantage of it, instead of being shipped directly into Safari, like Google does with Chrome;
  2. The process separation goes bellow the API layer, meaning that all complexity involved in managing the process separation is handled by the library, and hopefully none of it leaks to the application using it; that means that applications like Devhelp and Yelp will be able to take advantage of this without having to make their lives more complicated;
There s a much better diagram in WebKit2 s wiki page, but here goes a simplified version that demonstrates what I m talking about:
WebKit2 model
What WebKit2 is not? WebKit2 is NOT a rewrite of the whole WebKit stack. Webcore will continue mostly unchanged, and all ports currently building on top of it will keep working. It is also not a fork - the code lives in the same tree as the current version of WebKit, which will allow us to progressively move towards using this new, improved layer. WebKit2 is not Apple-only, and it is not dropping Linux support. Initial builds of the code that is being landed will likely show up building on Linux in the near future (specially because us porters are already eager to play with it). What happens to WebKitGTK+? In the near future, nothing special. We will continue working towards making it feature-complete, more stable, faster, and rocking on it as always. We will, though, start working out how we can best take advantage of WebKit2 in order to provide an even more awesome library for the G world. What this means is you can expect us to have a library that will provide a nice GTK+ widget, just like we have today, with a GObject-based API, like we have today, but that is built on top of this new WebKit2 infrastructure, taking advantage of the process-splitting, and the bigger focus on not blocking the UI thread. This should give us a platform that is more stable, and faster and more responsive than what we already have today. The API is bound to change, of course, but the WebKit2 version of WebKitGTK+ will be a separate, parallel-installable library, and we will keep supporting the WebKit1 version while we work on making the new one at least as good as the current one. This is long term we re talking here. We ll likely see WebKitGTK+ 1.4, and 1.6 come to life before we are satisfied enough with WebKitGTK+2. We hope this clears some of the doubts up, and lightens your hearts! The WebKitGTK+ maintainers.

Next.

Previous.