Search Results: "xam"

6 April 2009

Biella Coleman: Does the patent system make you queasy?

Great research opportunity for PhD Students out there.
Peer to Patent Summer Research Fellowship
New York Law School
Summer 2009 Background
Peer to Patent is the groundbreaking program developed by New York Law School and run in cooperation with the U.S. Patent and Trademark Office and the United Kingdom Intellectual Property Office, along with the assistance of a number of private stakeholders. It harnesses the power of citizen-experts to assist patent examiners by searching for, identifying, and annotating prior art relevant to pending patent applications. A first Peer to Patent pilot was launched in June 2007. During the first year the project participants (peer reviewers) assisted in the prior art searches on 40 patent applications, generating 173 items of prior art. These items of prior art were the basis of rejection in over ten of the patent applications considered. In June 2008 the pilot was continued for a second year, and was recently extended to encompass a pilot program in the United Kingdom. Research Issue
Although Peer to Patent has attracted over 350 active peer reviewers, the project team has little or no idea as to the motivations that cause these individuals voluntarily to contribute their substantial time to the project. The average reviewer spent approximately six hours searching and annotating individual patent applications. The project team also does not fully understand the best means for attracting additional peer reviewers to the project. In order for the project to scale to larger volumes of applications, both of these points need to be understood and addressed. More generally and theoretically, the motivations of citizens in producing material for governmental use are not well-understood. This fellowship seeks to provide an account of this sort of activity, as well as generate a design for a controlled study of incentive mechanisms for these sorts of activities. Research Activity
The selected fellow will conduct interviews among a meaningful number of currently active peer reviewers to elicit their motivations for participating in the project and contributing their time. The fellow will review the non-profit motivation literature to provide a number of alternative methods of reward to determine whether any or all of them would induce the participants to continue their participation, increase their participation, encourage others to participate, or cease their participation altogether. Potential rewards may include: (a) basic recognition; (b) monetary interest; (c) cash awards; (d) prominent public recognition; (e) some other form of reward; or (f) no reward whatsoever. The fellow will develop a survey to be conducted among a wider segment of active and potential peer reviewers to test for validation of the data gathered in the initial sampling. From the results of the initial sampling, literature review, and survey, the fellow will develop findings on which to base an incentive program to attract and retain peer reviewers. The fellow will develop an experimental design to test the efficacy of each of these incentive possibilities. Term
The fellowship will commence on or about June 1, 2009 and will continue until on or about August 31, 2009. The fellowship is a full time position for the three months stipulated; but this is open to negotiation for an exceptional candidate.
Compensation The fellow will receive a monthly stipend of $3,000 (based on full time work status). Job Qualification
It is expected that the fellow will be pursuing (ABD) or have completed a PhD in psychology, economics, policy, or communications; or some other relevant field involving the motivation of content producers. Application Deadline April 30, 2009. Application Procedure
Applicants should send (1) a letter of application detailing their qualification for the position, (2) a resum , and (3) a list of three referees, to: Ms Naomi Allen Administrator, Institute for Information Law & Policy New York Law School 57 Worth Street New York NY 10013 Naomi.Allen@nyls.edu Questions relating to the scope and nature of the fellowship can be directed to: Prof. Mark Webbink,
Director, Center for Patent Innovations
New York Law School
mhwebbink@yahoo.com Prof. Dan Hunter
Director, Institute for Information Law & Policy
New York Law School
dhunter@nyls.edu New York Law School is an equal opportunity employer that encourages excellence through diversity. Women and minority candidates are encouraged to apply.

5 April 2009

Russell Coker: Fads and Internet Services

Richard Glover has written a polemic about fads on the net [1]. His points are essentially good, but he does over-reach them a bit (which is part of the polemic style) and he also seems a little unimaginative about the future of technology. He starts by suggesting that Twitter [2] is a fad. Twitter has grown in popularity very rapidly, and I believe that the company is not guaranteed to last forever (the business model could fail or a better implementation of the concept could take the users). But the basic premise of Twitter (SMS length messages being published on the net in a similar manner to blog posts) is something that has been proven to work well. So even though I have not felt inclined to use Twitter (either as a reader or a writer) I don t think that the class of service will ever go away. He also cites an example of watching TV news on a mobile phone. While I believe he is right about that not being a viable business, it s because TV news itself isn t a great thing. Before the Internet was commonly used the only ways of getting news of something that happened in the last few hours was via TV or radio, if you want pictures with that then TV was the only option. If you wanted quality news (in-depth coverage, insightful analysis, and a depth of detail) then you were probably out of luck, but the best option available to you was the the newspaper. Watching a TV news segment on a mobile phone (or on a PC connected to the net) is not effective. What I want is a newspaper that is updated as soon as events happen and which contains full color pictures and video. There are a number of web sites which provide this service, The Sydney Morning Herald (which employs Richard Glover) [3] is one example. I think that the current fad for mobile phone TV is like the fad for WAP [4]. Many years ago I worked for an ISP that installed a WAP server, one of my duties was to keep the WAP server running. Everyone who knew anything about technology knew that the project was going to fail, WAP phones were horribly expensive (you could expect to spend an extra 200 guilders or more to buy such a phone) and the features of WAP were not particularly exciting. Also requiring that everything be re-written for WAP was just insanity. The problem with the WAP fad was managers who knew nothing about technology making technical decisions. I m sure that the TV on mobile phone fad is driven by managers in TV companies that are greedy for more revenue opportunities and don t stop to think about the implications. I might watch a news show on free TV, but I m certainly not going to pay by the minute to watch it on my mobile phone. Instead I can just go to a web site such as the SMH and read news items, see pictures, and even watch the occasional video (most TV news doesn t really require any video - they just re-enact scenes or use stock footage to have something on screen). Finally he makes a sarcastic reference to chocolate fondue. That reminds me, someone gave me a fondue set years ago that I haven t used yet. I ll have to make a chocolate fondue! For those of you who live in Melbourne, the restaurant of the Melbourne Swiss Club [5] offers cheese fondue for the main course and chocolate fondue for dessert. Fondue is still with us!

3 April 2009

Joachim Breitner: Bejeweled AI in Haskell

The German online magazine FreiesMagazin has started a programming contest yesterday. The task is to write an AI for a two-player bejeweled-like game, where the stones that you can match cause your opponent to lose live points.This evening I thought that this would be a nice finger exercise in Haskell programming, and indeed it was. Most time was spent writing the code that communicates with the game supervisor (via text files) and that re-implements the game logic to simulate the next steps. The example code is in C++, so I had to do it again, but it s rather short: 123 lines, consisting of 8 lines for the module header, 26 lines for the data definitions, 16 lines for in- and output and 73 lines for the actual rules of the game.Writing the rest was really easy. 15 lines use a generic Haskell module to implement alpha-beta-search in Strategy.hs, and 6 lines of code to glue it all together. And I m sure one can do better...The program wins against the demo AI. By choosing other algorithms provided by game-tree might even improve that. Feel free to try it out!My code is available in a darcs repository (browse) under the GPL2 or later and I invite everyone to use it as a base for contest entries. If you want to use Haskell, you can just replace the Strategy.hs and do not have to re-implement the game logic. If you submit such a program, just make sure you credit me appropriately. Also, as always, patches are welcome. If the code is too slow for your taste, you can decrease the depth parameter in Strategy.hs.

