Search Results: "bap"

26 March 2007

Simon Richter: Wacky ideas #13: Conflicts-If-in-Same-Dependency-Tree

Well, obviously this one needs a shorter name. The problem I'm trying to solve here is that SONAMEs, or rather the way they are used today, only handle the issue of a single, fully contained library changing ABI as one of its header files changes. However, libraries do not exist in a vacuum; as a bare minimum, they use definitions for types and alignment requirements built into the compiler, and if any of these changes, so does the library ABI. Hence, the idea of using a single number to denote the ABI is not really sufficient. The correct solution would be to embed all ABI information into the soname (libapt-pkg, for example, uses "libapt-pkg-libc6.3-6.so.3.11" on amd64, which is better but still not perfect). Obviously, this would require massive changes to the build scripts in all libraries and educating all library authors, so it is not going to happen (soon). So, what other options are there? As the kernel ABI (the syscall interface) is supposed to be really stable, we probably do not have to worry about that. So, we only have a problem if there are libraries with different assumptions about each others' ABI in the same userspace program. This can happen in two ways: The compiler changed (as in the case with the recent C++ transitions), or a library that is an indirect dependency of something that also has another dependency (direct or indirect) changes ABI. I've talked (briefly) about the former in an earlier post already. To illustrate the latter, a small example: There is a library, libuseful.so.0 that provides a number of functions, among these: struct complex_number

  float real;
  float imaginary;

 
void complex_multiply(
  struct complex_number *result,
  struct complex_number const *lhs,
  struct complex_number const *rhs);
Now another library, libresourceful.so.0, comes along and implements complex_divide on top of complex_multiply. Since the definition for complex numbers from libuseful makes a lot of sense, the include file for libresourceful reads #include "libuseful.h"
 
void complex_divide(
  struct complex_number *result,
  struct complex_number const *lhs,
  struct complex_number const *rhs);
Now one of the more serious people in Debian decides to write pointless 1.0, which takes two complex numbers and calculates (a*b)/a, using both complex_multiply and complex_divide, and links against libresourceful.so.0 and libuseful.so.0. Some time passes, and shortly before Debian freezes, libuseful's author decides that she needs more precision, so she changes the floats to doubles, bumps the SONAME and releases the new version. Shortly thereafter, someone notices that libresourceful is now using an outdated version of libuseful, and recompiles libresourceful. Since the header of libresourceful did not change, noone thinks of changing the SONAME, after all, changing it would render us incompatible with other distributions. Now, pointless 1.0 depends on libuseful.so.0 and libresourceful.so.0, which in turn uses libuseful.so.1. It still believes complex numbers are made from floats, however libresourceful now disagrees. The (a*b) expression is calculated correctly, using floats, however the result is then passed to the complex_divide function which expects a pair of doubles. Not good. Obviously, there is a number of things people have done wrong in this example. First of all, if you inherit type definitions or anything else from another library, your ABI becomes bound to theirs. As you cannot know statically what version your library will be linked against, you need a script that computes your ABI version at build time. If you do not want that, you need to repeat the type definitions in your header and (deep-)copy the data from one of your structures into one provided by the library you are using (I can already hear the screams of the performance fetishists). The assumption that, just because a dependency changed, there is not necessarily a need to bump the soname is not fundamentally incorrect; if no interfaces are being propagated, it is certainly correct, and most libraries do not really do this (for example, a HTTP library uses the resolver, but never passes the hostent structures upwards). Detecting this is difficult to do, although Sun has a few tools to help here. So where does that leave us? In my opinion, the most sensible thing a distribution can do is to make sure such a constellation never gets installed to an user's system. If there is any doubt, we need to err on the side of caution (aka use a bigger hammer). This is a "wacky ideas" post, so I also need to propose a totally untested thing that might work (or not), but at least has passed the stage of me sleeping a night over it. Ideally, dpkg would enforce that. In order to do that, it needs appropriate metadata that tells it that a certain constellation is probably wrong. The thing we want to avoid is an application using multiple versions of the same library at the same time, where "use" is denoted by a dependency relationship. So what we need is a way for a library package to declare that it is wrong to (indirectly) depend on this package and a package out of a certain group at the same time. I can see two ways of doing that, each with its own advantages and disadvantages: The "explicit" way is to add a new dependency relationship (that is where the subject "Conflicts-If-in-Same-Dependency-Tree" comes from), where you would conflict in this way with a virtual package that is named after your library without the SONAME version, and at the same time provide that virtual package (which is a technique that should not be unfamiliar to Debian people). The hypothetical libuseful above would then state Package: libuseful0
Provides: libuseful
Conflicts-If-in-Same-Dependency-Tree: libuseful
So installing pointless_1.0 would pull in libuseful0 and libuseful1, dpkg would see the conflict and refuse. For upgrades, it would refuse the libresourceful0 upgrade, as that would create an inconsistent situation. The only way out of there is to recompile pointless. The advantage is that the modifications to dpkg would be manageable (at least compared with the other option, which I will introduce shortly), the obvious disadvantage is the massive number of virtual packages introduced. The "implicit" way of doing that is moving the SONAME into its own field in the control file, and teaching dpkg that two packages with the same name and different SONAME fields can be installed at the same time, although not depended on by the same package. This is a really nasty change to dpkg and also requires a syntax for dependencies that includes the desired SONAME version, but it gives us a lot of other advantages. The one immediately visible is that it does not bloat the Packages file too much, and does not introduce lots of virtual packages, although the net effect inside apt and dpkg is probably going to be the same. A really cool side effect though would be that the soname is no longer part of the Package: field, and thus it becomes possible to insert it using substvars. This, of course, is a cool thing when library authors come to their senses and include ABI information for dependent libraries into their SONAMEs. Since this has gotten lengthy, thanks for reading this far. Of course, questions and comments are requested, and if you are interested in pursuing this, please get in touch, either via email or if you can wait that long, at the "Wacky Ideas" BoF at DebConf. The last thing for me to do here is to welcome Joachim to the "post your ideas" "meme".

