Please send requests for new feeds to: feedback@debianlinux.net
ToC
- Ajaxian : Right Click and Flash
- KDE : Will Stephenson: Successful Akonadi Hack Sprint in Berlin
- Ubuntu : Corey Burger: 27 Aug 2007
- Python : Second p0st - Phillip Pearson: Word 2007 not finished?
- RDF : Virtuoso Cluster Preview
- RDF : Banker
- RDF : Tutorillas
- Mozilla : Li Gong: 谋智网络Open House (09/01/2007)3pm
- GStreamer : Elisa News: Development websites moved
- PHP : FrOSCon 2007 - Sebastian Bergmann
- Smalltalk : ESUG 2007 Kickoff
- Maemo : MOSH by Nokia
- XMLhack : 5★♫: Kremer Plays Bach
- Jabber : Stefan Strigler: Google Tech Talk on Building JavaScript Libraries
- KernelTrap : OpenBSD: Software Freedom
- GNOME : Vivien Malerba: Libgda: reports generation
- PHP : What company would you work for? - Ligaya Turmelle
- OpenClipArt : Ted Gould: Walking Boston
- KDE : Guillermo Amaral (gamaral): Back in Hack
- XMLhack : del.icio.us bookmarks for 2007-08-26
- KDE News : KDE Commit-Digest for 26th August 2007
- Smalltalk : ESUG 2007 : c’est parti
- XMLhack : The Internet is a Dead Platform and Mark Cuban is a
Dinosaur
- Ajaxian : Foo: A Prototype based RIA framework
- BlenderNation : Video Tutorial: Creating an SGI logo
- GNOME : Glynn Foster: OpenSolaris Developer Summit
- Python : Making It Stick (Patrick Logan): That's Fine
- XMLhack : The biggest gift
- Maemo : Nokia 770 for $129 on sale at eCost
- Python : Making It Stick (Patrick Logan): OK -- yeah, something about JAVA
- Ubuntu : Aaron Toponce: Ode To Hercules Haiku
- PostgreSQL : David Fetter: PostgreSQL Weekly News - August 26 2007
- Asterisk : Voip-Info: Asterisk bounty PRI 2B channel transfer / Still need solution for NI2 2BCT [ID: 42821]
- GNOME : Miguel de Icaza: Election Money
- RDF : Who uses metadata from HTML head/meta @name and @content
attributes?
- OpenOffice : IssueZilla: New issues: Mon Aug 27 03:43:01 UTC 2007
- Eclipse : Nirav Thaker: Back to Enterprise Apps
- OpenOffice : Sebastien Plisson: Mac Address Book Integration : a Google Summer Of Code success !
- Python : Kun Xi: Would you like a slice of pie?
- LISP : Gary King: Followup to ASDF Plug-ins
- Free Software Magazine : Tips and Tricks
- Python : Groovie: Next-Gen DVD Wars Give me the Blues...
- Python : Django Weblog: Django roundup: August 26
- Eclipse : Nick Boldt: Notes 8: Part 3: M'aidez!
- Mozilla : Gen Kanai: default serif font for Chinese (zh-CN)
- Debian : Enrico Zini: pkgprune
- Jabber : Fabio Forno: Signing and Nokia: sgrunt
- Asterisk : Nerd Vittles: Back to School Time: The Bleeding Edge of Asterisk, Part 1
- KernelPlanet : Robert Love: Robert's Blog and Feed Moved!
- FFII Software Patents : WSJ: Patent System's Revamp Hits Wall
- Symfony : A week of symfony #34 (20->26 August 2007)
- Mozilla : Justin Scott: A Comparison
- Smalltalk : Chicken in mojo criollo
- GNOME : Ronald Bultje: Verizon Wireless and getting a cell phone
- Mozilla : Robert O'Callahan: Mercurial
- OpenID : The OpenID Buzz: Information Cards for OpenIDs
- Python : Voidspace: Playing Video with Silverlight
- XMLhack : Bragging
- XMLhack : Facebook Spam
- Mozilla : Robert O'Callahan: OOXML Wars
- Debian : Junichi Uekawa: Seeing some newcomer to Japan.
- Debian : Miriam Ruiz: D compiler in Debian
- Eclipse : Denis & Karl: Eclipse: tools for IT people too
- Smalltalk : MOO XML: Even MS don't implement it
- Debian : Russell Coker: Never IRC as Root
- Eclipse : Litrik De Roy: Secrets of Bundle-NativeCode
- GNOME : Frederic Peters: Devhelp with WebKit
- Debian : Roland Mas: Gforge in Debian, August 2007
- Python : Voidspace: Fetching Embedded Resources from IronPython
- LISP : David Lichteblau: cloak
- Gentoo : Tavis Ormandy: McAfee Update
- KDE : Clarence Dang: Laptop dead?
- Smalltalk : Chronos Time Zone Repository Version 2007g Published
- Asterisk : Sineapps Asterisk News: *-users: foneBRIDGE2 setup
- Asterisk : Sineapps Asterisk News: Astlinux-users: Updated documentation on the Astlinux site
- Debian : Sebastian Harl: FrOSCon 2007: Debian on a Lego robot
- Python : Mike Fletcher: The Turtle-to-interactive-turtle step...
- Scheme : Dominique Boucher: Next meeting of the Montreal Scheme/Lisp User Group
- Eclipse : Ed Merks: On the Lookout for Bugs
- Asterisk : Voip-Info: Asterisk phone cisco 7970 SIP / Re: Firmware 8-2-2SR1 [ID: 42806]
- PHP : Setting up Zend Framework applications with Phing - Raphael Stolt
- FreeDesktop : Thomas Vander Stichele: Freedesktop problems
- XMLhack : Pantone’s Missed Chance
- XMLhack : Lauren and Jean
- Python : Ted Leung on the Air: Another victory for full feeds
- OpenMoko : Jan Luebbe: Debian on the Neo1973
- Ubuntu : Jonathan Carter: CTWUG Committee Formed
- KDE : Cláudio da Silveira Pinheiro (Taupter): Flashy 32bit diehards
- OpenOffice : IssueZilla: New issues: Sun Aug 26 15:43:01 UTC 2007
- GNOME : Alberto Ruiz: Jython reaches stable realse
- Python : Mike Fletcher: Whole day on documenting and automating
- Ubuntu : Sebastian Kügler: Hanging out at FrOSCon.
- PHP : Introduction to Midgard's database abstraction system - Henri Bergius
- Debian : Christian Perrier: Back...and mail read
- GNOME : Adam Schreiber: OpenStreetMap Presentation
- Maemo : uktube bugfix version released
- Debian : Biella Coleman: The problem with presentism
- KDE : Johan Thelin: Qt applications
- Gentoo : Remi Cardona: First post!
- PHP : phpunit.de back online - Sebastian Bergmann
- Smalltalk : ESUG In Lugano
- KDE : Alexander Dymo (adymo): Scala: a pleasant discovery
- Smalltalk : Scaling Reality
- KDE : Boudewijn Rempt (boud): Er what?
- Smalltalk : Declined Standards
- OpenMoko : Rod Whitby: Debugging gsmd failures on OpenMoko
- Python : Ned Batchelder: Sable-3 photo balloon into space
- Mozilla : Zak Greant: MoFo Weekly Report 2007-08-24
- Smalltalk : Aussie Entrepreneurship at BarCampSydney
- Mozilla : matthew zeier (mrz): China, day one
- KDE : Daniel Duley (mosfet): Why this is interesting.
- Asterisk : Voip-Info: Asterisk High Availability Solutions / foneBRIDGE2 setup [ID: 42797]
- Asterisk : Voip-Info: Redfone / foneBRIDGE2 setup [ID: 42796]
- Debian : Andrew McMillan: I have finally chosen a new name: DAViCal
- Planet Haskell : Manuel M T Chakravarty: Specialising Simulator Generators for High-Performance Monte-Carlo Methods.
- PHP : FrOSCon 07 - Kore Nordmann
- Maemo : Phone?
- Debian : Russell Coker: Solar Hot Water - Not Expensive
- BlenderNation : Peach Workshop
- Debian : Mike Hommey: WebKit in unstable
- Annodex : Shane's presentation on Annodex for us in ethnographic research
- KDE : Benoit Jacob (bjacob): The long road to Eigen 2
- FreeDesktop : Havoc Pennington: Money Math
- Classpath : Casey Marshall: Stellaruim
- Ruby : Ola Bini: On the road again...
- Python : Ted Leung on the Air: Scalability != concurrency
- Debian : Cameron Dale: DebTorrent Usage: details of a successful dist-upgrade
- Mono : Codice Software: New tree 3D layout
- FreeDesktop : Havoc Pennington: Investment Perspective
- Planet Haskell : Tom Moertel: R tips and tricks: Producing smooth bitmap plots
- Scheme : Dominique Boucher: Gambit-C 4.0 released
- Smalltalk : Is this college mathematics?
- XMLhack : Heard in Conversation
- Ubuntu : Debian Package of the Day: IPTraf, a ncurses based LAN monitor
- OpenID : Kaliya Hamlin: In the Desert for a Week: Back after Labo(u)r Day.
- OpenID : Kaliya Hamlin: Thoughts on Community Engagement
- Python : Richard Jones' Stuff: PyWeek: one week away!
- Ubuntu : Martin Meredith: Giggle of the Day 26/08
- OpenOffice : IssueZilla: New issues: Sun Aug 26 03:43:01 UTC 2007
- GNOME : Thomas Thurman: Things Rio said today
- XMLhack : NASDAQ: JAVA
- Ruby : Charles Oliver Nutter: JRuby 1.0.1 and Jython 2.2 Released
- GNOME : Glynn Foster: Fermentation proceeding nicely
- Gentoo : Joshua Jackson: Crazy Month
- Python : Kumar McMillian: GTAC Highlights Part 1 - Selenium is Alive and Well, Model Based Testing Is Smart, And...
- Python : Jesse Noller: More on Typing
- KDE : Sebastian Pipping (sping): Kate can do Searching!
- Mono : Patrick van Staveren: Storm carnage?
- GNOME : Chris Lord: Introducing: JanaGtkEventList
- Ubuntu : Andre Noel: Don’t be jealous…
- Ubuntu : Harald Sitter: Froscon socialized
- KDE : Bram Schoenmakers: The amount of incoming non bugs
- KDE : Albert Astals Cid (TSDgeos): Modern art is ...
- Ubuntu : Tiago Faria: Hosting for IRC Statistics project
- KDE : Anne-Marie Mahfouf (annma): Classmate PC
- Maemo : maemo wiki cleanup: first milestone
- OpenID : Lukas Rosenstock: This blog is quite dead
- OLPC : Yay! VirtualBox with sound and networking!
- Mozilla : Nagappan: Recording your screen in solaris :)
- Mozilla : Nagappan: My Tinderbox is working...
- Mozilla : Nagappan: SOC ...
- Smalltalk : Gross confusion
- Debian : Russell Coker: Does Having Fewer Rules Inspire Hard Work?
- Smalltalk : Aston Martin announced the new DBS
- KDE : Jason Kasper (vanRijn): Got (KDE) Shirts? (part deux)
- GNOME : Alberto Ruiz: Happy birthday!
- GNOME : Alberto Ruiz: The first vala browser.
- Classpath : Roman Kennke: Usability of desktop apps, or why file menus are not needed
- GNOME : Alberto Ruiz: Bind them all!
- Ubuntu : Pete Savage: All I hear is Radio Ubuntu
- Debian : Wouter Verhelst: Cooking
- Mono : Olivier Dufour: vala
- Smalltalk : An update on the book
- OpenOffice : Pierre-André Galmes: FUD - StarOffice in the Google Pack
- Debian : Martín Ferrari: Last GSoC update
- Smalltalk : Vacation is over
- GNOME : Sayamindu Dasgupta: Dell delays
- Planet Haskell : Eric Kow (kowey): getting things done with mutt 2 (auto-review)
- FreeDesktop : Philip Langdale: S3 is a cruel mistress
- Maemo : S3 is a cruel mistress
- GNOME : Luis Medinas: Brasero 0.6.1 Released yay
- Debian : Christian Perrier: Back home
- Ajaxian : Proto.Menu: Prototype-based Context Menu Solution
- Debian : Joachim Breitner: TTF-Glyph in pdflatex output
- Eclipse : Nicolas Richeton: Media Flow :-)
- XMLhack : Where No Search Engine Has Gone Before
- Wine-doors : Wine-doors status: road to 0.1.1
- Python : The Dreamer: Lookup
- Python : Lawrence Oluyede's Blog (Lawrence Oluyede): SGML Python parsers benchmark
- GNOME : Ryan Lortie: delayed-apply, again
- KernelTrap : Linux: Volatile Performance
- Mono : Joe Audette: Achieving the Single Sign On Dream with Open ID and Windows Live ID
- Ubuntu : Martin Meredith: Movie Pirate forced to ditch Linux
- Asterisk : Voip-Info: AudioCodes MediaPack 114 & 118 SIP Gateway with Asterisk / Undocumented Switches [ID: 42783]
- Mozilla : Frederic Wenzel: Time to get an iPhone
- Mozilla : Mike Shaver: Tbeachball
- RDF : IBM gift establishes UMBC Multicore Computing Center
- Ubuntu : Efrain Valles: There may be very few… but they are trully something…
- Smalltalk : "Schrödinger's Cat" Theory Proven
- OpenOffice : IssueZilla: New issues: Sat Aug 25 15:43:00 UTC 2007
- Ubuntu : Jeff Bailey
- Mozilla : Calendar: Lightning/Sunbird Status Update (August 25)
- Classpath : Arnaud Vandyck: Argouml in Debian
- Debian : Gustavo R. Montesino: SoC Final Report
- Ubuntu : Jono Bacon: New Drums
- Mono : Debackerl: SoC :: Ribbons :: Summary
- Debian : Lior Kaplan: Bug triaging on various packages
- Smalltalk : OODB vs RDB
- KDE : Till Adam: Akonadi Hack Sprint Commences
- GNOME : Jürg Billeter: Documents and Windows
- Debian : Michal Čihař: python-gammu 0.22
- Debian : Michal Čihař: First Japanese experiences
- LISP : John Q. Splittist: #lisp FEP - I want to learn lisp but I don't want to use emacs
- LISP : John Q. Splittist: #lisp FAQ - How can I generate a standalone executable?
- Maemo : 25 Aug 2007
- GStreamer : Zeeshan Ali: 25 Aug 2007
- GNOME : Daniel Elstner: Alright, FU Berlin it is then
- BlenderNation : BlenderGuide.org
- Python : Python, Zope and dotNet (Chui Tey): Building Python Extensions With ActivePython 2.5 And Visual Studio 2005
- Annodex : www.annodex.net upgrade
- Debian : Andreas Metzler: bad xpdf rendering on etch
- Maemo : 25 Aug 2007
- GStreamer : Zeeshan Ali: 25 Aug 2007
- Smalltalk : On my way to ESUG
- GNOME : Frederic Peters: And now for something totally different
- Mono : Rolf Bjarne Kvinge: Killer feature
- Debian : Michael Prokop: Debian @ Froscon 2007
- Python : S.Lott: Something Else I Invented
- LISP : Ingvar Mattsson: 25 Aug 2007
- FreeDesktop : Thomas Vander Stichele: Evolution filters
- Smalltalk : Weekly Log Analysis: 8/25/07
- The Linux Game Tome : Cultivation 8 (updated)
- The Linux Game Tome : The Goonies 1.0.1 (new)
- The Linux Game Tome : Pingus 0.7.0 (updated)
- The Linux Game Tome : Stella 2.4 (updated)
- The Linux Game Tome : lincity-ng 1.1.1 (updated)
- The Linux Game Tome : H-Craft Championship 1.2 (updated)
- The Linux Game Tome : Paintball 2 Build 019 (updated)
- Debian : Dave Noble: Vodafone-Induced Anger
- Jabber : Coccinella: D'artagnan Speaks
- XMLhack : The XML Apache Project has posted version 0.94 of FOP, an
open source XSL Formatting Objects to PDF/PostScript/RTF converter
written in Java.
- GNOME : Rodrigo Moya: Spanglish (or Engpanish)
- Python : Shannon -jj Behrens: Computer Science: Smart People Have Weird Hangups
- Python : The Blog - Juri Pakaste: Python-style enumerate for Nemerle
- OpenMoko : Rod Whitby: Stopping the OpenMoko startup sound
- XMLhack : Document Projection
- Python : online.effbot.org - Fredrik Lundh: A Cache Status View for Django
- Ubuntu : Martin Meredith: Giggle of the day.
- Ubuntu : Juan Carlos Torres: +365 days… coming back
- Debian : Russell Coker: Designing Computers for Small Business
August 27, 2007
Zoom In? Really? How often do you ever want to zoom in on an app? But we have all seen that when we right click on a Flash file.
Paulius Uza has a solution for the right click context menu and has posted the code on a Google Code project.
Why would anyone want to do this? [...]
August 27, 2007 10:29 AM
So after 2 days of frantic hacking we made some good progress on Akonadi - including sorting out the database schemas with professional help for performance, producing benchmarking tools to find areas to improve in other layers, fixing MIME parser bugs, improving KMail in KDE 4.0 and KOrganizer's layouting.

Thanks to KDAB for hosting us, Kris from MySQL for spending his weekend on our database, and KDE e.V. and Novell for their support.
August 27, 2007 10:07 AM
OpenStreetMap 1 : Google 0
Seems that a good volunteer can produce better maps than the
commercial providers. Take a look at Boggomsbaai,
the holiday town I was in last weekend:
And then take a look at George,
the town I am currently staying in. I have almost mapped
more just with the drive in yesterday than all of what
Google has:
The trip, in general
I am really enjoying being back here in SA (last time I was
here was 1994) and seeing all the relatives again. The
weather has been a real mixed bag, some rain, some sun.
Tomorrow Brian, my father and I are headed to Addo Elephant
Park for a few days, then we back here and then off to
another holiday town called Vermaaklikheid.
August 27, 2007 09:58 AM
Argh... Office 2007 is generally quite nice, and has been working well for me, but this is a shocker. The whole graphics engine got rewritten since Office 2003, except the Word team didn't get around to integrating it properly, or something, resulting in various shitty user experience warts. For example, you can't group pictures with other drawing objects. WTF?
Truly bizarre: Excel and Powerpoint have a new version of WordArt, but Word doesn't.
My preinstalled 60-day trial of Office 2007 will be expiring soon so I need to decide between spending $300-450 on the full version or moving to OpenOffice. OpenOffice isn't exactly an appealing choice either -- I tried using it a few weeks back and it silently discarded a few hours of changes to my document without asking, when I closed a window. Tough choice: expensive half-finished software, or free software that loses data?
Comment
August 27, 2007 09:57 AM
I wrote the basics of the Virtuoso clustering support
over the past three weeks. It can now manage connections,
decide where things go, do two phase commits, insert and select
data from tables partitioned over multiple Virtuoso
instances. It works about enough to be measured, of which I
will blog more over the next two weeks.
I will in the following give a features preview of
what will be in the Virtuoso clustering support when it is released
in the fall of this year.
Data Partitioning
A Virtuoso database consists of indices only, so that the row of
a table is stored together with the primary key. Blobs are
stored on separate pages when they do not fit inline within the
row. With clustering, partitioning can be specified index by
index. Partitioning means that values of specific columns are used
for determining where the containing index entry will be
stored. Virtuoso partitions by hash and allows specifying
what parts of partitioning columns are used for the hash, for
example bits 14-6 of an integer or the first 5 characters of a
string. Like this, key compression gains are not lost by
storing consecutive values on different partitions.
Once the partitioning is specified, we specify which set of
cluster nodes stores this index. Not every index has to be
split evenly across all nodes. Also, all nodes do not have to
have equal slices ofthe partitioned index, accommodating
differences in capacity between cluster nodes.
Each Virtuoso instance can manage up to 32TB of data. A
cluster has no definite size limit.
Load Balancing and Fault Tolerance
When data is partitioned, the operation on the data goes where
the data is. This provides a certain natural parallelism but
we will discuss this further below.
Some data may be stored multiple times in the cluster, either
for fail-over or for splitting read load. Some data, such as
database schema is replicated on all nodes. When specifying a
set of nodes for storing the partitions of a key, it is possible to
specify multiple nodes for the same partition. If this is the
case, updates go to all nodes and reads go to a randomly picked
node from the group.
If one of the nodes in the group fails, operation can resume
with the surviving node. The failed node can be brought back
online from the transaction logs of the surviving nodes. A few
transactions may be rolled back at the time of failure and again at
the time of the failed node rejoining the cluster but these are
aborts as in the case of deadlock and lose no committed data.
Shared Nothing
The Virtuoso architecture does not require a SAN for disk
sharing across nodes. This is reasonable since a few disks on
a local controller can easily provide 300MB/s of read and passing
this over an interconnect fabric that would also have to carry
inter-node messages could saturate even a fast network.
Client View
A SQL or HTTP client can connect to any node of the cluster and
get an identical view of all data with full transactional
semantics. DDL operations like table creation and package
installation are limited to one node, though.
Applications such as ODS will run unmodified. They are
installed on all nodes with a single install command. After
this, the data partitioning must be declared, which is a one time
operation to bedone cluster by cluster. The only application
change is specifying the partitioning columns for each index.
The gain is optional redundant storage and capacity not limited to
a single machine. The penalty is that single operations may
take a little longer when not all data is managed by the same
process but then the parallel throughput is increased. We
note that the main ODS performance factor is web page logic and not
database access. Thus splitting the web server logic over
multiple nodes gives basically linear scaling.
Parallel Query Execution
Message latency is the principal performance factor in a
clustered database. Due to this, Virtuoso packs the maximum
number of operations in a single message. For example, when
doing a loop join that reads one table sequentially and retrieves a
row of another table for each row of the outer table, a large
number of the join of the inner loop are run in parallel. So,
if there is a join of five tables that gets one row from each table
and all rows are on different nodes, the time will be spent on
message latency. If each step of the join gets 10 rows, for a
total of 100000 results, the message latency is not a significant
factor and the cluster will clearly outperform a single
node.
Also, if the workload consists of large numbers of concurrent
short updates or queries, the message latencies will even out and
throughput will scale up even if doing a single transaction were
faster on a single node.
Parallel SQL
There are SQL extensions for stored procedures allowing
parallelizing operations. For example, if a procedure has a
loop doing inserts, the inserted rows can be buffered until a
sufficient number is available, at which point they are sent in
batches to the nodes concerned. Transactional semantics are
kept but error detection is deferred to the actual execution.
Transactions
Each transaction is owned by one node of the cluster, the node
to which the client is connected. When more than one node
besides the owner of the transaction is updated, two phase commit
is used. This is transparent to the application code.
No external transaction monitor is required, the Virtuoso instances
perform these functions internally. There is a distributed
deadlock detection scheme based onthe nodes periodically sharing
transaction waiting information.
Since read transactions can operate without locks, reading the
last committed state of uncommitted updated rows, waiting for locks
is not very common.
Interconnect and Threading
Virtuoso uses TCP to connect between instances. A single
instance can have multiple listeners at different network
interfaces for cluster activity. The interfaces wil be used
in a round-robin fashion by the peers, spreading the load over all
network interfaces. A separate thread is created for monitoring
each interface. Long messages, such as transfers of blobs are
done on a separate thread, thus allowing normal service on the
cluster node while the transfer is proceeding.
We will have to test the performance of TCP over Infiniband to see if there is clear
gain in going to a lower level interface like MPI. The Virtuoso architecture
is based on streams connecting cluster nodes point to point.
The design does not per se gain from remote DMA or other features
provided by MPI. Typically, messages are quite short, under
100K. Flow control for transfer of blobs is however nice to
have but can be written at the application level if needed.
We will get real data on the performance of different interconnects
in the next weeks.
Deployment and Management
Configuring is quite simple, with each process sharing a copy of
the same configuration file. One line in the file differs
from host to host, telling it which one it is. Otherwise the
database configuration files are individual per host, accommodating
different file system layouts etc. Setting up a node requires
copying the executable and two configuration files, no more.
All functionality is contained in a single process.
There are no installers to be run or such.
Changing the number or network interface of cluster nodes
requires a cluster restart. Changing data partitionining
requires copying the data into a new table and renaming this over
the old one. This is time consuming and does not mix well
with updates. Splitting an existing cluster node requires no
copying with repartitioning but shifting data between partitions
does.
A consolidated status report shows the general state and level
of intra-cluster traffic as count of messages and count of
bytes.
Start, shutdown, backup and package installation commands can be
issued from a single master node. Otherwise all is symmetrical.
Present State and Next Developments
The basics are now in place. Some code remains to be
written for such things as distributed deadlock detection, 2 phase
commit recovery cycle, management functions etc. Some SQL
operations like text index, statistics sampling and index
intersection need special support, yet to be written.
The RDF capabilities are not specifically affected by clustering
except in a couple of places. Loading will be slightly
revised to use larger batches of rows to minimize latency, for
example.
There is a pretty much infinite world of SQL optimizations for
splitting aggregates, taking advantage of co-located joins
etc. These will be added gradually. These are however
not really central to the first application of RDF storage but are
quite important for business intelligence, for example.
We will run some benchmarks for comparing single host and
clustered Virtuoso's over the next weeks. Some of this will
be with real data, giving an estimate on when we can move some of
the RDF data we presently host on the new platform. We will
benchmark against Oracle and DB2 later but first we get things to
work and compare against ourselves.
We roughly expect a halving in space consumption and a
significant increase in single query performance and linearly
scaling parallel throughput through addition of cluster nodes.
The next update will be on this blog
within two weeks.
August 27, 2007 09:44 AM
Like Dare, I find Mark Cuban's
The Internet is Dead and Boring post "too irritating to let
pass", and generally agree with Dare's point about bandwidth/media
being kind-of irrelevant. But I'll spare you the essay featuring
words like 'network', 'ubiquitous', 'mobile' and 'linked data'.
Instead, here's a platform used in a really old medium:
It's a banker, as used by stonecarvers/masons. The platform isn't
too interesting in itself, but combined with a bunch of other
tools, the end result can be amazing - take a trip to Chartres
if you doubt me. (The essay would have mentioned the bazaar
too).
August 27, 2007 09:40 AM
A call from the Semantic Web Education and
Outreach group - if you know of any semweb-related tutorial
material, can you please link to it on the
RecommendedTutorials Wiki page, give it the del.icio.us tags it
"sweo
tutorial", or just mail
me.
~
I [was] typing this on the train, somewhere between Genova and
Viareggio (sea...tunnel...sea..tunnel...), on the way home
from Lugano in
Switzerland. Reto & I just had a couple of days up near there,
coincidentally working on tutorial material for the Talis Platform. It went well, long
days broken up by eating and walking around Monte Bre. The night I
arrived we started planning over a Mexican, hence this post's
title.
Day One we did a load of gardening around the N2 Wiki, Day
Two we put together the skeleton of a tutorial along with most of a
non-trivial code example. A lot more work is needed - the prose,
and example stuff in different languages etc, but we made a good
start (btw, if anyone wants a (hosted) Platform store to play
with let me
know).
August 27, 2007 09:28 AM
经过一系列的准备,我们的办公室终于可以用了(虽然免不了还有点装修的味道)。现诚挚的邀请对火狐等有兴趣者参加我们第一次Open House活动。活动时间、地点、内容都已在 邀请函中详细说明。
如果您有时间参加本次Open House,请写邮件给firefoxer.register@gmail.com。最好在回信中提供您的姓名和联系方式(希望您能够提供手机号码,参会前我们会再次和您进行电话确认)。我们知道人数,更便于准备茶点。您的联系方式不会用于任何其他事宜,请放心。
这次活动经过征求大家意见,决定在周六下午举办, 主要因为许多人平时上班较忙。占用周末,可能有些网友不一定能抽出时间。我们今后会在不同时间段争取举办一系列的其他活动,譬如组织技术讲座等等。希望这周六大家多多出主意。
想先一睹为快的朋友可看看http://picasaweb.google.com/lgatlarge。我们的活动也会像办公室的风格一样,简单明了,舒服但不奢侈。形式固然重要,但更重要的是内容。
周六见!
宫力
August 27, 2007 08:46 AM
Elisa and Pigment Subversion/Trac were moved to a new server last week. Update your bookmarks!
The new Trac websites are now far more reliable, thanks Thomas for migrating all this 
August 27, 2007 08:10 AM

Last weekend saw the second installment of the Free and Open Source Software Conference (FrOSCon) in Sankt Augustin. The conference revolved around a rich schedule of talks, highlighting current topics in Free Software and Open Source. Moreover, Open Source projects took the opportunity to organize their own meetings or even their own lineup of events. Just like last year, the PHP usergroups of Dortmund and Cologne/Bonn organized the PHP @ FrOSCon subconference with two full days of presentations.
For me, Sankt Augustin is conveniently located near to my hometown of Siegburg and so FrOSCon started for me on Friday night with greeting Giuseppe, Markus, Roland, and Beat from MySQL in Sankt Augustin for dinner. After dinner we made a quick excursion to Siegburg for the annual town fair that took place here over the weekend.