30 March 2009

John Goerzen: Kindle 2: How s It Going?

It s now been almost a month since I got my Kindle 2 and wrote about my first impressions of it. In that amount of time, I figure I have read, on the Kindle, the equivalent of 1500 to 2000 printed pages. I ll start with my personal reactions to the device, and then move on into some less subjective observations about it. What I ve Used It For To give you a quick idea of what I m reading: The Gut Reaction I want everything to be available on the Kindle, and I want to read everything on it. Whether that s just some excitement at a new device (still possible after a month, I guess), or something more lasting, I m still a little unclear about but I suspect it s something more lasting. I have read far, far more since I have had the Kindle than I had for quite some time prior, excepting a certain Hitchhiker s Guide to the Galaxy marathon one Christmas vacation. This leads me to think that the Kindle s main competitor isn t the Sony PRS-505, but rather the XBox, Wii, Netflix, and Hulu. Not that I watched that much TV to start with, but I haven t even been keeping up with the Daily Show since I got the Kindle. Not only that, but it prompted me to go to the local used bookstore (all proceeds go to charity) and buy a paper copy of David Copperfield for $10, so Terah could read it with me while I reread it on the Kindle. So it seems that Amazon s stats which show that people tend to read more once they get the Kindle, and don t cut down on paper book buying are about right in my case. Plus there s the fact that I ve loaded up the Kindle with over a hundred free books of all sorts of descriptions, some from Amazon s own free book catalog (extensive in itself), and others from Feedbooks, Gutenberg, or other places. That s taken up some time itself, and I now have achieved what I tend to achieve with all devices like this (iPod, MythTV, etc): more material than I can ever possibly get through. Why I Like It So, what exactly IS it about this thing that I like? Part of it has to be the size of the device. Granted, I wish the screen were larger, but even with the leather case, the device is a pretty nice size. I find that I keep two or three books that I m reading at the top of my list, and it s great to be able to carry around a single device and be able to select from a book as the mood strikes. Part of it is the built-in dictionary and search tools, which I ve already discussed. In the end, Amazon s execution of the concept is just done really, really well. It doesn t require some sort of proprietary Windows app like Sony s reader does. It doesn t even require a PC at all. It acts as reliable as a book, and that s something. The highlight/clippings feature is also pretty nice. You can highlight a section of text, which then causes it to be rendered with an underline on-screen just like you can underline something in a book. Better yet, when you re reading the book, you can call up a list of all such passages (as well as your bookmarks, etc), see them with an excerpt of text, and jump directly to them. No more need for millions of tiny pieces of paper marking a page that contains a marking. Even better than that, the Kindle creates a .txt (yes, plain text) file in the documents/ directory for you. Each time you bookmark or highlight a passage, it adds a little summary of the passage to that file, as well as information about the location of it. For highlights, the summary is the content of the highlight itself. So if you re going to go blog about the book later, there are a bunch of ready-made quotes you can cut-and-paste later. You can read that file both on the Kindle and on a PC. Sweet. So, I guess I would say that the Kindle makes it easier to read complex texts, and fun to read lighter ones. Availability of Content There are several ways you can get content onto the Kindle. The first, of course, is Amazon s own Kindle Store. Quite the clever bit of engineering there. You hit buy , and generally by the time you can walk over to the Kindle and pick it up, the book s on it, thanks to the integrated cell-network wireless modem. Subscriptions to newspapers and magazines work similarly each issue is automatically delivered in the middle of the night. However, it seems that the magazines such as New Yorker and Atlantic aren t exactly complete replicas of the print editions for some reason. The pricing of Kindle content is generally cheaper than paperback editions of books, but not by much. I think it should be more heavily discounted than it is, and part of that may be due to the large commission Amazon takes on things. Ironically, Amazon also has a tremendous array of free public domain and copyrighted books, and an equally staggering number of books available for under $1. For the classics, and other things out of copyright, my favorite place to turn is Feedbooks. They ve got ebooks available for download for just about any format, including Kindle, and generally do a good job of providing a real linked Table of Contents and the like. Kindle can read DRM-free content in .txt or .mobi format. I ve also built my own ebooks for the Kindle using Mobiperl. It takes an ePub source directory and makes a MobiPocket file out of it, which can be installed on the Kindle directly. For things I find on Project Gutenberg, GutenMark is a nice tool to create a good-looking HTML representation. I also use quote-fixer to help with my other pet peeve: straight quotes and lack of em-dashes on a device that can, and should, display both. Screen I m still of two minds about the screen. On the one hand, it doesn t give me eyestrain like reading on a PC, laptop, or cellphone screen does. Also, it looks remarkably book-like. A well-prepared Kindle etext feels so professional on the screen, so real, so lovingly-prepared, that it s fun to read. The Feedbooks David Copperfield is an excellent example of this, as is Houston Smith s Why Religion Matters. There are several things I don t like about the screen. One is that, while reading a book, it leaves a margin around the edge of the text. I can t figure out why it doesn t use all the available screen real-estate, especially since its built-in web browser does. Another is that, while not terribly reflective, it is still somewhat reflective, and glare from the sun or a light at a bad angle can make the screen unreadable unless you turn it a bit to a different angle. But my biggest gripe about the screen is that it s not as high-contrast as I d like. Still, I very much enjoy the Kindle, so I guess it s not as huge a problem as I think it could be sometimes. Pet Peeve I get really annoyed when I download content for the Kindle and discover that it doesn t have a linked Table of Contents (meaning I can click on a chapter and go directly to it). I m even more annoyed when it uses straight typewriter quotes instead of the angled typesetter s quotes or smart quotes . The Kindle is capable of beautifully rendering them, as well as things such as em dashes, and when I see what is obviously some cheap attempt at a conversion of some ancient ASCII document, rather than a proper attempt to make a good-looking book, I get annoyed. And so it was that I requested, and got, a $0.80 refund for my purchase of Sherlock Holmes: The Complete Collection and instead paid $3.60 for The Complete Sherlock Holmes. Yes, I could have spent a few hours converting all these from Gutenberg, but $3.60 is so cheap that it wasn t worth it. Customer Service Amazingly, Amazon s customer service for the Kindle is not their usual Asian form letter service. It s Americans, who seem to read, understand, and care about problems. I was pleasantly surprised. Too bad the rest of Amazon doesn t learn a thing or two from it. Conclusion I think the Kindle is worth it. It will pay for itself exceptionally quickly for people like me that don t live anywhere near a large library, and enjoy reading out-of-copyright material. Even if it doesn t pay for itself that quickly, the convenience of being able to carry several actively reading books with you on a single small device is pretty nice. No more pile of books in my suitcase for travel.

Gustavo Noronha Silva: WebKitGTK+ 1.1.4 released!