Neil McGovern: Don't get free hardware, win it


A while back, I entered a competition to win one of a few prizes. The results came in, and it looks like I was a runner up, netting me a Mac Mini.

First, a rant about Mac OS X. It appears that there is no way to:

They also asked me to " become one of our evangelists and tell your developer friends and colleagues about Zimki".
Well, I'm not so sure about evangelism, but I'll certainly blog about their platform, as it's fairly interesting.
So, what exactly is Zimki?
Well, it's basically a server side Javascript parser, based on SeaMonkey. The thought of using Javascript as a server side language is, initially, enough to make you run a thousand miles. After you get over your initial shock of this and examine it a little more closely, it does make at least a moderate amount of sense. It's entirely OO, so you should be able to pull in common functionality, perfect for the quick deployment of Webapps that Zimki is designed for.
Of course, this does rely on having the core libraries available. The only ones which seem to exist at the moment are: So, I can make a wiki which uses a template, and outputs it as an RSS feed. The rest I have to code myself - or do I?
This brings me nicely on to the next issue: documentation. There is a thorough lack of it. Thus, more classes may exist, but who knows. This is my MAJOR bugbear about Zimki. Give developers docs, and a nice coding environment, and they're happy. Zimki doesn't have either. Oh wait? I haven't mentioned the coding environment?
All editing seems to be done via a text box with some AJAX magic on the save button. But the save button doesn't work in Linux. Oh, and you can't indent your code. And you can't use a local editor.

This may sound all doom-and-gloom for Zimki, but it isn't. The editor could do with some attention, but it's not a show stopper. Zimki does manage to throw together HA concepts, backups and database (ish. The database object idea which Zimki uses is something I really don't like, but that's personal preference). The cost model they use is rather... odd. A charge is made for each call to the Zimki framework. I'm not a beancounter though, so I can't tell you how cheap/expensive this system is. If you know JavaScript well, and want to develop a complete webapp in it, this is certainly a good tool.

Now hopefully they'll get some documentation together and so people can actually USE the thing. If you're bored, why not play with my app that I wrote.

22 March 2007

Bastian Venthur: Dear SoC enthusiasts,

please stop writing mails asking me whether I’d like to mentor your yet-another-reportbug-alternative project. It’s not that I’m opposed to the idea of rewriting reportbug(-ng) for gtk or as a webapp — really. I just don’t see why your project needs to be part of SoC. I know working for/with google is kinda sexy nowadays and as a student you can even get some money — but be honest: what was Debian’s benefit of last year’s SoC projects? My question which of last year’s projects failed and which succeeded is still unanswered. So no, I’m not yet jumping on this bandwagon everybody seems to be so exited about. Don’t get me wrong: I don’t hate google or the SoC, I’m just not convinced of the success of our last year’s projects, plus I don’t think we need such an event to write useful tools for Debian. NP: The Beatles — Happiness Is a Warm Gun