On Saturday, the first conference day, I attended a couple of talks (that I, apart from Arne's and Carola's presentation on XUL, don't remember). In the evening I attended the keysigning party before we headed out to Siegburg for dinner and another stroll over the town fair.

On Sunday, the second day of the conference, Tobias Schlitt arrived in Sankt Augustin and together we took care of the server that runs phpunit.de. In the afternoon, I gave my presentation on PHPUnit which was well received.
In the evening, we headed out to Cologne for dinner at a Brazilian restaurant were we enjoyed rodizio. Afterwards we walked to the Dom, took some pictures, and had some ice cream for dessert.
August 27, 2007 08:10 AM
After the Camp Smalltalk weekend, the 15th European Smalltalk User Group - ESUG 2007 - starts!
Opening and welcome by Stéphane Ducasse and Michele Lanza
Various media including presentation slides will be available in nearly real-time there http://csl.ensm-douai.fr/Esug2007Media/
August 27, 2007 07:42 AM
Nokia has released MOSH, a create - collect - share website with mobile users in mind. From the popular content and tags it is easy to deduce that this is not just another Nokia-promo site (look this screenshot to see what I mean). I have been following the internal development from a distance, with interest, and I'm looking forward to see its evolution in the Tough Tough Web.
We have a potential opportunity to direct maemo content there, increasing the visibility of third party applications among the usual/enthusiastic users of mobile phones. I mean doing this officially with maemo, users alone can upload what they want and they are already posting stuff like Tomiku (a sudoku game for maemo).
We haven't thought much about this yet, since wanted to see the real MOSH in action and the maemo community reactions (if any). What do you think?
August 27, 2007 07:38 AM
I’ve been fishing in Twentieth-century five-★ waters of late, so
let’s cast our eyes back on music written by dead guys. There have
been a few classical works that I’ve heard one artist play, then
never bothered to take the time to listen to anyone else’s take.
For example, Gidon Kremer’s 1980
recording of the
Violin Sonatas and Partitas by J.S. Bach.
This might be a tough sell: two hours of music containing no notes
much below middle C, and no more than two notes ever played at the
same time. And Kremer is all about Truth not Beauty, which is to
say he doesn’t sugar-coat Bach’s rough edges. But I think that
truth is
beauty, and I think that this music has so much of both that you
really ought to sit down sometime and listen to all of it. Well,
and it sounds good. (“5★♫” series introduction here;
with
an explanation of why the title may look broken.)
The Context
I’ve written
plenty about J.S. Bach, especially here
and here.
I’ve written about Kremer.
And this whole space is about truth.
This image of Gidon Kremer is copyright Stefan Bremer, from
here.
The Music
I just don’t know what to say. Listen to the first few seconds,
and you’ll know right away whether this is going to become an
permanent part of your mental landscape, or whether it’s just a
screechy fiddle playing way too many notes that don’t seem to go
anywhere.
I’d it it to my personal list of things to be considered in
evidence as to why Homo Sapiens should be considered, on
balance, a Good Thing for the universe to include.
If there’s a Greatest Hit in here, it’s the Preludio from
Partita 3, BWV 1006; which has been quoted and re-used enough times
to enter the racial memory. I don’t think it’s the best track. I’d
tell you what I do think is the best but that’d be irrelevant,
because every time I put this CD on I end up listening to both
disks, end-to-end. It’s great-in-the-whole, great enough that
singling out one part or another would be irrelevant.
Sampling It
As Wikipedia notes, there are a
whole lot of recordings, by basically every violinist you’ve
ever heard of. I’ve listened to a couple of others but none have
won my heart away from Kremer’s 1980 take; I’ve always thought the
sound had a bit too much echo, but still, there’s very little
between you and the fiddle, which is as it should be. Two things
should be noted: this music leaves so much room for the
interpreter’s soul that it would be really unsurprising if you
liked it, but preferred another recording. Second, in researching
this article I discovered that Kremer took another run at the
material in 2002, on ECM
New Series 1926 (more discussion here).
Since ECM is one of my favorite music shops, I think I’m just gonna
have to pick that one up too.
You can listen to samples of both at Amazon. This isn’t about
downloading, it’s about buying shiny silver round things and
listening to them late at night with the lights out.
August 27, 2007 07:30 AM
OpenBSD creator Theo de Raadt highlighted a recent commit to the NetBSD source tree saying, "if anyone had any doubt that our insistence on freedom was important, just read this." The referenced commit message describes an effort to work around issues with a binary blob included with NetBSD, something strongly avoided by the OpenBSD project. The commit message states:
"The Atheros HAL on MIPS uses %s7 as a general purpose register, but the rest of the kernel uses it to store the value of curlwp. Sam won't recompile the HAL for us (fair enough), and we can't modify the HAL to use another register because doing so could put us in breach of the license (v. crappy). So, do a save/set/restore on %s7 in KernIntr() and in the stubs that the HAL uses to call back into the kernel.
"Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files."
read more | rsync.net - Offsite Unix Backups
August 27, 2007 07:27 AM
Before releasing a 3.1.1 version of Libgda, I wanted to work a bit on Libgda’s report engine which is currently very broken (does not work at all and seems to have a difficult to use API). So I decided to reimplement one into a separate component, even though this will break the API.
After a few hours, the reports component has a generic engine which takes an XML input, and replaces the <gda_report_…> nodes with some actual content, each of these nodes being commands to perform or display some data. With only 5 of these commands, it’s possible to achieve some nice and complex results.
I have so far tested it with some DocBook and RML files. I can generate HTML from DocBook very easily, but PDF generation is more tricky since it uses FOP (which is not always packaged on distros), and it’s easy to generate PDF from RML files. Even though many features are still missing, it’s a good start…
Sample output:
- PDF output using this RML template:

- HTML and then PDF output using this DocBook template:

The code is in SVN trunk, and the examples which generate these outputs are in the samples/Report directory.
August 27, 2007 07:23 AM
Everyone has a dream job or jobs. So out of all the companies in the world, if you could choose from all of them for who you would want to work for - which company or companies would it be? Big, small - well known or not, what companies would be the top 3 that you would love to work at and if you feel bold - Why?
For me: OmniTI, Yahoo! and MySQL - though not necessarily in that order. As for why - so many reasons. But primarily because of what I could learn while working at them. So much to learn - so little time to pick so very many brilliant minds.
August 27, 2007 07:14 AM
After visiting Boston this last week I can confirm that it is a walking town. We walked everywhere. In fact, even the main tourist attraction is a trail. The entire trip was a ton of fun, I enjoyed seeing all of the historic sights. More pictures will follow. One thing that I wanted to post was a fun panorama that I took of Fenway. I forgot how much overlap is required for the small camera I had, so it isn't great, but I thought it would be fun to post. You can see the top of Nico's head on the right.
August 27, 2007 07:08 AM
A few weeks have past and I have had no time for code hacking, I have finished most of my backed up work and now am left with some extra time on my hands.
I need to assign some quality time with Kopete and KNotes, this week will help me get back full speed.
More on this during the week.
August 27, 2007 07:05 AM
- "» Ume @ Emo’s
5.29 Pure Rock Sonic Itch Music": Eric's co-developer on the
Bright Content Weblog system. I met him and his wife Lauren in
Broomfield recently. They're a very likeable pair. Attested here,
they're also super-fly musicians. I like how these pics capture the
intensity of their performance. (from uche)
- "An
Optimization Algorithm for Production Systems": (from
chimezie)
- "Hbase/RDF -
Lucene-hadoop Wiki": "We call for the introduction of an Hbase
subsystem for RDF, called HbaseRDF, which uses Hbase + MapReduce to
store RDF data and execute queries (e.g., SPARQL) on them." -
parallelized RDF processing (from chimezie)
- "ObiFunctionUseCases
- OBIwiki": "This page provides background on the definition
and apparent intended use of BFO:Function, as well as specific OBI
Function examples" (from chimezie)
August 27, 2007 07:00 AM
Après 2 jours de Camp Smalltalk, la conférence ESUG 2007 démarre véritablement ce lundi 27 août 2007 à Lugano. Les présentations et photos de la conférence seront disponibles très prochainement sur le wiki de la conférence. J’ai déjà mis en ligne quelques photos de Lugano prises le premier jour. Des compte-rendus de la conférence seront postés régulièrement par des étudiants volontaires de la conférence sur ce blog.

August 27, 2007 06:53 AM
I try to avoid posting about TechMeme pile
ups but this one was just too irritating to let pass. Mark
Cuban has a blog post entitled
The Internet is Dead and Boring which contains the following
excerpts
Some of you may not want to admit it, but that's exactly what
the net has become. A utility. It has stopped evolving. Your
Internet experience today is not much different than it was 5 years
ago.
...
Some people have tried to make the point that Web 2.0 is proof that
the Internet is evolving. Actually it is the exact opposite. Web
2.0 is proof that the Internet has stopped evolving and stabilized
as a platform. Its very very difficult to develop applications on a
platform that is ever changing. Things stop working in that
environment. Internet 1.0 wasn't the most stable development
environment. To days Internet is stable specifically because its
now boring.(easy to avoid browser and script differences
excluded)
Applications like Myspace, Facebook, Youtube, etc were able
to explode in popularity because they worked. No one had to worry
about their ISP making a change and things not working. The days of
walled gardens like AOL, Prodigy and others were gone.
...
The days of the Internet creating explosively exciting ideas are
dead. They are dead until bandwidth throughput to the home reaches
far higher numbers than the vast majority of broadband users get
today.
...
So, let me repeat, The days of the Internet creating explosively
exciting ideas are dead for the foreseeable future..
I agree with Mark Cuban that the fundamental technologies that
underly the Internet (DNS and
TCP/IP) and the
Web in particular (HTTP and HTML) are quite stable and
are unlikely to undergo any radical changes anytime soon. If you
are a fan of Internet infrastructure then the current world is
quite boring because we aren't likely to ever see an Internet based
on IPv8 or a Web based on HTTP 3.0. In addition, it is clear that
the relative stability in the Web development environment and
increase in the number of people with high bandwidth connections is
what has led a number of the trends that are collectively grouped
as "Web 2.0".
However Mark Cuban goes off the rails when he confuses his
vision of the future of media as the only explosive
exciting ideas that can be enabled by a global network like the
Internet. Mark Cuban is an investor in HDNet which is a company that creates and
distributes professionally produced content in high definition
video formats. Mark would love nothing more than to distribute his
content over the Internet especially since lack of interest in
HDNet in the cable TV universe (I
couldn't find any cable company on the Where to Watch HDNet
page that actually carried the channel).
Unfortunately, Mark Cuban's vision of distributing high
definition video over the Internet has two problems. The first is
the fact that it is that distributing high quality video of the Web
is too expensive and the bandwidth of the average Web user is
insufficient to make the user experience pleasant. The second is
that people on the Web have already spoken and content trumps
media quality any day of the week. Remember when pundits
used to claim that consumers wouldn't choose lossy, compressed
audio on the Web over lossless music formats? I guess no one
brings that up anymore given the success of the MP3 format and the
iPod. Mark Cuban is repeating the same mistake with his HDNet misadventure. User generated,
poor quality video on sites like YouTube and larger library of content
on sites like Netflix:
Instant Viewing is going to trump the limited line
up on services like HDNet regardless of how much higher
definition the video quality gets.
Mark Cuban has bet on a losing horse and he doesn't realize it
yet. The world has changed on him and he's still trying to work
within an expired paradigm. It's like a newspaper magnate blaming
printer manufacturers for not making it easy to print a newspaper
off of the Web instead of coming to grips with the fact that the
Internet with its blogging/social media/user generated
content/craig's list and all that other malarky has turned his
industry on its head.
This is what it looks like when a billionairre has made a bad
investment and doesn't know how to recognize the smell of failure
blasting his nostrils with its pungent aroma.