So, we have been able to keep up with releasing every two weeks. I can t say I emptied my wishlist for this release, but we did get a good load of good new features, and bug fixes. Go get it, and come back to read about what s new. Those of you who hate when you middle-click a link and it opens in another window will be glad to know that this version clears the only lasting missing piece of API required to allowing the browser to concede your wish. If you get irritated with weird scrolling behavior when using the keyboard, this release also fixes most of the remaining pet peeves, with a proper GtkBinding implementation for our WebView, done by Xan. Font rendering has also received some much needed love, and we have chased and killed most of the problems with WebKitGTK+ wanting to download stuff instead of displaying them because of bad headers provided by the server. There is still work to be done in this area, but most of it will probably go into libsoup, instead. You may have heard about HTML5 media tags support. Well, we have sharpened some of the rough edges of the code that already existed, making it able to play some basic ogg examples, such as the ones used by the Mozilla guys for testing. Now on to make 1.1.5 rock even more!

Biella Coleman: Pure Data: FM Sprint in NYC and Berlin

FLOSS Manuals is proud to announce a three day book sprint for the Pure
Data FLOSS Manual. This sprint will take place simultaneously in New
York City and Berlin from Saturday 4 April to Monday 6 April. The Pure Data FLOSS Manual: http://en.flossmanuals.net/puredata There are possibilities to participate in person by coming to one of the
locations below, or remotely via the IRC interface built into the FLOSS
Manuals editing interface. Video conferencing may take place between the
venues as well. To participate, create a login at the PD FLOSS Manuals page: http://en.flossmanuals.net/bin/login/TWiki/WebHome?origurl=/bin/view/PureData/Introduction&skin=floss2 Discussion may also take place in the Pure Data mailing list: http://lists.puredata.info/listinfo/pd-list If you are in New York or Berlin, please join us at these locations! NEW YORK CITY * Contact: Hans-Christoph Steiner: hans@eds.org 718 360 4872 * Location (bring ID, you ll need to sign in): ITP/NYU Conference Room
721 Broadway, 4th Floor
NY, NY, USA
email me or call in case you can get past security: 718 360 4872 * Schedule:
Saturday: noon-midnight
Sunday: 10am-midnight
Monday: 9am-5:30pm (if we go later, we ll be in a different room) BERLIN * Contacts Derek Holzer: derek@umatic.nl +49 176 2812 5845
Adam Hyde: adam@flossmanuals.net +49 15 2230 54563 NK
ElsenStr. 52 (2.Hof)
Berlin, Germany
+49 176 20626386
http://www.myspace.com/enka52 * Schedule:
Saturday: noon-late
Sunday: noon-late
Monday: noon-late
SOME BASIC GUIDELINES: * This manual should address the widest possible user-base. Therefore,
objects which are cross-platform and in Pd Extended should have priority
over other solutions.
* Tone should be neutral and informative. Remember that humor doesn t
always translate well! ;-)
* Our readers are assumed to have little to no background in either
computer programming or digital signal processing, which much of the
existing documentation takes for granted. That s why this manual is
necessary! Please keep this in mind when explaining things.
* Please use existing the Audio Tutorials, Installing and Getting
Started chapters as a style guide.
* Keep the chapters small and self-contained. Ideally, chapters from
this manual could even be remixed into other FLOSS Manuals.
* Explain any jargon or technical terminology in-line the first time you
use it, and direct the reader to appropriate other chapters/manuals when
necessary.
* Please enter any new technical terms in the Glossary (we need to agree
on global format for glossary terms!).
* Screenshots:
Resolution? (Adam and I will work on this on Monday)
Please upload any complex patches, and make sure to label screenshot
with appropriate filename (see Audio Tutorials for examples)
Please keep explanatory text in the manual rather than only in the
screenshot, so that it can be text-searched by readers.
Please use anti-aliased fonts!
* All the chapters are moderated by Derek Holzer & Adam Hyde. Your
contributions will only be visible in the editing section until they
meet these guidelines, and after that they can be published to the main
page. Please let us know when your chapter(s) are ready for publishing
and we ll look them over. EXISTING CHAPTERS WHICH NEED HELP: # DataflowTutorials this section needs a lot of help in terms of style and content!!!!!
Tone is very informal, which doesn t help convey the information.
give titles to screenshots so that readers can tell which patches
match which images (some do this, some don t )
Math : examples/discussion of [expr]???
Order of connecting and [trigger] : explain the patches in-line,
rather than only in comments in screenshots (so that text is searchable,
copy/pasteable..)
Luka s screencaps are very aliased, to the point where you can t read
the ~ in the object names. Should they be redone at new resolution or
with antialiasing?
Possible janitors: Derek Holzer, Adam Hyde # PureGlossary format of object names = [italics in square brackets], must be
formatted correctly
format of glossary words in general text: we don t have one yet. Bold
on first use in chapter maybe? Needs formatting all through text. # ListofObjects incomplete, please add more libs
maybe more discussion of externals needed as well
formatting of object names? # PureLinks always welcome MORE CHAPTERS/SECTIONS TO DO (+ suggestions?): * GEM (in order of importance)(Derek can provide example patches for
much of this)
Basic VJ mixer (2 x
[gemhead]-[pix_film]-[alpha]-[colorRGB]-[pix_texture]-[rectangle] with
an alpha-crossfader)(+ platform specific codec info)
Live camera input (same as VJ mixer but with [pix_video], with
platform specific info on USB/firewire inputs what works & what doesn t)
VJ effects (using the various pix objects)
Basic 3D (that actually does something interesting, rather than just
show a sphere or a cube)
Basic movement tracking w/ [pix_blob]
GEM/video optimization/troubleshooting tips (see Troubleshooting
section of existing Pd FLOSS Manual) * MIDI tutorial
hardware:keyboards, sliders, etc,
objects: all MIDI objects
routing: input + output to/from devices or other programs * Patching strategies
Reusable abstractions ($0 etc)
GoP + other GUI creation strategies
Preset saving systems (Frank?) * Audiofile manipulation (Derek can provide examples, possibly also work
with www.pd-tutorial.com with permission?)
sfread, readsf, sfplay, etc
tables + tabplay, tabread, etc
oneshot playback without/with pitch shifting
looping without/with pitchshifting
granulation without/with pitchshifting
Extended objects ([xplay~], [xgroove~] are these stable? In my
experience, no ) * Realtime audio effects tutorial
delays: single tap, multitap, pitch-shifting, tuned comb filter, etc
filters: [hip~], [lop~], [bp~], [moog~], IEM lib filters
[vcf~]/[bp],[hp],[lp], difference between audio signal and message
controlled, building with ggee objects [bandpass],[llowpass],[highpass]
or [biquad~] (resources for coefficients?) * Sensor tutorial (HC?)
[hid]/[hidin]/[pduino]
simple circuit diagrams + photos (voltage divider examples:
potentiometer, photoresistor, etc)(hacked gamepads) * Networked data
netsend/netreceive
OSC
flash server
shell
python externals
others? * PDP/PiDiP
configuration info for OSX (+ poor performance disclaimer!)
basic VJ
networked streaming etc * Procedural Audio tutorial? (Andy?) * RJDJ tutorial? (Frank and the gang?)