14 March 2007

Francesco P. Lovergine: Playing with mod_chroot...

... or why PHP sucks so much?

It is quite common (at least for me) finding abused web applications on shared hosts around. The most typical case is finding some kind of IRC bot running as www-data and a few unauthorized files around used for phishing, cross-site scripting or what else. That motivated me to try playing with mod_chroot in order to minimize the possibility of webapps abuse from our friendly kiddies^Wcrackers. Mod_chroot is a nice tiny Apache module whose purpose is the confinment of webapps within a limited tree, where nothing but a few files and dirs are available to try exploits and abuse badly written code.

Unfortunately, I found that mod_chroot poses one major problem (among others, see its CAVEATS doc): the sucking mail() function is not working out of the box, because PHP folks - God knows why - decided to implement that stuff by calling a local /usr/sbin/sendmail program within a shell call. The most sane option is simply ignoring the issue and living happy with a disabled local mail() function. A nice solution in that case is using a PEAR Mail module, which is able to send mails via SMTP in much more elegant way. Unfortunately, there are quite a good number of morons out there, and that could be not a viable option if you are the system administrator of a bounce of shared hosts which are exposed to those morons, who absolutely need a working mail() function.

After a few googling around, I did find that many people had the same problem, but none found (or explained) a working and neat solution for a working mail() implementation, so I'm writing some notes about that. My implementation is based on a nice tiny program (mini_sendmail) which has the great advantage of not requiring a configuration file or a spool directory to work. It also works without suid bit on, which is a good thing as well. It is statically compiled by default, so it simplifies things a lot. In order to have mail() working you need also to install a (statically compiled) shell, e.g. bash-static as sh under the /bin directory of your chroot tree (a more tiny shell would be appropriate). I commented out the silly username autodetection code in the mini_sendmail.c source, because it creates some problem within an empty chroot tree (it failed with a "can't determine username" message with or without the /etc/passwd file available).

Now, the next step is using an entry like

sendmail_path = /usr/sbin/sendmail -t -fwww-data@your.domain -s127.0.0.1

in your php.ini file. You can also use another IP address if your SMTP server is not your localhost or you used some more exotic routing setup. Having a suitable /etc/hosts is also useful. A final trick is adding a var/lib/php4 or what ever directory is required to store PHP session files. No other files should be required in order to have all working. Of course, you have also to use inet sockets for any required connection (e.g. mysql) but this is typically the default in etch. I would also suggest to add only ad hoc statically-compiled binaries within the chroot tree when required, else you will need to store all required shared libs: in that case you will need to find binaries requirement by using ldd and chroot to find loading/running errors by means of an usual trial-and-error cycle.

9 March 2007

Christian Perrier: JB in UK and EDI

No, not talking about Julien Blache, the wonderful president of Debian France here..:-) My JB, namely Jean-Baptiste, my 19 year old son, is planning to attend a one year Bachelor of engineering term next year, in United Kingdom. From what he told us, he's seriously considering to attend it at the University of South Wales, in Glamorgan. This is great news for me as I think this abroad experience will be a great bonus for him, later, in his professionnal career. You know how parents are, right? I already enjoy in advance stories about life in Wales, the funky accent people have over there and, definitely, how great is that part of the country (I'm a rugby and beer fan, so Wales can only be great). Even funnier, JB will also attend a 2.5 months term between April and July in....Edinburgh, Scotland. So, apparently, I'll be able to see my son during Debconf and probably he'll be able to meet some of you, ladies and gentlemen (if he's not too shy). Even if he's not in computer science studies, that would be good for him to know more about these strange freaks his dad is hanging around yearly. Definitely, I will need to hook up with debian-UK people at some moment, to get hints about all this. Again, we all know how parents are, right? :-)

22 February 2007

Dirk Eddelbuettel: Yahoo! URL changes and Finance::YahooQuote, and hence Beancounter, breakage