August 27, 2007 06:23 AM
Someone actually named their framework Foo! That someone is Rizqi Ahmad, and he is also the developer of Zparse and MindFrame.
Foo is a framework specially designed for rapid development of Rich Internet Application. Its syntax is in someway similar to Adobe Spry, but it has more functionality and focused more to RIA Development.
[...]
August 27, 2007 06:18 AM
Blender and its predecessor Traces were originally developed on an SGI, so here's a tutorial with a bit of history attached.
In eight minutes, you'll learn how to model this logo. I had to...
[read the full article on blendernation.com]
August 27, 2007 05:51 AM
The first OpenSolaris Developer Summit has been announced for the weekend of 13th and 14th October at the University of California in Santa Cruz. It’ll be a pretty hands on summit, with a lot of discussion (hopefully) around putting together the bits of Indiana. It’ll also be a good excuse to party and get to know some faces behind the OpenSolaris project which I’m looking forward to - I’ve found with previous GNOME experiences, it’s the best way to get excited about where we’re heading for the project and putting a face to a name really helps communication wise too.
We haven’t yet got a solid schedule around, but there’s a mailing list set up and ready for discussion. We also have a small amount of travel sponsorships for non-Sun employees to be able to attend, so if you think you’d like to attend and have been active in the project thus far, please do apply. So go register! (oh, and save the world by car pooling down to the event if you can).
August 27, 2007 05:46 AM
Bob Ippolito, Exploring Erlang. It's being used for MochiAds. Nice introductory slides.
Some of the Java people looking at Erlang are finding that it's not Java.
There's a reason for this. Unless you've done a fair bit of Lisp or other functional programming, you're not likely to "get" sequential Erlang in a day. Some will, others will practice then "get" it, and still others will run back to Java and pull the blanket over their heads.
That's fine. Just be aware: if you've only ever programmed with...
for (int i = 0; i < a.length; i++) ...
...then you will have to learn to think differently. There is a reason for this.
That's fine.
August 27, 2007 05:41 AM
It’s too easy to get absorbed in all the terrible things
happening on the news. But not everything is like that. Take 7
minutes and watch
this. -m
August 27, 2007 05:29 AM
Nokia 770 is currently the bargain of the day at eCost. The price is $129. Want it for somewhat less? You have to register with a deal-seeking site FatWallet, then go to their eCost section, and click through to go to eCost, earning 2.1% (roughly $2.50) payable to you 90 days after the purchase. Before buying make sure it’s really something that you want as eCost is one of those few merchants that rapes you on return policies, refusing to accept any returns, claiming all sales are final, and making you jump through the hoops of manufacturer phone support if the product you got in the mail is defective.
August 27, 2007 05:21 AM
When I first read the news that SUNW is changing to JAVA, I had to stop and think...
It's not April 1. What day is it? Literally I thought it was a joke.
I used Suns long before Java and imagine I will use them after Java is buried. The timing is curious when SUNW seems to be getting a good bit of non-Java press.
What do I know about these things? I'm pretty sure about this: Java isn't even the hottest thing on the JVM these days.
August 27, 2007 05:20 AM
An old laptop friend
Of such a companionship.
Goodbye Hercules
August 27, 2007 05:00 AM
PostgreSQL Weekly News - August 26 2007
Progress continues toward the upcoming 8.3 release including
integration of tsearch2 into the core product.
PostgreSQL Product News
Entityspaces for PostgreSQL released.
http://www.entityspaces.net/blog/2007/08/22/EntitySpacesNowHasPostgreSQLSupport.aspx
AM Software Design has opened up PostgreSQL Community Forums.
http://www.amsoftwaredesign.com/smf/index.php
pgloader 2.2.1 released.
http://pgloader.projects.postgresql.org/
PostgreSQL Jobs for August
http://archives.postgresql.org/pgsql-jobs/2007-08/threads.php
PostgreSQL Local
Everything this week was global.
PostgreSQL in the News
Planet PostgreSQL: http://www.planetpostgresql.org/
General Bits, Archives and occasional new articles:
http://www.varlena.com/GeneralBits/
PostgreSQL Weekly News is brought to you this week by David Fetter
Submit news and announcements by Sunday at 3:00pm Pacific time.
Please send English language ones to david@fetter.org, German to
pwn@pgug.de.
Continue reading "PostgreSQL Weekly News - August 26 2007"
August 27, 2007 04:55 AM
Bounty has been updated and taken over by a new maintainer. Still need a solution for NI2 2BCT.
mflorell (Mattt Florell) at 2007-08-27 08:54
August 27, 2007 04:30 AM
For example, name="DC.Title" content="My Title"?
August 27, 2007 03:53 AM
#i81043# - Database access: Connection "Microsoft Access" doesn`t work with Access 2007 (accdb)
#i81037# - Database access: The function 'SOME' is not allowed in Query Designer, or with EP enabled.
#i81036# - Presentation: add API for "Insert file" in Impress
#i81038# - sc: Autofilter paste function
#i81044# - sc: Copy / Paste Error
#i81041# - sc: Insert/paste behavior
#i81039# - sc: Replace/Find selection restriction
#i81040# - sc: Summary for replace
#i81042# - tools: libxmlsec can't find crypto lib during compile
August 27, 2007 03:43 AM
It's been quite sometime that I worked with Eclipse and developed RCP apps and Plug-ins leveraging several *highly* interesting Eclipse projects. The more I work with Eclipse more it attracts.
But the time had it and I've to move back with traditional Enterprise Application stuff. I tried hard to be in Eco-system, but I guess I was out of luck. If you ever happen to be JEE developer you know how
August 27, 2007 03:43 AM
The Google Summer of Code 2007 gave the possibility to integrate a new very good developer : Omer Bar-or.
His work for the "Mac OSX Address Book integration" is complete and successful !
Thank you very much Omer !
The code produced is currently under QA and will be integrated as soon as possible.
I hope Omer will be able and willing to continue working with the Mac Aqua porting team, as everyone has appreciated the quality of his work and relationships.
Have a good day !
Sebastien Plisson
aka plipli@openoffice.org
August 27, 2007 03:31 AM
All businessman are crazy about the pie chart. Here is Pie3D powered by dojox.gfx3d. The interface for the end-user is pretty similar with dojox.chart.bar3d: just add the data via addSeries, set the light, then call render, boo, you are all set.
There is a long design struggle between dojox.gfx and dojox.gfx3d. The 3D pie chart is a Cylinder, but crippled intentionally, for example, only rotation around Y axis is supported. Last but not the least, it is much easier for user to specify the rx, ry and height, instead of scratching their heads to find the right rotation angle. dojox.gfx would suffice.
On the other hand, dojox.gfx3d brings schedulers and reusable gradient from Cylinder. The schedulers may be essential if we want to highlight some slices by moving them a little bit away from the center. Plan to throw one away; you will, anyhow. dojox.gfx3d is selected. Please checkout the code.
Share This
August 27, 2007 02:51 AM
The main comment on my ASDF plug-in proposal was that it reinvented the wheel: why not just use the existing :depends-on clause? The problem is that :depends-on runs when a system is loaded (at read-time), not when a system is defined. Suppose, for example, I have a system where optional-files make sense. To define them, I create a class and a perform
method:
(defclass optional-file (cl-source-file)
())
(defmethod perform :around ((operation compile-op) (c optional-file))
(when (probe-file (component-pathname c))
(call-next-method)))
(I’ve found a use for these twice, believe it or not!). Suppose I build a very simple ASDF-system with just these definitions and then create another system that depends on it. Here’s the first:
;;; file asdf-optional-files.asd
(in-package #:common-lisp-user)
(defpackage #:asdf-optional-files-system
(:use #:common-lisp #:asdf))
(in-package #:asdf-optional-files-system)
(defclass optional-file (cl-source-file)
())
(defmethod perform :around ((operation compile-op) (c optional-file))
(when (probe-file (component-pathname c))
(call-next-method)))
(defsystem asdf-optional-files
)
and the second:
;;; file asdf-test.asd
(in-package #:common-lisp-user)
(defpackage #:asdf-test-system
(:use #:common-lisp #:asdf))
(in-package #:asdf-test-system)
(defsystem asdf-test
:components ((:file "package")
(:optional-file "prologue" :depends-on ("package")))
:depends-on (:asdf-optional-files))
What happens when I try to load the latter?
> (load "asdf-test.asd")
; Loading /repository/cclan/asdf/asdf-test.asd
Error: don't recognize component type optional-file
[condition type: formatted-system-definition-error]
Restart actions (select using :continue):
0: retry the load of asdf-test.asd
1: skip loading asdf-test.asd
2: Return to Top Level (an "abort" restart).
3: Abort entirely from this (lisp) process.
Ouch!
The only ways (that I know of) to make optional-files work are:
- hack my local copy of asdf
- add code to my init files (all of them!) to load my extensions (maintain all of these in sync)
- add the same code to the beginning of each system file that needs an extension
(If there are others, please let me know!)
The plug-in mechanism aims to circumvent the problem by adding a different mechanism outside of full system definitions. Although I tend to agree that it may be too big of a hammer for such a small nail, there are some good reasons to include something like it:
ASDF is static and relatively closed (and that’s a good thing). Software thrives in ecosystems. A plugin mechanism could help vitalize innovation
Plug-ins are light weight, easy to share (just put them on paste.lisp.org)
Plug-ins could help make experimentation easier.
So… what am I missing?
August 27, 2007 02:20 AM
This is a collection of tips&tricks written by Gary Richmond and Andrew Min. In this article:
- How to get the best out of the history command in GNU/Linux (Gary)
- How to close down GNU/Linux safely after a system freeze with the SysRq key (Gary)
- How to find .debs (even if you think they don't exist) (Andrew)
- How to kill processes (Andrew)
read more
August 27, 2007 02:18 AM
I’ve been seeing more and more movies I wouldn’t mind actually buying… except that I have a 56” HD TV set. It looks amazing, pretty good with DVD’s, but really amazing with HD so if I’m going to buy a movie I sure as heck want it in HD.
Unfortunately thanks to the tech companies refusing to come up with a single standard, I can either buy a $200 HD-DVD add-on for my Xbox 360, or a PlayStation 3 which I’ve heard is the cheapest Blu-Ray DVD player available. And of course, I really need to buy both if I want HD movies since some studios are only putting their movies out on one or the other format.
The end result? I’m not buying HD movies for HD-DVD or Blu-ray because its pathetic to have to have 2 players around (no, I don’t care about universal players). In addition, I’m not buying DVD’s anymore since I know that in a year or two I’ll want to re-buy it in whatever HD format wins (please let one of them win in a year or two!!!).
What are other people doing in this situation? Buying one or the other? Still buying DVD’s? Or not buying any movies at all until they get it straight?
August 27, 2007 02:08 AM
- Django sites and projects of note:
- Satchmo is a robust web shop application written purely on top of Django. The Satchmo project hit a major milestone in its development this past week with version 0.5 (tarball) hitting the virtual shelves. Some highlights from the release notes: “100% template driven design using the django template system, integration with authorize.net, Paypal and google payment processing systems, flexible product management, PDF creation of invoices; packing slips and mailing labels, flexible tax; shipping and discount modules, newsletter management support including mailman integration, account management features” Congratulations are in order for the hard-working Satchmo team, they’ve been working on this release for quite a while!
- Matt Waite wrote in this week about the most recently Django-powered application he’s developed for his employer, The St. Petersburg Times. It’s called PolitiFact: “It’s a Django driven take on the old newspaper “truth squad” story. We’re taking things the presidential candidates are saying during the campaign and fact checking them. All of them get put into our databases, and users can browse by all kinds of different things.” Matt has more to say about the application, PolitiFact, on his blog.
- Justin Driscoll also wrote in about his new Django Google Code projects. The first is django-pressroom which serves as a complete public relations section for your site, complete with articles, photos, galleries, and file attachments. The next application was abstracted out of django-pressroom’s photo gallery functionality. This application is named django-photologue and should be a perfectly suitable photo gallery for any Django application you’re already working on. On what makes his applications special, Justin had the following to say: “The highlight of both apps (in my opinion) is the ability to specify PhotoSizes in the database. These PhotoSizes define the dimensions and parameters of resized copies of the uploaded image that will be generated from the source image and cached upon first request. If the PhotoSize is changed or deleted these cashed versions are removed. In addition, methods are added to the Photo model at runtime to access the cached images such as ” photo.get_mysize_url()” where “mysize” is the name of a defined PhotoSize in the database.”
- Code snippets and tutorials:
- Joe Heck, driven by his experiences at OSCON, has developed a local queueing service in Django, django-queue-service. Joe wanted to provide a foundation for a tool that would help developers queue background tasks from their Django applications in a fashion similar to Amazon’s Simple Queue Service: “At OSCON 2007, I was hunting around for something to use to deal with background processing initiated from my web application. Not finding anything that I could immediately use and implement, I took it as a challenge to knock out something in the time I was there. The result is the django queue service.”
- Since Jacob’s initial success at getting Django installed on the iPhone, Jay Baird has been hard at work documenting the process as well as developing an application for the device: “The most intriguing [idea] to me has been the use of django as a full fledged framework for on/off-line applications where edge network usage just seems silly… I’ve been working on an online flight database for a while now and decided that it’d be cool to create an iPhone application that does the same that can sync with the main database when we become connected and want to push these records up.”
- Björn Kempén has developed a very simple middleware-based IP banning solution: “I wanted a simple way to ban users from accessing one of my django made homepages, and then having them redirected to a page with an explanation why. The IP’s and explanations should be entered through the django admin interface. For this django middleware is a decent choice.”
- If you use Mint for analytics on your site, you might be interested in Maura Chace’s post, Minty Django. Maura was interested in being able to view her website statistics along side all of the data in her custom-built Django weblog. In the post above, she details the process she undertook and the two small issues she encountered.
- Thanassis Tsiodras has an excellent and in-depth tutorial on how he was able to build an offline Wikipedia browser using Django as the front-end.
- Frederik Lundh moved his site, effbot.org to Django a few weeks back and has now posted some useful snippets of code that he’s developed for monitoring his memcached instance.
- James Tinksy has posted a tutorial on paginating filtered query sets in a generic view: “I’m no Django expert. Hopefully someday I can call myself one but for now I’m stumbling through learning the basics. Most of it’s deceptively easy once you grok the concepts. You see I come from ASP classic and PHP 4 world where spaghetti code is the norm. In other words, I wasn’t groking the simple, elegance of Django.” James wasn’t kidding when he said this tutorial’s name packed a mouthful, but it doesn’t make the content any less interesting or useful; James does an excellent job of detailing his thought process throughout the article.
If you have any tips, project announcements, or generally interesting Django news, email me at
clintecker+djangotips@gmail.com.
August 27, 2007 02:04 AM
After much digging and hacking I've found a number of places to go for help with the newest Notes offering. That's the good news. Usability score: +1
The bad news is that if you're like me and used to tracking bugs a la Eclipse Bugzilla or Sourceforge, you will be sorely disappointed with the options for bug reporting for Notes 8. Usability score: -1
I hate to bite the Big Blue hand that feeds, but there are much more efficient tools & processes to manage software development than the use of a discussion forum. Sure, it's a case of eating your own cooking +1, but I've used lots of Notes databases in my 8 years with IBM that were more user-friendly than this -1. Why is using Bugzilla (or sourceforge's tracker) such a big deal?
Well, for one thing, they're transparent, open source systems. For another, using a system like Bugzilla provides consistency across dev teams. Notes 8 is proudly 'built on Eclipse' +1 but hasn't adopted the Eclipse Way yet for issue tracking, so developers that work both sides of the fence (like myself) have to learn more than one system and in some cases, report issues in more than one place -1. So much for the mantra of 'do more with less'.
Anyway, here's a couple places to go for help, which it turns out are all linked from within Notes 8 itself under the Help menu (unless you're on the Getting Started page or a web browser tab, in which case they magically disappear) +1 -1.
- Notes/Domino 8 Support Forum
Well trafficked, but a bit of a pain to use -- cannot attach screenshots or log files without the use of some free service like imagebin.ca or pastebin.ca; cannot view an entire expanded thread in one page; follow-ups may be posted anonymously (as far as company name goes, anyway) so there's no enforced accountability; 4 different ways to search for my posts (only two produce results, albeit differently) +1 -4
- Product Feedback Form
This form proudly states "We value and review all comments, but cannot respond directly to them." +1 -1
Here's a few handy blogs +3:
Now, just in case it's perceived that I'm actively trying to embarrass or offend, I'm not. Let me clarify:
- I blog to talk about things I like and things that bug me, with hopefully some balance between the two. By showing the things that bug me, it's my hope that those annoyances will be fixed, or that someone will share a hack / workaround, or prove me wrong. By talking about the things I like, I hope to encourage others to try those technologies or use a hack I've worked out. I'm a tester by nature, and I want software to work well. Think of me as the Penny Arcade of usability nerds, without the advertising, merch, comics, and clever dialogue. Oh, and the shipments of free software. And the write-ups in Wired. And 7-figure income. Yep, just like 'em.
- I've signed up to be a Usability Tester for Lotus. Time will tell what that means.
- And, as it's better than a boot to the head, I plan to hang out in the forum and try to help out as best I can. Of course this will also yield some of my own
bug reports discussion topics from time to time, but it's all about balance.
As always, the contents of this site are my own and don't necessarily represent IBM's positions, strategies or opinions.
August 27, 2007 02:01 AM
Mozilla is working on better compatibility with non-English fonts in Firefox 3 for the Macintosh platform (changing defaults) and would love some help/feedback.
We have been told that the current default serif font for Mac “Song” is actually not widely installed (it looks like a MS font actually.) If you use the simplified Chinese version of Firefox on the Mac, what we call the zh-CN version, could you:
a) confirm (in the comments) if the font “Song” is a default font
b) if “Song” is not a default serif font, could you let me know what you would recommend for a Simplified Chinese serif font that is default to the Mac platform?
Thank you in advance!
Gen
August 27, 2007 01:52 AM
Filtering Debian Packages file
pkgprune - Filter a Packages file
Usage: pkgprune Packages > Packages.filtered
Filters a Debian Packages file by removing either a list of packages (and
their reverse dependencies) or the packages that have given tags.
Dependencies in the filtered Packages file will still be satisfied.
Available via:
wget http://people.debian.org/~enrico/2007-08/pkgprune/pkgprune
or:
hg clone static-http://people.debian.org/~enrico/2007-08/pkgprune
The top of the script has a configuration section:
#
# Configuration
#
# Set of packages you don't want to have (the reverse dependencies will be
# removed as far as it's possible)
blacklist_pkgs = set(['gconf2'])
# List of sets of tags; the packages whose tag sets contain one of these tag
# sets will be removed
blacklist_tags = [ set(['implemented-in::php']) ]
Edit that before running the script. The idea is to be able to configure a
system to run such a script after apt-get update, both to make dpkg faster on
slow arches and to reduce the amount of packages displayed by an interface.
August 27, 2007 01:16 AM
Security is a good thing, certificates too. The use that some phone manufactures are doing is far beyond fairness, it's a sort of criminal extortion against developers and phone owners.
When I buy a phone I want to be able to run any code on it, at my risk, but I cannot give up with this right. Instead MIDP specifications state that the VM shouldn't use root certificates that aren't installed by the manufacturer and some vendors (my experience is with Nokia) enforce it. This means that on my phone I cannot install an application I've developed and signed: I thought it was my phone...
This is really idiotic, since many applications cannot be tested in all their features without signing them and small and independent developers are stopped from enriching the application environment of mobile platforms, damaging the same vendors.
If you search in the forums you find nice explanations like this one trying to mock you saying: "it's for your sake":
We all shre the same frustration. Security has always been a pain for beginners, not just for J2ME but net security in general. But trust me it is a bless, one you're into the real business.
As you already know only CA's like Verisign knows the whereabouts of all these software providers (like us). When it comes to a legitimacy issue, people (like us) will contact them to track down the origin of a malicious software. That’s why they charge more. I am not saying this is totally safe, but - unfortunately- thats all we have currently in the IT world :)
The biggest problem in security is that typically there are no "special cases". Meaning, (no one including Nokia) would release a product saying only "you" can install software on it. The other business complexity is that : there are network providers (like cingular) in between. They have their own policy on what to allow/deny features. So its least likely that they would trust anyone other than these popular CAs.
It's a bless. Aahah! I think that anybody can understand that with installing a root certificate on your phone you still can't have your application run on others', because it's really unpractical to ask aunt Tilly to install a certificate in oder to verify an application. It's just for developers, who would like to test their applications before distributing them, without being extorted of at least 200$ for each new build.
I'm willingly to buy a certificate, I appreciate the value of the CA chain, but I want to do this only when I'm ready to release. Sgrunt.
PS: if in the next days you will have a free Jabber client for J2ME that cannot transparently reconnect when the gprs connection is lost, or that can use a wi-fi connection without hanging, but you will have to pay for those features, you know who is responsible....
August 27, 2007 12:47 AM
Today we coax trixbox out of the Stone Age with fully-functioning CentOS 5, Asterisk 1.4, FreePBX 2.3 plus tutorials to resurrect text-to-speech using Flite and phpMyAdmin to manage MySQL 5. Hold on to your red hat!
August 27, 2007 12:30 AM
You should not be seeing this!
Robert's Blog has Moved:
blog.rlove.org
Naturally, the feed moved as well:
Atom and
RSS
Or just go ahead and

You have already missed choice
entries! 
Planets, aggregators, bookmarkers, et al: please update!
August 27, 2007 12:04 AM
WSJ: Patent System's Revamp Hits Wall
August 27, 2007 12:00 AM
August 26, 2007
Symfony core refactorization accelerates as symfony 1.1 release approaches. This week, the routing system, the response object and the request object have been completely refactored.
Development mailing list
Development highlights
- r4883: fixed
fillInFormFilter can't find form with content_type = xml
- r4885: removed
sfActionStack::(g|s)etViewInstance methods and sfContext::getCurrentViewInstance() and replaced them with a 'view_instance' object stored in sfContext (this removes the dependency between the action stack and the view sub-system)
- r4886: removed
sfLogManager class and moved code to sfLogRotateTask
- r4887: fixed some coding standards
- r4890: refactored storage sub-framework (removed
sfContext, sfConfig and sfDatabaseManager dependencies, added a new sfNoStorage to be able to disable sessions, added a new sfDatabaseStorage abstract class for all database based session storage classes, added unit tests, other fixes)
- r4892: refactored routing
- removed
sfContext and sfConfig dependencies (the first parameter of sfRouting::initialize() is now an optional logger)
- added
sfPathInfoRouting
- fixed
sfNoRouting
- added
sfRouting::setDefaultParameter() and sfRouting::setDefaultParameters() (replaces the sfConfig::get('sf_routing_defaults') hack)
- rewrote
sfPatternRouting::getCurrentInternalUri() (and added unit tests)
- added
sfPatternRouting::setDefaultSuffix()
- loading
routing.yml in sfPatternRouting is optional (via the "load_configuration" parameter which is false by default)
- added
sfWebRequest::getGetParameters(), getPostParameters() and getRoutingParameters()
- r4894: fixed routing default suffix + moved load_configuration parameter to
factories.yml
- r4895: refactored request and response classes
- removed
sfContext dependency for sfRequest (optional takes a logger and a routing object)
- removed
sfContext dependency for sfResponse (optional takes a logger object)
- changed
sfWebRequest::getError() to return non internationalized data (form_error() still returns internationalized data)
- changed
sfWebResponse::addMeta() to return non internationalized data (include_metas() still returns internationalized data)
- removed the
shutdown() method from request and response classes
- added a way to remove a meta or http meta from the response (just set the value to
null)
- r4898:
sfViewParameterHolder tweaks (removed sfConfig dependency, fixed some phpdoc, fixed serialization / unserialization, added unit tests for sfViewParameterHolder and sfEscapedViewParameterHolder)
- r4905: fixed dumping Propel data to multiple files
- Updated dwhittle branch
- ...and many other changes
Development digest: 27 changesets, 16 defects created, 3 defects closed, 8 enhancements created, 1 documentation defect created and 29 documentation edits.
Book and documentation
Approximate status of book translations: spanish (99%), polish (78%), italian (70%), chinese (26%), russian (26%), brazilian portuguese (15%), french (15%), deutsch (15%), dutch (10%), japanese (-).
Wiki
Plugins
- New plugins
- sfCssTabsPlugin: generates "Wordpress Admin" like tabs
- sfPropelZSLSearchPlugin: integrates symfony, Propel, and Zend Search Lucene together to easily add a site search functionality to your application.
- sfPropelTextOutputBehaviorPlugin: implements methods for XML and JSON output for Propel objects
- sfTextReplacementPlugin: provides different methods to replace text with anti-aliased images which are generated on-the-fly (based on the article "Dynamic Text Replacement" at http://www.alistapart.com/articles/dynatext)
- Updated plugins
- sfThumbnailCachePlugin: added
getWidth and getHeight methods
- sfSimpleBlogPlugin: fixed number of comments displayed in post list, split the configuration into an application-wide and a project-wide file
- sfSimpleCMSPlugin: fixed non-working default page for sfSimpleCMS module, fixed wrong token name for culture, removed editor CSS from pages in View mode
- sfPokaYokePlugin: released 0.1.6 version (corrected a spelling error in the config handler)
Some new symfony powered websites
They talked about us
August 26, 2007 11:40 PM
I was reading a post about it being Facebook Platform’s 3 month anniversary and decided to do a little comparison.
| |
Firefox Add-ons |
Facebook Platform |
| User base |
75-100 million[1] |
30 million[2] |
| New Downloads/Users per day |
500,000[3] |
100,000+[4] |
| Age |
5 years |
3 months |
| Available Locales |
40+ |
1 |
| Open Source |
Yes |
Not on purpose |
| Extensibility |
Complete |
Restricted |
| API Stability |
Stable within major releases |
Constantly changing, often with little warning |
| Community Gatherings |
Developer Days |
Developer Garages |
| Corporate Involvement |
Yes (AllPeers, StumbleUpon, etc) |
Yes (Slide, RockYou, etc) |
| Number of add-ons/applications in directory |
2500 public; 1300 sandbox* |
3300[5] |
| Number of developers |
3175* |
Unknown |
| Add-ons/applications with over 1 million active users |
40+* |
46[6] |
| Google News articles in the last month |
55 |
501 |
| Bug reporting |
Completely open |
Completely internal |
| Overlap |
Rock Your Firefox |
Facebook Toolbar |
* Only considers add-ons hosted on addons.mozilla.org; there are many add-ons hosted by their individual developers not taken into account.
I’m not one to get into the politics of whether Facebook Platform is good for the web. I’m more interested in what we can do to have people as excited about Firefox add-ons as they are about getting that one person who always takes forever in Scrabulous to finally go.
What can we learn from Facebook Platform? Why do people so readily add applications?
- Applications are restricted. People know exactly what an application is allowed to do within Facebook because you see a list of checkboxes when you add it. It can’t cause data loss. It can’t modify your information. Extensions can do anything they want. They can cause data loss. They can do bad things to your computer. I think that Firefox users who have never tried extensions are either: a) confused about what extensions are, or b) concerned about their security
- Applications are required to view content. If someone sends you something in an application, you often have to add that application to see it. In Firefox, we call those plug-ins. I can’t think of any extensions that you have to add in order to see content you find scattered around the web.
- You know when friends add applications. People add applications when they see something cool that a friend added. With Firefox add-ons, you don’t know what add-ons your friends use unless you use their browser or they talk about their extensions. (Although many of my friends talk about what extensions they use, I think it is fair to say this is not the norm.) This is what Rock Your Firefox tries to solve: seeing what add-ons your friends use and improving discoverability.
Having said that, I’m not saying that we should make any changes to be more like Facebook. I certainly think that extensions’ ability to modify anything is key to the innovation that we see all the time in new extensions. I think we need to find out what facets of the Firefox ecosystem are the most compelling and make people realize that everything that’s being done on Facebook could be done even better in the open web.
(Obligatory disclaimer: The above opinions are my own and are not affiliated with any entity in which I may be involved.)
August 26, 2007 11:39 PM
In my ongoing effort to cook more, tonight was inspired by a green pointy thing, namely a Hatch chile. So, what to do with these beautiful peppers now that they’re in season? Well, turn Cuban food on its head of course, and put a slightly spicey spin on mojo criollo.
The results were much better than I expected, with the heat of the chili enhancing the flavors of the mojo criollo. Very yummy. Here’s the recipe, modified from tradition, since I didn’t have Saville oranges available.
| 1 |
|
Chicken, medium |
| 1/4 cup |
|
lime juice, fresh |
| 1/2 cup |
|
orange juice, fresh |
| 1/2 cup |
|
olive oil |
| 1 tsp |
|
oregano, dried |
| 8 |
|
garlic cloves |
| 1 |
|
Hatch chile |
| 1/2 tsp |
|
salt |
| 1/4 tsp |
|
pepper |
| 2 cups |
|
chicken stock |
- Butcher the chicken, or buy pre-cut chicken pieces. I prefer to butcher my own, largely because it’s cheaper and I can control the exact cuts. You want the chicken with the bones and skin still on.
- Road the Hatch chile, either under the broiler in the oven or on top of the stove (gas only). You’re done when it’s fully blistered.
- Once finished, wrap in paper towels and let sit for a few minutes, before rolling it around in the towels to remove the skin.
- Cut up the chili into small dices, removing the seeds and skin.
- Take the lime and orange juice, along with the garlic, salt and pepper and run it through the food processor, adding the olive oil slowly to achieve an emulsion.
- Mix the oregano and diced chili in after you’re done.
- Place the chicken and marinade together in a zip lock bag and seal, tossing to coat. Let stand in the refrigerator for at least 1 hour, preferably 2-4 hours.
- Heat a couple table spoons of olive oil in a dutch oven, and sauté the chicken in the oil, after shaking off any extra marinade. You’re only looking to brown the chicken, not cook it all the way through. This may need to be done in multiple batches.
- Remove the chicken and set on a plate.
- De-glaze the pan with the chicken stock, scraping up all the fond that is stuck ot the pan.
- Once you’ve got the pan cleaned, add the remaining marinade and bring up to a simmer.
- Return the chicken, and any accumulated juices to the pain, trying to submerge them as best as possible.
- Cover, and cook until chicken’s internal temperature indicates 155F (68C).
- Remove the chicken and set aside again.
- Turn the heat up to a boil, and reduce the sauce by 1/4. If it’s still not thick enough to your liking (it should coat the back of a spoon), you can add arrowroot.
- Serve with rice and beans, or another vegetable.
August 26, 2007 11:31 PM
Today, I was in a Verizon Wireless shop, trying to buy a cell phone. Actually, I was just trying to get my old one fixed, it broke for the 3rd time within a year (LG is completely crap, so it seems). Instead of getting a new item of the same old crappy LG, I just wanted something else, so I told the sales guy that I wanted a new phone “that wouldn’t break within a year”. He says: “oh, so you want a high-end phone kind of thing?” (oh-my-god, so it is supposed to break within a year unless you pay extra?), bringing me to the realm of vcast (some kind of post-stamp sized video on demand system or so), car navigation and that kind of fancy. When I told him I really wanted a phone, we went back to the cheap models and he asked how exactly my old phone was broken, so I told him the battery was always empty within a few hours (all previous models just wouldn’t turn on after a few weeks-months). So, he says: “oh, yes, they have a Lithium ion battery, you shouldn’t charge it overnight!” (oh-my-god, talking about a complete failure of engineering; who designs these phones/batteries, a bunch of lunatics?).
I went over to the purchase of a cheap actual phone (one of those things that you can just make phone calls with). So, he refers me to his colleague salespeople, because his computer is broken. They tell me: “Sorry sir, the network is broken, we can’t handle purchases today.” (oh-my-god, for just so many reasons). After coming back later, I was referred back to the original guy, who referred me to customer service to re-pay a late phone bill that I paid by mail yesterday but they hadn’t handled yet, then back to the original guy, who gave me a piece of paper and referred me back to the customer service to actually pick up the phone, who referred me to technical support to get my phone numbers transferred from the old to the new phone, who referred me back to the customer service for actual payment, who referred me back to the sales guy to get coupons for refund of the phone cost. Oh-my-, oh-my-, oh-my-god. I think I talked with 6 people in total, all in all it took over an hour. How inefficient is that?
Verizon Wireless is seriously screwed up.
August 26, 2007 11:30 PM
I've started using Mercurial, and it's been mostly good. I've run into a few issues that we should address:
- Mercurial has its own diff.exe and patch.exe tools. I accidentally had them on my path before the MSYS tools and this seemed to cause problems (like 'patch' converted line endings to CRLF in every file it touched). It would be nice if bsmedberg or someone else rolled Mercurial into the Windows build tools package so that other people don't get the opportunity to make this mistake.
- hg diff doesn't seem to offer a way to change the number of lines of context. So I had to enable and configure the extdiff Mercurial extension. That was a bit annoying.
- http://hg.mozilla.org/cvs-trunk-mirror has a nice mirror of CVS into Mercurial, updated frequently, with history back to March. This is a nice place to pull from. Unfortunately it doesn't include everything you need to build Firefox; in particular NSPR and NSS must still be pulled from CVS, and extensions/xmlextras was not imported so you need to --disable-xmlextras in .mozconfig (which used to break libxul builds, although I managed to land a fix for that today). There's a client.py script in http://hg.mozilla.org/mozilla-central that can do the CVS pulls of NSS and NSPR, but mozilla-central is not a good place to pull from (it's not updated regularly) so you need to get that script seperately, and then that script has Tamarin stuff in it so I didn't like the look of it... I ended up just pulling NSS and NSPR with manual CVS commands. We need to make it easier to use Mercurial to get a working build. Perhaps someone could embed Mercurial knowlege directly into client.mk so "make -f client.mk pull_all" works with a Mercurial repository just as well as it does with CVS?
On the bright side, Mercurial is fast, even on Windows: whole-tree diffs take me just 5-10 seconds, whole-tree revert is even faster, pulls are fast, and all the basic functionality seems to work fine (I haven't done any merging or branching yet, nor have I used MQ). Best of all the underlying model seems quite simple and I think I understand it having read a few chapters of hgbook. I used git with cairo without ever really understanding what git was doing.
It seems to me that if cvs-trunk-mirror (or another Mercurial repository) was set up to make it easier to work with for regular trunk builds, developers could move over right now, except for actually checking in patches. Then we could have a flag day where instead of checking into CVS and having the changes propagated to a Mercurial mirror, we check into a Mercurial repository and the changes get propagated to a CVS mirror. LXR, Bonsai, Tinderbox and other tools could work off the CVS mirror so the switch would be pretty easy. There must be something wrong with this picture because smarter people than me have already said it's harder than that :-).
August 26, 2007 10:57 PM
Sxip Identity just finished a draft specification that enables a really useful form of convergence between OpenIDs and Information Cards: presenting your OpenID as an Information Card you select rather than as a string you type. Johnny Bufu’s OpenID general mailing list note introduces this specification for community review.
This combination has several advantages over standard OpenID usage. First, there’s no OpenID string to type when you use your OpenID, which should make OpenIDs easier for more people to use. Second, this is a phishing-resistant authentication method. Finally, it lets you recognize and choose your OpenID visually, based on the card graphics supplied by the OpenID provider.
Sxip also backed this specification by a sample implementation, which you can check out at https://openidcards.sxip.com/. Now for some more details….
Here’s how it works: In this model, the OpenID relying party asks for an OpenID Information Card using an object tag on the page rather than having the user type the OpenID as a string (while probably also giving the user the option to instead type in the string for backwards compatibility). The user’s Identity Selector then lets the user choose which OpenID card to send to the site. The card transmits the actual OpenID string to the site as a claim. From that point on, standard OpenID protocol interactions ensue.
For instance, the sample relying party page asks you to “Login with an OpenID InfoCard” and requests the card using this evocative graphic:
Upon clicking the graphic, my identity selector is invoked, which shows me that I can use this OpenID Information Card at the site (which I’d previously obtained here):
After that, the sample performed a standard OpenID attribute exchange and the relying party greeted me with:
Welcome! You have logged in using your https://openidcards.sxip.com/i/mbj OpenID identifier.
Phone: (omitted)
Country: USA
Email: mbj@microsoft.com
City: Redmond
Address: One Microsoft Way, Building 40/5138
LastName: Jones
FirstName: Mike
Behind the scenes, the relying party had received this OpenID assertion:
<openid:OpenIDToken xmlns:openid="http://specs.openid.net/auth/2.0">openid.ns:http://specs.openid.net/auth/2.0
openid.op_endpoint:https://openidcards.sxip.com/op/
openid.claimed_id:https://openidcards.sxip.com/i/mbj
openid.response_nonce:2007-08-26T20:55:34Z0
openid.mode:id_res
openid.identity:https://openidcards.sxip.com/i/mbj
openid.return_to:https://openidcards.sxip.com/demorp/
openid.assoc_handle:f27d249fc4108198
openid.signed:op_endpoint,claimed_id,identity,return_to,response_nonce,assoc_handle
openid.sig:gKKpDjEbgByJo48Q800Jq4gCJng=
openid.ns.ext1:http://openid.net/srv/ax/1.0-draft4
openid.ext1.mode:fetch_response
openid.ext1.type.attr1:http://axschema.org/contact/phone/default
openid.ext1.value.attr1:(omitted)
openid.ext1.type.attr2:http://axschema.org/contact/country/home
openid.ext1.value.attr2:USA
openid.ext1.type.attr3:http://axschema.org/contact/email
openid.ext1.value.attr3:mbj@microsoft.com
openid.ext1.type.attr4:http://axschema.org/contact/city/home
openid.ext1.value.attr4:Redmond
openid.ext1.type.attr5:http://axschema.org/contact/postalAddress/home
openid.ext1.value.attr5:One Microsoft Way, Building 40/5138
openid.ext1.type.attr6:http://axschema.org/namePerson/last
openid.ext1.value.attr6:Jones
openid.ext1.type.attr7:http://axschema.org/namePerson/first
openid.ext1.value.attr7:Mike
</openid:OpenIDToken>
One final technical note that will be of interest to some of you: OpenID Information Cards do not use SAML tokens. They use one of two variants of openid:OpenIDToken tokens (depending upon whether the OpenID relying party uses OpenID 1.1 or 2.0 authentication).
Go get yourself an OpenID Information Card and give it a spin! Read and comment on the spec. Or even better yet, implement it and tell us about your experience!
August 26, 2007 10:45 PM
Well, The Economist has published a
study of the livability of cities. That pointer is actually to
the summary, not the actual report,
which will cost you $200. Anyhow, in the #1 position is Vancouver,
and in #2 is Melbourne, which I’m starting to think of as my second
home.
August 26, 2007 10:20 PM
Over the last few months, there have been
numerous articles by various
bloggers and
mainstream press speculating on whether use of Facebook will supplant email. I have
also noticed that I use the private messaging feature in Facebook to keep in touch with more
people, more often than I do with non-work related email.
I used to think that this was a welcome development from a
user's point of view because spam is pretty much eliminated due to
in-built white lists based on social networks. Or at least that's
what I thought. However over the past few weeks I've been getting
more and more unsolicited private messages on the site which aren't
p3n1s enlargement or 419 scams but are still unsolicited. On taking
a look at the privacy options, it turns out that there doesn't seem
to be a way to opt out of being contacted by random people on the
site.

In fact, I'm surprised that regular spammers haven't yet flooded
Facebook given how they seem
to end up everywhere else you let people contact each other
directly over the Web. One thing I find confusing is that I can
swear that there was an option to opt out of messages from people
who aren't on your friend's list or in one of your Networks. Or was
this just my imagination?
The other kind of unsolicited mail that is totally wrecking my
Facebook experience is
unsolicited friend requests from Facebook applications. These
aren't just regular friend requests. It seems that every
application a user adds can make friend requests specific to the
application. I'm getting friend requests from
My Questions and Likeness
on an almost daily basis with no way to permanently ignore friend
requests from these applications.
I guess Clay Shirky's old saying is true,
the definition of social software is stuff that gets
spammed.

August 26, 2007 10:10 PM
This is a hot topic in New Zealand right now, and an interesting relevant rant about OOXML technical issues just appeared on Slashdot, so I feel like getting my 2c in...
Rod Drury's blog has an interesting comment:
The antagonists seem to change between the spec being either
a) Too long and detailed for people to be able to implement or;
b) Too vague and lacking in specific detail for people to implement.
It's entirely possible for both of these to be true at the same time --- when the thing you're trying to specify is much too complicated, so that a specification with all the necessary details is much too large to be correctly implemented by anyone. That is exactly the situation OOXML is in; it wants to specify every detail of the behaviour of Microsoft Office, millions of lines of code accumulated over 20 years.
People are worried about the cost of migrating documents from Word format to ODF. I don't think anyone should be advocating such a migration; legacy documents, if converted at all, should simply be printed to PDF for archival. The real issue is what format new documents should be produced in. OOXML is clearly a horrible format from a purely technical point of view --- not even its defenders seem to be challenging this --- so there's a strong argument that you do not want to be producing new documents in OOXML if you have a choice. I think having OOXML stamped by ISO as a de jure standard would send the wrong message about that. On the other hand, making it an standard does not help at all with the problem of preserving legacy documents.
The overall most cost-effective and future-proof solution IMHO is for ODF to be the single de jure office document standard, for Microsoft to ship ODF read/write capability in its products, and for people who care about the longevity and openness of their documents to make ODF the default for new documents, while continuing to work on old documents in their existing formats. Presumably Microsoft opposes this approach because it would ever-so-slowly weaken people's dependence on their products.
Someone might wonder whether support for the WHATWG's efforts to standardize "Web-compatible" HTML is consistent with opposition to Microsoft's efforts to standardize "Word-compatible" OOXML. It is, because there are actually many differences. The main difference is that Ian and his gang aren't just specifying "whatever IE does"; they typically look at what a number of implementations do, and choose the behaviour that makes the most sense while remaining "Web compatible" (which is often, but certainly not always, what IE does). This is made easier because HTML and its related technologies originated in the standards world, whereas Microsoft's Office formats have always been wholly their own monstrous babies. (Another major difference, I suspect, is that conversion of HTML documents is a lot less feasible due to greater reliance on embedded scripting to give meaning to pages.)
August 26, 2007 09:56 PM
It's sometimes refreshing to read a newbie to Japan.Of course, credit cards are often non-interchangeable either way,I was surprised that Japan Post was that good.
August 26, 2007 09:35 PM
gdc has finally entered Debian repositories (thanks Arthur Loiret, Matthias Klose, thanks GCC folks!). It’s time to start putting the rest of Kenta Cho’s games into Debian. Two of them, A7Xpg and Gunroar, are already in the NEW queue, some others are on the way. Kenta Cho is most famous for his shmups or shoot ‘em ups, mostly featuring abstract reinterpretations of retro classics with each game having a specific unique feature and using randomly generated levels. rRootage and Noiz2sa are already in the archive, since they were coded in C++. Thanks to Javier Candeira, who introduced me to Kenta Cho’s world.
August 26, 2007 09:25 PM
Although we have a policy of running OSS software exclusively here at eclipse.org, we also have a policy of not altering the source code of key software components. You know the drill: you hack into the code for all the right reasons, only to realize that months later, upgrading that hacked code to a newer version is a chore, if not impossible, depending on how much customization you've done. We do make small exceptions where it makes sense - such as the Bugzilla templates or, more recently, the Wordpress-mu code, which was altered to allow for authentication against the Bugzilla database.
Upgrading "hacked" code is pretty straightforward with Eclipse. The diff and merge tools (courtesy of the Platform Compare component) are second to none for this type of job. I start by loading the new, unmodified code in one Eclipse project and the copy of the hacked code into another project. I then use the Compare with Each Other utility, where Eclipse finds all the differences in all the files, also showing added or removed files. The compare tools then allow me to merge the changes one-by-one.
Merging code is a time consuming process, but Eclipse allows me to do it without losing my sanity.
August 26, 2007 09:18 PM
The MOO-XML* (Microsoft Open Office XML) definition is not followed even by Microsoft applications:
OOXML is defective by design
One point from the article: Excel crashes when opening well-formed and valid spreadsheet document files. There are many other problems also clearly explained in the article.
If ECMA fast track this half-baked format of Microsoft's after so many serious problems in
August 26, 2007 09:12 PM
Ben Fowler blogs about the issues related to running IRC as root. Google searches for (irc client exploit) and (irc client “buffer overflow”) give a number of interesting web pages. Many of the exploits require the user to perform an action that’s slightly unusual, but why take a chance?
The advice to not run as root while generally sensible (run everything with minimum privileges as much as possible) is IMHO not very useful in recent times (and probably was never very useful). Generally when a user is worried about system compromise they are not worried about attackers having direct hardware access, the ability to corrupt system files, etc. They are worried that the attacker might read their email and access other personal files.
Therefore the instruction should be “don’t run IRC as root or as any account that has access to data which is important to you“. It’s not difficult to start an X-term that runs “exec su - ircuser irc” or “ssh -t ircuser@localhost irc“. Note that the -t option is required for ssh to make it allocate a pty even when receiving a command to run. Note also that in the case of su you need the exec option so that if the irc client is compromised and tries to perform a ioctl(0, TIOCSTI… based attack then it won’t succeed.
In any of these methods make sure that X access is not granted. Until we get Security Enhanced X working in a viable manner any process that can display an X window on your screen can own you totally. There are of course relatively safe ways of doing X, I have previously documented how to configure the Xephyr X server (replacement for Xnest) to allow a process with a different security context to safely display a graphical window on your desktop.
Generally I recommend not using a graphical X client on an untrusted network (IE anything other than an Intranet IRC server). I prefer to do my IRC in an account that’s not even on a machine that I care about and have it run screen so I can disconnect and re-connect from anywhere in the world.
When I first got SE Linux in Debian to be useful (when I could boot and run all programs without problem) I logged on to some IRC channels related to Debian with the security context of root:user_r:user_t. I admit that my actions in this regard could possibly be described as trolling, but I wanted to demonstrate what SE Linux can do. Unfortunately of the many people who told me off for logging in to IRC as root, none of them wanted to hear an explanation of why user_r is safe in this regard. I expect that most of them were running their IRC client in the same Unix account that was used for their email etc (and probably most of them had GPG keys accessible from such an account).
Sigh, it’s so easy to run IRC as a different user - in fact it’s probably the easiest of all network client programs to run in such a manner. There’s no reason not to.
Share This
August 26, 2007 09:00 PM
The OSGi Bundle-NativeCode manifest header is one of those well kept secrets of Eclipse. It allows you to use native libraries (DLLs) without having to set the java.library.path system property. SWT is the most notorious example of this.
Today I was struggling to get a use case with three DLLs working: xp.dll is specific for Windows XP, vista.dll is specific for Windows Vista and both.dll is needed on both platforms. How can you get this to work with a Bundle-NativeCode manifest header?
Adding the following line to your plug-in's manifest does not work:
Bundle-NativeCode: /lib/both.dll; osname=win32; processor=x86, /lib/xp.dll; osname=winxp; processor=x86, /lib/vista.dll; osname=winvista; processor=x86
The reason why this does not work is mentioned in
bug 118065 and described in full details in the javadoc of
BundleNativeCode.java:
If you have more than one library for the same environment then you should include all of the libraries for that environment in the same Bundle-NativeCode entry.
So, after changing the above line (with three entries of each one library) into the following (with only two entries of each two libraries), everything worked just fine:
Bundle-NativeCode: /lib/both.dll; /lib/xp.dll; osname=winxp; processor=x86, /lib/both.dll; /lib/vista.dll; osname=winvista; processor=x86
While investigating this, I also found two interesting lists to bookmark: the supported
processor aliases and
OS aliases.
August 26, 2007 08:58 PM
Thanks to the effort of Mike Hommey WebKit arrived today in Debian.
And I spent two hours this evening porting Devhelp to use it (still hackish, still not totally functional).
(original size)
This screenshot doesn't show anything, so I'll note a few things:
- missing scrollbar; (now fixed)
- missing title; (now fixed)
- missing support for anchors, so it always goes to the top of the page.
Unfortunately I am sure I will not have time to finish this, so if anybody is interested, please contact me, and get the current diff.
August 26, 2007 08:55 PM
As I type this, debs for a current snapshot of upstream Subversion are on
their way to Debian Sid. They are taken from the Subversion trunk and not
from the yet-to-be-released 4.6 branch, because a few important
changes have taken place on the trunk only, and the 4.6 branch is
merged anyway. Hence the version number, 4.6.99+svn6078-1. These
packages did spend some time in experimental, and I didn't get any bug
reports, but that doesn't mean they're bug-free. Use with caution.
One of the big changes is that Gforge now uses Gettext rather than its
home-made internationalisation system. Which means probably fewer
problems, and a more standard system allowing more people to get
involved. Can you guess what I'm hinting at? Yes, it's a call for
translations! Anyone interested in getting involved should bzr
branch
http://alioth.debian.org/~lolando/bzr/gforge/upstream-svn/trunk/, and
start poking the existing *.po files (or creating new ones!).
Why the private repo and not the upstream Subversion repository?
Rationale follows.
My job as a freelancer as well as my role as an Alioth admin involve
maintaining separate branches of the Gforge code (different clients
have different needs and patches). In order to facilitate patch
migration, I therefore need a distributed VCS, and I've been using
Bazaar for a few years, with a manual gatewaying between upstream CVS
first, then Subversion, and a few private Bazaar branches. Now that
Bazaar (as in Arch) is dead, I'm using Bazaar (as in Bazaar-NG,
Bazaar-2, or bzr), which seems to be approaching a 1.0 release, and
which provides a plugin to interoperate easily with Subversion
repositories.
And since the upstream Subversion repository is not accessible
anonymously anyway, I decided to publish my gateway branch. I'll
probably publish more branches as time passes (probably the Alioth
branch, and quite possibly feature branches too).
Note: if you want to share a bzr repository of a project containing
PHP scripts with Apache, you may encounter a problem, because the
bzr repository contains files named *.php.knit and *.php.kndx.
And Apache will happily give these files to the PHP interpreter when
serving them, and that's not what you want. My trick to fix that is
to add a .htaccess file somewhere where the repository is stored,
with the following contents:
AddHandler None .knit .kndx
This will ensure that these files will be sent straight to the HTTP
client, and not through the PHP interpreter.
August 26, 2007 08:33 PM
It is unfinished, slow, buggy, unmaintained, in need of a rewrite -- and now you can hack it yourself!
Doesn't that sound exciting? Of course it does.
Prerequisites. Only Linux/x86 is supported1. You will need several hours of spare CPU time, about 1 GB of RAM, and lots of disk space.
Compilation involves building SBCL and classpath first, so make sure to install all required dependencies first. Debian users can run
# apt-get install sbcl svn cvs wget jikes
# apt-get build-dep classpath
to do so.
Build script. Grab cloak using git [edit: needs git 1.5, no idea why]:
$ git clone http://www.lichteblau.com/git/cloakbuild.git
and compile it using clbuild-like commands:
$ ./build update
$ ./build world
Usage. The bin directory contains scripts called java, javac (courtesy of ecj), javap, and javah that run Lisp with the right arguments.
$ ./bin/java -version
CLOAK Virtual Machine, running on SBCL 0.9.8.6 (Linux 2.6.22 X86)
Copyright (C) 2003-2007 David Lichteblau
Technically it is a precompiler, and to avoid unpleasant surprises at run time, you might want to run
./bin/precompile foo.jar
before starting anything non-trivial.
Finally, read cloak/TODO and start hacking.
What's new? Compared to the big binary tarball available previously, this one comes with sources only, has been updated for current SBCL, and for Classpath 0.91 (which is still ancient, but a little step forward). The scripts in bin/ are also new.
1 No AMD 64 support yet. For now, use an x86 chroot instead.
August 26, 2007 08:06 PM
McAfee have finally released fixes for the DT_RPATH issue in their uvscan product, about 8 months after it was reported to them, you can get the latest version from
here. They've also released fixes for the issues I found while fuzzing their scan engine, the advisories to those issues are
here and
here.
They're basically lying about the impact and their affected products ("Process Termination", wtf?). Their windows product was affected by both issues, and at least one of the issues was obviously exploitable, they are fully aware of this as they told me they had read
secunia's report on the issue. But it seems like they have fixed it now at least.
I'm not interested in dealing with McAfee anymore, but if you are unfortunate enough to rely on their software and have some CPU cycles to burn, you might be interested in the fuzzer I wrote. It's very naive, but evidently is still able to find bugs. It was written by reverse engineering the API to their scan engine, and then simply intercepting filesystem operations.
To run it you need the file liblnxfv.so and the files clean.dat, names.dat and scan.dat from the vlnx distribution, which you can place in the wd.
You can compile it like so:
$ gcc avtag.c open.c vxfuzz.c -o vxfuzz -Wl,-rpath,$PWD -L. -llnxfv
Then just run it with an input file you'ld like to fuzz, e.g. a zip/rar/ace file, or an .exe packed with one of the packers they support. I think I've found most of the low hanging fruit, but if you have one of the more obscure archive formats or packers they support, I'm sure you'll find something interesting if you can let it run for a few days.
$ ./vxfuzz input.exe
[*] vxfuzz $Version: $
[*] ----------------------------
[*] PRNG SEED: 0x12cc65c1
[*] AVInitialise();
[*] AVScanObject();
[!] signal 11, attempting to dump progress.
[+] Signal caught, dumping file to vx.out.
$ uvscan --secure ./vx.out
Segmentation fault
Hah, another crash. The file vx.out contains the file that caused the crash. Let me know if you find anything interesting.
Download
vxfuzz-0.01.tar.gz here.
If you get a message about AVScanObject() returning failure, ensure you have the files clean.dat, scan.dat and names.dat in the current working directory, and that the file you're fuzzing can be read.
August 26, 2007 08:04 PM
I was doing KDE programming on a 3 year old Celeron 2.2GHz laptop late Thursday night. I finished and turned it off -- nothing out of the ordinary.
The next evening I tried turning it on. The "on" light lit up and the fan started spinning. All was good until 5 seconds later: it just shut off - the light went off and the fan stopped. A few seconds later it turned on again. It kept looping in this cycle.
If anyone has an idea of what this is or whether this can be fixed, I'd be very grateful. I have lots of uncommitted code sitting there so if the laptop's dead, I'll have to move the hard disk to another (less powerful) laptop, at least to get my code off.
Nothing is displayed on the screen so it's not even getting to the POST tests. There's no beeping whatsoever. And there's no smoke :)
I opened up the laptop today hoping to find something loose or abnormal but I can't see anything wrong with it.
This laptop has had a habit of getting up to 90-91 (ninety to ninety-one) degrees celcius during compiles (before Linux shut it down), if I didn't prop it up to give it more ventilation, so maybe it finally fried?
August 26, 2007 07:58 PM
Version 2007g of the Chronos Time Zone Repository has been published. It is based on version 2007g of the Olson Time Zone Database.
Downloads:
August 26, 2007 07:53 PM
This little Lego robot runs (well, drives) with Debian ;-)
August 26, 2007 07:01 PM
Been looking at how to handle the logical step from turtle-graphics to interactive
programming (event handling and the like). Looks like something like GooCanvas would be a
good stepping-stone there. We can fairly readily define a mapping from turtle...
August 26, 2007 06:56 PM
Our next meeting will be this Wednesday, August 29th. The details of the meeting are not fully settled, but at least Christopher Diggins will talk about its translator from Scheme to a statically typed functional stacked-based language. The details will soon be posted to the MSLUG web site.
By the way, we will be experimenting with another meeting format this fall, inspired by the BarCamp and DemoCamp type of events. At each meeting, three or four people will give short talks (about 15 minutes) about one of their favorite projects (academic, commercial, open-source, or hobby). Many people have already showed an interest in giving such a talk. (I will certainly give one myself, about the grammar IDE we are currently developing at Nü Echo.)
August 26, 2007 06:22 PM
I'm always on the lookout for bugs. Since EMF has so few of them, I have better luck finding them in my garden. The big dragon flies are laying eggs now and this one doesn't seem to have her partner to help her:

If you time it just right, you can catch them in mid flight!

They're quite the amazing creatures dating back to the earliest days on earth when life first took to the skies. Good solutions have real staying power on this planet!
August 26, 2007 05:54 PM
Hi sorry for the long delay, but I just now read your thread.
It's some month ago, I believe it was sccp-6-0-3 and then I updated to sccp.7-0-3 and (as far as I remember) continued to sccp.8-2-2SR1.
This is my last sccp file which I found so I believe then you can change to sip.
Best regards
Jochen
jochenthomas (jochenthomas) at 2007-08-26 17:47
August 26, 2007 05:47 PM
After spending too much time on directory and view script shifting to align an 'older' Zend Framework application to the very useful ViewRenderer Action Helper of the follow-up releases I crafted a single Phing buildfile to stick to the recommended conventions and to have a nearly 'one-button' setup solution for any upcoming projects.
There are already some solutions available ranging from prepacked application skeletons to programmatically creators. Of course this is a rude violation of the DRY principle, but you are welcome to read about the basic features the Phing based solution has to offer for now.
Requirements
Features
- Building a default or modular application directory structure
- Generating Controller, Model and View skeletons
- Php linting/validation of generated skeletons
- Customizable Controller, Model and bootstrap templates
- Retrieval of a specific Zend Framework version via svn or get
- Bootstrap file generation
- Modular targets to generate and add Models and Controllers skeletons belated
Open/possible improvements
- Couple Model generation with basic database table creating and seeding
- Zend_Db, Zend_Registry and Zend_Log setup
- Alignment to Zend_Application proposal, when it's moved into core
After having all requirements aboard it only comes down to the following two steps:
- Run the buildfile in the targeted directory
- Set the document root to the applications html directory e.g. by using Apaches VirtualHost capabilities
Although it's tested and I put some thoughts in it, any feedback about detected flaws and additional improvements are highly appreciated.
August 26, 2007 05:33 PM
Yay for Sundays. GStreamer hackers told me something was wrong with CVS - commits were going in as uid(somenumber) instead of the actual account name for the last two weeks. Also, spewage from post commit hooks indicated the same problem.
With the help of Jan, I figured out what the problem was. CVS runs inside a chroot, the chroot was still on Debian sarge while someone upgraded the hot machine to Etch. The passwd.db file got copied from host to chroot and presumably the sarge libs can’t read the etch version of that file. But it took a few hours to figure out that this was the problem. Anyway, should be fixed now. The uid’s in the commits already made will be fixed in the future after we migrate to Subversion - I’m actually (for work) adding a feature to moap that allows you to rename authors for past revisions.
I also deleted some 33000 files from its /tmp directory left over from cvs commit rules…
It makes me think that sitewranglers, as a group, is not very effective. I wonder who did the upgrade to etch in the first place ?
Dobey also asked me to take a look at why Tango ’s website didn’t work - MySQL had the user allowed only from the full hostname and not localhost. Fixed now too.
I’m guessing SVN will have the same problem - can anyone let me know which projects use svn and wants to take a look at it with me so I can fix it ?
Since my Thinkpad is still in limbo, and Jan has come over today to do some hacking, I am doing today’s hacking from a Mac PowerBook G3 running Ubuntu Warthy. Apparently Warthy does not even exist anymore on Ubuntu’s servers, so upgrading it was out of the question. Jan helped me set up XDMCP on my desktop in the office room, and now I’m using this paperweight machine to work remotely on my desktop. Works pretty well.
But how anyone would ever have wanted to actually buy a machine like this is beyond my comprehension. I don’ t even have a Delete button ! I can’ t delete mails in Evolution ! Well, I could go right-click and select Delete … oh no wait a minute, this is a Macintosh broken-by-design machine with ONLY ONE MOUSE BUTTON. Sigh.
August 26, 2007 05:15 PM
Today I see, via John
Gruber, that Pantone has
been acquired
by X-Rite. In 1995, I
gave Pantone’s CEO some advice that might have made them a lot of
money. He didn’t take it, but it’s an amusing story.
What happened was, I was a Vice-President and founder of
Open Text, then mostly in
the search and retrieval business, which was at that time part of
the publishing business. We’d long been attendees of the “Seybold
Seminars”, for many years the Conference that Mattered in the
publishing-tech business. When Open Text suddenly hit the big time
in 1995 with one of the first Web Search Engines, I became
something of a Web Authority, and spoke regularly on the subject at
Seybold.
That year, we had a partnership with Yahoo! (the employee count
was still in the low double digits, but they had white-hot buzz).
At that fall’s Seybold, I was invited to the “Founders’ Dinner” at
a really nice San Francisco restaurant. I called the hosts and
asked if I could bring Jerry Yang from this weird new Web-Startup
world along. Jerry got a lot of attention; the Web was absolutely
Terra Incognita to those guys at that time.
Later in the evening, I was chatted up by the Pantone CEO, a
grizzled guy in a rumpled suit. He asked “Is there anything Pantone
could do to make its mark on this new Internet thing?”.
The answer seemed obvious. I said “Well, color online mostly
sucks, and that’s partly because computer geeks mostly totally
don’t understand it. Why don’t you guys write some software that
takes a Pantone number as input and really works hard, using
everything it knows about your computer and operating system and
monitor and video card, to come as close to that color as you’re
gonna get, on-screen.”
He asked “Well, how do I make money?”
I said “Give the software away to Netscape and Microsoft (for
IE). If it’s good, millions of page designs on the Net will be
specced in Pantone numbers. Your upside is huge.”
He looked at me like I was completely fucking nuts. To his
credit, he was polite, but it was obvious he thought I was from
another planet.
I dunno, I think it might have worked. And we might have
better-looking Web pages too.
Postscript
Writing this made me feel nostalgic for the Yahoo! of way back
then. I did some poking around, and the original directory that
fueled the first stage of that particular Internet Rocket is still there. But you really
have to look to find it.
August 26, 2007 05:14 PM
Hey, this is my blog, if I want to run a picture of my wife and
my mother, I can.
On Mom’s back porch in Regina, Saskatchewan.
August 26, 2007 05:10 PM
During the bar conversation after the Saturday Seattle Strobist Seminar, a bunch of including James Duncan Davidson and Eric Soroos were talking to David Hobby about full feeds on the Strobist site. In particular, we pointed him to John Gruber’s experiment with full feeds on Daring Fireball (preliminary report on John’s experience). So I was very happy to read that David has decided to try a full feed for Strobist as well.
Since David wanted some more power user full feed info, here’s my take on David’s situation.
The argument for full feeds is that it allows a reader to be more efficient because they can digest more information per unit time. At least that is true for me. The other big benefit is that it allows people who want / need to read offline to do so. The question is, “Doesn’t reader efficiency come at the expense of the publisher”? My answer is, no, not if your content is good. In fact, if your content is good, reader efficiency works in your favor. If your content is good, then you as the publisher doen’t want me to have to break my workflow (by switching to a browser, browser tab, or NetNewsWire tab) to determine that the content is good. If I have to break the flow, there’s much less chance that I will do command-shift-P (in NetNewsWire) to pop the your post into Ecto where I can quote it as part of my post (which ought to generate some additional traffic for you). There’s less chance that I will hit command-1 to pop your post’s title and permalink into Twitterific, where it can get pumped into the realtime information junkie network. And there’s less chance that I will hit command-control-’ to pop your post’s permalink into Pukka where I can quickly tag it and stick it into del.icio.us, where it can be immortalized as important, seen by my del.icio.us network, and pumped into my blog and tumblog. In other words, you make it hard for people like me to help you. Now you might not care about that, and that’s a completely rational choice. But since just about everything in the blogosphere (after your good original content) is about getting flow (which doesn’t just mean inbound clicks) from other people, it seems like a short sighted thing to make it hard for flow to happen.
There are a few other dynamics which I think are relevant to Strobist, which don’t apply to all blogs.
1. Strobist is not just a blog, it is a source of reference materials. If you metered my accesses to the Strobist site, you would see that I access the site much more as a reference site than as a daily blog. I read the daily blogs, but since I am learning something that requires practice, trial and error, and so forth, I am always pulling up old posts (and those Lighting 101 and 102 pulldown menus) are a godsend for that. Which you have to go the site for. Dropping the 1 click that you would have gotten by forcing me to follow from the partial feed is just noise compared to the other volume
2. The advertisers on Strobist aren’t getting the value from the ads. If you make me go to Strobist in Firefox, Adblock pwns you. I never even see your ads. If you want to get value from Strobist, do something that works with what David is doing. Nonetheless, I’ve ordered several times from the Midwest Photo Exchange, not because they advertise on the site, but because they are doing something that works with what David is doing - so well that David actually writes about it. You might think you need an ad, but what you really need is to do something that will get David to write about you. Strobist is becoming a community, and the advertisers / sponsors of the site will get the most value by being a part of the community (see yesterday’s post on Nikon for tips). And that means more than just doing ads.
3. I was less vehement about full feeds that night (and I do love my full feeds) because I don’t think that David’s audience is an RSS enabled audience. The small sample size at the bar bore that out. So full vs partial doesn’t make that much difference, really. I’ve been reading the blogs of some wedding photographers because I think that maybe someday I might like to take a crack at that. But one thing I’ve noticed is that the word on Strobist is out. I see the techniques being mentioned. People see off camera flash pictures and want to know how to do that. And the answer that invariably comes back is Strobist (or occasionally, the OneLight). You can be sure that this is happening in real life, maybe even more so than on line. So the flow net for Strobist has expanded beyond the RSS savvy crowd and into the real world. No amount of full vs partial RSS feed is gonna change that.
But just in case, click here to convince David of the value of a full RSS feed. 
August 26, 2007 04:51 PM
Thanks to a patch by Roman Moravcik i was able to close OpenMoko bug 677 today. This problem made the SD slot unusable for anything except some simple tests.
To verify that everything is working now, i installed the new Debian ARM EABI port. So now i can use Aptitude to install almost all Debian packages.
I’ll publish a tarball of my chroot soon for anyone who wants to try Debian on the Neo. If you have problems with the speed of your SD card, check if the filesystem is mounted ‘sync’.
August 26, 2007 04:47 PM

Yesterday, the Cape Town Wireless Users Group (CT-WUG) met and elected our first committee. I’ve only been on the WUG a few months, users connect to high-sites put up on the hills and high buildings, and the high-sites are connected to each other to form a large user-driven network. Currently we have about 30 members. The WUG is quite useful for our users, since local Internet bandwidth is very expensive.
Many users run services like VoIP, mail and some game servers. I share an Ubuntu mirror that contains dapper, edgy, feisty and gutsy binaries for main, universe, multiverse and restricted. I’m also currently sharing web too via a local-only DSL account, which is useful for some members that don’t have Internet, and planning to add some more things when I have some free time again one day!
It was decided yesterday that we’d start with a small committee, I think this was a very good idea. We had a quick vote and the following people have been elected:
- Grant Delaney (mufasa) - Chairman
- Henk Burnett (rellik) - Vice Chairman
- Wynand Karsten (TheFox) - Secretary
- Herman Mathee (n0s) - Treasurer
The committee is made up of very active and enthusiastic members, Grant (better known as mufasa on the wug) initiated the first link. We’re also going to formalise other parts of the WUG, and start teams for managing certain technical aspects of the WUG. We decided that CTWUG would formally exist as a research platform. Also, thanks to David Savage who chaired the meeting yesterday, he did a great job of keeping the meeting focussed and making sure that everyone understood what we were doing.

I hope to see CTWUG grow quite drastically and cover most of Cape Town in the next year or so. It would also be nice to see CTWUG become a member of WAPA, an interest was expressed yesterday to get CTWUG more recognised by all the various industry and control bodies, such as ICASA, I think we’ll get there.
PS: if you’re on Facebook, and on the WUG, don’t forget to join the CTWUG group.
August 26, 2007 04:04 PM
Some days ago Mr. Mike Melanson of Adobe Flash's Linux port fame posted in Penguin.SWF blog about the news of H.264 coded support in Flash. Nice, a new codec. But there's a question that doesn't want to be silenced:
What about a nice, clear and objective answer about the availability of a 64bit version of the Flash plugin?
I know "Requests for such features as alternate operating system or CPU architecture support are more suited for the Adobe Wish Form", but come on. We users don't get any answer at all, clear or not, about it since yesteryear (21th july 2006 to be more precise), and submitting something to the Adobe Wish Form is just like waiting an answer from a cold, silent tombstone. At least Mr. Melanson talks to us from time to time, but his apparent policy of not discussing 64bit at all is such a denial mode that makes us think what's going on inside Adobe's corporate mind (as I believe he would like to be able to discuss it but his Management prevents him from doing so).
I posted something around these lines in the comments' session of his blog, knowing the odds that such comment would not be approved were high, but sincerely, people are starting to get fed of Adobe's silence (as increasingly frequent comments like "64-bit version or die" are quite revealing). Why have plugin versions to computer minorities as Linux-x86 and Solaris and deny Linux-amd64 users? Sincerely I would feel better if only Win32 versions were available, so the F/OSS community would reinvent itself again and bring up a free-as-in-speech multiplatform competitor with its proper creative tools (maybe even with a little help from the ones like Google, who has a huge interest in online media and owns two video-sharing portals) instead of settling for less and an implicit promise to deliver it "when it fits company's mood". This wait is a deja-vú of the XFree86's slowness before Keith Packard gently triggered the chain reaction who generated the XOrg's revolution, but in Flash's case it's closed source and closed-spec. Adobe's position about the PDF format represents a good balance between openness and commercial interests, but the same doesn't apply to Flash.
I and others recognize the efforts of some valiant people inside Adobe's headquarters to bring updated versions of the technology and to be more open and I hope they'll prevail and Adobe's management will understand this current window of opportunity to stay relevant in the rich media for the internet in the next decade.
People get fed, and not aways in the Gnash's sense. Sometimes it's in OpenOffice.org/ODF's sense (full creative suite that was the motivator and currently implements the ISO standard for office documents). Maybe Adobe will understand this before it's too late.
August 26, 2007 04:02 PM
#i81031# - Database access: Function ROUNDMAGIC return value converted to string
#i81035# - Presentation: "insert file"+"link" does not work as expected
#i81033# - sw: Crash after pasting an image inside a table cell
#i81034# - sw: Writer hangs at load with 100% CPU
#i81032# - sw: graphics deleted automatically
August 26, 2007 03:43 PM
As an accidental Java programmer, and as a Python lover, I'm really excited to realize that Jython 2.2 has reached stable status, releasing the first production release ever.
I'm really excited to see what's going on on the Jython/JRuby front, although I would like to see as much progress on Jython as in JRuby (the NetBeans 6.0 integration is pretty neat). Not really because of the language, since I find Ruby pretty neat once you get used to it, but because I find Django more convinient if you want do delegate the templates to a html/css/js hacker instead of creating the view using sourcecode.
It would be nice to get the scalability and speed of Java (despite the startup time, Java web apps are in fact faster than php/python/ruby equivalents) on Python frameworks.
Go Jython, go! :)
August 26, 2007 03:38 PM
Was just intending to spend a few minutes on the emulation stuff today, but what with
documenting the requirements, realizing they were rather involved and then trying to
automate them, didn't get around to the client work I had on the todo list toda...
August 26, 2007 03:30 PM
Arrived in Bonn / St. Augustin yesterday, where on Saturday morning FrOSCon
kicked off. This is the second time the local user group organises this conference and I must
say that this is certainly one of the most relaxed conferences I've ever been to. Highlights include good
drinks to keep you running (Go Mate!), couches,
wifi available already before the conference started,
good beer and a lot of nice gimmicks such as the bouncy castle. The atmosphere is very friendly, quite
some KDE-related peeps here, especially Amarok and KDE friendly projects such as Kubuntu, Sidux, Skolelinux
FreeBSD and inevitable the FSFE. The conference is quite a bit more busy than it was last year, and last
one of the gods that make the weather decided to put up sunny, not to hot and above all dry skies on top
of this conference. During my idle time, I talked a bit with Olaf about using Javascript in website and how
this can be done in a way so it's accessible for everyone. I'll probably work a bit on websites during this
weekend to make it so. Talk is cheap.
Friday, after arrival, we took on the task of making sure the BBQ works and the beer is of high quality,
I'm glad to announce that both failed none of our tests, so we were rather safe for saturday night -- same exercise.
photos. My talk on Saturday about KDE4 went really
well, a double lecture hall packed with people
(probably the biggest one here), the organising team's estimate is 400-450 people attending this talk, I was able to
go through most of the new frameworks ("pillars"), such as Solid, Phonon, Plasma, Oxygen et al, talk a bit about
our community, demo what's currently there and finally answer quite some interested questions. People were really
positive of how far we've come with KDE so far, and there's lots of people waiting eagerly for KDE4 while most
seem to understand that stable and cool software doesn't develop itself. I've talked to quite some people and it's
amazing how our stuff gets people to think. I've heard the questions "do you think it would be possible to implement
[insert amazing idea here] with that?", the answer has more than once been "Yes, in fact, I think it's quite easy
because that's what the frameworks are made for" -- workflow improvement ideas are quite popular. This is to me a
good indication that we're underway very well, and that we're poking into people's imagination.
This morning, I had another talk scheduled, "CodeYard - bringing Free Software development into Highschools". While
the audience was much smaller, the audience was interested in what we're doing and received the talk really well.
After that, I took advantage of Torsten showing up here in St Augustin presenting Marble, then sat down at a couch
in the Chiilout area, mainly to finish this blogentry and upload photo's. That didn't happen until two hours later.
Turned out there's a Canadian sitting next to me, named Zak Greant. I knew his name from the FLOSS foundations
list, he's a staff member of the Mozilla Foundation. We talked about topics such as Free Software adoption (no
really!) sneakers, college drop-outs (see my
crack dealer
blogentry) and generally had a relaxed time.
Zak shared some interesting insight in how the Mozilla Foundation works, and how it's related to the Mozilla
Corporation and how he sees the software ecosphere developing after becoming mainstream. We also chatted a bit about
business ethics. I seem to have this strange talent to always pick the one Canadian out of the masses, good thing
they're generally enjoyable folks. :-)
August 26, 2007 03:25 PM
I've noticed this is something I end up showing to people in every conference, and therefore probably makes sense to blog it.
Midgard abstracts database storage on C library level, and provides a set of classes and interfaces for accessing it on PHP extension level. PHP scripts cannot bypass the C-level abstraction and don't get information about the database connection or passwords being used. While this sacrifices some flexibility, it also helps a lot with consistency and security.
Defining database structure
Developers can define database structures to Midgard as MgdSchema files. Midgard ships with some pre-defined types like Articles and Persons, and others can be shipped in component packages.
MgdSchema files are XML:
<type name="org_routamc_statusmessage_message" table="org_routamc_statusmessage_message" parent="midgard_person" parentfield="person">
<property name="id" type="integer" primaryfield="id"/>
<property name="status" type="text" />
<property name="person" link="midgard_person:id" reverse="no" type="integer" parentfield="person"/>
<property name="source" type="string" />
<property name="externalid" type="string" />
</type>
Actual MySQL database tables are generated from these files by the midgard-schema tool:
mysql> describe org_routamc_statusmessage_message;
+-------------------------+--------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------------------+--------------+------+-----+---------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| status | longtext | NO | | | |
| externalid | varchar(255) | NO | | | |
| source | varchar(255) | NO | | | |
| guid | varchar(80) | NO | MUL | | |
| sitegroup | int(11) | NO | MUL | | |
| metadata_creator | varchar(80) | NO | | | |
| metadata_created | datetime | NO | | 0000-00-00 00:00:00 | |
| metadata_revisor | varchar(80) | NO | | | |
| metadata_revised | datetime | NO | | 0000-00-00 00:00:00 | |
| metadata_revision | int(11) | NO | | 0 | |
| metadata_locker | varchar(80) | NO | | | |
| metadata_locked | datetime | NO | | 0000-00-00 00:00:00 | |
| metadata_approver | varchar(80) | NO | | | |
| metadata_approved | datetime | NO | | 0000-00-00 00:00:00 | |
| metadata_authors | longtext | NO | | | |
| metadata_owner | varchar(80) | NO | | | |
| metadata_schedule_start | datetime | NO | | 0000-00-00 00:00:00 | |
| metadata_schedule_end | datetime | NO | | 0000-00-00 00:00:00 | |
| metadata_hidden | tinyint(1) | YES | | 0 | |
| metadata_nav_noentry | tinyint(1) | YES | | 0 | |
| metadata_size | int(11) | NO | | 0 | |
| metadata_published | datetime | NO | | 0000-00-00 00:00:00 | |
| metadata_score | int(11) | NO | | 0 | |
| metadata_imported | datetime | NO | | 0000-00-00 00:00:00 | |
| metadata_exported | datetime | NO | | 0000-00-00 00:00:00 | |
| metadata_deleted | tinyint(1) | YES | | 0 | |
| person | int(11) | NO | MUL | 0 | |
+-------------------------+--------------+------+-----+---------------------+----------------+
28 rows in set (0.03 sec)
As you can see, lots of metadata columns get added to the def
Truncated by Planet PHP, read more at the original (another 4821 bytes)
August 26, 2007 03:18 PM
Less than one full day to read 8000+ mails. Not that bad. Among these were
like 2000 spams that hadn't been detected by my spamassassin+CRM114 setup on
my mail server, but properly identified by CRM114 on my laptop.
Interesting thread in debian-devel after I reported bugs about the use of
"Homepage: " in packages descriptions and Christoph Berg objected to it.
Apparently, this could lead to the support of a "Homepage:" field in
debian/control which is Good.
New samba upstream release (3.0.25c) on its way. Steve Langasek did a release of the package
while I was away, Peter Eisentraut did some bug triaging and Noèl Köthe
prepared the release toay, searching for the bugs that are fixed. No real
problem building the new version, except for the Python bindings which are
nearly unmaintained (we are seriously considering to stop providing
python-samba so please speak up *and* come helping if interested).
The D-I l10n-sync script was hosed for 2 weeks because of a broken Swedish
translation file (I hate poEdit for this, see #420685).
I really should begin seeking for a backup for D-I l10n handling as Dennis
Stampfer is now apparently completely MIA.
Nothing really important apart from all this. Probably time now to begin
preparing a possible trip to India for FOSS.in which I really would like to
participate to, if I can find a way to fund the travel. Also time to think
deeper about the proposed Extremadura i18n
meeting which hasn't met a huge success, probably because we really want
it to be focused on *one* goal this time (DDTP/Pootle).
August 26, 2007 03:15 PM
This past Thursday, I gave a presentation on OpenStreetMap at the first meeting of CLUG for the fall semester. While a little long (about an hour and twenty minutes with demonstration) I think it was well received.
The slide deck (in PDF and LaTeX formats) and presentation resources are available from here.
The area used for the demo can be viewed as part of a slippy map here.
August 26, 2007 02:35 PM
Thanks to guys at internettablettalk, I noticed that youtube had changed the way video files are referred on the page source code. Thus, uktube stopped working until this problem had been fixed. I was just able to fix and test it a few minutes ago and I wanted to let you all know that the problem has been fixed and there is a new version for you to download.
So, once again, thanks for letting me know of the uktube bug. UKMP 1.62 only fixes uktube bug in downloading youtube videos. So, don't expect any fixes related to ogg files.
It seems that ogg installation at the moment is missing ogg demux for some users. I'll try to get oggs working again in ukmp for the 1.63 release some time next week
Download here:
http://maemo.org/downloads/product/ukmp/
August 26, 2007 02:04 PM
A few days ago, Joe Reagle was telling me about the rise of (sometimes very arcane) policies and bureaucratic imperatives that now characterize Wikipedia. A few days later I stumbled across a few interesting posts on the topic, posts (especially Nick Carr’s) seeping with almost celebratory gloom and doom:
‘But, given human nature, is it really so “incredible” that Wikipedia has evolved as it has? Although writers like Yochai Benkler have presented Wikipedia as an example of how widescale, volunteer-based “social production” on the Internet can exist outside hierarchical management structures, the reality is very different. As Wikipedia has grown, it has developed a bureaucracy that is remarkable not only for the intricacies of its hierarchy but for the breadth and complexity of its rules. The reason Deletionism has triumphed so decisively over Inclusionism is pretty simple: It’s because Deletionism provides a path toward ever more elaborate schemes of rule-making - with no end - and that’s the path that people prefer, at least when they become members of a large group. The development of Wikipedia’s organization provides a benign case study in the political malignancy of crowds.”
It is without question that a problem has arisen in Wikipedia, a problem composed of a thick web and net of rules that can be helpful as guidelines but often are often confusing and clearly work to ensnarl new users.
But can we so quickly put blame on so-called human nature? Or is it not a problem of human organization, which as the anthropological and sociological record shows, can take many forms? And is it not just that: a problem begging for a solution instead of an opportunity to declare the fundamental nature of wikipedia (and that of human nature?). Not only may history prove him wrong, other large scale collaborative projects at least prove that solutions can be found to deal with problems of growth and scale.
It is as if Carr just wants to see a project like Wikipedia fail, which somehow, this morning hit a raw nerve. What I find exciting about large scale projects of (at times unwieldy) collaboration are not just the explicit outputs of the projects (an encyclopedia or operating system) but the social worlds they create. And there is no inevitable path they *must* follow. These groups have a choice to react to and respond to these sort of problems and enact solutions that will hopefully solve them and allow these projects to change.
Debian, a slightly older project than Wikipedia, has gone through many growing pains and there was even a period when the the whole process of integrating new Debian developers was shut down and if my memory serves me correctly, for 2 years! At the time, it could have been possible to say: “This signals the end of Debian” but eventually a solution was found, the New Maintainer process, which while not perfect (what is?) allowed the project to grow and produce a great operating system for years to come.
Debian today faces new problems and is working to find solutions. I hope that Wikipedia can and will do the same. And instead of declaring its death, why not wait and see, and offer something a little more constructive and illuminating, than destructive?
August 26, 2007 02:04 PM
Old, but new to me. The Qt-Apps.org and Qt-Prop.org seems like great places to get listed - start registering your projects!
August 26, 2007 02:03 PM
Yeah ... lame, I know. First post on Planet Gentoo, so Hi all.
A couple weeks ago, I posted an offer for fellow gentoo devs to send me pictures of them so that I could replace/create a hackergotchi for them.
To this day, I've created 3 hackergotchis for :
If any of you Planet posters want to have your very own cool hackergotchi, please send your pictures my way.
PS, maybe I should make one for me ...
August 26, 2007 01:54 PM

phpunit.de is back online.
I think Tobias, on whose server the site runs, will share some information about what went wrong with the server while he was on vacation on his blog soon.
August 26, 2007 01:50 PM
Lukas Renggli notes that ESUG has begun. I wish I was there this year, but we had a rash of "too many things at once" around here :)
August 26, 2007 01:28 PM
I've recently became quite confident that choosing programming language is a process that is very similar to choosing what to cook. First you taste something. If you like it, you eat it. If you really really like it you look for a recipe and try to cook it. Same for the programming language. First you see some code in that language. If you like it, you read more about the language, learn its concepts and ideas. If you really really like what you found, you start programming in that language.
What's interesting is that your consciousness is not usually involved in the tasting phase. On the surface it's simple - you either like new thing or not. But I do believe that there's a serious subconscious process involved here that takes into account all your previous experience and tells you "yes" or "no" to this new thing.
I've made several failed attempts to ignore this subconscious decision and force myself into learning things I don't like. Ironically, such first attempt was Lisp and the last one was Haskell. Needless to say that Lisp still means to me nothing more than lots of isolated, sil^^^... (you know what ;)) and Haskell is still for me nothing more than a pure product of pure mind. Once again, no offense to these languages and people using them. That's just my mind that doesn't allow me to like these great languages ;)
Contrary to that, I made quite a success learning languages I liked. The best examples would be Prolog and Ruby. And yesterday I discovered for me another language I liked from the first look - Scala. So instead of working hard on my projects and my PhD, I spent last two days reading about Scala.
And I should say the language is very cool. It implements an interesting mixture of functional and object-oriented programming paradigms but keeps static typing and very clean syntax. For those familiar with Ruby, I'd say Scala often feels like Ruby that is statically typed, has C-ish syntax and implements more functional programming goodies. I think next time I'll come up with a side-by-side Ruby vs Scala comparison.
And finally a little code snippet for you to taste ;) (from excellent Martin Odersky's "Scala by Example" book)
abstract class Tree
case class Sum(l: Tree, r: Tree) extends Tree
case class Var(n: String) extends Tree
case class Const(v: int) extends Tree
type Environment = String => int
object MyProg {
//uses pattern matching to evaluate the expression
def eval(t: Tree, env: Environment): int = t match {
case Sum(l, r) => eval(l, env) + eval(r, env)
case Var(n) => env(n)
case Const(v) => v
}
def main {
val env: Environment = { case "x" => 5; case "y" => 10 }
//(x+x) + (7+y)
var expr: Tree = Sum (Sum(Var("x"), Var("x")), Sum(Const(7), Var("y")))
//(5+5) + (7+10)
println(eval(expr, env)) //prints: 27
}
}
MyProg.main
August 26, 2007 01:17 PM
Ted Leung quotes Sam Ruby, who bursts a few bubbles for the "native threads are the answer" crowd:
Next, to dispel a few myths. Slashdot is written in Perl, seems to handle the load, and also seems to stay up. While there are a number of BitTorrent implementations, the original and (to the best of my knowledge) the most pervasive version is written in Python. Yahoo is a mix, but a good portion of it is written in PHP, with critical functions written in C. Twitter is written in Ruby, had early scalability issues, but seems to be past them. These are all examples of massively scalable applications.
...
So, while Joe Gregorio sees a future for databases without joins or transactions, I see a future in lightweight threads without locks or semaphores.
I think I've been saying that about Smalltalk and scaling for quite some time now.
Technorati Tags:
scaling, threading
August 26, 2007 01:07 PM
I know I am person with wide-ranging interests, but how the deuce did Amazon infer that just because I like to read the Church Fathers, I'd also be interested in signal processing? And... Am I interested in signal processing? Image manipulation is special case of signal processing, of course, but I tend to leave that sort of detail to Cyrille Berger and Michael Thaler...
B.S.A. Rempt,
As someone who has purchased or rated books by Saint John Chrysostom, you might like to know that "Fixed-point Signal Processors (Synthesis Lectures on Signal Processing)" will be released on September 7, 2007. You can pre-order yours by following the link below.
Fixed-point Signal Processors (Synthesis Lectures on Signal Processing)
David Anderson
Price: $40.00
Release Date: September 7, 2007
Sincerely,
Amazon.com
August 26, 2007 01:03 PM
Andres Valloud expresses astonishment at what passes for college level coursework these days. To be fair, the grade school level math he noticed was not coursework, but review - for the high school level math that was coursework.
A few years back, this might have surprised me, but my uncle has been teaching that level of remedial math at a university near him since retiring as a high school teacher. Some of the stories he tells about the students he gets are amazing, in the "how did they get to college" sense of amazing.
The problem seems to be an excess of compassion that is not linked to common sense. It is no favor to pass a kid through school when they continually fail basic subjects, and it continues to be no favor to them to send them to a college where they are certain to fail. Without basic standards being enforced, all this compassion yields is tragedy. Better to fail kids early, when there's a chance they'll learn something from it, than to feed a sense of entitlement.
Technorati Tags:
schools
August 26, 2007 01:01 PM
If you’re having problems making phone calls on OpenMoko 2007.2, and wish to see what gsmd is doing, then look in /tmp/gsm.log for the gory details …
Mine fails to register automatically, as documented in http://lists.openmoko.org/pipermail/gsmd-devel/2007-August/000205.html - this seems to be a problem where libmokogsmd2 is not handling a GSMD_NETREG_UNREG_BUSY event correctly.
August 26, 2007 12:29 PM
Here's a cool amateur project:
SABLE-3 is a helium
balloon with a camera payload that rose to 117,000 feet about the earth,
high enough to see the edge of the atmosphere. It took 2 hours to rise,
then 45 minutes to fall back to the ground to recover the photos.
August 26, 2007 11:55 AM
During the week ending on Friday August 24th, I:
- Caught up on my overdue weekly reports
- Updated public MoFo activities page and the private corresponding project idea page on the private MoFo wiki.
- Supported Mary Colvig as she works on Mozilla involvement with Software Freedom Day and on Mozilla24
- Poked the Perl Foundation people about their grant proposal
- Reviewed David’s MoFo info page mockups and passed my previous MozillaFoundation.org work on to David Boswell
- Responded to community requests on trademark issues and on a particular case involving a link troll (someone who undertakes inflammatory activities in order to generate traffic and advertising revenue)
- Discussed how to handle said link troll with Frank (Don’t feed the trolls being the choice made.)
- Provided the list of expenses for theInternet as a Public Good Symposium to Frank
- Worked to help the Open Source Initiative set up tools and processes for their work on Designing a New OSI
(more…)
August 26, 2007 11:54 AM
Yesterday I attended the second BarCampSydney event. This is a rather eclectic and free-form "un-conference" at which attendees are encouraged to post a topic to talk about on the day (the slogan is "no spectators"). Perhaps due to the interesting mix of high tech business people, consultants and software developers in attendance, the sessions seemed to fall into three overall categories:
- Web 2.0 trends: Facebook as a platform, social networks etc.
- Entrepreneurship: raising venture capital, building tech. businesses etc.
- Hot software development technology: Ruby, OpenGL, Games programming etc.
The discussions were fast-paced and quite thought-provoking - in some cases involving upwards of 60 people involved in open discussion.
Amongst the more outspoken personalities in the entrepreneurial sessions were several people who have succeeded in building tech. businesses - most involving fund raising through government grants and/or venture capital. One exception is Mike Cannon-Brooks, co-founder and CEO of Atlassian Software. Atlassian is a truly inspiring Aussie success story and many around the world will know of them for their Confluence and JIRA products. Mike is an extremely switched on and passionate guy who really tells it like it is. He was in fine form at the end of the day Mike presented this presentation (1Mb PDF).
Although we are at somewhat of a disadvantage in Australia in terms of most of not being as familiar with the fund raising system as is common in America, there is quite a good network of Aussie ex-pats in Silicon Valley who can make introductions to V.C.'s and the like.
The top blogs for tech entrepreneurs mentioned were:
The smallest and most informal session I attended was on Agile and Lean software development. One of the guys there had just returned from the big Agile2007 conference in Washington D.C. I have blogged about that over here.
Generally it was a very interesting and inspiring day. There are plenty of other BarCamps happening around the world and I would recommend them to anyone who wants to connect directly and interactively with where the leading-edge of tech. industry thinking is at.
August 26, 2007 11:47 AM
In China now, after a 12+ hour flight from San Francisco. Got in about 4-5 hours ago (I’m all screwed up on time right now).
It’s overcast and muggy and reminds me of Chicago summers. Amazingly like Chicago actually except that I smell exhaust fumes (like Tijuana). And people smoke (a lot more than I’ve become accustomed to). I’ve been concerned about how I’d do with the air quality but if it keeps raining a bit, it shouldn’t be too bad for me.
I’m staying here, which isn’t a bad place. Walking distance to Tsingua Science Park (I can see Google’s building from here) and to Mozilla’s China office. When we got here, our rooms weren’t yet ready so they put us in temporary rooms until ~7pm. I’m now sitting in my new room that was just cleaned except that the lady cleaning the bathroom somehow got herself locked in the bathroom. So for the past 20 minutes a crew of people have been trying to unlock the door. The last guy literally looked like he was picking the lock. Oddly no one seems to be notice me.
Unfortunately there are only three TV stations in English - CNN, HBO and National Geographic. Fortunately, I can VPN through San Jose to stream Netflix movies which might keep me entertained until bed time. It’s a shame I don’t have Slingbox.
August 26, 2007 11:31 AM

Looks pretty boring, huh? Unsorted icon view with no previews or anything. Well it's actually Pixie's thumbnail browser made into a separate widget totally independent of Pixie and using KDirModel as a backend.
Pixie's thumbnail browser:

The idea is to make this widget a proper KDE one using KDirModel, etc... instead of Pixie and upload it to playground so other people can check it out. There seems to be a lot of interest in high speed iconviews so I figured I'd see if other people can use it.
As you can see, it's not done yet but I'm rather pleased with how easy it has been to separate from Pixie. All the layout code is done and all I really have to do now is do a sorting proxy, get selections working again, and some minor painting stuff.
Advantages of this iconview:
* Extremely fast layout that can handle tens of thousands of items very quickly.
* Thumbnails and decorations are loaded on demand. This seems to be a big problem with Qt's iconviews, at least in 4.3.x. It's constantly querying the item's decoration role, (the icon), even if the item isn't visible. It doesn't matter what type of grid or modes you set.
* Looks very cool :)
Disadvantages:
* The fast layout is because it follows a grid, and I mean *really* follows a grid ;-) This means two lines of text per item max, the same width as the icon grid size. Anything more than that gets the (...).
* Currently no inline item text editing. I have mixed feelings about this. Without it you increase the size of an icon's clickable area by including the text, and since renaming is infrequent that's probably better, but I'll probably support it anyways because it's a nice thing to have. Something translucent ;-)
* Even though it uses KDirModel for the backend it doesn't inherit QAbstractItemView yet.
* Right now it uses a QWidget for the viewport but I'd like to switch this to QGraphicsView. Animations... :)
August 26, 2007 11:12 AM
Hi
I've published my Asterisk/foneBRIDGE2/heartbeat setup: config files, scripts... along with a brief description of the architecture and working of the cluster. It's available here:
[http://www.bisente.com/blog/2007/08/26/asterisk-cluster-fonebridge2/?lan=english|Asterisk clusters with a foneBRIDGE2]
Hope somebody finds it useful. :)
Regards
bisente (Vicente Aguilar) at 2007-08-26 10:54
August 26, 2007 10:54 AM
Hi
I've published my Asterisk/foneBRIDGE2/heartbeat setup: config files, scripts... along with a brief description of the architecture and working of the cluster. It's available here:
[http://www.bisente.com/blog/2007/08/26/asterisk-cluster-fonebridge2/?lan=english|Asterisk clusters with a foneBRIDGE2]
Hope somebody finds it useful. :)
Regards
bisente (Vicente Aguilar) at 2007-08-26 10:52
August 26, 2007 10:52 AM
After much wading through possible names, none of which really excited me, I have finally chosen "DAViCal" as the new name for my CalDAV server that was previously called RSCDS, or the "Really Simple CalDAV Store".
In the end, I chose DAViCal because it:
- seems easy to pronounce.
- combines the 'Cal' and 'DAV'.
- returns < 1000 results on google.
- doesn't make me cringe.
- didn't have a domain name registered.
That was about the hardest part of preparing for the 0.8.1 release, and now that I've done that I should manage to make the changes to the packaging, though I have no doubt that the old name will appear in all sorts of places for a while yet.
Choosing names is an important business, and I should know that from the length of time we spent agonising over names for our children, discarding all sorts of things because they had silly abbreviation collisions (like the "Royal Scottish Country Dance Society" :-) Even then, I think we got the kids names wrong, and the big one should be called "Thumper" with the little one called "Sly", but perhaps that's just a temporary annoyance and in time the names that we registered for them will fit them better.
I also recall Grant once saying that you should never use the word "Simple" in the name of your project, and he should know. DAViCal is no longer particularly simple, although I have attempted to hide the complexity from the user as far as that is possible, and will continue to do so.
Once I get out version 0.8.1 of DAViCal I will finally upload it to Debian, proper. This version has some important enhancements to its DAV spec compliance which are going to be needed by some future versions of Mozilla, and probably other things too, so it's important to push it out as soon as possible now.
August 26, 2007 10:35 AM
Specialising Simulator Generators for High-Performance Monte-Carlo Methods.
New version of our paper on specialised and parallelised Monte-Carlo simulators with more details on the implementation of our simulator for polymerisation kinetics.
August 26, 2007 10:06 AM
I uploaded my slides on "PHPotter - Dooing magic with PHP" from this years
amazing FrOSCon
August 26, 2007 09:59 AM
For some years not I’ve been waiting for the mobile phonemultimedia computer you can’t phone with…