28 March 2009

Ingo Juergensmann: Ubuntu, wireless and hex garbage in resolv.conf

For some days now I can't use my wireless on my Ubuntu (jaunty) laptop anymore. For whatever reason the domain-search option of my dhcpd causes the dhclient on the laptop to interpret the search list as hex values. For example I've the following line in my dhcpd.conf:

option domain-search "hro.localnet", "os.localnet", "localnet";


This line leads to the following on the client:

search hro.localnet 3:68:72:6f:8:6c:6f:63:61:6c:6e:65:74:0:2:6f:73:c0:4:6:62:65:72:6c:69:6e:c0:4:c0:4


So, my current work around is, to comment the option domain-search line out of my dhcpd.conf and to include a "append" line in my dhclient.conf - unfortunately I've to add this line on all clients I use.

Alastair McKinstry: Pkg-config and Modules

At ICHEC one of our tasks is to help users build their software on our supercomputers. Mostly we have to change paths, etc. in code bases that are used by a handful of scientists, and we don't want to exacerbate the hard-coded path problem. We also have multiple versions of certain libraries and compilers installed, which we select using modules: to do this, you select your software environment with e.g.
$ module load intel-fc/11.0.082  netcdf/4.0-intel
This selects the compiler version, and library version. Then, this places appropriate paths in $PATH, $LD_LIBRARY_PATH. While this is useful for selecting, eg. compilers, its often not great for many build processes that expect library paths, etc. hard-coded. I also dislike adding random environmental variables: it loses the Single Point Of Truth that describes the configuration. So I've come up with the following pattern. First, record the modules used (eg. library version) in config.log if configure is used. To do this, add the following to the autoconf file or system headers:
# AC_MODULES_OUTPUT
# -----------------
# Check if the system runs 'modules', and if so, record the modules environment in the config.log
AC_DEFUN([AC_MODULES_LIST],
[AC_CACHE_CHECK[modules output if present],[ac_modules_output],
(ac_modules_output= module list 2>&1 )
if test $? eq 0; then
 AC_MSG_RESULT([Output from 'module list' was:\n $ac_modules_output])
fi
])
Secondly, For all packages, ensure that a pkgconfig package file exists. For example, we have multiple MPI implementations on our SGI system. For MVAPICH, we have a modules file:
stokes2:~$ module show mvapich2-intel
-------------------------------------------------------------------
/ichec/modulefiles/mvapich2-intel/1.2p1:
module-whatis    MVAPICH2 1.2p1 (Intel 11.0.074) 
conflict         mvapich2-gnu mvapich2-intel 
prepend-path     PATH /ichec/packages/mvapich/1.2p1-intel/bin 
prepend-path     LD_LIBRARY_PATH /ichec/packages/mvapich/1.2p1-intel/lib 
prepend-path     MANPATH /ichec/packages/mvapich/1.2p1-intel/share/man 
prepend-path     INCLUDE /ichec/packages/mvapich/1.2p1-intel/include 
prepend-path     CPATH /ichec/packages/mvapich/1.2p1-intel/include 
prepend-path     FPATH /ichec/packages/mvapich/1.2p1-intel/include 
prepend-path     PKG_CONFIG_PATH /ichec/packages/mvapich/1.2p1-intel/share/pkgconfig 
-------------------------------------------------------------------
We add a file mpi.pc to the PKG_CONFIG_PATH for each MPI implementation. So, mpi.pc looks like:
# MPI pkgconfig file for mvapich2-intel
# Normally only used to get variables $prefix, etc.
prefix=/ichec/packages/mvapich/1.2p1-intel
exec_prefix=$ prefix 
libdir=$ prefix /lib
includedir=$ prefix /include
Name: mpi
Description: netCDF libraries, include files and development tools
Version: 1.2p1
Libs: -L$ libdir   -lmpichf90 -lmpich -lpthread -lrdmacm -libverbs -libumad -lrt
Cflags: -I$ includedir 
This then means we can add the following small patch to our target software (in this case a climate code COSMOS):
 #########################################################################
 #
 #  MPI message passing root directory of the chosen compiler
 
+  # Get default MPI ROOT from the pkgconfig file if possible
+  pkg-config mpi --variable=prefix 2> /dev/null > /dev/null
+  if [ $? -eq 0 ]; then
+    MPIROOT= pkg-config mpi --variable=prefix 
+  fi
+
   if   [ $compiler = ifort ]; then
     export cc=cc
     if [ $CHAN = MPI2 ]; then
-       export MPIROOT=/sw/sarge-ia32/mpich2-1.0.4p1-pgi
+       export MPIROOT=$ MPIROOT:-/sw/sarge-ia32/mpich2-1.0.4p1-pgi 
     elif [ $CHAN = MPI1 ]; then
Such a patch is generic enough to be useful outside our institution, and means the code can build out-of-the-box on many systems. Now to add mpi.pc to Debian ... Tags , , , ,

David Welton: Software Economics - Public Goods

To look at the economics of open source software, you have to start with the economics of software as a category, both proprietary and open source. Note: it should be perfectly obvious to everyone that open source software works, and works quite well for some things. This article is more about understanding the how and they why. Just to avoid any confusion... If you look at software as a product, it has a couple of defining characteristics:
  • It's difficult to keep people from sharing it. Not impossible, but not easy, either. It was already doable in the days of floppy disks, but with the rise of the internet, it has become nearly effortless. This means, in terms of economics, that it's "non excludable" - it's difficult to keep everyone from enjoying it once you've created it and started to distribute it.
  • If you give a copy of a program to a friend, it in no way detracts from your own use of the program. Quite the contrary, it may even make your use of it better, if, say, your friend discovers how to use a cool feature, or writes a handy extension. This is different from traditional goods like bicycles. If you loan me your bicycle, you can't use it to get around. In economics, things like software (or radio or over the air TV) are called 'non rivalrous' goods - many people can take advantage of them without ruining them.