Looks like Yahoo! Finance changed their server layout. Data scraping via tools like my Finance::YahooQuote, and those that use it such as my Beancounter toolkit, are therefore inoperational. As a first quick fix, apply the following patch to YahooQuote.pm:
--- YahooQuote.pm.orig  2005-07-17 13:10:20.000000000 -0500
+++ YahooQuote.pm       2007-02-22 18:50:07.000000000 -0600
@@ -34,7 +34,7 @@
 $VERSION = '0.21';
 ## these variables govern what type of quote the modules is retrieving
-$QURLbase = "http://quote.yahoo.com/d?f=";
+$QURLbase = "http://download.finance.yahoo.com/d/quotes.csvr?e=.csv&f=";
 $QURLformat = "snl1d1t1c1p2va2bapomwerr1dyj1x";        # default up to 0.19
 $QURLextended = "s7t8e7e8e9r6r7r5b4p6p5j4m3m4";        # new in 0.20
 $QURLrealtime = "b2b3k2k1c6m2j3"; # also new in 0.20
I will hope to have a first new package out later.

12 February 2007

Christian Perrier: fr: 99.858%, cs: 93.351%, de: 81.634%, sv: 79.566%, vi: 78.259%

libapache-mod-backhand upload bumps our stats a little. New planned uploads (and 100%, hopefully) for next Thursday after the end of the call for translation updates I posted for wmmoonclock, atokx and atokx2. The list of "bad boys" is shortening down quickly, now. Today's NMUs: plan, atftp, mediamate. Today's uploads by maintainers after a little nag from me: gnumeric.

11 February 2007

Christian Perrier: fr: 99.817%, cs: 93.199%

Curves are again with the "right" slope. Thanks to Neil Williams upload for dpkg-cross. Good news also for libapache-mod-backhand who has been uploaded today. We're now left with atokx, atokx2 and wmmoonclock. Today, I worked on remaining issues of various ways to "break" PO files in a few packages. This was affecting the import of material in i18n.debian.net which I intend to get as clean as possible. That will mean a small bunch of NMUs for these package as they currently require hacks in the sync scripts, which I don't like. Ah, and Rapha l Poir e got a very last medal in biathlon..:-)

10 February 2007

Christian Perrier: fr: 99.787%, cs: 93.067%. And today's winners are...

...the maintainers of libapache-mod-backhand and wmmoonclock who just modified the debconf templates of their packages when sending uploads which were supposedly fixing the debconf translations. As a results, statistics are still going down, thanks to the excellent combined work of a few package maintainers. Highly motivating..:-( Still some progress for Czech, though, thanks to a few NMUs and uploads.

7 February 2007

Christian Perrier: fr: 99.817%, cs: 92.667%

No change..:-) Some more activity today, launching the NMU proposals for some packages

28 January 2007

Steve Kemp: Time is like a fuse, short and burning fast,

Disjointed: Busy weekend: A brief trip to Glasgow, a lot of rat-lovin’ and a few minutes to hack on CFEngine package automation. I discovered insane performance problems with running Ruby on Rails applications under libapache2-mod-fastcgi so I switched to Apache2, mod_proxy & mongrel. The process wasn’t as painless as I’d expected - so I might write it up shortly. In other rails-news: I can’t get typo running on Etch. Migration from wordpress 2 fails in strange ways. Help?! In other news xmms on my AMD64 machine, reading /home/mp3 over an NFS share locks up every couple of days. Not sure if this is an AMD64 bit problem, or if the NFS usage is responsible. I should investigate. (The GUI is visible and responsible; but hitting “next”, “play”, etc, result in no action. I usually have to “kill” it - then restart.)

Steve Kemp: Time is like a fuse, short and burning fast,

Disjointed: Busy weekend: A brief trip to Glasgow, a lot of rat-lovin’ and a few minutes to hack on CFEngine package automation. I discovered insane performance problems with running Ruby on Rails applications under libapache2-mod-fastcgi so I switched to Apache2, mod_proxy & mongrel. The process wasn’t as painless as I’d expected - so I might write it up shortly. In other rails-news: I can’t get typo running on Etch. Migration from wordpress 2 fails in strange ways. Help?! In other news xmms on my AMD64 machine, reading /home/mp3 over an NFS share locks up every couple of days. Not sure if this is an AMD64 bit problem, or if the NFS usage is responsible. I should investigate. (The GUI is visible and responsible; but hitting “next”, “play”, etc, result in no action. I usually have to “kill” it - then restart.)

Steve Kemp: Time is like a fuse, short and burning fast,