August 26, 2007 09:30 AM
The Australian has a new Environment writer named Matthew Warren who has a history of doing PR work for the coal industry. This has the potential for insightful articles based on knowledge of what the industry is doing or for PR work for the coal industry masquerading as journalism. Unfortunately it seems like the latter is what we are getting.
Matthew’s latest effort is an article claiming a $6.5 billion cost to home-owners because of an “effective ban” on electric hot water systems that Labor might impose. Unfortunately he doesn’t clearly state what an effective ban is, but does note that apartments are exempt.
The specific claim that is used as the basis for the article is that solar hot-water systems cost $2,800 more than electric systems, and that after the solar hot-water rebate ($1,000) the additional cost would be $650,000,000 per annum, and that a period of 10 years would be required to replace all hot-water systems thus giving a cost of $6,500,000,000. So I presume that he expects that there would be 650,000,000/1,800 hot water systems installed per year which would be about 361,111.
According to the Australian Bureau of Statistics there were 6,744,800 households in Australia in 2003. Matthew’s article states that about 40% of homes can have gas hot-water systems fitted that comply with the proposed new regulations, given that and the exemption for apartment buildings let’s assume for the sake of discussion that 50% of homes would require a solar hot-water system. Assuming that each household has a separate hot-water system that means that for these claims to hole we need an average expected lifetime for a hot water system of 6,744,800/2/361,111 = about 9.3 years. If the currently installed hot-water systems are expected to be replaced in 9.3 years then we can expect that hot water systems tend to survive for an average of about 18.6 years. I wonder if that number is correct (some google searching didn’t turn up an answer). One of the disadvantages of old-fashioned media is that they tend not to include calculations or cite sources adequately so we can’t easily verify or disprove their claims, I wonder if this is deliberate…
Matthew admits that using a solar hot water system can be expected to save households $300 per annum in electricity expenses, I presume that this is based on current energy prices and that the savings can therefore be expected to increase as energy prices increase (we have a lack of water which is increasing the cost of producing electricity from coal).
Let’s assume for the sake of discussion that the typical home-owner has a mortgage, the Commonwealth Bank is currently advertising mortgages with a rate of just over 8%, the way things work is that there are various criteria for getting a discount rate which most borrowers can meet so the result will be slightly below 8%. If a solar hot water system costs $1,800 extra to install and the money comes from a mortgage then every year it will cost the home owner about 8% of $1,800 which is about $144 (a saving of $156 per annum). If the solar hot water system saves the home owner $300 per annum then at any interest rate below 300/1800 (16.66%) they will make money.
If there was no government subsidy and the entire $2,800 extra was paid by the home owner then at 8% interest it will cost $224 per annum (a saving of $76 per annum) and the interest rate would need to increase to 300/2800 = 10.7% to make it break even.
So for solar hot water to not save the home-owner money we need to have a significant increase in interest rates (which incidentally would bankrupt many home owners), AND to have electricity prices remain the same (which would require even more of our tax money to be spent on supporting the coal industry).
Finally Matthew complains that the solar hot-water rebate could cost the government $4 billion over the course of the scheme (the next 10 years). This sounds like a lot of money until you think about the 9 billion dollars a year that the government spends on subsidies for the coal, oil, and gas industries! On the current course the government would spend 90 billion dollars of our tax money subsidising polluting industries that cause climate change, but Matthew opposes spending 4 billion subsidising technology that prevents pollution and reduces climate change.
Share This
August 26, 2007 09:00 AM
Last week the Peach team got together in Amsterdam for a pre-production workshop. Ton has posted a nice write-up on the event on the Peach blog. You can find a couple of pics in the Media section. Of...
[read the full article on blendernation.com]
August 26, 2007 08:35 AM
Thanks to whoever ftp-master who did the review and approval, WebKit is now in unstable. It has not yet been built on all architectures, but several FTBFSes have already shown up :
- on arm, because
#if defined(arm) doesn’t seem to do much with our toolchain, and because gcc doesn’t pack a simple struct such as struct { short x ; } on arm, while it obviously does by default on all other architectures,
- on hppa, apparently because of a kernel bug,
- on s390, maybe fixable by using gcc 4.2.
I already fixed the arm issue in our git tree, but am waiting for the last buildds to keep up before uploading a new release, in case some other architecture would fail to build. I’d be very much thankful if some people with alpha, x86_64, ia64, mips, or powerpc machines could do some basic testing with /usr/lib/WebKit/GdkLauncher and /usr/lib/WebKit/QtLauncher and report any problem (BTS preferred).
Again, interested people are invited to subscribe to the pkg-webkit-maintainers mailing list.
August 26, 2007 08:22 AM
I just found this: Shane gave a presentation in the ethnographic research community about the use of Annodex for fieldwork, archiving and retrieval called "The Annodex Platform" - the link has Shane's presentation slides and a mp3 file.
August 26, 2007 07:59 AM
It's funny how none of the existing libraries for vector and matrix math seems to do all what one might want. Each of these libs (Blitz++, MTL, LAPACK, GSL, TVMET, GMM++...) is specialized for certain needs. Usually, an app will choose the most suitable one for its needs, and be happy. But KDE is a huge meta-project with lots of sub-projects, so it has a very broad range of mathematical needs, which is not covered by any of the specialized libraries.
Writing from scratch such a general math library would take many man-years. However, what one can do is to merge existing libraries into a single one.
A killer feature that we absolutely want is expression templates. It's a strange C++ technique that allows to do things like a = b + c without paying the cost of having a temporary object allocated on the stack and then copied into a. Basically, it allows to use natural mathematical notation without any overhead. It even allows things like
matrix.row(i) += matrix.row(j)
which would be impossible otherwise.
The best expression templates for a matrix library are currently found in
TVMET. Unfortunately, TVMET has been stagnant for 2 years and has been very little used by other projects, which is probably due to being too abstract, aiming too much for theoretical perfection.
For Eigen2, I decided to use TVMET as my starting point, instead of
Eigen1. Of course, the contents of Eigen1 will be incorporated into Eigen2 as soon as possible. However, for now my work has been focused in shaping TVMET for my needs. I've converted it from autotools to CMake, and I've removed tons of stuff that I don't need, shrinking it down from 12000 to 7000 lines of code, and I've still room to shrink it further, and I've already added some good stuff from Eigen1, such as sane fuzzy comparisons. I'm currently porting the unit-tests from CPPUnit to QTestLib, and by the way I'm improving them a lot now that there are sane fuzzy comparisons.
What's next? Once I'll have fully reshaped TVMET and incorporated Eigen1 into it, I'll have a working Eigen2 for tiny (i.e. fixed-size) vectors and matrices. For dynamic-size objects, both dense and sparse, I'll wrap
GMM++. In order to make this possible, the expression templates from TVMET will have to be adapted, as for instance loop unrolling will no longer be possible.
It's a very exciting project that is bound to fill a very bad gap in the current existing software. It requires only knowledge of pure C++, and vague notions of matrix mathematics. Your help is more than welcome, as there's a lot to do. So don't hesitate, join me: eigen at lists tuxfamily org.
August 26, 2007 07:52 AM
While I'm on financial topics, if you don't know how to do "time value of
money" math you should stop and learn about it right now. For all
I know I'm the only person who didn't learn this in high school, but
in case there's someone else, here's a blog post.
Because of inflation and ability to earn interest, a dollar today is
not the same as a dollar next year. To compare two financial choices
(say, renting a house vs. buying a house), you need to convert the
choices to money at the same point in time, just as comparing two
measurements requires them to be in the same units.
The buttons that make a calculator a financial calculator are the ones
that let you convert any series of cash flows (money spent or earned)
to the value of that series at a point in time.
The calculator buttons are:
- n - number of periods of time
- i - interest rate per period of time
- PMT - a regular per-period cash flow
- PV - present value, i.e. value of all PMT and FV at time 0
assuming rate i
- FV - future value, i.e. value of PV and all PMT at time n assuming
rate i
A financial calculator can solve for any of these given the other
four.
In a spreadsheet, there's a separate function depending on what you
want to solve for. From the OpenOffice docs:
- PV(Rate; NPER; PMT; FV; Type)
- FV(Rate; NPER; PMT; PV; Type)
- RATE(NPER;PMT;PV;FV;Type;GUESS)
- NPER(Rate;PMT;PV;FV;Type)
- PMT(Rate; NPER; PV; FV; Type)
The "type" is 0 if PMT comes at the end of the periods, and 1 if it
comes at the beginning.
Next time you have a financial decision, try to break it down into
cash flows and you may find you can get a handle on it with these
formulas.
Caveats:
-
The calculations are sensitive to the interest rate you pick. If you start
picking overoptimistic rates you will make all kinds of bad decisions.
-
In addition to only comparing money amounts at the same point in time,
you can only compare money amounts if they are both in real dollars or
both in nominal dollars. That is, be sure to reduce your interest
rates to consider inflation when appropriate.
-
These formulas assume a steady rate, which is very misleading for
stocks and other risky assets. Actual results will be in a wide
range. When planning retirement savings, you need to run the numbers
with a very pessimistic rate of return, not only with an average one. You
can also find software that uses monte carlo
simulation to show a spread of possible returns.
August 26, 2007 07:45 AM
If you don’t mind, I’ll gush briefly about Stellarium. It’s a free software, beautiful, cross-platform program for stargazing in real time.
August 26, 2007 07:42 AM
Bangalore, India - here I come!
August 26, 2007 07:36 AM
Sam Ruby is writing about Russell Beattie writing about Java and Erlang.
Russell thinks Java needs an overhaul. I think that Java has reached the point where technical, community, and business forces well exert pressure on the language to evolve in a uniformly bad manner.
Russell wrote:
The reason people are looking at Erlang is not because its beautiful syntax, great documentation, or up-to-date libraries. Trust me. It’s because the Erlang VM can run for long periods of time, scaling linearly across cores or processors filling the same niche that Java does right now on the server.
Actually, I am looking at Erlang as a solution for anywhere, (including the client) where concurrency will be an issue. By the way, it is not VM’s that scale linearly, but computational problems. And there are some problems which just can’t scale linearly, no matter what VM we put them on.
Sam goes on to make the point which is the title of this post.
Next, to dispel a few myths. Slashdot is written in Perl, seems to handle the load, and also seems to stay up. While there are a number of BitTorrent implementations, the original and (to the best of my knowledge) the most pervasive version is written in Python. Yahoo is a mix, but a good portion of it is written in PHP, with critical functions written in C. Twitter is written in Ruby, had early scalability issues, but seems to be past them. These are all examples of massively scalable applications.
Scalability is not the same thing as concurrency. It is certainly possible to scale a program written in any language - that’s a given. Especially when scaling = throwing more hardware at it. But there’s got to be a better way of doing it. Question is whether the better way is worth the price of admission.
But as far as Erlang vs Java, the real kicker is here:
Unlike the CLR which was designed to be multi-language, and unlike the JVM which is in the process of being repurposed to be multi-language also, Erlang’s VM is designed from the ground up assuming that objects typically are immutable and serializable.
Which is what makes the situation with Java so bad. Not only is the language bad, the VM is fatally flawed when it comes to actor style concurrency (which is why for all its niceties, Scala will suffer the same problems as Java). There’s a real problem here — ask yourself why there is a market for these things, if all that is needed is to throw even more boxes at the problem.
In the comments, Sam wrote;
The biggest problem I have with Erlang is clearly an addressable one: the documentation of the libraries, and the lack of good samples that can be quickly found by Google/MSN-Live/Yahoo!/Ask searches. And many of the libraries appear to be abandoned at 0.n versions.
This is actually 2 problems. There’s the issue with the libraries, and there’s the issue with the community that did/didn’t produce the libraries. We don’t just need a technology, we need a community. Hmm, Erlang lab, anyone?
August 26, 2007 07:22 AM
I just completed a very successful and long overdue dist-upgrade of
my unstable machine, using mainly DebTorrent for downloading
the packages, so I thought I'd post some of my thoughts and
experiences.
The download consisted of 1294 packages to upgrade, totalling 1350
MB and taking 2h12m to download. Here are some of the good and bad
things I observed.
Good things
There was a single other peer with me in the same torrent, and I
managed to download 182 MB from him, which is about 13.5% of the
total download. This is the first time I have noticed this
downloading from peers occurring, as usually there are too few
peers, too many torrents and too many possible packages to download
for any sharing to occur. This will hopefully change in the future
when more people start using DebTorrent, and when unique piece
numbers are introduced to make the torrents last longer.
However, it does show how the use of the backup HTTP downloader can
seamlessly integrate with downloading from peers to provide a good
user experience, even for early adopters.
The CPU time used was only 10m46s, which translates to an average
CPU usage of 8%, which is very reasonable.
The average download speed was 174 KB/s, which is 58% of my maximum
download speed. Though this may seem like a bad thing, my goal all
along has been to make sure that the download time would not be more
than twice as long as using HTTP. Of course, using DebTorrent may
never be as fast as a straight HTTP download from a well-provisioned
server, but that it not the point. The idea is to reduce the
bandwidth needs of hosting a debian archive. But in the future, when
there are many peers in a single torrent the download speed may be
even faster than using HTTP, especially for peers with very high
download rates that could not be matched by a single server.
Things that need improvement
The completion percentage reported by APT during the download was
fairly inaccurate. Here are some sample readings I noted, compared
with the actual completion percentage from the DebTorrent status
page:
| APT Reports |
Actual Completion |
| 10% |
40% |
| 20% |
70% |
| 30% |
85% |
| 40% |
90% |
| 50% |
93% |
| 60% |
96% |
| 70% |
97.5% |
| 80% |
98% |
| 90% |
99% |
The discrepancy occurs because larger packages are broken up into
pieces, so they can be partially downloaded without APT knowing
about it (since only fully downloaded packages are passed to APT).
Clearly this situation is far from ideal, and can lead to the user
feeling that the download is progressing very slowly, or not at all.
There are some plans to add status updates to the
communication between APT and the DebTorrent client, but they
require changes to the APT code to support them, so it may take some
time to implement.
Another problem is the memory usage I saw during the download, which
was approximately 213 MB. This is obviously unnecessarily large,
though the metainfo that DebTorrent needs to be aware of is quite
large (stored in a text file it is about 3 MB). There does seem to
be a memory allocation bug in Python 2.4 which causes
increased memory usage, so moving to python 2.5 might help. However,
my preliminary tests show this only saves you about 20% for
DebTorrent. I think I will have to delve deeper into which parts are
using all this memory, and unfortunately python doesn't seem to have
a good memory profiler to help with this. I will be looking at both
PySizer and Guppy/Heapy to start, but if anyone knows of
a better solution, please let me know.
August 26, 2007 07:17 AM
The team have been working on the new layout algorithm for the plastic 3D tree. With long revision histories the tree currently has a cone-like behaviour, so it gets wider close to the end, which makes it more difficult to understand.
So they changed the algorithm to use some sort of espiral layout: branches are distributed spacially following an spiral-like path, which is restarted from the center of the tree on each loop to save space.
Daniel also asked to add (finally, because it is a long awaited feature) revision and branch location functionality. Date filtering has also been implemented: now you can select a date range and only the revisions in between will be created.
The new tree 3D will be integrated in BL067 and will be released together with plastic 2.0. I guess the GUI folks at Codice will first clean up the looks a little bit :-) but the new utilities will be there. Watch a preview at Codice's YouTube channel:
P.S: last friday one of the GUI 2.0 preview screencasts reached the list of the most viewed YouTube videos in Spain... among a huge amount of fútbol (soccer) material... :-)
August 26, 2007 07:08 AM
This
week's Fortune magazine has a scary black cover and says "Market
Shock 2007." The market drop was 10%! Not very large in historical
terms, and it comes after a huge gain. But from the news (in Fortune and
almost everywhere else) it sounds like we should be freaking out.
I thought I'd post the point of view I find helpful when making
personal investment decisions and trying to keep perspective. If you
are averse to reading about financial stuff, stop reading. Like
most of my points of view, this one is really lengthy.
Disclaimer: this is not investment advice for your personal situation,
and if you plan your finances around what you read on a software
developer's random Internet blog post you deserve what you get. Do
your own research. You have been warned.
That said, here are some thoughts, and then some elaborations.
-
Investing is probably one of the least-worthwhile aspects of personal
finance to spend time worrying about.
- Leading up to the market's most recent high in July, many people
with a serious, long-term, fundamentals-based point of view thought
the market was overpriced. We have Charlie Munger "it's
not a time to swing for the fences", Jeremy Grantham "everything is in
bubble territory", Morningstar "prices
appear to have overshot fair value in many cases", John Hussman "certain factors have
reliably identified egregiously bad times to accept market risk, and
... every historical instance similar to the present has been a
disaster".
-
A less-than-10% drop (as of today) is not enough to change any of the
above conclusions.
-
If you have the right investment plan and policy for you, you should
not have to change anything about your plan even if you strongly feel
the market is overpriced. In fact you should feel confident that your
plan will achieve adequate returns over the time horizon you have in
mind, regardless of market price fluctuations.
-
If you put effort into worrying about investing, you should worry
about risk first. You should be able to read all those "we're in a
bubble" warnings I just quoted and say "My investment plan is prepared
for a 50% drop in stocks and a drop like that wouldn't be a permanent
setback to any of my goals. I can still sleep at night."
I'll elaborate on some of these points.
First, investing probably isn't the most important financial
concern for you. Attempts to get abnormally high investment
performance are even less important.
Lots of media articles are about beating the market. But beating the
market is a dumb goal most of the time.
Unless you have an awful lot of money to work with, beating the market
on a consistent basis by 1% (very hard) or 5% (virtually impossible)
will still add up to much less than, say, a 5% raise in salary. If you
focused on a career change or a promotion, you could probably get 20%
more. Do the math. You're better off worrying about your career - or
starting a business - if your goal is to become dramatically richer.
Aside from the income you earn through work, some other important
non-investing finance topics to worry about include: 1) having proper
insurance (long-term disability, life, health, liability/umbrella,
etc.) 2) running a budget surplus 3) having an emergency fund 4) taxes
5) having a will and power of attorney. All those areas probably
matter more than an extra couple percent over the market. Here
is a sensible book on all that. Or ask
for help from someone who charges an hourly fee instead of
commissions.
Second, unlike beating the market, investment risk does matter,
and you need to worry about investing at least enough to fully understand
the risks you are taking on and why.
If you need the money in a year and stocks drop 20%, you are screwed,
even if you "beat the market" by 5% since the market dropped 25%. Or if you
really can't deal emotionally with a 50% drop (I know I can't), but
you take that risk anyway, then even with a longer time horizon you'll
experience plenty of angst that keeps you from focusing on more
worthwhile activities.
Here's what you should spend time on: have a solid investment
policy that you know is right for you and that you understand.
Know when you need the money, and choose appropriate investments for
the time horizon.
Choosing a stock or fund that beats the market by 2% won't do a lot to
change your life. Choosing an appropriate investment policy, however,
makes a very big difference.
Once you have a budget surplus so you're saving enough, the most
important investment policy decision by far is simply how much in
stocks, how much in bonds or cash. 80/20, 60/40, etc. You should spend
as much time on this decision as you need to be 100% comfortable with
it, then forget about your investments until you need the
money.
Benjamin
Graham has a quote I keep at the top of my investment policy:
An investment operation is one which, upon thorough analysis, promises safety of principal and an adequate return.
He defines the terms like so:
- thorough analysis: "the study of the facts in light of established standards of safety and value"
- safety of principal: "protection against loss under all normal
or reasonably likely conditions or variations"
- adequate return: "any rate or amount of return, however low,
which the investor is willing to accept, provided he acts with
reasonable intelligence"
My personal risk tolerance is low. I am comfortable taking moderate,
informed risks after reading a lot and feeling I have a very good
understanding of what I'm getting into.
But this is a personal thing. The luckiest people are comfortable
taking sensible risks without having to spend a lot of time reading,
and so they can get on with their life. Other people are most unhappy
if they miss out on big gains, and don't mind losing money as long as
everyone else is losing money too. And of course circumstances vary -
maybe you need college tuition next year, maybe you don't need the money
until you retire in 40 years.
You have to make a personal, informed decision. Don't let anyone else
do it for you or tell you what you should think.
But do try to vividly imagine what it would feel like to experience
the investment losses you sign up for. If you see on vanguard.com
that your plan could lose 40% in a year, then do the math: multiply
40% by your investment balance and write that number down and imagine
losing it overnight.
Third, the stock market is not just a random bouncing number; over
the long term it does relate to "fundamentals" (real economic
forces).
(Here we get into my personal need to study the risk in detail before
investing. If you have no such need you may want to skip the rest of
this post.)
The premise of every (sane) investing strategy is that over the long
term - and that means at least 10 and more like 20-30 years - on
average stock market performance will reflect economic growth, and
historically economic growth has been positive, in countries
with no major crises. The market reflects economic growth because
individual stocks reflect the value of businesses, and businesses have
a value because they make money and their owners get the money they
make.
Without this premise, index investing won't work, value
investing won't work, basically nothing would work reliably and
investing in stocks would amount to gambling.
With this premise, there's a long-term upward trend line
(fundamental value), and the market's current price bounces around it.
You probably know about the "random walk" concept, that the return on
the market tomorrow is random and unpredictable, given conditions
today. This is absolutely true over short timeframes, like a day or
even a year. But as far as I know, the theory is not intended to imply
that investment returns are truly random over the long
term. Investing would make no sense if returns were random over
30 years.
Reasonable investment strategies assume that there is a trend
upward, on average. This upward trend happens because stocks represent
something of actual value, the value increases over time due to
economic growth, and the value is roughly measurable.
(This is not a given. Commodities,
for example, do not trend upward on average, after inflation - they
are just random bouncing numbers. Unlike stocks, there's no
fundamental reason pork bellies or metals would be worth more in ten
years than they are today, other than inflation. Oddly, commodities
can still be worth investing in, but only in small doses combined with
something that goes up, like stocks.)
Fourth, if we are willing to assume there's a long-term upward
trend, there are a number of investment strategies that should
reflect this trend and produce gains on average over time.
What these strategies have in common is that they work for a reason,
due to economic growth, businesses producing cash profits, and just
plain math. They aren't "magic."
The simplest strategy is to buy a passive index fund and wait. Over 30
years, the bouncing around the trend line doesn't matter.
It can matter a lot over shorter timeframes, though. Say you bought at
the 2000 peak, you made zero dollars since then, 7 years later. And 7
years later things are still overpriced. (That's how insane
the tech bubble was. Ouch.)
Some minor elaboration helps a lot. The two elaborations most people
use are dollar cost averaging and asset class diversification
(combined with periodic rebalancing). Both of these reduce
vulnerability to market fluctuations.
A more complex elaboration that sells more when the market is above
the trend and buys more when it's below is value
averaging.
Sensible active management strategies work too.
Graham/Buffett style value investing follows a discipline that hopes
to earn something close to the long-term upward trend, on average,
over time. But it can lead to very different behavior from the market
as a whole in the short term, for example many managers using this
discipline missed out on most tech bubble gains and then also missed
out on most tech bubble losses.
John Hussman's fund, which I mentioned earlier, uses analysis based on
historical statistics to vary the amount of market risk taken from 0%
to 150%, where at 0% money market returns are expected. This fund
would have been painful to own the last three years, since it's earned
about 5%. But then again, it destroyed the index in 2001 and 2002. The
fund's record is too short to feel completely confident it will have
long-term returns in the same range as an index fund, but the strategy
does make sense and "should work" based on history, in the same sense
that index and value investing "should work."
It's controversial whether these strategies are worth it vs. an index
fund, since it isn't clear these strategies can beat the market.
My opinion: the value of an actively-managed fund comes primarily from
risk control, and from the psychological knowledge that if there's
another tech bubble (or mortgage bubble), there will be some stuff in
my portfolio that isn't tangled up in it. I would generally expect the
actively-managed funds I like to lag a bull market and do better in a
bear market, but the purpose of investing in them (for me) is not to
beat the market overall.
Vanguard suggests 50% in actively-managed funds and 50% in
index funds and that's what I use.
Tangents aside, the point is: sensible strategies are based on the
premise that there is a "fundamental value" - an economic reason that
investments will grow. This fundamental value can be captured
"actively" or "passively," but any strategy without a basis in
fundamentals is junk. Or at least too risky for me.
Fifth, sensible investment strategies avoid predicting the future.
Strategies that work reliably make the minimum prediction: that
fundamental value will grow over the decades, roughly resembling
historical experience. Then they have a discipline which still works
even if nothing else is predictable. They can handle "statistically
impossible" events like the tech bubble or the 1987 crash and come out
OK, because they did not rely on predicting those events.
Nassim Nicholas Taleb has
a very interesting book about how unpredictable the world is. He
isn't even willing to rely on fundamental economic value growing over
time, preferring to invest mostly in cash. I don't see the need to go
that far - to hedge the apocalypse, buy food and guns, forget about
stocks. (The range of future situations where stocks are permanently
worthless but T-bills remain valuable seems small to me.)
Nonetheless, I like Taleb's argument that nobody can predict any
complex event. And successful investors like Buffett make a point of
not trying to, using primarily past events - proven profits and current
prices - as input to their decisions.
Hussman emphasizes this point over and over as well, for example:
Frankly, I don't know whether investors will drive the
market even higher in the weeks ahead. My opinion is that
whatever gains emerge (and indeed, much of what has already emerged)
will ultimately prove quite temporary. What I do know is that certain
factors have reliably identified egregiously bad times to accept
market risk, and that every historical instance similar to the present
has been a disaster. The current instance may very well prove to be
the exception, but I do not invest shareholder assets on the hope that
the future will be entirely at odds with all available historical
evidence.
Passive indexing, value averaging, and rebalancing are all based on
this same premise: they are systematic approaches that on average are
helpful, according to historical experience. In any given
instance, if you could predict future price movements, you
could do better than these strategies. But you can't predict.
This is why it's solid advice to "buy and hold" and "don't time the
market."
I'm very skeptical of mutual funds that are based on predictions, such
as macro economic analysis or guessing at which companies will have
the hot new technology. Nobody can consistently get those predictions
right, or at least I can't tell which fund managers have this superpower.
Sixth: If you believe my first five points, and
chose your investment policy well to reflect your goals and risks, you
have no reason to worry about anything you read in the media.
To prove the point, let's split the media into two categories.
Category One is made up of people who agree in broad outline with a
couple of my points here: that investing is about capturing a
long-term increase in fundamental economic value, and that nobody can
consistently predict the future.
Category Two is made up of short-term traders, numerologists,
economists, and the like - all trying to predict the future, or even
worse, the short-term future of market prices.
If you read Category One pundits, many are arguing that the market is
overpriced. I quoted some of them at the start of this post.
However, you, like them, should already have a disciplined plan that
produces adequate return, with acceptable risk, even if the market is
overpriced sometimes and underpriced sometimes. You don't need to know
the market price next week or next year. Because nobody can predict
the future, there is nothing to do except stick to the disciplined
plan.
Sure, if there's a true apocalypse or a government coup, you are
screwed. But like I said, if that keeps you up at night, buy some guns
and food to hedge your stocks.
You can ignore Category One commentators, or treat them as interesting
but not worrying, because you're already prepared. Your investment
strategy may already include adjustments to changing market prices,
through averaging or hedging or allocation; or it may not; but in any
case you've already planned for market prices to fluctuate and know
what action to take (if any), or know what action your fund managers will
take. The actions you've planned will give you the right risk and
return over time.
You can ignore Category Two punditry because it's meaningless
garbage. Nobody in Category Two ever relates what they say to a
sensible investment strategy, or spells out the long-term statistics
that back up their points. They're a lot like news anchors who report
on politics "horse race" style, focused on polls, and never analyze
the substantive policy issues the elections are supposed to be about.
A month ago, there were two popular media claims about why the market
would keep going up. The first was "liquidity" and the other was "the
forward P/E ratio is in line with historical averages."
Impressive-sounding comments, but meaningless for investing.
"Liquidity" is a short-term (and hand-wavy) property of the
market. The historical average return for stocks covers many periods
where liquidity came and went. If you say stocks can be priced more
highly when liquidity is favorable, you're assuming that liquidity
will stay favorable permanently (or that you can "get out" in
time if it doesn't and "get back in" at the right time after you get
out). The last month is a good demonstration that liquidity won't stay
favorable forever.
The price/earnings argument is bogus in two ways. First, it uses the
so-called "Fed Model" to argue that because interest rates are low
now, stocks are worth more. (Hussman argues that
historical statistics don't support this.) Like the liquidity
argument, this assumes that either rates will stay low or that
you can get out and back in if they rise, neither of which has to be true.
Second, the price/earnings argument ignores the business
cycle. Profit margins go up and down over time. Like liquidity and
interest rates, earnings can and probably will become much
worse at certain times and you will not be able to market time
when it happens. If (for example) all this housing
turmoil creates a recession, earnings will go down, and if the
price/earnings ratio stays constant, prices will go down too.
Right now, profit margins are at a record high. The price/earnings
ratio is average, but if you change the profit margins to also be
average, the price/earnings ratio is very high.
So in early July, liquidity was good, earnings were at record highs,
and the 10-year Treasury had a low-ish rate. Several favorable signs.
Investing based on this information is like saying "I don't need
to own an umbrella because it's not raining right this minute."
When people who believe in long-term fundamental value say stocks are
overpriced, what they mean is that among other risks,
liquidity could dry up, profit margins will go down eventually, and
interest rates could rise. And the risk of those things happening
means that on average, stocks are likely to go down again. Good conditions
don't continue unbroken for 30 years.
I like to read Category One media sources to keep myself from believing in
Category Two media sources. Category One is good at emphasizing that
Category Two can't predict the future and has no sensible long-term
strategy. Here are some sources I like:
Sensible, fundamentals-based commentary keeps the focus on risk, not
return.
Again, never understand anyone's opinion as a prediction. It is
never appropriate to try to "get in" or "get out" of the stock market,
based on today's commentary or an emotional feeling. Only systematic
disciplines have a good chance of working.
There is no way anyone will read this post to this point, but if you
did, I hope you found some part of it helpful.
[1] A caveat about Morningstar: they are best known for
the star ratings for funds, which in my opinion are useless and often a recipe
for performance-chasing. However, their "analyst picks" and
qualitative fund writeups are very good, and they also do fundamental
analysis of many individual stocks, allowing them to analyze the whole
market by combining all the bottom-up analyses together. You have to
buy Morningstar Premium to get at some of the more useful content.
August 26, 2007 07:00 AM
The R statistics system can produce
first-class data visualizations, commonly known as plots. Internally,
plots are represented in an abstract graphics format that can be
rendered on any of R’s wide range of graphics “devices” to produce
concrete output – windows, bitmap files, PostScript files, PDF files,
and others.
The bitmap formats, such as PNG, are preferred for posting
plots online because of their widespread support by web browsers. The
default bitmap-rendering devices in R, unfortunately, produce graphics
that look a little too “bitmapped” for modern web tastes. Here, for example,
is a plot rendered by R’s “png” device:

There’s nothing technically wrong with the plot, but it looks out
of place on a web page. That’s because modern web
browsers use font-smoothing and anti-aliasing techniques to render
just about everything else on the page. Against this clean, un-jagged
backdrop, the oh-so-bitmapped plot looks like a throwback to
a previous era.
Happily, we can produce clean, anti-aliased R plots with a little
help. Here’s the earlier plot, anti-aliased:

To produce the anti-aliased plot, I used R to produce a PDF file. Then I
rendered the PDF file into a PNG image at 300 dpi using Ghostscript.
Finally, I scaled the 300-dpi image down to screen resolution,
producing a high-quality, anti-aliased result.
Here’s the recipe in detail.
First, I define an R function called pdfit that takes an
abstract graphics object and makes a PDF-file rendering of it, using
my preferred graphics-device settings:
require("lattice")
pdfit <- function(f, ...) {
trellis.device(dev=pdf, theme="col.whitebg", ...);
print(f);
dev.off()
}
Then, when I create a plot I want to publish, I use pdfit to render
it into a PDF file:
P.img <- xyplot( subs.low + subs.high ~ date, ... )
pdfit(P.img, file="image-downloads.pdf") # render plot into PDF file
Finally, I use Ghostscript and
ImageMagick to convert the PDF file into
a high-quality, anti-aliased PNG file. (I keep both formats: the PDF
file is best for publishing in printed papers, and the PNG file is
best for posting online.) I use a simple Makefile to automate the
process of converting the PDF files into PNG files:
# Makefile (GNU make)
pdfs := $(wildcard *.pdf)
pngs := $(pdfs:.pdf=.png)
all: $(pngs)
.PHONY: all
%.png: %.pdf
gs -dSAFTER -dBATCH -dNOPAUSE -sDEVICE=png16m \
-dGraphicsAlphaBits=4 -dTextAlphaBits=4 -r300 \
-dBackgroundColor='16#ffffff' \
-sOutputFile=$@ > /dev/null \
$< && \
mogrify -resize 500 $@
With this Makefile in my graphics directory, just a single “make”
command is all it takes to convert my PDF images into
anti-aliased PNG files, ready to post online.
And that’s it.
Do you have any tips or tricks for making good-looking graphics with
R? If so, please do share.
Update: There is one downside to the sexy, anti-aliased plots: they
are not as compressible as the old-style jagged plots. For the
images above, for instance, the anti-aliased PNG file weighs in
at 45 KB, but the original PNG file is a feathery 4.7 KB.
So, if bandwidth is precious to you – or you’re planning on getting
Slashdotted – you might want to stick
with the jaggies.
August 26, 2007 06:37 AM
Gambit-C 4.0.0 has finally been released. Its website has also been revamped, and is powered by MediaWiki.
This release is a very good step forward, in terms of community support. At last, Marc got it right this time. Welcome to the open-source world, Marc! What we really need now is a whole set of useful libraries to help the Gambit-C community grow and not reinvent the wheel for each new application.
As users of open-source software, we should all give back to the community.
August 26, 2007 06:15 AM
Take a look: multiplication tables linked at a page mentioning courses such as "college" algebra.
You have to be so much kidding man. Multiplication tables with suggestions such as "you should memorize the gray area" and "remember 0 x anything = 0", with the official stamp of a college. College, you know? That place where people go after attending high school, which is where they go after attending grade school, which is where they learn how to multiply?
But there it is, it's reality. Shameful as this is, it's the mirror that shows us for who we are.
So... why do we even think we are prepared to discuss pretty much anything now? Seriously: what does it mean when people say "25% of 600,000 bridges carry more weight than they're designed to hold"?
You better be able to answer those questions properly whether you like mathematics or not. Or do you want to be dead now?
August 26, 2007 06:10 AM
We were talking about how to publish something or other, and
Lauren said “Well, if there’s a Facebook app for that, there’ll be
a WordPress plug-in, too”. Sounds about right.
August 26, 2007 05:08 AM
Entry submitted by Bart Veraart. DPOTD needs your help, please contribute!
Sometimes you just want to see what connections your machine is making to the outside world and what ports it’s using. While wireshark and tcpdump are really nice for inspecting detailed package contents. IPTraf is really about connections and interface statistics. Because iptraf is based on ncurses the program can be run from a text-console and still have a (primitive) `gui`. Navigation through the menus can be done using your arrow keys. Most of the time all the available options and their keys are shown on the bottomline of the sreen.
Starting up
By default the program is not accessible by ‘normal’ users so you’ll need root access. Also iptraf can put your interfaces in promiscuous mode (this will probably show up in your logfiles as: ‘device eth0 entered promiscuous mode’). Promiscuous mode can be turned off and on in the configuration menu. If no options are given through the commandline iptraf starts up with a splashscreen and then a menu. Some of the menuitems can be reached directly from the commandline (try using ‘iptraf -i all’ if you want to startup in IP traffic monitoring mode).
Configuration
There are some configuration options you might want to check. Turning on reverse DNS Lookups and service names comes in handy when using the IP traffic monitor. Iptraf comes with a separate reverse lookup server -rvnamed- wich is only started and used by iptraf to keep it from hanging on slow lookups. If there’s a lot of network traffic on your box try applying some filters.
Filtering
Filters can be useful if you only want to see info about traffic on certain connections, ports and/or protocols. Filters can be saved, deleted and edited. Multiple rules can be defined.
Screenshots
(Click on the image to enlarge)
| Connections |
Configuration |
Filters |
Interface statistics |
 |
 |
 |
 |
More information
IPTraf has been available since ages ago in both Debian and Ubuntu.
August 26, 2007 05:00 AM
I have been fairly quite here for a few weeks. Just toddling along at summer. I have spent the last few weeks getting ready for Burning Man. I made a sculpture about 3′x4′ that looks like this.

I am leaving within hours. It should be great - I will be at 9:00 and Jungle in Sustainabiliaville.
August 26, 2007 04:59 AM
A few days ago David sent me a link to his post responding to Stefan’s (very long) slam of OpenID. He did a great job articulating how many of those who have been critical of flaws in OpenID have been actively engaged with the community in finding solutions to the problems.
From Gnomedex one of the things I came away with was a deepened appreciation of the community that we have in technology generally and identity in particular. There are a lot of smart, good people working together despite our different personal world views, personal quirks technology backgrounds and visions for the future of the technology.
There are a lot of different perspectives in the social networking datasharing space. Marc Canter called the Data Sharing Summit to figure it out - face-to-face. (I raised my hand and said I would help facilitate). It is going to be Sept 7-8 in Richmond CA (Bay Area). Face-to-Face for a day can be like 6 months on a mailing list. It is invaluable and the text dialogue afterwards is improved in quality and effectiveness.
Ok back to Stefan:
Personally, I can’t be bothered much with a sign-on system for blog comments and social networks, but if it makes other people happy, great.
In fact social uses of persistent identity are actually interesting and just dismissing it as pithy isn’t really productive.
OpenID is a starter way to for websites to start using identity tools for people. Thousands of websites have adopted it - cause it is easy to do and it works. You could get up and praise OpenID for existing cause it is warming all those Relying Party sites to the idea there are identity tools and services they can offer to their user-bases. The challenge that Stefan and everyone else has with more complex visions of how things could/should work is how do you make it ‘easy’ - both for users and developers.
I think nuances that Stefan articulates are really important.
“selective disclosure, authenticated anonymity and pseudonymity (possibly with revocation capabilities), improve availability, enable privilege and entitlement management, and provide security against insider attacks originating from the Identity Provider,”
These need answers and they are not going to come from one company with one solution alone. Community engagement is needed - so I encourage all to put your solutions into the mix and lets see if we can figure this out.
It would be very worrisome to me, however, if a URL-based system (whether OpenID or a variant) would become the basis for “serious” identity and access management applications such as e-commerce, e-health, e-government, general credential systems, and so forth.
Your challenge is that people (consumers, business people, legislators) can readily comprehend identifier system that work like this. If you and others don’t want the world to work like this then it is up to you to figure out how you explain complex math in a way that doesn’t go into the detail but just explains it in a way that ‘makes sense.’ I have had the luxury of sitting down a few times and listening to you explain ‘how the math works’ and it still seems a bit ‘mind boggling’ but “I trust you” - basically it is where peoples trust lies…is it in ‘human’ trust (my openID provider isn’t going to take my password and log into places for me) or is it in ‘math trust’ (these really smart guys have these groovy algorithms that mean only “I” can access my stuff and I can share information with them without really telling them who I am). I hope the latter can work - that the systems can evolve and people will “get” them. However it is a communication challenge and an adoption challenge that is not easy.
I have encouraged Stefan to come to community events many times. . I do hope he takes up my invitation to come to the Internet Identity Workshop December 3-5. I hope you will all encourage him too.
August 26, 2007 04:58 AM
PyWeek theme voting has begun, so we're only a week away from the start now. Sign up, join the fun!
August 26, 2007 04:22 AM

http://www.myextralife.com/archive.php?date=2007-08-25
So, am off down to reading today to hopefully sort out a new place to live when I move down there. Should be interestin, but it’s a long drive!
August 26, 2007 04:18 AM
#i81029# - sw: Broken display of some characters after adding combining diacritical marks
#i81030# - sw: LanguageTool 0.9 Problems
August 26, 2007 03:43 AM
Marn: Do you think the word "serendipity" is a good word?
Rio: What does it mean?
Marn: It means you were looking for something, and suddenly, you find something else.
Rio: Like you were looking for two things and found one of them?
Marn: No, the other thing is something you weren't looking for. Like if you were looking for your bathing suit today and instead you found a magic piece of glass in which were reflected all the wonders of the world.
Rio: Daddy, that's called a "mirror".
***
Marn: One of my favourite poets is called Walter de la Mare. He wrote a book of poems I loved as a child called Secret Laughter. Do you have any poems you like?
Rio: Yes, I like one called "Shall I compare thee to a summer's day?"
Marn: Do you know, I really wasn't expecting you to say that.
***
Rio: I think that any word that exists in American English probably has a word in Welsh that means the same thing.
Marn: Well, maybe so. But there are words in Welsh that don't have equivalents in English, anyway-- like "hiraeth".
Rio: What does that mean?
Marn: Like if you knew a place or a person and saw them every day and loved them very much, and then you moved away and didn't see them any more, but you longed to see them every day and it ate away at you and made you sad... that would be hiraeth.
Rio: I would call that "depression". Or maybe "long-distance relationship".
August 26, 2007 03:28 AM
Wow, they switched the ticker. It will be little surprise to
hear that the internal conversation has been sustained and loud.
While there have been negatives along the lines of “OMG WTF
PHB!?!?”, most of the internal talk has echoed what they’re saying
out in the blogosphere. I’d like to add a couple of points I
haven’t seen elsewhere, one each on the pro and con side.
My own take? I hate it. But that’s mostly because I’m a search
guy. SUNW was a 4-character (32-bit!) identifier, unique in just
about any context, meaning, “The publicly-traded equity of Sun
Microsystems, Inc.” Such a token seems precious to me. Now, our
best equivalent is “NASDAQ:JAVA”. Which will be perfectly effective
in the hands of financial professionals, but some Technorati and
Googleblogs feeds just became much less effective, I think.
On the positive side, I’d like to quote Pat Patterson, from an
internal mailing list:
It’s no bad thing for every business/financial report on the
company to contain the string “Sun Microsystems, Inc. (NASDAQ:
JAVA)” rather than “Sun Microsystems, Inc. (NASDAQ: SUNW)”.
Yep.
August 26, 2007 03:10 AM
I'm in the airport, but I wanted to add to the blogs reporting that JRuby 1.0.1 and Jython 2.2 have been released.
JRuby 1.0.1 is basically just a maintenance release to 1.0. It includes various compatibility fixes that have filtered in since the release, and doesn't do much to improve performance. JRuby 1.1 will come out by November, and should have all the latest research and perf work, including a complete compiler to JVM bytecode.
Jython 2.2 is much bigger news. After years of sleepily crawling along, the 2.2 release of Jython has finally been released. With 2.2 behind them, the Jython team can now be more ambitious about adding Python 2.3, 2.4, and 2.5 features. Much of that work has already started. Also coming up is a new JVM bytecode compiler. If you're a Python guy, give Jython a try today...those guys have put a lot of time and effort in.
I also understand that Groovy is supposed to have their 1.1 release out some time in October. Happy times for dynlangs on the JVM!
August 26, 2007 02:51 AM
In the fine tradition of YouTube, I’ve uploaded a status report.
Unsurprisingly enough, there’s a few better examples of people explaining the process of brewing beer on YouTube.
August 26, 2007 02:38 AM

Its been a crazy month for me… but I am getting into a flow with it. Mostly the crazyness has been caused by work, which I have to say I’m really enjoying and feel like I’m able to bring a lot of the skills I’ve acquired to use everyday. As a continuation of that little bit of crazyness, I’m going to Germany for business. Doesn’t this sound familar? I’ll be there from Monday til Friday. So I’ll be semi MIA during that time.
With Gentoo, my production has dropped in most regards however I’m still active and responding to queries and helping people out that way. X86 continues to plug along working quite well as a team. Probably the most success I’d have to say I’ve personally had in Gentoo. This is due in large part to the Arch Tester program, who it seems to turn out some of the better developers as far as just getting stuff done goes. Many of which have remained on the x86 team after becoming full developers. A few remain arch testers and that’s as far as they want to go and its great to have them as the ranks shrink when we have one become a developer.
Lately, I’ve seen quite a few people come to me asking about joining the x86 team and marking stuff stable. Its a nice sign that people want to join the project/group. With a solid core it continues to in my biased opinion be one of the best archs for stability in the general. Its been a long road but one that I think everyone has received benefit from it. Although, I don’t visit the forums much but I remember when I first joined as a developer. Stable was more or less a joke. There were so many threads about it breaking. Now I at least hope there are few and those are far between. Its one of the things that I can hold onto as a positive influence that I’ve been part of in the organization as a whole.
See everyone in a week.
August 26, 2007 02:33 AM
I just got back from the GTAC (Google Test Automation Conference) in New York and had a great time. It spanned 2 days and had a single track — this made it very laid back (no headaches trying to decide what talk to attend) and the timing was perfect. Especially since my traveling managed to dodge one of the worst summer storm systems to hit Chicago in at least a decade!.
I've put together some highlights using the notes I took at each talk. Please bear in mind that this is not a comprehensive report on the conference and may contain misinformation (feel free to comment with corrections). The Google folk did an impressive job of posting video of most talks online within hours. A youtube search for GTAC lists them all. Or ... you can watch them from a playlist
Allen Hutchison - First Principles
- Youtube video
- There were about 300 applicants and only 150 were accepted. We had to apply with a short essay about why we should attend. This sounds elitist but actually it made it so the conference was full of people who really wanted to be there, which is very cool. Oh, and it was free so I guess something like this was necessary.
- Allen may be releasing some kind of test framework soon that he's been working on (for Google Code?).
- A little about the Google Test Engineering dept.: There are teams of dedicated "Test Mercenaries" who will refactor a newish project's tests and hand them back.
- Assures the audience that any demo to fail means it's on the cutting edge!
Patrick Copeland - Keynote
- Youtube video
- Now works on the Test Engineering group at Google.
- Talked about how his team brought the build/test process for iGoogle down from 77 min to 14 min.
- A bit about using mock objects to simulate faults - the only way.
- Concept of "Happy Path" tests — ones that are designed to pass for the way a user should be using the application.
- Referenced James Reason's Swiss Cheese Model to talk about how interactive components can be full of undiscovered holes since the possibilities for their interaction are endless (again, talking about mock objects).
- Google practices "Root Cause Analysis." That is, instead of a team getting stuck on a treadmill with workarounds they are given extra time and resources to fix the actual problem. This sounds like a no-brainer but I see the treadmill happen all the time. Some problems are really really hard to track down and the business doesn't have time to slow down while the proper probing is done so that they're fixed. When I pressed him more in Q&A it was more like what I thought: a trade-off / balancing act. Still, great to here that from a high level their business is allowing this kind of "Do The Right Thing" to happen.
- Talked about Google's Selenium farm (huge grid of machines to run Selenium tests).
- Mentioned Eggplant, GUI tool for running Selenium tests?
Simon Stewart - Web Driver for Java
- Youtube video
- WebDriver is a Java library that can drive a real browser (currently Firefox, IE) or a fast in-memory implementation of one.
- Proves that web driver (or Locomotive?) is on the cutting edge! The demo failed due to the fussy Locomotive app (Rails on OS X)
- The demo wasn't really necessary though since the code did the talking. This is a very well architected library for web testing.
- Especially interesting is how it suggests creating Page objects for each HTTP response. This objectifies all the page elements and makes for a more maintainable test suite since details that change often (click twice, toggle button "foo," etc.) can be declared separate from the test / assertion code. Hmm... I might steal this idea when I next write some twill tests ;)
Ryan Gerard and Ramya Venkataramu on Test Hygiene
- Youtube video
- Test Hygiene (is that the name?) is an in-house application written for their company that provides an interface to rate the effectiveness of tests for various products.
- Pretty interesting idea: you have a community of developers who run each others tests and rate them on things like documentation level, sanity, effectiveness (are they testing the right thing?), and some other subjective qualities.
- Keeping tests maintained and in good health is way harder than doing the same for production code.
- Most of the Q&A seemed concerned with "gaming" the system, this didn't seem worthy of such lengthy discussion, IMHO.
- One thing pointed out by Q&A is that the system doesn't seem to integrate well with historic code revisions. I think this will be a challenging feature to add.
- Referenced James Surowiecki's The Wisdom Of Crowds
- Talked about "easy grading system" (i.e. eBay?) — can someone explain to me what this means?
Matt Heusser & Sean McMillan - Interaction Based Testing
- Youtube video
- The "balanced breakfast:" a combination of mock objects for isolation and functional tests against real objects for interaction.
- Everyone at the conference seemed to have a love/hate relationship with mock objects.
- This talk made me want to use mock objects a little more (not a lot more!), perhaps because I don't really use them at all ;) They are definitely useful for deducing the root cause of a failing functional test.
- One interesting idea they suggested was creating "facades" (groups of objects) so that a mock facade could be installed for a test. This suggests the idea of "switchable" mock objects — i.e. an "on" switch to make tests run faster, an off switch to make the tests run better, but this wasn't addressed in the talk and I forgot to comment on it.
- They also talked about one possible strategy of focusing on "negative" testing in unit tests since functional tests naturally test for positive use cases. For example, one could just unit test a login method for error cases since all other functional tests would need to login successfully to run.
- The Mars Rover bug: two different "units" failed to operate together correctly because one operated in English units and the other in metric units. Again, why mock objects alone aren't good enough!
- Sean and I chatted later in the hotel lobby about the McMillan Clan Scottish tartan :)
Adam Porter & Atif Memon - Skoll DCQAS
- Youtube video
- This was by far the most engaging talk, I highly recommend watching the video. Actually, it was really two talks in one, so I broke it down accordingly.
- Skoll DCQAS stands for Distributed Continuous Quality Assurance System.
- Adam posted this link but the Skoll system isn't officially released yet. That link is to a package that supports Skoll to test the MySQL database product. Hoping to release an official Skoll package soon.
-
Adam's talk
- This is the problem: You have a software product that can be compiled on many different OS platforms and has many different configuration options. How do you test all possible combinations!
- Skoll is used to build a matrix of all these combinations then manage a distributed farm of servers that run the product's test suite in each configuration/platform. This runs continuously, triggered by each revision made to the code.
- In the first project he implemented this with (some CORBA system), it would have taken something like a full year to run the test suite once per each configuration combination. Instead, Skoll makes a map of all combinations in relation to one another and randomly picks points that are far away from each other. When one point fails, it starts digging further by testing the closest points.
- Similar thing for the MySQL product: there are 110,000 possible configuration combinations for installing MySQL.
-
Atif's talk
- Atif was using Skoll to analyze GUI applications and automatically generate test cases based on all the possible interactions of the GUI widgets.
- This system is called GUITAR and is available for use.
- An interesting thing was discovered: when you look at all the possible paths a user can take through GUI widgets, often the shortest path is that which is most used by real users. This makes a generated test case for such a path very useful.
- Atif chose 4 popular sourforge apps and ran it through the system. This resulted in a handful of bugs discovered for each app!
- I'm very taken by this approach and may attempt something similar for AJAX web applications where widgets interact with each other in complex ways. However, it will probably be difficult to introspect common inputs/output of Javascript objects — they may have to be declared.
Apple Chow & Santiago Etchebehere - Building an Automated Framework Around Selenium
- Youtube video
- The framework is called "Ringo" because their code is "...getting better all the time..." :)
- Interacts with Selenium RC via Java
- Why are Java developers so enamored with XML? All the declarative data structures used to wrap up Javascript objects are done with XML. This seems to me complete overkill and would be such a pain to edit all the time.
- Very cool idea: UI objects are represented in test code as objects too so that the implementation for testing them (click button X, wait 2 seconds, etc) can be hidden. Much like Web Driver's approach this makes it so you don't have to alter test code when UI implementation changes.
- Developed for Top Secret Google systems but showed an example of how one could test the Google Suggest interface. Showed how the search-as-you-type object would have a custom implementation for how it can be tested — loops through the text field, sends each character to Selenium RC, waits a second, sends another.
Doug Sellers - CustomInk Domain Specific Language for automating an AJAX based application
- Youtube video is not up yet at the time of this writing.
- Also a very excellent presentation, keep an eye out for this video.
- Talks about writing a DSL that runs in Ruby and Selenium on Rails (not using RC, actually compiles HTML to run in Selenium)
- This was built to test Custom Ink, a site that has a Javascript (ok, ok, AJAX) interface for customizing a t-shirt order — colors, typeface, graphics — before submitting.
- The DSL is built specifically for the site, I.E. "add_graphic" might be an action. There are 60-80 commands. Goes so far as to say click_link "browse gallery" instead of hard coding div IDs / xpaths, this is pretty smart.
- Sort of makes me want to try this in twill, that is, build a higher level language that boils down to click/wait twill commands in the background.
- Allows again a good separation of test case logic and test implementation, the click/wait interacting with the interface.
- Empowers developers who are not good with Javascript to write functional tests for the website.
- Designed for business users to write tests? Not so much. This came up during Q&A.
- This was addressed a little in Q&A but not completely: I wonder how helpful and/or easy to pinpoint failures in a test case are. I imagine "order page has no button named submit" would induce a lot of head scratching. But, alas, this is always a problem with functional testing.
- Advice: Use CSS selectors, not xpath in Selenium, as it is way too slow in IE.
- Can't test file uploads with Selenium except in Firefox.
Risto Kumplainin - Automated testing for F-Secure's Linux/UNIX Anti-Virus products
- Youtube video is not up yet at the time of this writing.
- They built a cool LED panel for their office that summarizes any failing tests in a grid of OS/configuration.
- "A product of evolution, not intelligent design" — this might just be the quote of the conference.
- One module named "moosetest" after the Saab crash test that simulates what happens when a car hits a moose!
- Typical success story for automating a continuous build/test process when many combinations of configuration exist for the product.
Jennifer Bevan & Jason Huggins - Extending Selenium With Grid Computing
- Youtube video
- Jennifer has worked on Canyon (sp?), an open source data mining tool. This sounded interesting. Does anyone have any info about this? Google wasn't very helpful. And she works there! Sheesh.
- Everyone complains that Selenium tests are slow but this is a constraint of the brower itself (duh). I also find it funny that everyone complains about this.
- Used to test the Gmail UI at Google.
- Runs python test code via Selenium RC in parallel against Firefox/IE in multiple machines. This greatly speeds up test execution time :)
- A live demo of using Amazon's EC2 (Elastic Computing Cloud) to run tests in parallel like this. And it worked!
- Can run multiple instances of Firefox (via user profiles) on a single machine. Cannot run multiple instances of IE on a single machine.
- Chrome for Firefox bypasses common security issues, IEHTA for IE does it similarly. None of these are used in the Selenium implementation (yet?).
- Ran into many issues where Selenium RC would deadlock over time, leak memory, browsers would time out unexpectedly, etc. Workaround right now is to restart the worker machine or search and destroy while looking into a fix. What's up with that Patrick?? What about Google's Root Cause Analysis? :)
- This talk was great news for Selenium, I remember when using RC was a painful, scary endeavor due to its instability. Also, the thought of running over 200 Selenium tests made one think of comics like this (it is very slow).
That's all I have time for at the moment. Check back for Part 2 - coming soon!
August 26, 2007 02:31 AM
Another interesting article on Types and Typing: "Stop Sitting On The Type Fence" - it makes several good points about language evolution, and about both the static and dynamic camps. I did love this quote, as it pointed out the link between mathematical thinking and static types.
So static typing isn't just about making sure that you don't add two credit card numbers together, it's about expressing code as close as possibly to mathematics. Mathematicians tend to be very good at reducing problems to their smallest representations, and coming up with very general solutions, so there can be no doubt that this approach will (and already has) produced amazing results.
p.s.: I still don't like lambdas: write a function!
August 26, 2007 01:20 AM
Two weeks have passed since I last showed pictures of a possible future of the searching experience with KatePart, and thus Kate, KWrite and friends.
Since then progress has been made: Florian Grässle of OpenUsability strongly improved my original dialog drafts and I started implementing the improved dialog mockups. What you can see below are actual screenshots of Kate from the Subversion trunk.
Incremental search bar:

Power search and replace bar:

There is still more code to write and bugs to fix but the basic functionality is there. That plus previously missing features like support for
- multi-line search patterns
- escape sequence resolution in the replacement text.
That’s it for now, please don’t beat me if I should miss a bug 
August 26, 2007 12:47 AM
So I finally got my power turned back on tonight a bit after 6:00…have been without since Thursday afternoon. Only really frustrating part was throwing out a lot of good food. Hardest part was trying to figure out what to do with myself having no computers/internet other than my N770 on GPRS. Mostly looking forward [...]
August 26, 2007 12:42 AM
Another libjana-related blog post... I've just finished a bit of work on the event-list widget. Most importantly, I just added a utility in libjana that generates a list of all the durations an event has, split across days (theoretically taking into account recurrences and exceptions, but that's unimplemented at the moment). Adding support into JanaGtkEventStore was a bit tedious, but now the event viewing widgets can easily show and edit recurring/multiple-day events without any of the nasty special-casing that happens in Dates currently. It's now very easy to write a nice-looking event-list in approximately 50 lines of C code :) (give or take..) Screenshot:

As ever, source is available from subversion: http://svn.o-hand.com/repos/dates/branches/jana/
[view]
Barry White - You See the Trouble With Me
August 26, 2007 12:39 AM
Today is my birthday. So my wonderful wife gave me something that I would not expect:

She gave me this box with three t-shirts on ubuntu color (red, orange and yellow). So I thought: “Cool, three t-shirts on ubuntu colors! And they look like the ubuntu logo”. But when I open the t-shirts I saw that they weren’t simple t-shirts:

She ordered to embroider the ubuntu logo on the t-shirts and on the sleeve embroider the phrase that are on our wedding rings: “Semper Amemus”, that means that our love is forever.
Today I also updated my blog theme, where I’m using one of those t-shirts on the top… 
August 26, 2007 12:34 AM
We are socialing :-D
yepeeeeee, Amarok's project founder Mark just started a discussion about permissions in ubuntu, where www-data seems to have access to a shell. Although he just noted that he wants to cuddle and be a lovely nice person, so letz drop this totally pointless note.
Anyway, the thing is we are going to do a live stream on radio anorak today (2007-08-26 stream link). From about 8 o'clock UTC to about 12 o'clock UTC we are going to present you the finest electronica music the free music world has to offer. Also short notes about current on going discussion will be aired, so check it out if got a chance.
It will be totally awesome
August 26, 2007 12:34 AM
Feeling a bit tired on a dull Saturday evening made me grabbing some statistics from KDE Bugzilla. I wondered how many non issues get reported on average.
I picked a random sequence of 1000 bugs, created not too long ago. Let it be, say, bug 147000 until bug 147999. The statistics for these bug reports:
| UNCONFIRMED | 549 |
| NEW | 91 |
| RESOLVED | 353 |
| ASSIGNED | 5 |
| REOPENED | 0 |
| CLOSED* | 2 |
But I was more interested in the RESOLVED part:
| FIXED | 85 |
| INVALID* | 91 |
| WONTFIX* | 18 |
| LATER | 4 |
| REMIND* | 0 |
| DUPLICATE* | 103 |
| WORKSFORME* | 52 |
Summing up the marked entries comes to a total of 266 bugs which are of no use. Note that a lot of the UNCONFIRMED bugs should still be taken care of by the developers, so the amount of non bugs can only increase.
So to conclude, about 1 out of 4 reported bugs turns out to be a non issue. I think that is a lot of noise, but probably other Bugzillas share the same ratio. Now it's a challenge to improve this ratio.
And this statistic is dedicated to the real insiders, I hope you can guess it :) :
August 26, 2007 12:18 AM
August 25, 2007
... curious. Have a look at this photo from me at the Pompidou Center of Paris.