What do you get when you combine something that's "non excludable" and "non rivalrous"? In economics, these are known as "public goods": http://en.wikipedia.org/wiki/Public_good - read the whole thing if you have a few minutes, it's what I'll be talking about. As per the article, "The Problem" as it were, is the free rider problem. Let's stop and look at a contrived example: Bob is an ex-dentist and really knows what it would take to write a great program for managing a dentist's office (or pick your own example... it's contrived, don't quibble about the details). He's also a good programmer, with the skills necessary to implement the program. He talks to a few of his dentist friends, and they're enthusiastic about the whole thing. Let's look at a few scenarios of how things might play out: Bob values his time at 10 dollars an hour, and it will take him 100 hours to complete the project, meaning the whole project would cost about 1000 dollars. One way things could work is that he could find a dentist friend who needs this program, and bill him 1000$ for his time and services, bang out the code, and release it as open source software. Bob gets his money, the dentist gets his code... and all the other dentists in town get it for free, which is bound to make the dentist who shelled out the money a bit irritated, given that he's a human, not a homo-economus, and doesn't like paying and see others get the same thing for free. Let's introduce another variable: the software is only really worth 200$ to the dentist - any more than that and yeah, it's helpful, but not worth that much money (And please stay with me, I know it's contrived, but keep in mind that the situation *is* possible, even if the numbers might be different). That means that if Bob wants 1000$ for his time, but the dentist will only pay 200$, then no transaction will occur! The software won't get written, Bob won't get any money, and the dentist will be worse off because he won't have the nice program, and neither will his dentist colleagues. One way things might still work is if the dentist rounds up some friends and they all contribute a bit, however, that's kind of a pain in the neck for everyone concerned - the dentist doesn't want to get into the software business and spend a bunch of time trying to chase his friends for money, and even if 10 dentists contribute, the ideal position to be in his the 11th guy, who pays nothing, and still gets the software for free. So it's in everyone's interests to not return the dentist's calls in the hope of being the 11th guy. Also, none of them gets the software until they're all on board. So, how to resolve this problem? The wikipedia page talks about introducing an exclusion mechanism, which in this case would be a copyright system so that Bob can sell a copy of his software for 100$ and be sure that it won't be open to everyone to use. This way, the dentists get the software for 100$ less than they value it at (200$), and as soon as Bob signs up an 11th dentist, he's making more than his time/materials costs, and is therefore coming out ahead! The dentists all know that they're paying the same price, so have no reason to grumble about free riders. In short, everyone is pretty happy. Of course, in the real world, things don't play out like that all the time. There are problems with the simplified example above, some of which are very evident: the cost of enforcing copyright laws, in an age when copying is extremely easy, is very high and potentially very intrusive. However, "intellectual property" is, by and large, a compromise solution that has had positive aspects, especially when you ignore the outliers like Microsoft, and look at all kinds of niche software vendors, who make a nice living, create good products, and have happy, satisfied customers. If you look at the other solutions to the free rider problem listed on the wikipedia page, we can see how they might be applied to the world of software.
  • Dominant assurance contracts
    Assurance contracts are contracts in which participants make a binding pledge to contribute to a contract for building a public good, contingent on a quorum of a predetermined size being reached. Otherwise their money is refunded. A dominant assurance contract is a variation in which an entrepreneur creates the contract and refunds the initial pledge plus an additional sum of money if the quorum is not reached. In game theory terms this makes pledging to build the public good a dominant strategy: the best move is to pledge to the contract regardless of the actions of others.
    This means that Bob goes out and gets a number of dentists to pledge 100$ to his dentist program, and if he doesn't raise at least 1000$, he'll give them each back 110$. So it's a clever solution that works out for everyone, but is still a lot fiddlier than the copyright system - Bob has to go sell the contracts and explain how things work to a bunch of people before he can get started. This might be doable with 10 dentists, but for a more mass-market sort of program, it would not be feasible.
  • Coasian solution
    a mechanism by which potential beneficiaries of a public good band together and pool their resources based on their willingness to pay to create the public good. Coase (1960) argued that if the transaction costs between potential beneficiaries of a public good are sufficiently low, and it is therefore easy for beneficiaries to find each other and pool their money based on the public good's value to them, then an adequate level of public goods production can occur even under competitive free market conditions.
    That sounds an awful lot like open source software, especially the kind espoused by groups like the Apache Software Foundation, where making free software is not a moral imperative, but a good way of producing something that is not necessarily a key business component. This has proven to work very well for infrastructure type code, as well as lots of developer tools. It is less proven as a way to develop end-user software - in the example above, it's not like Bob needs help to develop his system, or that the dentists really want to contribute - they just want a working program and don't want to get involved in its production.
  • Government provision This would mean that the government would be responsible for funding the production of open source software. I'm no free-market zealot, but I think the idea of the government being responsible for software products is not one I am entirely comfortable with. Of course, I do think the government has a role with places like universities, where people can do "research" in the sense of hacking on cool systems just to see what can be done, without necessarily having to be thinking of how to make a profit in the short to medium term. Software like BSD, Tcl, and plenty of other great stuff has come out of universities, meaning that in part it is ultimately funded by the government and taxes. The problem, though, is the process of refining those things down into something people are willing to buy. Would Bob go to a local government official to get a grant to produce his software? Why should Bob get the contract and not some other guy? Does the government official know enough about code or dentists to determine who should write the program?
  • Subsidies Subsidies might work to encourage software production, but would probably simply be abused. It's probably not as relevant as other potential solutions. What form would it take? 1$ off your taxes per line of code written? It would be difficult to place a value on anything, and might be quite difficult to implement.
  • Privileged group This, as the wikipedia page says, is an incomplete solution, and is less generally applicable. In terms of Bob, it might mean that instead of valuing his code at 200$, his wealthy dentist friend with a large practice really needs the code - it's worth 2000$ to him, and can pay Bob the full 1000$ to develop it out of pocket and still come out ahead, and he doesn't really care that much about the free riders because he's getting what he needs and the rest doesn't matter too much.
  • Social norms If Bob and the dentists live in a small town, and are all good friends, perhaps Bob could still release the software, and even though the other dentists could copy and use it for free, they don't, because they feel an obligation to Bob to help him out for the work he's done. Even though they could take advantage of it for free, they would feel bad about doing so, and so each chip in 100$, which after enough people contribute, is enough to cover Bob's costs. It's likely that anything distributed on a larger scale, however, will see more free-riding, and "please pay!" might not work out. And it's probably fairly distressful for a developer to make that jump, knowing he's at the mercy of other people's good will.
None of these solutions is perfect, and all, including exclusion in the form of intellectual property laws, or simply doing nothing at all, have problems of their own. Due to the very nature of software, this is somewhat inevitable, and the best we can do is come up with good compromises, and continue to reevaluate them as technology and society change (this is something that needs to happen with IP laws, for instance).

Patrick Schoenfeld: Arcor EasyBox A801

Recently, my girl friend and I decided to get Arcor DigitalTV. So we got some hardware from Arcor (and unfortunately we needed to "upgrade" our real-ISDN-connection to a SIP-based-one):

That second piece of hardware is kinda interesting, because it is an ADSL2+-Modem, (WLAN-)Router, SIP-Gateway and file-/printserver (it has one USB port which can be used to connect an USB hub and up to 4 disks or 1 printer) and 4-Port Switch in one (I think it doesn't include whats called a 'Splitter', because with this kind of connection there is no ISDN signal to be splitted from the internet signal).

Unfortunately not all is well about this (or about my provider). This piece of hardware can be configured with a modem installation code. Which is good for an average user, because he does not need to care about anything. With this process the hardware configures itself by receiving configuration data from a configuration server of the provider. Regardless about other implications this might have: What disturbed me about this is, that I loose control about my router, if I use this. Because when configured this way some sites in the router are grayed out. If you click them you get a message that this setting is controlled by your provider. Uarg. Well, unfortunately IPTV from arcor does not simply use the same internet connection as I usually do (more about this later), so I were suffering from missing informations about how to configure the router manually.
Arcor wasn't particular helpful in this, because they told us "Der Router kann nicht manuell konfiguriert werden." (which means in Englisch: "The router cannot be configured manually."). Although this brought me to laugh, I were also disappointed and worried about this. So I decided to find it out myself. I won't tell what I tried after all, but in the end I found out that the modem installation code-installation does configure:

With this knowledge (and some good guessing, e.g. that both PPPoE links eventually use the same user data) I were able to configure the router fully myself, which also enables me to set QoS settings how I want them (which is why I went through the whole torture at all, because SSH was extremely laggish when watching TV). One thing is notable however, how I got the information:

The manufacturer of the router seems to do some things to protect the settings from the user. For example: The page for configuring the WAN is called wan_main.stm, it can be called without trouble if you are configureing the router manually, but the system would block access when you use the modem installation code. BUT and thats how I got the info that the third link is a MAC Encapsulation Link: The status page (where it shows that you are connected etc.) includes javascript vars for nearly everything you ever wanted to know about your router configuration. Not obfuscated after all. You just have to look at the source of the status frame. Thats real professional, Arcor.

Sean Finney: quoting and escaping positional parameters, redux

after all, what could be more exciting? okay, so where we last left off, we had something like:
    # escape any single quotes in an argument
    quote() 
      echo "$1"   sed -e "s,','\\\\'',g"
     
    # save up a properly quoted/escaped version of "$@"
    for arg in "$@"; do
      saved="$ saved:+$saved  '$(quote "$arg")'"
    done

i got some really interesting feedback from a few people; Lo c Minier who has some similar code that he cuts and pastes on an as-needed basis, and Ralf Wildenhues who has overseen some similar code that exists in the autoconf system. a notable feature in Lo c's solution was to quote the string entirely within the escaping function, whereas in mine the result was a "quotable" string (i.e. the quotes were put around the output afterwards).
> escape()  
>     echo "$*"   sed "s/'/'\"'\"'/g; s/.*/'&'/"
>  

Ralf pointed out one potential problem with both of these approaches. on the topic of portability, there are some implementations of echo that will directly interpret control characters ('\n', '\t', etc) and others not. he suggested that "printf" be used instead:
- echo "$1"   sed -e "s,','\\\\'',g"
+ printf '%s\n' "$1"   sed -e "s,','\\\\'',g"

though there's no reason i can think of not to take that a bit further and use a herestring, which could save an extra fork if printf isn't a builtin:
    quote() 
      sed -e "s,','\\\\'',g" << EOF
    $1
    EOF
     

also, Ralf suggested in the interest of efficiency that some kind of case statement be used to avoid unnecessary forks when an argument doesn't contain any "'" characters. this is apparently a trick used in autoconf-generated scripts:
    case "$arg" in
    *\'*)
      saved="$ saved:+$saved  '$(quote "$arg")'"
      ;;
    *)
      saved="$ saved:+$saved  '$arg'"
      ;;
    esac

finally, a lingering problem which hasn't been solved on the autoconf side of things (nor in my previous solution) was that in the case that an argument contained trailing newlines, such whitespace would be silently discarded in the quoted version (this is due to how shell command substitution works in general). but really, this is quite the corner case... how often does one run a command line with both an escaped quote and trailing newlines in an argument? an example:
rangda[/home/sean] ./good.sh "isn't very common" "to give args" "with trailing \\n's:
"
original command line, 3 arguments: isn't very common to give args with trailing \n's:
arg: isn't very common
arg: to give args
arg: with trailing \n's:
mangled command line, 0 arguments:
restored command line, 3 arguments: isn't very common to give args with trailing \n's:
arg: isn't very common
arg: to give args
arg: with trailing \n's:
rangda[/home/sean]                                                           :)