Disjointed: Busy weekend: A brief trip to Glasgow, a lot of rat-lovin’ and a few minutes to hack on CFEngine package automation. I discovered insane performance problems with running Ruby on Rails applications under libapache2-mod-fastcgi so I switched to Apache2, mod_proxy & mongrel. The process wasn’t as painless as I’d expected – so I might write it up shortly. In other rails-news: I can’t get typo running on Etch. Migration from wordpress 2 fails in strange ways. Help?! In other news xmms on my AMD64 machine, reading /home/mp3 over an NFS share locks up every couple of days. Not sure if this is an AMD64 bit problem, or if the NFS usage is responsible. I should investigate. (The GUI is visible and responsible; but hitting “next”, “play”, etc, result in no action. I usually have to “kill” it – then restart.)

30 December 2006

Stefano Zacchiroli: trac.cs.unibo.it

Experiences with a Trac Server In the last few days after Xmas I set up http://trac.cs.unibo.it, a server for my CS department which will host a bunch of Trac instances, initially for academic projects only then it will be opened to student projects as well. The server set-up has been "powered-by" the following technologies:
  1. Debian Etch
  2. Apache 2.2 with FastCGI, SuExec, and WebDAV over TLS (for accessing SVN repositories without forcibly passing through Trac)
  3. Trac instances backed by Sqlite databases and Subversion repositories
  4. Some bits of Genshi templating for generating the projects index
  5. Some shell scripts for automating creation and removal of projects
I'm quite happy with the result. From the overall experience I drew some observations though: Happy new year birthday trac.cs.unibo.it.

20 December 2006

Evan Prodromou: 28 Frimaire CCXV

Big week for me in and around the media. Huzzah for fame and fortune!

Web 2.0 APIs I'm really happy that an article I wrote for Linux World on Web APIs for software development was published. Called Ten Web 2.0 APIs you can really use, it covers the APIs available today that are really useful for more than just gee-whiz mashups. I'd covered a few of the services when I did a story for LW on the Web 2.0 Summit, so Don Marti asked me to follow up with a full rundown on the world of Web APIs right now. tags:

Wikitravel on the AP wire On the other side of the media lens, Wikitravel is one of the sites featured in an article on the API wire by Anick Jesdanun called Travelers contribute to online guides. Although the article covers a lot of other travel sites, and even has some sour grumpiness by proprietary travel guide publishers, I think it's very favorable to Wikitravel. tags:

Thanks, Tom Also, it was nice of Tom Brown from Stuffopolis in talking about his OpenID Podcast to say that the OpenID extension for MediaWiki is "excellent". Gawrsh! tags:

6 December 2006

Matthew Palmer: I Have Problems With REST

Not being one to stick with what I know, over the last few days I've been trying to put a RESTful sheen on a small app I'm toying with. It's quite simple -- there's really only one type of resource I need to deal with, and I've got a solid URI structure to refer to it all. So far, so good. I've read all the theoretical stuff about how URIs should be nouns, and the HTTP action should be the verb -- and I agree with the sentiment, at least for this system I'm writing[1]. I can even (I think) model all of that stuff using my framework of choice, the ever-hyped-but-good-despite-that Ruby on Rails. There's even fairly explicit support in Rails for a lot of what I want to do, with automatic Content-Type: and Accept: handling logic built-in. But this thing is, primarily, a web app, not a web service. I want the RESTful thing so I can interact with the app programmatically, but at the end of the day, I expect most interactions will be via the good ol' HTML. How, then, do I implement my HTML interface so that my user's browser does the right thing with my resources? My REST resource http://example.com/widgets/1337 will do the right thing if an appropriately-credentialled user issues a DELETE /widgets/1337 request, but how do I tell a browser to do that? The "traditional" way I've done that sort of thing, in Rails, is to encode the verb in the URL, like so: /widgets/delete/1337, but I completely agree with the idea that a GET request shouldn't modify data[2]. So I'm completely sold on the idea of not encoding actions into the URI itself. I'm also a DRY[3] kind of guy, and one of the things that has always slightly irritated me about web services is that, when you write them alongside a HTML-oriented webapp, you often have to duplicate logic (even if it's not very much) to get both versions working. Considering that both the webapp and the REST service are using URLs in pretty much the same fashion, it seems very wasteful to have to design two subtly different schemes to handle the two nearly-identical sets of requirements. So, having written this article without managing to figure the answer for myself, I invite comment (sent to mpalmer@hezmatt.org, and I'll summarise later). How do I tell a user's browser to issue a DELETE or PUT against a URL? Am I being overly idealistic to expect the two access methods to be somewhat comparable? Should I just give up and encode the action I want in my URL, or maybe the parameters to the POST request? Am I even completely misunderstanding REST, and trying to find answers in it that just aren't there?
1. I have some slight qualms about the idea that every possible interaction with any possible system could be modelled using an unlimited noun set and four verbs, but I'm happy to leave that debate alone for the moment, as I don't have anywhere near enough experience to speak intelligently, and I have more basic problems at the moment anyway. 2. I remember the common story of the website where the 'delete' hyperlinks are regular GET requests, and the first Google spidering of the website causes everything to be deleted, resulting in a very bare database. This is a result I'm keen to avoid. 3. Don't Repeat Yourself -- a phrase that should be tattooed on the inside of every developer's eyelids.

