For those of you who follow me through anything other than Planet Debian (who will surely tolerate this repetition):
Interesting but frightful things are happening in North African countries. We saw what happened in Tunisia some days ago. Now, Egypt is a way larger, way more populous... And, dare I say, way more important country. Also, it is a country which borders Israel, where I lived in for ~18 months, and to which although I am today unaffiliated is very important for me. And what happens in Egypt will surely shape the whole mid-East.
So, here goes a copy of Mohammed Sameer's post Not just a link to it, as he might have to take it down. Of course, Mohammed, if you in any way think I should delete this, please please tell me, and I will comply immediately.
Egypt has been fighting for freedom already for 3 days now. The whole country has experienced a large number of street demonstrations and protests within the last 3 days to be continued also on Friday, the 28th of January and afterwards. The protests' main goal is to oust dictator Hosni Mubarak's regime, which has been in power for almost 30 years. We want him out. A massacre has happened in Suez. Police used live ammunition and tear gas. There are unconfirmed rumors that the army might interfere. Even a bigger protest is supposed to take place a few hours from now. After the Prayer on Friday. The internet has been shutdown completely. Egypt is no longer online since Friday, the 28th of January 00:45 AM. Text messages to cell phones have been cut off too and all cell phones services will be following. No one knows exactly the intentions of the regime but it doesn't sound good. Please help us....From what I read from Israeli sources, what worries them and many people around the world is that, although Egypt is formally a democratic country, the ruling party has seen towards having basically no oposition Besides the stubborn Islamic Brotherhood (very akin to Hamas). Now, the Islamic Brotherhood (as well as Hamas, and as well as most other Islamic regimes I know off, although I might be way mistaken) have got huge popular support because... They are true to their beliefs. In short, they are not corrupt Something that cannot be said about many political organizations around the globe. They are true to their word. And although many of us shiver at thinking of their word getting more power... It is only the Egyptians who should have a say on who rules Egypt. I honestly hope the Egyptian people get their long-owed self-determination. Of course, I hope Tunisians also get it, and not just a mirage of it. And every people, including us poor Mexicans who have neither had a chance to rule our destiny. And I hope it is a change for good, for tolerance, for peaceful coexistance with the neighbours, even if they are in many ways the rivals. [Update] I just found out that, as expected, the news have reached Slashdot: Egypt shuts off all Internet access. I'm sure you will find lots of more information there.
Please blog about it in English and in all languages.
Please spread the news everywhere.
Please talk to media.
Please petition your government if that will help. If there's anything that you can do, please do it and help us save the country and the people. More news from twitter #jan25.
I love revision control. I love the ability to track changes over time,
whether that be to see why I changed something in the past, or to see
why a particular thing has stopped working, or to see if a particular
thing is fixed in a more recent version than the one I'm using.
However I have a few opinions about the use of revision control that are
obviously not shared by other people. Here are a few of them:
Just a few days after OpenSSH 5.7 was released upstream, our (Debian s as
well as Ubuntu s) tireless OpenSSH and GRUB maintainer Colin Watson
uploaded a first package of OpenSSH 5.7 to Ubuntu
Natty and to
Debian Experimental.
Besides the obvious new thing, the implementation of Elliptic Curve Cryptography which promises better speed and
shorter keys while staying at the same level of security, one other
item of his changelog entry stuck out and caught my attention:
scp(1): Add a new -3 option to scp: Copies between two remote hosts are transferred through the local host.
sftp(1)/sftp-server(8): add a protocol extension to support a hard link operation. It is available through the ln command in the client. The old ln behaviour of creating a symlink is available using its -s option or through the preexisting symlink command.
Egypt has been fighting for freedom already for 3 days now.
The whole country has experienced a large number of street demonstrations and protests within the last 3 days to be continued also on Friday, the 28th of January and afterwards.
The protests' main goal is to oust dictator Hosni Mubarak's regime, which has been in power for almost 30 years.
We want him out.
A massacre has happened in Suez. Police used live ammunition and tear gas. There are unconfirmed rumors that the army might interfere.
Even a bigger protest is supposed to take place a few hours from now. After the Prayer on Friday.
The internet has been shutdown completely. Egypt is no longer online since Friday, the 28th of January 00:45 AM.
Text messages to cell phones have been cut off too and all cell phones services will be following. No one knows exactly the intentions of the regime but it doesn't sound good.
Please help us.
Please blog about it in English and in all languages.
Please spread the news everywhere.
Please talk to media.
Please petition your government if that will help.
If there's anything that you can do, please do it and help us save the country and the people.
More news from twitter #jan25. read more
I've (again) changed schedule of what to implement and I've spend fourth Hackweek 6 day by doing more cleanup and documentation work than real coding.
The major new feature is support for direct installation of the applet to the phone, so the installation is now easier. There were minor improvements on the both sides to allow support for calls and deleting of SMS messages. Adding calendar and todo entries is still left for future (hopefully tomorrow).
I've done (more or less) final cleanup of my changes in the applet itself and I've sent changes back upstream hoping for merging them (I'd give you link to the mail, but the archive does not work).
Rest of the time was spent collecting feedback from users testing the code (surprisingly there are already few brave users who gave it a try). It resulted in few bug fixes and improved documentation.
Last but not least - all code is is available in our Git repository and check documentation for information how to set it up.
Filed under: English Gammu Suse 0 comments Flattr this!
(Update: Link to Tomeu s blog post, repost for planet.gnome.org)
Last week I was in Prague to attend the GNOME/Python 2011 Hackfest for gobject-introspection, to which Tomeu Vizoso kindly invited me after I started working with PyGI some months ago. It happened at a place called brmlab which was quite the right environment for a bunch of 9 hackers: Some comfy couches and chairs, soldering irons, lots of old TV tubes, chips, and other electronics, a big Pirate flag, really good Wifi, plenty of Club Mate and Coke supplies, and not putting unnecessary effort into mundane things like wallpapers.
It was really nice to get to know the upstream experts John (J5) Palmieri and Tomeu Vizoso (check out Tomeu s blog post for his summary and some really nice photos). When sitting together in a room, fully focussing on this area for a full week, it s so much easier to just ask them about something and getting things done and into upstream than on IRC or bugzilla, where you don t know each other personally. I certainly learned a lot this week (and not only how great Czech beer tastes export GI_TYPELIB_PATH=$HOME/projects/gtk/gtk:$HOME/projects/gtk/gdk export PYTHONPATH=$HOME/projects/pygobjectBetter GVariant/GDBus support The GNOME world is moving from the old dbus-glib python bindings to GDBus, which is integrated into GLib. However, dbus-python exposed a really nice and convenient way of doing D-Bus calls, while using GDBus from Python was hideously complicated, especially for nontrivial arguments with empty or nested arrays:
from gi.repository import Gio, GLib
from gi._gi import variant_type_from_string
d = Gio.bus_get_sync(Gio.BusType.SESSION, None)
notify = Gio.DBusProxy.new_sync(d, 0, None, 'org.freedesktop.Notifications',
'/org/freedesktop/Notifications', 'org.freedesktop.Notifications', None)
vb = GLib.VariantBuilder()
vb.init(variant_type_from_string('r'))
vb.add_value(GLib.Variant('s', 'test'))
vb.add_value(GLib.Variant('u', 1))
vb.add_value(GLib.Variant('s', 'gtk-ok'))
vb.add_value(GLib.Variant('s', 'Hello World!'))
vb.add_value(GLib.Variant('s', 'Subtext'))
# add an empty array
eavb = GLib.VariantBuilder()
eavb.init(variant_type_from_string('as'))
vb.add_value(eavb.end())
# add an empty dict
eavb = GLib.VariantBuilder()
eavb.init(variant_type_from_string('a sv '))
vb.add_value(eavb.end())
vb.add_value(GLib.Variant('i', 10000))
args = vb.end()
result = notify.call_sync('Notify', args, 0, -1, None)
id = result.get_child_value(0).get_uint32()
print id
So I went to making the GLib.Variant constructor work properly with nested types and boxed variants, adding Pythonic GVariant iterators and indexing (so that you can treat GVariant dictionaries/arrays/tuples just like their Python equivalents), and finally a Variant.unpack() method for converting the return value of a D-Bus call back into a native Python data type. This looks a lot friendlier now:
from gi.repository import Gio, GLib
d = Gio.bus_get_sync(Gio.BusType.SESSION, None)
notify = Gio.DBusProxy.new_sync(d, 0, None, 'org.freedesktop.Notifications',
'/org/freedesktop/Notifications', 'org.freedesktop.Notifications', None)
args = GLib.Variant('(susssasa sv i)', ('test', 1, 'gtk-ok', 'Hello World!',
'Subtext', [], , 10000))
result = notify.call_sync('Notify', args, 0, -1, None)
id = result.unpack()[0]
print id
I also prepared another patch in GNOME#640181 which will provide the icing on the cake, i. e. handle the variant building/unpacking transparently and make the explicit call_sync() unnecessary:
from gi.repository import Gio, GLib
d = Gio.bus_get_sync(Gio.BusType.SESSION, None)
notify = Gio.DBusProxy.new_sync(d, 0, None, 'org.freedesktop.Notifications',
'/org/freedesktop/Notifications', 'org.freedesktop.Notifications', None)
result = notify.Notify('(susssasa sv i)', 'test', 1, 'gtk-ok', 'Hello World!',
'Subtext', [], , 10000)
print result[0]
I hope that I can get this reviewed and land this soon.
Thanks to our sponsors!
Many thanks to the GNOME Foundation and Collabora for sponsoring this event!
Third Hackweek 6 day went a bit differently than I planned, but there is still lot of progress.
I've added some more calls to the Series60 remote protocol, so that some things now work much faster (eg. getting number of contacts, calendar entries). The applet now also has a function to toggle Bluetooth so it does not have to be done elsewhere in phone menus.
On Gammu side I focused on messaging support, so now Gammu can list messages in the phone or send new message.
Modification of calendar entries is left for tomorrow, hopefully I will get to it and the support will be more or less complete and I will have Friday for final cleanup.
And as usual - all code is is available in our Git repository and check documentation for information how to set it up.
Filed under: English Gammu Suse 2 comments Flattr this!
Like last year, here s a list of Debian related projects that I d like to tackle this year. I might not do them all, but I like to write them down, I am more productive when I have concrete objectives.
6 comments Liked this article? Click here. My blog is Flattr-enabled.
The easiest way to compress the data that is being served to the visitors of your web application is to make use of mod_deflate. Once you have enabled that module and provided it with a suitable configuration file, it will compress all releant files on the fly as it is serving them.all: build
build:
find static/css -type f -name "[^.]*.css" -execdir yui-compressor -o .css \;
find static/js -type f -name "[^.]*.js" -execdir yui-compressor -o .js \;
cd static/css && for f in *.css.css ; do gzip -c $$f > basename $$f .css .gz ; done
cd static/js && for f in *.js.js ; do gzip -c $$f > basename $$f .js .gz ; done
clean:
find static/css -name "*.css.css" -delete
find static/js -name "*.js.js" -delete
find static/css -name "*.css.gz" -delete
find static/js -name "*.js.gz" -delete
find -name "*.pyc" -delete
Accept-Encoding = gzip,deflate(Incidently, if you want to test what non-gzipped enable browsers see, just browse to about:config and remove what's in the network.http.accept-encoding variable.)<Directory /var/www/static/css>
AddEncoding gzip gz
ForceType text/css
Options +Multiviews
SetEnv force-no-vary
Header set Cache-Control "private"
</Directory>
<Directory /var/www/static/js>
AddEncoding gzip gz
ForceType text/javascript
Options +Multiviews
SetEnv force-no-vary
Header set Cache-Control "private"
</Directory>
When my wife bought her HP 2605dn color laser, she had also ordered a set of
replacement cartridges because the originals would supposedly not last very
long. It turned out that they would last over two years, though.
Now, the black cartridge was empty. The replacements are original HP
components, but recycled/refilled second hand from a different source. I put in
the black one, and the trouble started with the new drum having a big scratch
that would appear in every print. After two years, returning the cartridge was
not an option. As the old drum was still good, the idea was
to put the new toner into the old cartridge. A bit of googling (and visual
inspection) quickly revealed that you are not supposed to do this, the device
doesn't have any facilities to access anything.
Some post did indicate though that the cartridge actually consists of two parts
that are only held together by two pivot pins and two small springs. If you
pull the two parts apart a bit, you can feel the axis the parts are moving
around. So, I would try to use the old drum part with the new toner container
part.
Removing the springs is easy (also removing the flap covering the drum, along
with a tiny third spring). The two pivot pins are pretty inaccessible, but I
managed to pull out both using a pointy tong. One pin is made of metal, if you
need more space you can drill a small hole right next to it. The other pin is
made of plastic with a small hole in it, in one case I succeeded by screwing in
a little screw and pulling at it.
Reassembling the parts is not so hard. I put the "new" cartridge into the
printer, waited for the initialization to finish, only to find out the printer
would still think the cartridge was empty and should be replaced. Duh.
I then discovered a small chip attached to one corner of the drum unit,
probably carrying product ID and some serial number. Luckily, it was easy to
be removed and exchanged with the other drum unit. Still, the printer thought
the cartridge was empty. Some (windows) driver re-installations later it was
clear that there is no "ignore fill level and print anyway" option. (Cups
didn't print either.)
The HP Support Forum has a long
Ink cartridge empty but it's not
thread with lots of complaints but few answers. (Their problem is mostly with
new HP cartridges becoming "empty" after a few days.) Someone suggests trying
to cold reset the printer. For the 2605dn, that's holding the left and right
buttons while powering on. I removed the cartridges for doing so. When I had
put them back in, the printer asked me to confirm that non-HP material was
installed, and subsequently didn't display any fill level for the black
cartridge anymore, just " ? " in the display.
Printing works now. Yay.
(Lesson learned: I still hate dealing with printers.)
I've spent second day of Hackweek 6 on more different tasks.
First I tried to add some improvements to Series60 applet. First things to fix were crashes on requesting non existing contact or calendar entry. After that I started to improve user experience a bit, for example by making the menu work and contain some useful things. After that I've added new functionality to capture screenshots of the device. So you can see how the applet actually looks like:
On the Gammu side, I've implemented reading of contacts and todos. No write support yet, that will be done tomorrow. And of course counterpart for the screenshot function.
I've also spent some time on writing documentation, so now there is some documentation on setting up the S60 connection or the new gammu screenshot command.
All code is is available in our Git repository.
Filed under: English Gammu Suse 0 comments Flattr this!
There are certain people who are NIH-prone. Usually I consider
this insane, but sometimes I sympathize. Certainly I have
pulled a NIH once or thrice before.
Maybe I'm one of those old curmudgeons who incorrectly remembers
the past, but I have the feeling that software used to work a
whole lot better. Admittedly it did less, but it was also less
prone to weird semi-failures. I am probably repressing a bunch
of kernel oopses in the '90s.
Now though, I can waste a week and a half being miserable as
SIP clients fail on me erratically, because I hate Twinkle and
no one thought to tell me that Twinkle is really the only SIP
client that works.
The interoperability of CalDAV and GroupDAV servers and clients
seems to be abysmal. The same even appears to be true of
plain ol' WebDAV.
There are multiple forks of Markdown. I blame John Gruber for
not maintaining a strong-enough central standard.
No working LUKS-encrypted live images appear to exist in the
wild.
The only reliable and useful backup software for my needs was
abandoned in 2008.
Everything in Rails is bloated and crazy, except for Redmine.
How is Redmine able to transcend? I do not understand.
There is no way you can run an Android phone on only free
software.
freeswitch is on crack.
In its Fast distributions and slow servers article, Joe Zonker Brockmeier explains the difficulties that Fedora has to use its own distribution on their infrastructure and echoes some questions they faced:
Why wouldn t a Linux distribution project wish to showcase the distribution by hosting its infrastructure using its own system?I completely share the underlying assumption. Eating its own dog food is very important if you want to build a Linux distribution and claim with some confidence that it s of quality and usable. Debian does quite well nowadays in that respect. There were times where the mailing list server was using Qmail (non-free at that time, and thus not part of Debian) but that s long gone. We have also seen our build infrastructure relying on software that was not public and not packaged in Debian, but that also is history. The Debian System Administration team (DSA) maintains more than 140 servers running Debian. They mostly run the stable version of Debian but a few test machines are already running Squeeze since a few months (qa.debian.org for example). The Debian admins want to ensure that the next stable release of Debian still has everything they need and that the software they use still work as expected. Big kudos to the DSA team for this choice! I hope we ll be able to continue to live up to those standards for a long time to come. PS: If you want to learn more about the setup that the DSA team uses, head to dsa.debian.org. You ll find all their repositories and some of their internal documentation.
Subscribe to this blog by RSS, by email or on Facebook.
12 comments Liked this article? Click here. My blog is Flattr-enabled.
Next.