however, i noticed that a slightly modified version of Lo c's approach might not suffer from this problem because the string would be quoted before being returned (thus any newlines would be enclosed in quotes that would preserve them). I mentioned this to Ralf who will be bringing it up on the autoconf-patches mailing list... sounds promising anyway. so i give you the combined improved version:
#!/bin/sh -e
# escape any single quotes in an argument and then quote it
quote() 
  sed -e "s,','\\\\'',g; 1s,^,',; \$s,\$,',;" << EOF
$1
EOF
 
# save up a properly quoted/escaped version of "$@"
for arg in "$@"; do
  case "$arg" in
  # when a string contains a "'" we have to escape it
  *\'*)
    saved="$ saved:+$saved  $(quote "$arg")"
    ;;
  # otherwise just quote the variable
  *)
    saved="$ saved:+$saved  '$arg'"
    ;;
  esac
done
echo original command line, $# arguments: "$@"
while test -n "$*"; do echo arg: "$1"; shift; done
echo mangled command line, $# arguments: "$@"
# restore the cmdline
eval set -- "$saved"
echo restored command line, $# arguments: "$@"
while test -n "$*"; do echo arg: "$1"; shift; done

output from the same example cmdline:
rangda[/home/sean] ./better.sh "isn't very common" "to give args" "with trailing \\n's:
"
original command line, 3 arguments: isn't very common to give args with trailing \n's:
arg: isn't very common
arg: to give args
arg: with trailing \n's:
mangled command line, 0 arguments:
restored command line, 3 arguments: isn't very common to give args with trailing \n's:
arg: isn't very common
arg: to give args
arg: with trailing \n's:
rangda[/home/sean]                                                           :)

27 March 2009

David Welton: Software Economics - Public Goods