3 December 2006

Zak B. Elep: Who moved my sundae?

WTF IS THIS SHIT? Ok, that above would be what a newly-baptized “FOSS advocate-slash-zealot” would say upon seeing Federico Pascual Jr.’s PostScript regarding the FOSS bill. I suppose I could have said that myself a couple of lifetimes ago. But, there is more than meets the eye. While I would like to think of myself as a “FOSS veteran”–believe me, I have still so much to learn about it–I would like to step into the shoes of such a person when approaching an article as sensational as Mr. Pascual’s. Despite what seems to be a most interesting article on the mechanics of government software usage, it fails to address the one particular bit that is just as important as the proposed bill itself: the real Free and Open Source Software. Let me nitpick this article bit by bit:
FREE RIDE: A bill is being pushed in Congress forbidding all government agencies and state-controlled firms from buying and using any of the computer software sold in the market!
Alas, when I first heard of the FOSS bill sometime before September, I also had a bad impression of it. Perhaps I was just too politically allergic at that time (yeah right,) but I tried to adopt a wait-and-see’ approach first and let the dice roll. Perhaps because this bill was to be introduced by a very visible congressman with alleged leftist ties made me feel uncomfortable, but then, so was (and still is) with the current administration. Or perhaps I just felt it wasn’t damn right to legislate FOSS as an end-all solution, preferring instead of presenting is as a process for reforming the local software industry. Looks like first impressions definitely make a difference.
The proposed law to be called “Free/Open Source Software (FOSS) Act of 2006″ commands government offices to use only information and communications software that are given away for free and have no restrictions as to their use. The objectives appear to be to save money for the government and to encourage the making of free (non-commercial) software.
So? What’s wrong with these objectives? FWIW, the early FOSS bill draft did seem to have such a Draconian section as forcing the government and allied offices to use, and use only, FOSS. IMHO that by itself ran against the very fundamental ideal of FOSS: the freedom of choice. Not Hobson’s choice, but real choice. The current bill IIRC now allows this true choice; unless there is an extreme case where FOSS cannot be applied without becoming non-self-sustaining (not to mention self-liquidating,) agencies may implement their infrastructure using FOSS as their primary instrument, with the application of open standards (that is, open document formats, open communications protocols, etc) unifying the disparate components. Perhaps right now, this situation may seem kind of far-fetched, but its not really that far-off, considering what other nations and cities have done (or not done) with FOSS. Munich, Extremadura, Beijing… the list is not yet that long, but its bound to go a long way ;-) Now, while the government may now adopt open standards and open-everything, does not mean that the openness’ forgoes security, either; the government may opt to use well-known encryption protocols and even base their own security infrastructure on them. In fact, they are free to even look inside the source of these well-known standards, to study them, and to branch off new implementation that may even change the way these standards work. In fact, even without this bill in place, the government can participate in the production and development of FOSS!!! Wait a minute, wasn’t I supposed to defend this bill? Eh, well. I suppose this bill is good and all, but like I said earlier, there are those first impressions made by the parties involved in the making of this bill which unsettles me. IMHO I would rather see applications of this first in key cities (the happy works in Munich and in Extremadura are no accident, believe me) which in turn, would allow both local the national government to see just exactly how this FOSS magic works. Then, when the observations have been made, the papers are in, and the workers get hired, then, maybe, we’ll have a nation where FOSS can be mandated as a very strong preference, but never a forced one. Its all about growing up, really. I’m being reminded of Tom DeMarco’s The Deadline, where a newly-retrenched guy from a telco literally lands into the fantastic job of his life, managing an entire nation of software engineers and architects to develop several killer apps within a year (or so; raid you nearest Book Sale and be lucky ;) Its a great experiment: when it succeeds, you’ll be the first to be present, but when it fails, you’ll be the first to be nowhere.
But I can also hear in the background a call to an unholy war against multinationals whose popular software run virtually all maybe 95 percent? of the computers of the world.
Now this is a low blow. Maybe partly because of the prevailing images of the advocates–geeks and leftists, my, what a c-c-c-combo!–is what drives Mr. Pascual to make this point. But really, multinationals are not the main concern. FWIW, FOSS is multinational in nature: it is even multi-denominational and multidisciplinary. FOSS is one of the things that make anonymous people like you and me Internet superheroes. FOSS connects the Internet’s tubes and keeps away the trucks. FOSS makes the Internet serious business, yet also drives them crazy. The Linux distros that I have worked, am working, and continue to work on, are all multinational: Debian and Ubuntu. People from all over the world, from all 7 continents, participate and work on what would arguably be the biggest software distribution the human world may ever produce, freely, regardless of motivation or goal. I suppose all the folks involved have only one common goal, and that is to see a work created for the benefit of the community by the community. I suppose the background howl comes from somewhere altogether, but its hardly just from FOSS. FOSS is the epitome of what is truly multinational, and one thing that is not truly controlled by any one single person, corporation or not.