You have to have guts to tell people that's art.
August 25, 2007 11:48 PM
The computer which was hosting the UbuntuStats IRC Statistics project died a couple of months ago. It wasn’t the best solution because of the current state of Portuguese ISP’s.
DHCP leases from my ISP are too short. This causes the computer to renew IP every ~12hours, and by doing so, it would lose his Internet connection. Making the bot disconnect from IRC and causing a few minutes of downtime on the web page hosting the statistics.
Dear lazyweb,
Is anyone interested in hosting this?
I would only need IRSSI running and a cronjob to run every minute (nothing too CPU intensive).
I thought about buying dedicated hosting, but the amount asked is just too much for my pocket.
August 25, 2007 11:35 PM
Following the Edu Day at aKademy, I got a Classmate PC which is a machine Intel developed. It is a "a small, mobile learning assistant and educational solution that Intel specially developed for students in emerging markets". The small laptop arrived in Burgundy during my holidays and due to non internet I could not do much with it. The laptop has a Suse system on it with KDE 3.5.1 and my goal is to see how KDE-Edu applications run on it. However Yast2 has no software section and it was impossible to get it working.
Yesterday I seeked advice to the IRC #suse channel but I was dismayed to be dismissed and categorized as an annoying newbie. However today I put Jeff "fataerrors" to work on the machine and well, he happens to be a Suse guru. Today at my LUG we had our monthly KDE workshop at Alexis "darktears" place. Jeff wanted to participate but has no laptop so I suggested he works on the Classmate PC. He did wonder and installed KDE-Edu 3.5.1! Thanks a lot Jeff!

And the result:

I found out that KHangMan is too big for the Classmate display so its starting size should be reduced. Same with KLettres, the rest of Edu apps seem all OK. I'll commit the fixes and I'll hope there will be a 3.5.8, if not maybe the choosen distribution will package them from svn. It's only a matter of cummunicating with distribution packagers and I'd like to thank Intel for sending a machine so I can test our software on it and fixe any problem.
I'll further test KDE-Edu programs for KDE 3.5.1 then I'll try to upgrade to KDE 4 if I can manage it.
Alexis made me recompile Alsa so I got my laptop sound working again, not with headphones but at least I have sound. Thanks for a friendly and productive day. I was glad to be away from the 5 kids + 1 friend that populate the house these days (so much cooking!) so thanks to my husband for this free time!
August 25, 2007 10:19 PM
We have just got to a first milestone of the maemo wiki, thanks to the priceless help of some big hearts at #maemo (details to come in a next post):
- We have gone through most (all?) of the content.
- All the good content is now linked from the main page.
- There are still pages with an uncertain future (pro-official docs, candidates to be deleted, pages probably irrelevant today, content in non-English... All of them are located at WikiReorg. The priority now is to clear up this page.
- We got rid of all the orphans
- Now we have a big list of pages to delete. If you find there content worth to be kept move the link to WikiReorg. We can always recover old content from the old wiki.
- We have also gone through the functionality expected in a wiki nowadays, in order to know in details what we have got and what is missing. The Midgard developers are reviewing the bugs submitted and commenting/resolving them.
From a content point of view, we will reorganize the wiki main page in topics: multimedia, connectivity, etc, as we plan to do with the official documentation. On the wiki tool side, once the situation of the open bugs is clear we will decide the next steps to do in order to put the maemo wiki in shape.
We will need to invest more time/money in the tool. How much, when and how will depend also on the interest we perceive from the maemo community using the wiki and expanding its content. As usual, all feedback is welcome.
August 25, 2007 10:16 PM
Identity 2.0 Europe will be back soon with a new concept and design. This site will remain available for the moment, but don't expect new postings.
However, talking about new postings, check out [url=http://stuffyouknow.livejournal.com/]my private blog[/url] for a report about BarCamp Cologne 2 (both English and German), including things about OpenID and decentralized social networking.
August 25, 2007 10:05 PM
Latest build as of 2007.08.25.19.47 works under VirtualBox with both sound (as seen in EToys) and Networking. This is seen on an AMD64 box with alsa sound driver. TamTam's sound (CSound) is producing clicking sounds as soon as you open the application, but that seems to be common issue at this point.
Networking works in VMWare, but it looks like they use a different sound driver? ES1371 from Ensoniq, instead of the intel8x0 one in VirtualBox. Bah, how did I miss that. Have to annoy the kernel peoples again. I suppose.
Images require you to specify your school server, edit ~/.sugar/default/config and set server to olpc.collabora.co.uk. I've got a quick and dirty script that produces vmware/virtualbox disks from the latest images. Probably should have that run on a machine with some bandwidth and allow people to download the results.
Would also be nice to figure out how to make the conversions not fill out the whole disk-space (i.e. creating 900MB files). VMWare one is only 600MB, but it shouldn't be more than about 200MB IIUC.
Qemu networking seems to work, but only if I manually restart the /etc/init.d/network service. Qemu sound doesn't seem to even show up as a pci device, so not working there yet.
August 25, 2007 09:38 PM
Posted by Harishankaran (sp2hari)
Recording your screen in Solaris works right out of the box. All you need to install is vncserver and vnc2swf.
A simple HOW TO about recording your screen in Solaris. :)
First you need to install Vncserver. Solaris by default doesn't come with a VNC. The easiest way to install VNC is through pkg-get
root@home# pkg-get -i vncserver
Before running that command, configure your pkg-get to get the packages from blastwave.org. Check http://www.blastwave.org/howto.html to get more details about setting up the repo.
That should install vncserver. :)
Next step it to install vnc2swf.
Download the C version of vnc2swf from http://www.unixuser.org/%7Eeuske/vnc2swf/index.html.
Extract the tar ball
hari@home:~$cd vnc2swf
hari@home:~$./configure
hari@home:~$make
root@home#make install
The commands mentioned above will install vnc2swf . :)
All you need to do to use vnc2swf is to start a vncserver. vnc2swf just needs the output file name to be passed as command line argument when started. Pressing F8 gives the options to start, stop, pause and clear the reocrding.
Some of the issues i faced are :)
1. When the same user tries to start a gnome-session in the vnc, an error message saying gnome-session is already running is given. So the best bet is to create a new user and start the vncserver of that user.
2. The icons are not displayed properly if you login into the new user's account using GNOME. Use Common Desktop Environment (CDE) to login and start a vncserver.
3. By default, the new user won't have a .vnc folder. So start a vnc and kill that. Now you will have .vnc folder with a xstartup file. Modify the file so that gnome-session runs in the vnc instead of the default twm. The xstartup file should look like
#!/bin/sh
/usr/openwin/bin/xrdb $HOME/.Xresources
/usr/openwin/bin/xsetroot -solid grey
/usr/openwin/bin/xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#/usr/openwin/bin/twm &
gnome-session &
And yeah, what i recorded can be viewed at http://download.freedesktop.org/ldtp/movies/screen2.html. Nice right ;-)
August 25, 2007 09:16 PM
Posted by Harishankaran (sp2hari)
Yes, you heard it right. My tinderbox is working. Even now i don't know why i was trying to setup a tinderbox after both Emily and Nags asked me to concentrate on Firefox automation. I felt it was almost done and just few more steps, i will be able to set it up. And that's what finally happened :)
So in this post, i am going to mention about all issues i faced in setting up a tinderbox and steps to fix them.
Note :: If you are ever setting up a tinderbox, be prepared to see huge log files. Like once my compilation ran for few hours and produced a log file of size 15MB. And if you are stuck up, DON'T send the entire file. A tail of that file should do. In fact, you should be in a position to find out from while line the exact error starts.
Yeah before you start reading this
http://sp2hari.blogspot.com/2007/06/conquered-solaris.html and
http://sp2hari.blogspot.com/2007/06/tinderbox.html has instructions about how to setup Tinderbox in Solaris environment.
Ok the first error i got was
Building deps for jsinterp.c
cc -o jsinterp.o -c -DOSTYPE=\"SunOS5\" -DOSARCH=SunOS -DEXPORT_JS_API -DJS_USE_SAFE_ARENA -I../../dist/include -I../../dist/include/js -I../../dist/include/nspr -DMOZ_PNG_READ -DMOZ_PNG_WRITE -I../../dist/sdk/include -I. -KPIC -xlibmil -xstrconst -xbuiltin=%all -mt -DNDEBUG -DTRIMMED -xO4 -DMOZILLA_VERSION=\"1.9a7pre\" -DMOZILLA_VERSION_U=1.9a7pre -DSOLARIS=1 -DNSCAP_DISABLE_DEBUG_PTR_TYPES=1 -DD_INO=d_ino -DSTDC_HEADERS=1 -DHAVE_ST_BLKSIZE=1 -DHAVE_SIGINFO_T=1 -DHAVE_INT16_T=1 -DHAVE_INT32_T=1 -DHAVE_INT64_T=1 -DHAVE_UINT=1 -DHAVE_UINT_T=1 -DHAVE_UINT16_T=1 -DHAVE_DIRENT_H=1 -DHAVE_SYS_BYTEORDER_H=1 -DHAVE_GETOPT_H=1 -DHAVE_MEMORY_H=1 -DHAVE_UNISTD_H=1 -DHAVE_NL_TYPES_H=1 -DHAVE_MALLOC_H=1 -DHAVE_X11_XKBLIB_H=1 -DHAVE_SYS_STATVFS_H=1 -DHAVE_SYS_STATFS_H=1 -DHAVE_LIBM=1 -DHAVE_LIBDL=1 -DHAVE_LIBSOCKET=1 -DFUNCPROTO=15 -DHAVE_XSHM=1 -D_REENTRANT=1 -DHAVE_RANDOM=1 -DHAVE_STRERROR=1 -DHAVE_LCHOWN=1 -DHAVE_FCHMOD=1 -DHAVE_SNPRINTF=1 -DHAVE_MEMMOVE=1 -DHAVE_RINT=1 -DHAVE_STAT64=1 -DHAVE_LSTAT64=1 -DHAVE_FLOCKFILE=1 -DHAVE_LOCALTIME_R=1 -DHAVE_STRTOK_R=1 -DHAVE_LANGINFO_CODESET=1 -DVA_COPY=va_copy -DHAVE_VA_COPY=1 -DHAVE_I18N_LC_MESSAGES=1 -DMOZ_EMBEDDING_LEVEL_DEFAULT=1 -DMOZ_EMBEDDING_LEVEL_BASIC=1 -DMOZ_EMBEDDING_LEVEL_MINIMAL=1 -DMOZ_PHOENIX=1 -DMOZ_BUILD_APP=browser -DMOZ_XUL_APP=1 -DMOZ_DEFAULT_TOOLKIT=\"cairo-gtk2\" -DMOZ_WIDGET_GTK2=1 -DMOZ_ENABLE_XREMOTE=1 -DMOZ_THEBES=1 -DMOZ_CAIRO_GFX=1 -DMOZ_X11=1 -DMOZ_DISTRIBUTION_ID=\"org.mozilla\" -DMOZ_ENABLE_XFT=1 -DMOZ_ENABLE_PANGO=1 -DMOZ_ENABLE_COREXFONTS=1 -DMOZ_ENABLE_GNOMEUI=1 -DMOZ_EXTRA_X11CONVERTERS=1 -DOJI=1 -DIBMBIDI=1 -DMOZ_VIEW_SOURCE=1 -DACCESSIBILITY=1 -DMOZ_XPINSTALL=1 -DMOZ_JSLOADER=1 -DNS_PRINTING=1 -DNS_PRINT_PREVIEW=1 -DMOZ_NO_XPCOM_OBSOLETE=1 -DMOZ_XTF=1 -DMOZ_MATHML=1 -DMOZ_ENABLE_CANVAS=1 -DMOZ_SVG=1 -DMOZ_SVG_FOREIGNOBJECT=1 -DMOZ_UPDATE_CHANNEL=default -DMOZ_PLACES=1 -DMOZ_PLACES_BOOKMARKS=1 -DMOZ_FEEDS=1 -DMOZ_STORAGE=1 -DMOZ_SAFE_BROWSING=1 -DMOZ_URL_CLASSIFIER=1 -DMOZ_LOGGING=1 -DMOZ_USER_DIR=\".mozilla\" -DMOZ_ENABLE_LIBXUL=1 -DHAVE_STDINT_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_SYS_INT_TYPES_H=1 -DHAVE_UINT64_T=1 -DMOZ_XUL=1 -DMOZ_PROFILELOCKING=1 -DMOZ_RDF=1 -DMOZ_MORKREADER=1 -DMOZ_DLL_SUFFIX=\".so\" -DXP_UNIX=1 -DUNIX_ASYNC_DNS=1 -DJS_THREADSAFE=1 -DMOZ_ACCESSIBILITY_ATK=1 -DATK_MAJOR_VERSION=1 -DATK_MINOR_VERSION=12 -DATK_REV_VERSION=3 -DMOZILLA_LOCALE_VERSION=\"1.9a1\" -DMOZILLA_REGION_VERSION=\"1.9a1\" -DMOZILLA_SKIN_VERSION=\"1.8\" -D_MOZILLA_CONFIG_H_ -DMOZILLA_CLIENT jsinterp.c
ube: error: Assert has been violated at '/set/venus/builds.intel-S2/nightly.Thu/intel-S2/lang/ube/graphs/src/scregion.c 305'.
cc: ube failed for jsinterp.c
gmake[4]: *** [jsinterp.o] Error 2
Dave from Sun china asked me use a patch for Sun Studio 11 Compiler C. I don't have the link to the patch now but the patch id is 121016-05. I remember getting it from the sun website. So searching there should give you the link. The above patch was dependent on patch 120759-06. So installed patch 120759-06 first and then install the patch 121016-05.
Steps to add a patch in Solaris are given below. The commands are for patch 121016-05. Change the id according to the patch you are installing.
1. Download 121016-05.zip and extract the contents in your current directory
2. Login as root
3. root@home# patchadd 121016-05
Note :: If the above command doesn't work, then try
root@home# patchadd . 121016-05
The above steps should install the patch in your system. To check whether the patch is installed properly, check the folder /var/sadm/patch/. You should see seperate directories for each patch you have installed. In my system here, the /var/sdm/patch is like
# cd /var/sadm/patch/
# ls
120759-06 121016-05
That fixed the above problem :).
The next error i got was
jsinterp.c
ir2hf: error: Ran out of memory
cc: ir2hf failed for jsinterp.c
Now this is a strange problem and which can be fixed without much issue. You need more RAM. My system had 768MB (512+256) RAM, but you need 1GB RAM to fix this issue. So next day i got 1GB RAM and never got this error back.
After that, i got many compilation errors. This happened because of some issue in the mozilla code. This generally never happens. I got errors in lines having inline. Anyway now i am not getting the error anymore. So i think the mozilla code is fixed now. :)
Finally i got an error saying,
gmake[3]: Leaving directory `/export/home/hari/tinderbox/SunOS_5.11_Depend/mozilla'
gmake[2]: Leaving directory `/export/home/hari/tinderbox/SunOS_5.11_Depend/mozilla'
make[1]: Leaving directory `/export/home/hari/tinderbox/SunOS_5.11_Depend/mozilla'
firefox-bin built successfully.
firefox-bin built successfully.
firefox-bin binary exists, build successful.
Unable to find path to Talkback client. Proceeding as if Talkback was not installed.
Running regxpcom test ...
Timeout = 120 seconds.
Begin: Fri Aug 24 08:08:37 2007
cmd = /export/home/hari/tinderbox/SunOS_5.11_Depend/mozilla//dist/bin/firefox-bin -register
End: Fri Aug 24 08:08:38 2007
----------- Output from regxpcom -------------
----------- End Output from regxpcom ---------
regxpcom: test failed
No profile found, creating profile.
Begin: Fri Aug 24 08:08:38 2007
cmd = /export/home/hari/tinderbox/SunOS_5.11_Depend/mozilla//dist/bin/firefox-bin -CreateProfile default
End: Fri Aug 24 08:08:39 2007
----------- Output from Profile Creation -------------
Xlib: connection to ":0.0" refused by server
Xlib: No protocol specified
(firefox-bin:6432): Gtk-WARNING **: cannot open display:
----------- End Output from Profile Creation ---------
ERROR: profile /export/home/hari/tinderbox/SunOS_5.11_Depend/.mozilla/firefox/ does not exist
no pref file found
The solution for the above bug was to allow connections to X server. This is done by executing the following command before starting a tinderbox compilation. Remember the user who is running the tinderbox should execute the command.
hari@home:~$/usr/openwin/bin/xhost +
access control disabled, clients can connect from any host
Few other things to note while trying to compile firefox under tinderbox are
1. Never ever run two instances of tinderbox at the same time. Make sure the first one is killed before starting a new one.
2. Delete the SunOS_5.11_Depend folder when you are facing any compilation errors.
3. Use -XO3 for CFLAGS and CXXFLAGS
4. Make sure your mozconfig file has these lines
ac_add_options --disable-freetype2
ac_add_options --disable-debug
ac_add_options --disable-tests
August 25, 2007 09:14 PM
Posted by Harishankaran (sp2hari)
Updates about SOC.
30 test scripts are working fine without any issue :). My target is to write 50 test cases and i will try to reach that this weekend :) :).
The scripts can be downloaded from here.
Things to be modified when you run your script in your environment are.
1. In the file firefox.xml, change the value of <filepath> for so that it points the file called index.html in the folder called data in your scripts directory.
Let me give a detailed HOW TO for running these scripts.
1. First, LDTP must be installed in your system.
The CVS page in ldtp.freedesktop.org provides the instructions for getting the LDTP code through CVS.
Note : I had a small issue compiling the code which i got from CVS.
While using ./configure it gave me an error saying
./configure: line 3998: syntax error near unexpected token `LIBXML2,'
./configure: line 3998: `PKG_CHECK_MODULES(LIBXML2, libxml-2.0 >= 2.0.0)'
The above error is because autoconf and pkg-conf are installed at two different locations. For more details check http://lists.freedesktop.org/pipermail/xserver/2003-December/000573.html
So i used this package which compiled without any issue :).
For more details on how to install, check here.
2. Enable Accessibility from gnome-control-center
3. Download and start Firefox3.0a*pre from here ( Any FF3.0 alpha release should work, though with FF3.0a8pre, it is tested throughly.
Note :: When you start firefox, make sure you don't have any other instance of firefox running.
4.Run the command
hari@home:~/soc/tinderbox$ ldtprunner run.xml
If you have set LDTP_DEBUG=1 in your shell, then it will show lots of output. Don't get scared. It only means things are working fine :)
Note :: You can also work with LDTP_DEBUG unset, if you want a "clean" output.
Once that command is executed, then it will run the test cases provided in the run.xml.
A file called log.xml gives the details about the test cases run. The last three lines in the log file should be like this if the test case ran properly for all the 30 test cases provided.
<groupsstatus total="30" pass="30" fail="0"/>
</group>
</ldtp>
The screen record video on Solaris 11 is given can be viewed from here.
http://download.freedesktop.org/ldtp/movies/screen2.html
The current status of the test cases can be viewed from here.
http://ldtp.freedesktop.org/wiki/Firefox_Test_Cases
August 25, 2007 09:12 PM
So here I am, doing research. I go through Knuth's book, and in the particular section I am in he suggests hash(x) = ax, where the factor a has to be chosen properly so that it is within certain ranges and such that each of its bytes is not too close to any of the others or their complements.
Then he gives an example of a value of a, for a decimal computer in which the bytes can have values from 0 to 99. In "hundred"-decimal notation, it would be as shown below.
a = 61 25 42 33 71
Now, certainly, if we are working with a decimal computer, then yes... each byte is not too close to any of the others or their complements. But, in a binary computer, this looks quite differently. In hex, the value above is 33 bits long.
a = 1 6D 1A 8B 0B
So first, it doesn't even fit in 32 bits, and second, its bytes are not necessarily far away from each other or their complements. That is fine because the value of a was chosen for a decimal computer, not a binary one.
Want to cry? The value of a can be found in .h files via Google, even though it typically does not fit in 32 bit variables. Also, this choice of a has been roundly criticized for giving poor hash value distribution in binary computers. Well of course, it was never meant for a binary computer in the first place.
Sigh...
August 25, 2007 09:00 PM
I was recently talking to a client about the lack of guidelines for acceptable personal use of office resources in his company. He rejected the suggestion that he provide any real rules or guidelines (apart from some old rules that most employees were not aware of and of which there was no procedure to remind them to periodically read). He said that he only wanted to hire motivated people who wanted to work, and that people who need rules should work elsewhere.
The results of his approach seem reasonable, everyone who works for him works really hard. In return his attitudes towards employees are more relaxed than most employers, among other things he is very supportive of employees who desire career opportunities greater than his company can offer.
I have been wondering whether rules alone can make people lose interest in working, or whether it’s the type of person who doesn’t want to impose rules that inspires hard work.
My experience is that when working for people who have a rule-free environment I tend tend to work really hard, and that when working for companies that have lots of rules I find it difficult enough to get out of bed in the morning - let alone become motivated to do any work.
I am interested to see comments from other people, both workers and managers. Is my experience common in this regard?
Share This
August 25, 2007 09:00 PM
Isn't that a neat car?

Aston Martin announced the new DBS which allready could be seen at the last James Bond film. Now they will show it on the IAA in Frankfurt starting at September, 13th. Take a look at the web presentation.
August 25, 2007 08:57 PM
So, I received my custom-made KDE and KPilot shirts from spreadshirts.com yesterday, and am very, very impressed. 5 days to get the shirts printed and shipped is pretty darned impressive. Nice job, spreadshirt!!! The shirts seem to be well-made and of good quality. I’m just hoping that the logos and printing doesn’t start coming off for at least another 5 years… =;)

And yeah, my witticisms are perhaps not the greatest, but I was a bit thin on pop culture references at the time, and Adriaan was asleep. So bite me.
But I can say that if you’re in the .us, and you’re looking for some nice KDE swag to wear out on your next hot geeky night on the town and can’t find any, you might just want to take a look at spreadshirt.com. If you can’t find something you like, you can use their custom designer to create it yourself.
Now… back to getting KPilot release-ready….
August 25, 2007 08:47 PM
In a couple of days, GNOME is going to be 10 years old, here's my present:

Unix (and life too) doesn't suck anymore, thank you to all the GNOME community!
August 25, 2007 08:30 PM
Vala is a C# like language compiler that translate the source code into C. It's intended to provide a higher level language to GLib/GObject/Gtk+ and friends.
Today, in more or less one hour, I've been able to write a GtkMozEmbed binding for vala. Note that I haven't write a binding ever in my life before and despite that, it's been pretty straightforward.
I've also wrote a small app to show the browser, and there we go:

Vala goes online!
To get the source code of what I did, take a look at #463438's attachments.
My conclusion here is that vala is really close to become a serious option to write platform libraries and applications instead of C within the Desktop, you get the best of both worlds, a high level language, and the C (non VM) performance, portability and easy of bind from other languages, and since vala adds some explicit object semantic, write bindings from vala code could be even more straightforward.
Another problem that it potentially solves is the pain of reuse code from others, most people tend to no inherit in GObject since it involves lots of annoying copypaste, which drive us to better integration and a better reutilization of the code.
Congrats to Jürg Billeter for such a bold and simplified approach.
Oh, by the way, did I say that this approach is binding friendly already? ;-)
August 25, 2007 08:30 PM
Usability of desktop applications has been a concern for me for quite a long time. I’ve been thinking about it lately and came to some conclusions that I’d like to share. I have the feeling that modern desktops are mostly stuck in a dead end with usability, and M$ takes credit for most of it.
I’d like to explain one aspect of usability with an example, that is creating, editing and handling a text document. I’d like to start with how this is usually done on all desktops I know (Windows, KDE and GNOME) (sorry if I include details that seem obvious to anybody but the completely computer illiterate, I have my reasons):
- Start the text application (for example OpenOffice Writer). That includes knowledge of the existence of such an application and that this app is needed to edit texts, navigating something like a start menu to find the application.
- The application comes up with an ‘unnamed file’ and an empty edit area.
- You start to write something. At some point you need to save it (hmm. this includes you have to know that there are two states of your data, the copy in RAM and the copy on your harddisk.) So you navigate the thing that is called ‘file menu’ and choose the save option (urgs, there’s also ’save as’). Now you’re presented with a dialog that is similar but not exactly the file manager you know from the desktop and are prompted to enter a filename, because so far the file has been ‘unnamed’.
- At some point you’re done and want to close the application. Navigate file menu to the exit menu entry (what’s this to do in the file menu anyway?). You’re prompted with the question if you want to save the file etc blah blah.
In an ideal word, the above steps are full of usability problems. At least from my point of view, things would be much more intuitive the following way (if people weren’t so much used to the above way that is):
- Navigate from the desktop to a folder where you want to create the file (maybe including creating new folders on the way).
- Choose option ‘New File’ in the file manager. This will ask you which type of file you want to create. You select ‘Text File’ from a list and enter a file name.
- The file is opened and you find yourself in an empty editor area. Note that there’s no need to distinct between the file you have open and the application that actually does all this. This is a detail that the user should not need to know about. The user should care about his files, not about applications.
- Edit away with the file. Actually, there’s no need to save the file, because the data in RAM is kept in sync with the data on the HD quite cleverly. And of course, the undo buffer is saved along with the actual file.
- If you’re done, choose the standard close option for each window (like the small cross in the upper right corner). The ‘application’ has no need to ask questions at this point because all the data is already in sync with the HD, see point #4.
Now, if you think this further, you will find that many concepts in the so called modern desktops are actually not needed and only hinder usability and simplicity of the desktop. There’s no need to have a start menu, there’s no need to have a distinction of (data) files and the application that are used to edit them, there’s no need for a file menu, etc etc.
So why was all this invented in the first place? Most of these concepts date back to the good (ok, they were actually pretty bad) DOS days, when there was no such thing like a graphical desktop, but applications like MS Word were already good enough to have menus and mouse support. At that time it made sense to have a distinction between apps and data files (because there was no file manager), it made sense to have a file menu (because there was no file manager and the computers at that time didn’t have enough resources to keep RAM data and HD data in sync in a useful way). That was actually pretty sophisticated at that time.
So, why do modern desktops still stick to these old concepts, which actually seem to be in the way of reasonable usability? Well, the answer is simple. One big rule in usability engineering is to take care of the user’s expectations and habits. People got used to these concepts so much that at one point it actually became impossible to change these concepts. I mean, imagine a desktop without a start menu, without the concept of applications even. Imagine applications without file menu, etc. Kindof hard, right? If M$ decided today to revamp Windows in such a radical way, they would probably loose millions of users. The same is true for KDE and GNOME. Remember the big debate about the spatial nautilus? A pretty radical change in a good direction, not perfectly implemented maybe (it’s much better now, because users can change it to their needs). But it certainly turned away many ‘power’ users (which infact only had pretty strong habits and didn’t want to let loose). This is why we will most likely see file menus in 10 or 20 years still, although they are not strictly necessary.
August 25, 2007 08:14 PM
I've been working on some vala bindings lately. My main purposes is to reuse some opt components to create a proper PDF viewer with transition support for presentations.
Poppler!
To be able to load pdf documents in Vala, I've made poppler-glib bindings and a proof of concept app:

OGG/YouTube
Binding Source: poppler-glib.vala
Test Source: pop.vala
Clutter 0.4
I've updated the clutter bindings, I wanted to be sure that the api coverage and the bindings were alright, so I started porting the test suite to vala. So far I've succesfully ported the test-actors test, and despite some problems with the Math package and some minor tweaks, it works!
OGG / YouTube
Binding Source: clutter-0.4.vala
Test Source: test-actors.vala
The binding generator of vala needs some love yet, it doesn't convert GError parameters into throw statements and some functions are not properly wrapped. However, it does the 90% of the job pretty well, and with some tweaking, it'll be even better soon.
August 25, 2007 08:07 PM
Yesterday I decided that I wanted to try my hand at running an internet radio station. Yeh go on, laugh. Well, I thought it was a good idea. So I looked around on the net, but found it exceedingly difficult to find information. Eventually after searching and chatting for a while, I came across Shoutcast, and Icecast. These would do great as servers, Icecast is open source, Shoutcast isn’t. However, what I wanted was totally live data being transmitted to these. Let me break it down a little.
Internet radio generally goes like this. You have a broadcasting tool, which takes data from your machine and sends it to a server, which is usually hosted on a high bandwidth machine. This machine will then accept connections from other people across the internet, and pipe out your radio station. Great! However, all the broadcasting tools I could find would only run playlists of mp3s. Not what I wanted. I wanted to take the audio input from my PC and use that as the streaming data.
Eventually I found DarkIce. A great little too which does just that. Couple that with DarkSnow, a nice little gui and things get a little easier. I tried and tested both Shoutcast, to produce mp3 streams and Icecast to produce ogg streams. So how did they compare?
Shoutcast
The server side of Shoutcast was very easy to setup indeed. All I had to do was download the relevant tar from the Shoutcast website, extract it, and change the password in the config file. Once running, it gave me a nice verbose output of who was connecting where.
user@server [~]# ./sc_serv
*******************************************************************************
** SHOUTcast Distributed Network Audio Server
** Copyright (C) 1998-2004 Nullsoft, Inc. All Rights Reserved.
** Use "sc_serv filename.ini" to specify an ini file.
*******************************************************************************
Event log:
<08/25/07@15:32:32> [SHOUTcast] DNAS/Linux v1.9.8 (Feb 28 2007) starting up...
<08/25/07@15:32:32> [main] pid: 28419
<08/25/07@15:32:32> [main] loaded config from sc_serv.conf
<08/25/07@15:32:32> [main] initializing (usermax:32 portbase:8000)...
<08/25/07@15:32:32> [main] No ban file found (sc_serv.ban)
<08/25/07@15:32:32> [main] No rip file found (sc_serv.rip)
<08/25/07@15:32:32> [main] opening source socket
<08/25/07@15:32:32> [main] source thread starting
<08/25/07@15:32:32> [main] opening client socket
<08/25/07@15:32:32> [main] Client Stream thread [0] starting
<08/25/07@15:32:32> [source] listening for connection on port 8001
<08/25/07@15:32:32> [main] client main thread starting
<08/25/07@15:32:57> [dest: 127.43.232.195] server unavailable, disconnecting
<08/25/07@15:33:16> [main] SIGINT; exiting!(0 unique)
My problem was that Darkice, from the Ubuntu repositories was not able to produce an mp3 stream, which Shoutcast requires. A little hacking around in the source let me build a package that was lame enabled, and I was away. Darksnow was installed from the Ubuntu repos and was configured to point to the server, on port 8001, the input source was set to be jack and everything seemed to run ok.
Running xmms and connecting to http://server:8000 got me a stream. Now all I had to do was use jack, to hook up my audio sources. It worked like a charm. The audio was surprisingly clear. Very easy to setup, just had to fiddle a little to get the mp3 support, but then I’m sure everyone is hissing under their breaths.
Icecast2
Icecast2 presented me with a few more issues. I downloaded and installed the Ubuntu repo versions of Darkice, Icecast2 and Darksnow on another machine. I used the default configuration file, however running Icecast2 presented me with a problem. It couldn’t read the configuration file as I was running the Icecast2 server as a user, and not as root. I tried to sudo run it, and it told me off, because it shouldn’t be run as root. Obviously.
However it did prompt me to set the changeowner security setting in the /etc/icecast2/icecast.xml, which I did. Now, when I sudo run the server, it complains about not being able to create logs. Another product of not running as root. So I chowned the log directories so that the user was able to write to them. After that the Icecast server started.
I had few minutes of frustration. Icecast2, seems to have to have a mount point associated with it. After changing the password in the config file, I had to setup the server ip, port as 8000 this time, and the mount point as streaming.ogg. This time I had to connect to http://server:8000/streaming.ogg but it worked fantastically. The delay due to the buffering seemed longer on the Icecast2 server, but not by much. I was also a little dissappointed by the lack of verbosity. Though it does store all access data in a log file, similar format to apache, I was really impressed by Shoutcasts alerts.
Other problems
DarkSnow/DarkIce complains if
- Passwords don’t match (obviously)
- The stream format isn’t correct mp3/ogg
- Jack is running with a different sample rate
Conclusions
Both servers performed really well, and to be honest I was really surprised it was that easy. I’d tried before and previously failed to get past the downloading anything stage. I liked them both for different reasons. Shoutcast was great for verbosity and ease of use, but produces mp3 streams which I know we all love to hate. Icecast2 produced ogg streams, which is great, but was a little more difficult to setup, and a little less intuitive.
Apart from that it all worked fine, within 1.5 hours, I had investigated and setup an Internet radio station. Now if only I had someone to listen to me.
August 25, 2007 07:53 PM
Mom turned 60 earlier this week, and her brothers and sisters (i.e.,
my uncles and aunts) are coming over tomorrow. Thomas, my brother who's
just graduated as assitant-cook (or some such, I don't know the exact
title yet), is doing the food, and I've been volunteered to help.
He got me to wear this:

Fun, isn't it?
August 25, 2007 07:51 PM
vala is a new programming language which bring performance of c++ and user-friendly of the C#.
In fact, Vala is very closed to C#in syntax. It contains even the most recent thing of C# as :
Lambda expressions
Type inference for local variables
Generics
Non-null types
And a lot of other features from basic C#:
Interfaces
Properties
Signals [...]
August 25, 2007 07:49 PM
So... what does the to do list look like these days?
Chapter 6 on AGC is currently half written. Not much is being done on it at this time.
Chapter 7 regarding hash, on the other hand, is progressing nicely. I had originally estimated that Chapter 7 would be around 50 pages. Then I realized I was wrong and estimated 100 pages. It is currently 92 pages, and I would say it is no more than 50% written, probably less. Therefore, I have to increase the estimate for the chapter once more, to 200 pages. In addition, since I've run into problems, such as "there is no written information regarding this topic", I've had to research and write at the same time. Although it is a lot of fun, this slowed the pace of what would have otherwise been a simple file out. Oh well --- better get going!
Finally, the book gained an appendix. I hope the contents will be a very pleasant surprise.
The draft is currently 449 pages, and the pdf file no longer fits in a 3.5 inch floppy. There are about 1.1 computer megabytes' worth of LaTeX source code. There are no illustrations yet.
Time to write some more now.
August 25, 2007 07:47 PM
I suppose that most of you already know about the Google Pack now including StarOffice. Recently, I read an article about it on Eweek. Here is what you could see:
Isn't it nice to see how to scare potential users with a few sentences?
August 25, 2007 07:46 PM
It's been a long time without saying any word, my project completely drained
any free time!
So it's finished, as long as GSoC goes, but Pancután still is a work in
progress. What happened is that it turned out to be a lot more
difficult that what I expected, so during the second part of the program
—when I would write all the tests— the schedule ran away. Anyway,
the tool is in a fully functional state: you can try it now and it
—$DEITY forbids— will not crash on you; but it will not be able to
spot many errors yet.
So, if you can, please install it and try it out! Bug reports are welcomed,
and code will be greatly appreciated. I've set up a debian repository with
binaries (i386) and sources where you can grab it from, with all the
dependencies, or you can check out the SVN repository. Bear in mind that it
depends on a version of libcdio that's still not in the archive, so that can
also be found in my private repository.
As expected, my work with this tool doesn't end here; I will continue
hacking on it as soon as I end my vacations; which brings me to the other
subject of this post...
Tomorrow I'll be leaving Lisbon, heading north to Porto and then the
northern region of Spain: Galiza, Asturias, Euskadi and Catalunya; ending later
in Madrid. After Spain I'll visit a friend in Paris and money and time will
determine what I'll do after that. I am very excited, I love travelling and I
really need some rest.
PS: also I moved this blog to blosxom, which I expect to heavy hack on when I get back.
Tags: Planet Lugfi, Planet Debian, Programación, Debian, Viajes
August 25, 2007 07:40 PM
It's over now, our three weeks of vacation. *sigh* But it have been very good three weeks, even if we stayed at home this year. Instead we made several day trips to the beach, to the Universum Science Center in Bremen, to the Heide-Park Soltau where I've had the opportunity to take a ride on the world largest and steepest (61°) wooden roller coaster *yeah*, to the Oceanis in Wilhelmshaven, to the Stoppelmarkt in Vechta, to the jet model air show in Alhorn, and playing miniature golf. Beside that we've done some visitings of our relatives. You see, no boredom, but lots of recreation.
I havn't been very busy writing for my blog. But I've finished the work for my next magazine article, this time regarding alternatives to fixed-price contracts. Additionally I continued my port of my Smalltalk frameworks from VisualWorks to Squeak. This work is almost finished but it has been stopped through an unexpected encounter: I've discoverd Erlang and it really fascinates me. I'll write about it in an extra entry.
August 25, 2007 07:33 PM
Dell is beginning to piss me off. I ordered the Dell XPS M1330 on the 31st of July (order number 2231338), and till date, I have not even got a estimated date of delivery, and apparently, the build has not been started yet.

After placing my order, I emailed them on the 3rd of August, and a CSR called me back, promising to give me a ESD by the 6th. There was no updates on the 6th, and after not getting any response from another follow up mail that I sent, I called up their customer service department. The CSR told me that there would be a delay of around fifteen days for the build process to start. She also told me that it would take around 3/4 days to complete the build and testing processes, and then it would take upto another 10 days for the shipping, primarily because of duty and customs clearance delays at the Indian airports. The next day (or probably on the day after), another lady called up, and told me the same thing, and promised me that I would definitely get my machine by the end of August. After that, there has been complete silence from the Dell side. Right now, assuming that the build hasn’t started yet, I don’t think I’ll be getting my notebook before mid September. Moreover, to make things worse, the price of the configuration that I ordered has gone down by nearly 6000 rupees (around 150 US dollars) in the last (almost) one month.
I was thinking of cancelling my order, since the new semester has started at college and I badly need a notebook to do all my work, but people tell me that getting a refund going to be a major PITA, as I ordered via a pre-paid card. Right now I don’t know what to do. I’ll try calling up Dell India again on Monday, and I guess the only thing that I can do right now is hope that my system will go into build stage next week :-(.
August 25, 2007 07:02 PM
Last year, I posted some ideas for applying GTD to mutt. As you may have heard, GTD is a simple methodology to help people stay on top of things. The basic idea in my post was to use an on-board X-Label editor to associate each message with a 'next action' or a 'waiting for' tag, and to store them in the respective mailboxes ACTION and WAITING. This was accompanied by a small colour configuration to highlight the X-Label field of each message, thus making it clear at all times what the next action was.
After one year of use, I can report that I am 95% happy with the system. It is simple and effective... however, not entirely eric-proof. In this post, I propose a small addition to tighten up the system and make it more resistant to my foolishness. The problem is that GTD is a heavily review-oriented system. Once you move tasks out of your head and onto some external device (e.g. a pad of paper), you must also consult that device from time to time or risk forgetting to do them. For example, one thing that can easily happen to me is that I will move messages into ACTION and WAITING and simply forget they are there.
This is where the idea of automated review comes in. What I propose a simple method for reminding yourself that you have next actions to perform, or things that you are waiting on. It consists of a shell script and a crontab entry. First the script (I call it gtd-review):
#!/bin/sh
# note: I am using the maildir format; if you are using mbox,
# you should just replace the 'find $1 | xargs $1' with 'cat $1'
function summarise () {
find $1 | xargs cat |\
sed -n -e '/^X-Label/G' -e '/^X-Label/p'\
-e '/^From/p' -e '/^Subject/p' -e '/^Date/p' |\
sed -e 's/From: //' -e 's/Date: //' -e 's/Subject: //'
}
echo '======================================================================'
echo 'ACTIONS'
echo '======================================================================'
echo
summarise ${HOME}/Mail/ACTION
echo '======================================================================'
echo 'WAITING'
echo '======================================================================'
echo
summarise ${HOME}/Mail/WAITING
And now the crontab:
@daily gtd-review 2>&1 /dev/null | mail -s "GTD review `date +%Y-%m-%d`" me@myaddress.com
I'm sure you could improve on this. For example, I would rather the dates were presented in yyyy-mm-dd format and accompanied with a friendlier description like "3 weeks ago"... but working on that would probably count as fidgeting.
Anyway, I hope others find this to be useful.
August 25, 2007 07:01 PM
Well, I suppose I have no one to blame up myself. You may recall my triumphant declaration that S3 suspend was working on my desktop machine without any quirks. Naturally, that couldn’t last. Yesterday, something happened to the machine such that it will no longer resume from S3 - and it seems to be a very low level problem - I can’t resume successfully in windows anymore, either. I tried using a custom stripped down kernel but to no avail - I get identical symptoms in all cases. When I power it back on, basiclaly nothing happens. The drives power up and the disk activity light comes on solid for a while and then goes out - nothing else happens. Looking at the kernel logs, it seems control is never returned to the OS - and that would explain the failure on windows too.
I tried out S1 and I’ve confirmed that that still works, but something has broken S3 and I can’t for the life of me say what it is. I even wiped the BIOS configuration and recreated it, wondering if something bad had ended up in the nvram - but I’m not seeing any changes.
If anyone out there has any suggestions, I’m eager to hear them - but I’m feeling very pessimistic right now.
August 25, 2007 06:45 PM
Well, I suppose I have no one to blame up myself. You may recall my triumphant declaration that S3 suspend was working on my desktop machine without any quirks. Naturally, that couldn’t last. Yesterday, something happened to the machine such that it will no longer resume from S3 - and it seems to be a very low level problem - I can’t resume successfully in windows anymore, either. I tried using a custom stripped down kernel but to no avail - I get identical symptoms in all cases. When I power it back on, basiclaly nothing happens. The drives power up and the disk activity light comes on solid for a while and then goes out - nothing else happens. Looking at the kernel logs, it seems control is never returned to the OS - and that would explain the failure on windows too.
I tried out S1 and I’ve confirmed that that still works, but something has broken S3 and I can’t for the life of me say what it is. I even wiped the BIOS configuration and recreated it, wondering if something bad had ended up in the nvram - but I’m not seeing any changes.
If anyone out there has any suggestions, I’m eager to hear them - but I’m feeling very pessimistic right now.
August 25, 2007 06:45 PM
The Brasero team is proud to announce a new bug fix release of Brasero.
Changes since 0.6.0:
- Fixed the filter crasher UI.
- Fix scsi library bug with memset with swapped arguments bug #466290.
- Workaround the main window bug #459939.
- Fixed a small bug where closed rewritable discs with data were flagged as not writable
- Don't run update-desktop-database if we're installing in a not full system.
- Added complete support for cdrkit bug #456860.
- Removed DISABLE_DEPRECATED from the Makefile to avoid problems with Gtk+ API.
- Fix 2 sec between tracks on audiocd bug #459023.
- Added more mimetype to file chooser filter.
- Added support for libisofs 0.2.8 but it requires at minimum 0.2.4 version.
Thanks to everyone who helped us to spot, fix bugs, provided patches, artwork or translations.
August 25, 2007 06:34 PM
We're just back home after spending two weeks enjoying the wonders (and
heat and forest fires...scirocco, mamma mia!) of Sicily.
We had no network at the hotel and Italian (or sicilian, or just Cefalù's) Internet Cafés just
suck (only a few computers running Windows while I forgot my special "Putty
key" and no way to connect my laptop).
So, 8000 mails to read (plus 6400 spams gently sorted by CRM114). I'll be
busy for the next few days and I cross my fingers for no disasters on my
packages.
...ah, apparently a KDE transition is in progress if I believe the output of
"aptitude dist-upgrade" on my laptop...:-)
August 25, 2007 06:20 PM
To round off the weekend, here’s a very cool Prototype-based solution for creating context menus:
Description
Proto.Menu is a simple and lightweight prototype-based solution for context menu functionality on your page
Features:
Lightweight: ~2 KB (~1.5 KB minified)
Unobtrusive: Plays nice with JS turned off, uses its own namespace
Cross-browser: Full A-Graded browsers support (Opera is supported through Ctrl + Left [...]
August 25, 2007 06:15 PM
For a project of mine, I had the dire need of getting the Unicode character ⚰ (U+26B0 COFFIN) in a PDF file created with pdflatex. I could find no latex package that provides this or a similar character, so I had to do it myself.
There are some HOWTOs on how to use a TrueType font in pdflatex, but all of them thought that you are trying to use the font for your regular text, not just for the one strange glyph. So based on these, here is what I did:
- Found a TrueType font containing the symbol. In my case, DejaVuSans.ttf, which is based on Bitstream Vera Sans.
- Created the encoding file burial.enc. Note that almost all characters are unmapped, and just the 1 maps to our character.
- Created the needed tfm file using the commands ttf2afm /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf -o burial.afm -e burial.enc; afm2tfm burial.afm -c burial.enc
- Wrote a t1burial.fd file. Note the prepended “T1”, which reflects the character encoding (whatever that is).
- Finally wrote a simple package (burial.sty) which provides the \burial command to show the glyph, by selecting the font and writing the character on position 1.
- Now I add \usepackage{burial} to the preamble of my TeX file and use the \burial command wherever I need it.
All in all you need to keep the files burial.enc, burial.sty, burial.tfm and t1burial.fd in the directory of your TeX file. I did not check how to install the files globally.
If you think this is done horribly wrong, please feel free to tell me how it should be done instead.
August 25, 2007 06:11 PM
Although I had other things to work on, I couldn’t resist to make an OpenGL library viewer for ShareMedia, my RCP based media management and sharing application. This was really easy : I only had to reuse the OpenGL full screen viewer I made w/ LWJGL some months ago and thanks to RCP extension points, it tooks less than 1h.
Work is still necessary to fix some small remaining issues and enable media selection using the mouse. But, hey, it already looks great
This library view will be available in the next release of Sharemedia (probably next week).
August 25, 2007 05:56 PM
It was perhaps inevitable - having turned the geospatial Earth
into an animated, zoomable extravaganza, Google has turned its gaze
skyward. With Google Sky, the tens of thousands of Hubble based
images (as well as those of more prosaic Earth-bound...
August 25, 2007 05:46 PM
The 0.1 release went quite well, but as always we never did manage to iron out all of the problems, even introducing new ones close to completion. As a result of this I’m currently wading through the bugs and preparing 0.1.1 this has involved adding some minor features and fixing outstanding issues that we already [...]
August 25, 2007 05:37 PM
Most of my writing inside the browser is done with the combination of the It’s
All Text extension and
Vim. During this writing, I use words whose meaning I know vaguely but don’t
know the exact usage, and in such cases, I usually open a new browser window and
look up the meaning of the word in an online dictionary. This process of looking
up the dictionary meaning was getting rather tedious, so I wrote a small Vim
plugin today to do this job with a simple command.
To use the plugin, first install
BeautifulSoup. Then, get my
lookup.vim script and
copy it to ~/.vim/plugin/.
Next time you use Vim, just place your cursor over any word and run :Lookup,
and you’ll see something like this:
Since, this is the only command starting with L on my Vim installation, I just
end up running :L. Of course, you can always create your own keyboard
shortcuts to make it easier.
© Swaroop for Swaroop C H, The Dreamer, 2007. |
Permalink |
Add your comment
Want more on these topics ? Browse the archive of posts filed under Vim, Python, Tech.
August 25, 2007 05:35 PM
SGML is an ISO standard to define markup standards. Two of its derivatives are HTML and XML (XHTML is an application of XML itself).
The standard library provides a lot of modules to parse HTML and XML. In my benchmark today I decided to consider only the ones oriented to HTML (and SGML since it’s a kind of superset) cheating a bit and letting them handle XML also. I know it’s not really fair but I’m a free man so let’s go on.
To do the benchmark I obviously needed some data so I wrote a script to extract the HTML URLs (homepages) and XML URLs (feeds) from the OPML exported by my feed reader.
The script is very simple and straightforward: loads the OPML file in cElementTree, scans the outlines with XPath-like syntax and for each outline downloads the related URLs storing the content in two separated directories.
Let me say that cElementTree is fast, really really fast!
Now I have 454 files full of content: 227 HTML pages, 227 XML feeds. Roughly 22 mega bytes of content to feed to the parses. Let’s presume a lot of that content isn’t even valid according to the specific standards (HTML, XML, Atom, RSS). Anyway, I don’t have to validate the content so I just don’t care.
The modules considered for this benchmark are: HTMLParser, sgmllib, BeautifulSoup and sgmlop. I ignored all the plethora of XML only libraries because there are plenty of benchmarks out there and I ignored htmllib because it sits upon sgmllib so there’s no point in benchmarking it too.
This bench does not do anything with the content, just feeds it to the parser.
Any kind of error is collected in a list to let me know how many errors the parsers encounter.
The data is preloaded in memory so no time to open the file descriptor and read the content is measured. Every parser has been fed with HTML and XML content separately.
The machine used is a Core Duo 2GHz MacBook with 2 GB of RAM. Python’s version is 2.5.1.
These are my results:
rhymes@groove ~% python sgmlbench.py
HTMLParser, only HTML - time: 5.1607260704, errors: 37
HTMLParser, only XML - time: 3.56549191475, errors: 98
Total: 8.726218
sgmllib.SGMLParser, only HTML - time: 7.36616611481, errors: 1
sgmllib.SGMLParser, only XML - time: 4.22875499725, errors: 0
Total: 11.594921
BeautifulSoup, only HTML - time: 23.7593009472, errors: 5
BeautifulSoup, only XML - time: 10.1111578941, errors: 0
Total: 33.870459
sgmlop.SGMLParser, only HTML - time: 0.473984956741, errors: 0
sgmlop.SGMLParser, only XML - time: 0.443637132645, errors: 0
Total: 0.917622
Draw any conclusion you might like.
You can find the archive containing the whole data including the scripts online.
August 25, 2007 05:25 PM
my thought experiment on delayed-apply dialogs yesterday got quite a strong response. the response was generally to the effect of “please, oh god, no!“. that’s sort of what i expected :)
the reason i was thinking about this at all is because jon mccann had sent me an email saying that he wanted to use dconf for his gdm rewrite. after a talk on jabber with him i realised that dconf currently has no support for delayed-apply — it has been engineered under the assumption of instant-apply.
jon’s problem is that changes to gdm config might involve starting or stopping x servers and the like. what he really wants is to get a single change notification for a bunch of changes that the user has made (instead of one at a time). he’s not the first person to have requested this. lennart mentioned something similar.
this got me thinking. the solution i came up with was to support an idea of a “transaction” on a given path in the dconf database. there were to be 4 apis for dealing with these transactions:
dconf_transaction_start (const char *path);
dconf_transaction_end (const char *path);
dconf_transaction_commit (const char *path);
dconf_transaction_revert (const char *path);
these “transactions” would be implemented in a very trivial (but perhaps confusing way):
if a process had a transaction registered for a given path (say “/apps/gdm/”) then:
- any writes to a path under it would redirect to /apps/gdm/.working-set/
- for example, writing to /apps/gdm/foo goes to /apps/gdm/.working-set/foo
- any reads from a path under it would redirect similarly, with fallback
- for example, reading /apps/gdm/foo would first try to read from /apps/gdm/.working-set/foo and then from /apps/gdm/foo if the former is unset.
all redirection is done on the client — not the server. the set requests that the client sends to the server are actually explicitly for the keys inside of “.working-set”.
if two people open transactions on conflicting paths then, well, you lose. you could easily get into a situation where /apps/gdm/foo is represented by both /apps/.working-set/gdm/foo and /apps/gdm/.working-set/foo. too bad. lock on the same resource if you require sanity.
commit would mean “copy the all of /apps/gdm/.working-set/ down to /apps/gdm/ and destroy the working set”.
revert would mean “unset everything in /apps/gdm/.working-set/” (ie: destroy the working set).
the idea is that a delayed-apply dialog box would open a transaction on startup and close the transaction on exit. it would continue to read and write keys directly to /apps/gdm/* but because of the open transaction its reads and writes would actually be redirected to the working set. the gdm daemon would see no changes on the actual keys until a commit occured.
the question that inspired yesterday’s blog entry: what is the lifecycle of the working set?
consider a problem with delayed-apply dialogs: what happens if two of them are open? in the instant apply case this is easy: the two dialog boxes affect each other in realtime. if you check something off in one of them then the other updates straight away. for delayed-apply this is very much more difficult.
if the first user applies, do the settings of the second user get wiped out? does the second user ignore the first user’s changes and write their own set over top? do we have some complicated merge operation? do we ask the user what they meant? insanity lies this way.
with the working set idea, the two dialogs would simply both be in on a sort of “shared transaction”. they would see each other’s changes in realtime but the changes would not be visible to gdm until one of them called commit(). it would be impossible to get into a position where you’d have to think about merging inconsistent sets of changes. pretty cool stuff.
under this mode of thinking, obviously if user1 opens the dialog, makes some changes, then user2 opens the dialog (and sees the unapplied changes made by user1) and then user1 closes the dialog, user2’s dialog would still contain the changes in progress.
so the lifecycle of the working set is at least as long as one person has a dialog open.
it’s easy (and probably fitting with existing user expectations) to make the lifecycle of the working set exactly as long as one person has a dialog open. to do this requires that the dconf server track processes and keep some sort of a refcount on how many people are interested in the working set. when the last caller disappears then the working set is automatically destroyed.
it’s obviously a very simple change in code, though, to make the dconf server fail to destroy the working set on the exit of the last dialog. this is what gave me the idea of having a working set of changes that stuck around after you dismissed a dialog.
it’s also a very simple change in code to cause the dconf server to deny the second process’s attempt to open a transaction when a current transaction is open. this sidesteps the whole “two dialog boxes open” problem rather effectively, but is far less fun if the code that is already written is perfectly capable of handling it.
the most useful affect of my blog entry is that it immediately started a discussion on #gnome-hackers. a few minutes after posting, owen asked me if i was around for the whole “72 buttons in the gnome 1.x control centre” mess. havoc joined in with the beating me about the head. together they made some very good points:
- first and foremost, users expect their working set of changes to be tied to the dialog. when the dialog closes they go away. multiple dialogs don’t share the working set. the working set is something that is private to that one little window.
- the multiple-dialogs problem is best solved with a single-instance-app mechanism
- the multiple dialogs thing isn’t even too much of a problem. the last person to click apply wins. this is what most people expect anyway.
- an undo button isn’t useful enough to be a part of the ui (just close and reopen for those rare circumstances) and an apply button is very questionable on the same grounds
there’s