To look at the economics of open source software, you have to start with the economics of software as a category, both proprietary and open source. Note: it should be perfectly obvious to everyone that open source software works, and works quite well for some things. This article is more about understanding the how and they why. Just to avoid any confusion... If you look at software as a product, it has a couple of defining characteristics: What do you get when you combine something that's "non excludable" and "non rivalrous"? In economics, these are known as "public goods": http://en.wikipedia.org/wiki/Public_good - read the whole thing if you have a few minutes, it's what I'll be talking about. As per the article, "The Problem" as it were, is the free rider problem. Let's stop and look at a contrived example: Bob is an ex-dentist and really knows what it would take to write a great program for managing a dentist's office (or pick your own example... it's contrived, don't quibble about the details). He's also a good programmer, with the skills necessary to implement the program. He talks to a few of his dentist friends, and they're enthusiastic about the whole thing. Let's look at a few scenarios of how things might play out: Bob values his time at 10 dollars an hour, and it will take him 100 hours to complete the project, meaning the whole project would cost about 1000 dollars. One way things could work is that he could find a dentist friend who needs this program, and bill him 1000$ for his time and services, bang out the code, and release it as open source software. Bob gets his money, the dentist gets his code... and all the other dentists in town get it for free, which is bound to make the dentist who shelled out the money a bit irritated, given that he's a human, not a homo-economus, and doesn't like paying and see others get the same thing for free. Let's introduce another variable: the software is only really worth 200$ to the dentist - any more than that and yeah, it's helpful, but not worth that much money (And please stay with me, I know it's contrived, but keep in mind that the situation *is* possible, even if the numbers might be different). That means that if Bob wants 1000$ for his time, but the dentist will only pay 200$, then no transaction will occur! The software won't get written, Bob won't get any money, and the dentist will be worse off because he won't have the nice program, and neither will his dentist colleagues. One way things might still work is if the dentist rounds up some friends and they all contribute a bit, however, that's kind of a pain in the neck for everyone concerned - the dentist doesn't want to get into the software business and spend a bunch of time trying to chase his friends for money, and even if 10 dentists contribute, the ideal position to be in his the 11th guy, who pays nothing, and still gets the software for free. So it's in everyone's interests to not return the dentist's calls in the hope of being the 11th guy. Also, none of them gets the software until they're all on board. So, how to resolve this problem? The wikipedia page talks about introducing an exclusion mechanism, which in this case would be a copyright system so that Bob can sell a copy of his software for 100$ and be sure that it won't be open to everyone to use. This way, the dentists get the software for 100$ less than they value it at (200$), and as soon as Bob signs up an 11th dentist, he's making more than his time/materials costs, and is therefore coming out ahead! The dentists all know that they're paying the same price, so have no reason to grumble about free riders. In short, everyone is pretty happy. Of course, in the real world, things don't play out like that all the time. There are problems with the simplified example above, some of which are very evident: the cost of enforcing copyright laws, in an age when copying is extremely easy, is very high and potentially very intrusive. However, "intellectual property" is, by and large, a compromise solution that has had positive aspects, especially when you ignore the outliers like Microsoft, and look at all kinds of niche software vendors, who make a nice living, create good products, and have happy, satisfied customers. If you look at the other solutions to the free rider problem listed on the wikipedia page, we can see how they might be applied to the world of software. None of these solutions is perfect, and all, including exclusion in the form of intellectual property laws, or simply doing nothing at all, have problems of their own. Due to the very nature of software, this is somewhat inevitable, and the best we can do is come up with good compromises, and continue to reevaluate them as technology and society change (this is something that needs to happen with IP laws, for instance).

26 March 2009

David Welton: "Scalable" programming languages

A thought occurred to me a while ago, and I thought I'd write it up: Some languages are better at others for Really Big Systems, those with hundreds, or perhaps even thousands of people who work on them. They allow people to divy up work without stepping on one anothers' toes. Other languages are great for writing quick little hacks or small, one-off programs to just get something done. Generally, people talk about the former as 'scaling well', but there's an important point missing there: for most people, what really counts is not the absolute upper limit, but the range of problems a language can handle. To haul out the poor, bedraggled transportation example once again, some things, like Boeing 747's, are pretty good if you have to fly halfway around the world. They're not so good if you need to pop out to the grocery store for milk. Bicycles are a great way of getting around the congested streets of the Italian town I live in, but a little less useful once you start talking about distances upwards of 10 km. Cars, on the other hand, are popular because they're pretty good at a lot of things. It might be a lot slower than flying, but you could drive from Oregon to Maine if you needed to. A car might not be quite as convenient as a bike or scooter in downtown Padova, but you can still use it. So the car, while ultimately being inferior to the 747 in terms of its upper range, is way more flexible. I think the same thing generally holds true for languages. Java is seen as being good for big, 'enterprisey' sorts of things... and it probably is - it has a lot of mechanisms to keep people from getting in one another's ways. On the other hand, writing a quick sysadmin program in Java is, at least for me, not all that fun compared to a language like Tcl or Ruby. Tcl is more or less in the opposite corner. Sure, if you know what you're doing, you can write massive programs with it, but it's probably not its sweet spot. Currently, I'm pretty happy with where Ruby is: it lets me do the simple stuff quickly and easily, and has decent mechanisms for growing and organizing a codebase, although of course you have to be careful with things like reopening classes ("monkeypatching") lest they interfere with the work of others.

David Welton: "Scalable" programming languages

A thought occurred to me a while ago, and I thought I'd write it up: Some languages are better at others for Really Big Systems, those with hundreds, or perhaps even thousands of people who work on them. They allow people to divy up work without stepping on one anothers' toes. Other languages are great for writing quick little hacks or small, one-off programs to just get something done. Generally, people talk about the former as 'scaling well', but there's an important point missing there: for most people, what really counts is not the absolute upper limit, but the range of problems a language can handle. To haul out the poor, bedraggled transportation example once again, some things, like Boeing 747's, are pretty good if you have to fly halfway around the world. They're not so good if you need to pop out to the grocery store for milk. Bicycles are a great way of getting around the congested streets of the Italian town I live in, but a little less useful once you start talking about distances upwards of 10 km. Cars, on the other hand, are popular because they're pretty good at a lot of things. It might be a lot slower than flying, but you could drive from Oregon to Maine if you needed to. A car might not be quite as convenient as a bike or scooter in downtown Padova, but you can still use it. So the car, while ultimately being inferior to the 747 in terms of its upper range, is way more flexible. I think the same thing generally holds true for languages. Java is seen as being good for big, 'enterprisey' sorts of things... and it probably is - it has a lot of mechanisms to keep people from getting in one another's ways. On the other hand, writing a quick sysadmin program in Java is, at least for me, not all that fun compared to a language like Tcl or Ruby. Tcl is more or less in the opposite corner. Sure, if you know what you're doing, you can write massive programs with it, but it's probably not its sweet spot. Currently, I'm pretty happy with where Ruby is: it lets me do the simple stuff quickly and easily, and has decent mechanisms for growing and organizing a codebase, although of course you have to be careful with things like reopening classes ("monkeypatching") lest they interfere with the work of others.

24 March 2009

Matthew Garrett

Today is Ada Lovelace day, a project to celebrate the women involved in technology and make it easier to give examples of female role models in the industry. I've had the opportunity to meet many women working on Linux over the past few years, and if there's one thing that's tended to overshadow the achievements and dedication to their work it's the sheer amount of effort they've had to go to in order to gain equal recognition. And that made me realise that in many ways, the woman who's had the greatest impact on my career is Hanna Wallach[1]. About ten years ago she spent a ridiculous amount of effort teaching me that it didn't matter how much I professed to be entirely free of sexism if I then proceeded to do things that implicitly excluded women from being involved in computing communities. I've gone to some amount of effort to repay that (contains profanity and a man with a raccoon tail covering his crotch), but I'm very aware of how different my life might have been if Hanna hadn't gone to the trouble of ensuring that I knew not to be a dick.

I think the Linux community has become more welcoming since then, and Hanna and people like her have been instrumental in helping that happen. However, we still have people being driven away by the behaviour of others or arguments that technical contributions are more important than social behaviour, and while that's true we need role models for social change just as much as we need role models for technical achievement. Thanks, Hanna[2]. The Linux world's a better place because of you.

[1] And while she's a role model of mine for social reasons, she's also got a PhD in machine learning, was British computer science student of the year in 2001 and came top of her MSc class at Edinburgh. So there.

[2] "Thanna"

23 March 2009

Clint Adams: Let us see what markdown mangles

certtool --generate-privkey > cakey.pem
echo 'cn = exampleCA' > ca.tmpl
echo 'ca' >> ca.tmpl
echo 'cert_signing_key' >> ca.tmpl
echo 'expiration_days = 732' >> ca.tmpl
certtool --generate-self-signed --load-privkey cakey.pem \
  --template ca.tmpl --outfile cacert.pem
for i in host1.example.org host2.example.org host3.example.org
do
certtool --generate-privkey > $i-key.pem
echo 'organization = Example' > server.tmpl
echo 'unit = Messaging' >>server.tmpl
echo "cn = $i" >> server.tmpl
echo 'email = postmaster@example.org' >> server.tmpl
echo 'expiration_days = 366' >> server.tmpl
#    echo 'tls_www_server' >> server.tmpl
echo 'encryption_key' >> server.tmpl
echo 'signing_key' >> server.tmpl
echo "dns_name = $i" >> server.tmpl
certtool --generate-certificate --load-privkey $i-key.pem \
  --load-ca-certificate cacert.pem --load-ca-privkey cakey.pem \
  --template server.tmpl --outfile $i.pem
done

Julian Andres Klode: Change has come to python-apt - aka 0.7.9 released


With version 0.7.9 change has come to python-apt, and I will tell you now what the new stuff is about: 1. Introduction of the documentation As you may know, python-apt 0.7.8 s only documentation was available from the source code and to some parts from the docstrings. This changed in python-apt 0.7.9~exp2, when I introduced a complete documentation written in reStructuredText, and generated using Sphinx. This documentation has even improved in the final 0.7.9 release, and I will push it to the online mirror at http://apt.alioth.debian.org/python-apt-doc/ soon (it currently still has 0.7.9~exp2). 2. Graphical Progress The module apt.progress.gtk2 provides widgets for Python GTK+ coders, allowing them to easily build graphical applications interacting directly with apt. I am still looking for someone to write a apt.progress.qt4 module, if no one wants to do this, I will do it myself. 3. Enhanced apt.debfile module A lot of code has been merged from gdebi, now allowing to do a large set of operations on local .deb files. For example, you can now install these packages. This module is also the first module to follow PEP8 naming conventions (lowercase_with_underscores), the others will be adapted at a later point. 4. Complete code cleanup I have worked on cleaning up the whole code, fixing white space problems, and more. Ben Finney was very helpful, I merged some of his patches for whitespace. I also fixed several other problems related to PEP8 conformance. Previously the PEP8 checking tool (see documentation) found about possible 964 issues, this has been reduced to 7 (-957), but these 7 issues are simply the usage of has_key() at locations where it can t be avoided [interfacing with TagSection objects], i.e. they are false positives. 5. Introduction of apt.package.Version In python-apt 0.7.9 I am introducing a new class apt.package.Version. This class provides access to various attributes of a version, like the record, the version number, the origin and even allows you to fetch the corresponding source code. But one of the best things about it is that it is sortable, allowing you to write:
print 'Highest bash version:', max(apt.Cache()['bash'].versions)
This makes it very clear that you can build really cool applications with it. The various candidate*() and installed*() methods of apt.Package objects haven been deprecated, and you should use the Version() objects available via Package.installed or Package.candidate properties. Summary All in all, the python-apt 0.7.9 is a big step forward. It is one of the largest releases in the history of python-apt and provides various new features to make developing easier. With all the code cleanups, and the documentation, you should be able to find everything you need; if not please report a bug. When we are asked Can we do this with python-apt? , we can finally say: Yes we can! Posted in Debian

22 March 2009

Biella Coleman: You don t need to choose one over the other.

So, one of th raging debates in medical science over the last two decades concerns the importance of genetics vs environmental factors for diseases: Are diseases genetically based or due to environmental factors, such as pesticides and toxins? This debate is one that might soon change its course (and collapse) due to the fascinating field of epigenetics, which blows this binary to pieces, by examining how lifestyle and environment can alter the expression of genes. Nova has a fascinating video about epigenetics, which is definitely worth watching.

Biella Coleman: You don t need to choose one over the other.

So, one of th raging debates in medical science over the last two decades concerns the importance of genetics vs environmental factors for diseases: Are diseases genetically based or due to environmental factors, such as pesticides and toxins? This debate is one that might soon change its course (and collapse) due to the fascinating field of epigenetics, which blows this binary to pieces, by examining how lifestyle and environment can alter the expression of genes. Nova has a fascinating video about epigenetics, which is definitely worth watching.

21 March 2009

Meike Reichle: Chemnitz Linux Days 2009

This is my fourth CLT report and they surely are becoming repetitive! But every good event deserves a good report, so here goes: Contrary to previous years we already arrived on Friday this year. Since we were also not up for another stint with the gym (Aaah the sissifying effects of marriage!) we booked a room with a nice little guesthouse about 15 bus-minutes from the venue. The conference was great as ever: I usually visit the CLT mostly for networking but I also managed to see a few talks. I moderated the session on High Performance and got to see three very nice talks on GPU programing, cluster computing and parallel programming. This year also featured the first talk on (the lack of) women in Free Software. Unusually enough this one was even given by a man. I was quite curious about that talk, which was (how fitting!) scheduled in direct succession to my own. I am kind of torn on that topic myself. On one hand women in Free Software is a topic that is very important to me and deserves any attention it can get. On the other hand instead of talking about how evenly capable women are in Free Software I'd rather just demonstrate it, for instance by giving a good Free Software related talk. And instead of talking about how there should be more women in Free Software I'd rather just be one and try to encourage others with my example. The usual quota of female speakers at linux events is somewhere between 2-4% and I just don't like the idea of having a conference with n men talking about Free Software and 1 woman talking about women. I've had these settings before and it just doesn't sit well with me. Because of this I was quite please to find the topic being tackled by a man this time.
The talk itself, in my impression, left a few open issues though. It was rather brief and focussed mainly on stating the usual numbers, asserting that the Women in FLOSS movement wasn't about affirmative action or discriminating men and explaining how women feel discriminated by sexist behaviour and advertising and how objection to such things should not be mistaken as prudery. It's general advice on how to improve the quota of women in FLOSS mostly boiled down to the linuxchix slogan "Be Polite. Be Helpful.". What I missed most was practical advice to projects wishing to attract more female contributors, such as mentoring programs or low-threshold entry points. Also I felt that the talk lacked a real motivation beyond "gender balance is a Good Thing". However, I was glad the topic finally found its way into the CLT as well and I had a couple of very interesting discussions afterwards. Concerning my own talk I was rather satisfied as well. Attendance was - as usually in Chemnitz - very good, according to the organisers I got around 200 people. Since I designed the talk as a collaborative project and its feedback was predominantly good I'll continue developing it with the feedback I got and submit it again to other events. I think the topic is very worthwile and there's still a lot in it. Some people asked for a more collaborative way of contributing their thoughts and ideas so I'll just create a wiki to collect the new ideas. I'll of course announce it here as soon as it's in place. The slides and audio recording (both German) are as usually available from the talks page at CLT or my own talks section.

Next.

Previous.