18 November 2006

Evan Prodromou: 27 Brumaire CCXV

Amita June got her 12-month vaccinations two days ago. She had to get four shots -- two in each chubby little thigh. She's really building up a phobia about going to the doctor's office, screaming her head off each time we go in. Maj thinks it's a bad memory from the time she was sick and Maj took her to the nurse for an emergency checkup, which required getting her temperature taken... from the wrong direction. After her 12-month appointment (earlier last week), Maj bought her the book about Caillou going to visit the doctor, and a little doctor's bag that she waddles around the apartment clutching. We did some practice "shots" with the syringe from the toy doctor's bag, and played with the stethoscope and such. I think it helped a little bit, but still... 4 shots in one day is too much for anybody. Chuck Norris doesn't get 4 shots in one day without a few tears. The worst part, I think, is that the vaccinations give her a little bit of a fever, and she's supposed to get some chicken-pox spots next week sometime. She's been a bit irritable -- easy to understand -- which has made everyone in the house a little tense. When the baby's mad, we're alllllll mad. She's not sleeping well? We're not sleeping well, then. Anyways, hopefully this passes soon. tags:

Web server twiddling for dummies Two fun things I did on my server today. First, I finally got around to installing mod_redir_to_servname, which turns out to be rockingly simple and useful. Thanks to Simon Richter for the good insight. The other thing I did was set up awstats for each of the domains hosted on the server. Much more fantastic than my grungy old Webalizer configuration, that's for sure. Even if it doesn't give me everything I want, it's pretty darn good. tags:

PmWiki upgrade Another thing I did today was move the SonaUiki to my main server, and upgrade it from PmWiki 1.0 to version 2.1. That's something I've been waiting to do for a while -- the site has been really carpet-bombed by spammers, and I haven't been able to add any anti-spam extensions since the version was so old. The upgrade process was pretty painless, and the site is now cookin' with gas. I'd like to go back and update some of the PmWiki Cookbook extensions I wrote a few years ago, like the 404-caching extension and the Dublin Core metadata one. PmWiki's a neato piece of software -- well-crafted, compact, easy to extend and use. If someone bothered to configure Wikiwyg to work with it, I'd give it a serious thumbs-up. tags:

Video interview in The Deal I forgot to mention that there's an interview with me in the The Deal Blogs, the blog network for The Deal magazine. It's a pretty tough crowd at The Deal, so I'm pretty glad I came out looking as good as I did. We'll see how the print article looks, but for now I think I'm pretty OK. tags:

16 November 2006

Michael Janssen: Quickie Hack: Online X-mas list

It's getting around that time of year when kids start singing little annoying songs and thinking of the toys that they will be getting in slightly more than a month. In my family, when everyone gathered for thanksgiving, the younguns were expected to have a list which could be disseminated throughout the family with everything they wanted. This avoided some of the more clich gifts such as sweaters and socks. But who's to say that grownups can't have a little fun as well? It's rather easy to use del.icio.us as a holder for your whole Christmas list. If you find something you want, just add it to your del.icio.us bookmarks with a special tag - I'm using “xmaslist2006”. Using del.icio.us gives you a few advantages over the traditional list: Things on the list need not be completely techie - if you're just looking for a nice sweater, you can add a general page or a representative item with a comment on it. Perhaps include your sizes as well, especially for items which come in a large number of sizes like pants. With any luck, you'll get just what you want this year.

30 October 2006

Anthony Towns: Google Ate My Brane

After visiting Google for the Summer of Code Summit the other week, I thought I might actually try out some of the web services they’ve come up with, rather than just sticking with search and maps, and see if they did anything for me. To my surprise – as a certified hater of webapps generally – a couple did. Writely, the web-based word processor, was kind-of interesting, but in the end didn’t work for me. The potential killer feature for me would’ve been SubEthaEdit or Gobby -like interactive collaboration, which seems like something Google ought to be able to do with their whacky AJAX techniques. Unfortunately, it seems to just be some sort of automated merge-on-commit, which does nothing for me. What I’d really like as far as online document editing goes, is actually to be able to do Gobby-like editing of (moinmoin) wikis, rather than having to deal with advisory locking. I poked a bit further at that, and I suspect it ought to be possible to hack something up by using a tool like editmoin to edit wikipages with an editor rather than a webbrowser, and using gobby to do the editing, via a sobby server hosted on the same site as the wiki. It ought to be possible to automate all that complexity using an application/gobbymoin mime type; but I didn’t get anywhere because sobby seems to require IPv6 support. Oh well, maybe some other time. I’ve played with GMail and Google Talk before, with minimal impact. GMail is kind-of nice, but I like to be able to read my mail offline, so whatever. It is useful as a backup email address if my regular one goes down though. Google Talk doesn’t seem to handle voice/video under Linux, so it’s just a Jabber server. Which is fine, since I hadn’t ever actually gotten any of these whizbang IM things setup. What’s less brilliant is that Gaim is a bit of a pain when it loses connectivity, which happens everytime I suspend my laptop, which is everytime I stop using it. But I need GMail in order to even try some of the interesting Google services these days, so whatever. Google Calendar isn’t really something I expected much of. Sure, it’s a calendar app, but I’ve never gotten much use out of appointment diaries or planners or whatever anyway. Having it be web-based actually changes that a bit though, since it makes it trivial to publish to other people, and that even makes a calendar a little bit useful for me too. Having it be able to send reminder SMSes is also neat, at least now I’ve worked out how to default that behaviour to off… Oddly, though, I’ve found I’m getting more value out of it in listing things I’ve done rather than things I’ve got coming up. I guess it’s nicer to have a list of things you’ve actually done, rather than a list of things you should have done (but often didn’t), or a list of things you’ve got to do… But the real winner is definitely Google Reader even if it’s still in Google Labs, rather than even being “beta”. While I’ve tried some aggregators in the past, none have remotely grabbed me, and I’ve been tending to just remember the URLs for the blogs and webcomics I like, and type them in when I’m feeling bored. That has the benefit that it limits the number of each I read, but the drawback that I waste time typing URLs and waiting for pages to load even when there haven’t been any updates. The keyboard interface to Reader is pretty pleasant, with the only drawback I’ve found a slight lag in loading entries at the start of the day. Having it be in my web browser is perfect, since I generally want to follow a few links from blog posts anyway. It’s also made it easy enough that I’ve added a few feeds from real newspapers (or news channels), which is probably a good thing as far as balancing my take on what’s going on in the world. There’s a couple of downsides. One is that a lot of webcomics don’t have RSS feeds, or, if they do, don’t seem to include the actual comic, just a link to it. I don’t think there’s much of a reason for that – there are a few blogs I read that include ads in their RSS, so that doesn’t seem difficult to handle, and I can’t see any other potential objections. Also annoying is that posts that get aggregated on multiple planets (such as Planet Debian and Planet Linux Australia) show up multiple times, though admittedly I pretty much expected that. Probably the major downside is that it’s so easy to read stuff that I keep adding feeds to it, though…

Next.

Previous.