Search Results: "cas"

12 June 2007

Antti-Juhani Kaijanaho: On recursion

Note: This entry has been edited a couple of times (and might be edited in the future) to remove errors. Thanks to Benja Fallenstein for critique. My previous post about recursion drew some comments. This is a topic that frequently confuses me, and there is a lot of confusion (some of it mine) in the blog post and its comments. On reflection, it seems prudent to examine what recursion really is. Consider the following recursive definition: 0 is an expression; if T is an expression, then sT is an expression; nothing is an expression that doesn’t have one of these two forms. Now, it is clear that 0 is an expression. It is equally clear that sssssK is not an expression. In some applications, it makes sense to consider infinite expressions like “…ssssss0“; that is, an infinite number of ss before the final 0, and in others it doesn’t. Is that infinite utterance and expression? It does have one of the forms given in the definitions, so it is not forbidden from being an expression, but neither is there anything in the definition requiring that it is. It is helpful to do this a bit more formally. Let us translate the self-referential definition into a set equation: The set of expressions is the set E that satisfies the equation

E = 0 ∪ se e ∈ E

But this definition is bogus! There are more than one set E that satisfies the equation, as remarked above, and thus there is no “the set E”! We need to fix the definition in a way that makes the set E unique. The key question is, do we want to regard the infinite utterance discussed above as an expression. It is simplest to just say “the set of expressions is the smallest set E that …” if we want it to not be an expression, and if we want it to be an expression we should say “the set of expressions is the largest set E that …” Let us make the following definitions:
Consider the set equation S = … S …, in which the set S is alone on the left-hand side and occurs at least once on the right-hand side. This equation is a recursive definition of the smallest set S satisfying this equation, and a corecursive definition of the largest set S satisfying this equation.
Thus, a definition like

E = 0 ∪ se e ∈ E

is not recursive because of its form; it is self-referential. By itself, it is an ambiguous and thus bogus definition. We use the words “recursive” and “corecursive” to indicate the intended method of disambiguation. A rather nice example of this can be seen in the treatment of algebraic data types in strict (ML-style) and nonstrict (Haskell-style) functional programming languages. Consider the declaration (using Haskell syntax)
data IntList = Nil   Cons Int IntList
This can be read as a set equation as follows:

IntList = Nil ∪ Cons n x n ∈ Int ∧ x ∈ IntList

Now, as a recursive definition, it is restricted to finite lists as found in ML, but as a corecursive definition, it also allows infinite lists as found in Haskell. (It unfortunately fails to address the question of bottom-terminated lists, which also can be found in Haskell.) As it happens, the technique is not limited to set definitions; but to generalise it, we need to discuss a bit what we mean by the terms “smallest” and “largest”. In a set context, a set is smaller than another set if it is the other’s subset. Notice how this makes the ordering partial, that is, there are sets that are not comparable (for example 1 and 2 ; neither is smaller than the other, but neither are they equal). A collection of sets does not necessarily have a “smallest” set (that is, one of the sets that is a subset of all the others). However, we can always find the lowest upper bound (”lub” or “join”) of a collection of sets as the union of the sets, and the greatest lower bound (”glb” or “meet”) as the intersection of the sets, and if the lub or glb is itself a member of the collection, it is the smallest or largest set of the collection. Haskellists will find things instantly familiar when I say that the smallest element of a mathematical universe (if it exists) is called bottom and is denoted by ⊥; somewhat less familiar will be that the greatest element (if it exists) is called top and is denoted by ⊤. A partial function is any function that needs not be defined everywhere. For example, f(x) = 1/x is a partial function on the reals (it is not defined for x = 0). We can form a partial ordering of (partial) functions having the same domain and codomain by specifying that f is smaller than g if f(x) = g(x) for all such x that f(x) is defined. Sometimes it will make sense to specify that f is smaller than g if f(x) is smaller than g(x) for all such x that f(x) is defined. Now, it happens that all collections of functions have a lub; and in particular, the partial function that is defined nowhere is the smallest function (the bottom function). Now, with this definition of “ordering” of functions we can apply the definitions of recursion and corecursion to functions. For example, consider f(x) = f(x) + 1. The bottom function (defined nowhere) qualifies, since undefined + 1 is undefined; thus it is the smallest solution to the equation and thus this equation is a recursive definition of bottom. However, consider f(x) = if x = 0 then 1 else x*f(x-1): any solution to this equation must have f(0) = 1 and thus the bottom function is disqualified. In fact, the smallest solution is the factorial function, and thus the equation is a recursive definition of factorial. In the comments to my previous entry, I was asked whether the Haskell definition “ones = 1 : ones” is recursive. Of course, the question in itself is nonsensical; whether it is a recursive definition or something else (such as corecursive) depends on what the programmer intends. I will interpret this question as whether the equation is a recursive definition of the intended result, the infinite list of all ones. First, observe that we can order Haskell lists (including the special “undefined” list) partially as follows: l1 is smaller than l2 if l1 is undefined, if they both are empty lists or if a) the first element of l1 is smaller than the first element of l2 and b) the tail (the list with the first element removed) of l1 is smaller than the tail of l2. The undefined list does not qualify as a solution for “ones = 1 : ones”. No finite list qualifies either. The infinite list of all ones does qualify, and it is the only solution; hence, the equation is a recursive definition of the infinite list of all ones; it is also a corecursive definition of the same list. Finally, let us consider the question that started it all: what should we make of the definition “recursion: see recursion”. First, note that a equation x = x admits all elements of the universe as a solution; hence, the proper reading of “recursion: see recursion” as a definition is that it is ambiguous and hence bad. It is a recursive definition of the bottom element of the universe (whatever that might be for a dictionary), and a corecursive definition of the top element of the universe (whatever that might be). In any case, it does not define recursion (unless of course, the concept of recursion is the smallest or the largest concept in the universe of concepts).

11 June 2007

Sune Vuorela: Testing kblogger

Kblogger is a nice little applet for Kicker. As the smart reader probably already have guessed, this is very much related to KDE. Kblogger basically sits in the bottom bar with a small "Blog!" button. Click it, and you should be able to write a blog post easily. I wonder if it works - and if I end up with packaging it for debian. And a general note. You need to use the link for the remote api to your blog. Not the ‘main’ link. In the wordpress case, it is to the xmlrpc.php file. Is there other apps that does similar things ? or is kblogger the state of the art currently ?

Miriam Ruiz: Gnash 0.8.0 about to be released

The newer version of Gnash, that is 0.8.0, is about to be released. Though it has many improvements, it is still not modular (that’s a goal for the next release). That means that the decision about the backends have to be made at compilation time, not in runtime. As the backend for graphics, the most appealing options are AGG and OpenGL. While OpenGL might seem quite attractive for people who have graphics cards with hardware support for OpenGL, AGG seems to be the better option for those who doesn’t. In fact, AGG works quite good for me. The second problem is that KDE support only works with OpenGL for the moment. In fact, if some KDE Developer wants to help Gnash Developers about that, I think they would be really welcome. In any case, if I compile gnash with both OpenGL and KDE support, everything seems to depend on kdelibs, which is not reasonable for the diversity of users out there. Therefore, I had to build the whole stuff two times, once with AGG, and without KDE support, and another one with both OpenGL and KDE. The next problem would be that the generated libraries have the same places and the same directories in both of the configurations. I had to change its –release parameter from 0.8.0 to 0.8.0.agg and 0.8.0.gl. That seemed to do the trick. So, I have two set of packages for Gnash right now:

Steve Kemp: You have to go on living

Debconf7 TODO: These are my personal goals for the debcamp week: The second item is the one that I'm most interersted in right now, but I'll leave it a day to see if there is any useful feedback or massive objections right now. The debootstrap problem Right now there are two versions of debootstrap - the "Debian one" and the "Ubuntu one". The Ubuntu debootstrap package has support for installing additional suites; dapper, feisty, etc.. (My current understanding is that the Ubuntu debootstrap can still install Etch, Sarge, etc.) Right now if you want to bootstrap an Ubuntu system on a Debian host you're out of luck unless you install the Ubuntu debootstrap package. There is no real reason why this should be the case. Either distribution should be able to install the other. Why I care I wrote/maintain xen-tools. This package allows you to create Xen guests of different distributions. Most of the time the tool will install a distribution by invoking "debootstrap ...". It would be nice if this could work upon a plain Debian system such that installing Dapper, Fiesty, etc, was supported. What We Can't Solve There are problems with debootstrap which I'm not going to attempt to solve. The most obvious one is that Sarge's debootstrap cannot install Etch. There are a few open bugs in the Debian BTS which I will triage though, since some of them are safe to close. The Approach There are three approaches for this: <dl>
The hack
Download the source to Ubuntu's package. Test it can install Sarge, Etch & Lenny. Then upload to Debian.
What I'll do
I'll do three things:
  • Triage open bugs on debootstrap.
  • I'll compare the two scripts + manpages, to see if they've diverged.
  • I'll move the Ubuntu scripts into the Debian package.
The neat way forward
Split debootstrap into :
  • debootstrap
    • Compatability package, to pull in the next three:
  • debootstrap-common
    • The tool.
  • debootstrap-debian
    • Contains the scripts/support for installing Sarge, Etch & Lenny.
  • debootstrap-ubuntu
    • Contains the scripts/support for installing Dapper, Feisty, etc.
</dl> This second approach should be straightforward. The first thing to do is to test that actual debootstrap script differ little between the two distributions. That should be simple enough. The next thing is to create the additional packages. Acceptance? For this work to be useful it needs support from the maintainers of the Debian & Ubuntu packages. (I guess mostly the Debian maintainers actually.) Progress The good news is that between the version of debootstrap in Ubuntu right now, debootstrap-0.3.3.3ubuntu4, and that in Debian sid, debootstrap-0.3.3.3, the code has only one minor change. There is only a minor typo-fix in the manpage too. So I can move the scripts into the package trivially...

David Welton: Pluto Meeting

The Pluto Meeting in Padova was fun to speak at. It was good to see people I haven't had a chance to see in a while, and I was very impressed that the organizers managed to put the whole thing together in under a month. That's no mean feat! I gave a talk on economics and free software, a subject that I find fascinating. I went there expecting to get a few more questions or people pushing back against what I had to say, given that a lot of the people present were "of the FSF persuasion" in terms of their beliefs, but for some reason that didn't really materialize. Too bad, because it could have been interesting. In any case, we had a great time back in Padova for a few days!

Adam Rosi-Kessel: Sodoku SQL Solution

In case this blog hasn’t been meeting its geekiness quota, I present the following. Ken (who deserves to be better known in the blogosphere and elsewhere) wrote a Haskell program to solve Sodoku with a single SQL query:
SELECT * FROM values AS aaaa, values AS aaab, values AS aaba, values AS aabb, values AS aabc, values AS aaca, values AS abab, values AS abba, values AS abbb, values AS abbc, values AS abcb, values AS abcc, values AS acba, values AS acbc, values AS acca, values AS accc, values AS baaa, values AS baac, values AS babb, values AS babc, values AS bacb, values AS bacc, values AS bbba, values AS bbbc, values AS bcaa, values AS bcab, values AS bcba, values AS bcbb, values AS bcca, values AS bccc, values AS caaa, values AS caac, values AS caba, values AS cabc, values AS cbaa, values AS cbab, values AS cbba, values AS cbbb, values AS cbbc, values AS cbcb, values AS ccac, values AS ccba, values AS ccbb, values AS ccbc, values AS cccb, values AS cccc WHERE aaaa.v <> 3 AND aaaa.v <> 9 AND aaaa.v <> baaa.v AND aaaa.v <> 4 AND aaaa.v <> bcaa.v AND aaaa.v <> caaa.v AND aaaa.v <> cbaa.v AND aaaa.v <> 8 AND 3 <> 9 AND 3 <> baaa.v AND 3 <> 4 AND 3 <> bcaa.v AND 3 …
(edited for brevity)

Antti-Juhani Kaijanaho: Recursion that isn t

Joey’s recent post reminded me of the old joke about an entry in a dictionary:
recursion see recursion
Non-geeks can stop reading here: if you didn’t understand the joke, you won’t understand what’s coming next either. I mean, sure it’s a funny joke, but it doesn’t quite work. Technically, it’s not even an example of recursion, as the base case is missing. Perhaps it’s co-recursion? — but it isn’t, as it’s not progressing. Why can’t we say instead,
recursion if you do not understand it, see recursion
It would still be funny, and it might actually work.

10 June 2007

Adam Rosi-Kessel: Hospital Thoughts

Hospital CEO Paul Levy is seeking responses to some remarkably frank comments on competition in the hospital industry:
…Please remember that health care is not like other industries, in which companies are rewarded in the marketplace for being the high-quality, low-cost provider. That situation does not yet exist in the health care system. So, am I better off being a industry leader with regard to that approach, or am I better off biding my time and continuing to follow the traditional path until there is a real sign of change in the marketplace?
As I’ve written before, this kind of openness is refreshing and potentially a brilliant business strategy. (It may continue to be so even once every one is doing it.) Paul’s comments and receptivity to feedback remind me of my numerous concerns about Children’s Hospital Boston, which, as far as I know, has no analogous public forum. I’ve sent in comment cards, but they may just drop into a black hole. Two principal complaints about Children’s Hospital: television and food. There are TVs everywhere, including in the waiting rooms. They are always on, even if no one is watching them. On one occasion, we were the only ones in the waiting room. When we attempted to turn the TV off, the staff told us we couldn’t. When we went in examination rooms and our daughter was unhappy, the first response by the medical staff was often to turn on a TV. Our daughter (just over two years old) has never watched TV, and doesn’t find it comforting. Research indicates that TV is not good for young kids, and especially not infants:
Babies are glued to television sets these days, with 40 percent of 3-month- olds and 90 percent of 2-year-olds regularly watching TV, according to a University of Washington study released Monday. …”While appropriate television viewing at the right age can be helpful for both children and parents, excessive viewing before age 3 has been shown to be associated with problems of attention control, aggressive behavior and poor cognitive development,” Frederick Zimmerman, the UW study’s lead author, said in a news release…. The American Academy of Pediatrics recommends no television for children younger than 2, and only one to two hours a day of quality programming for older children.
Recently, we had to stay over in the hospital for a night. There were no private rooms available, so we requested at least not to be stuck in a room where the TV would always be on. They looked at us like we were from Mars. (In the end, our roommate’s TV was always on. The three month old patient didn’t care, but his private nurse wanted to watch TV.) Why is a pediatric healthcare facility encouraging TV for infants? The food complaint is similar: so much of the hospital food provided for children is high in fat, refined sugar, white flour, and artificial ingredients. I was looking for a fruit-juice popsicle for our daughter (what she eats at home), and the only options the hospital could offer had high glucose corn syrup as the first ingredient after water. Again, this is not rocket science — these are not appropriate foods for one- and two-year old children. I realize in both cases (TV and food), the hospital is just mirroring popular culture in an attempt to provide familiarity for most kids, but I wish they would at least provide an option for those families whose kids don’t watch TV and eat a high-sugar diet.

Amaya Rodrigo: Dear Lazyweb

In case you were wondering, the question is: can you see whether Phil is wearing any underwear under that lovey kilt from where you are seated?

Joachim Breitner: Arrived at DebConf7

After about 18 hours of public transport, I arrived tired but savely in Edinburgh. Chairs in DB night trains are not the same as chairs in CityNightLine trains, but if you have only two people in a compartment, you can atleast spread out on three seats. I still didn t get too much good sleep. The Eurostar train from Paris to London behaves as if it were a plane: Long queues before check in, security and passport checks. The benefit of taking a train (hassle-freeness) gets somewhat lost there, and it feels as if it was the marketing department s descision. The train itself is comfortable and has power plugs nice.In London I had to take the underground from Waterloo International Station to Kings Cross. If I had bought a simple one way ticket paid in cash, they would have charged me 4, but with the so-called Oyster-Card, it s only 1.50. But please, if you put ads and leavlets for that card all over the place, mention somewhere that the card itself is basically free! Well, I had to ask to find that out and got myself the cheap ticket.The train to Edinburgh was not different to German trains, besides the fact that it offered on-board wireless network. Pricy, but still reasonable, and not entirely secured.In Edinburgh I tried to go to the hostel first, but walked too far and ended up in Teviot, where the DebCamp is happening, just in time for Dinner. My first brief impression of Edinburgh is: Massive, Dark, Old. Not bad! Also the room I m sitting in right now, the Hack Center, looks lik an old curch, with coloured glass and a balcony around it.

Phil Hands: In case you're wondering...

The answer is: No

Mark Brown: Not so bad

It’s not unknown for people maintaining Debian packages via sponsorship to become frustrated with the process sometimes - a feeling sometimes shared by sponsors who find that the person they’re just nodding through packages. This sort of frustration with process gets pretty depressing at times so it’s a bit of a shock to see us being held up as an example a better way. Of course, the two cases covered here not the same at all but it is still good to see things like that. It looks like we may well continue to make progress with this thanks to proposals like having Debian Maintainers as well as developers - another iteration of ideas like sponsorship which was originally developed to work around a process problem that people were seeing at the time with NM.

Daniel Burrows: Closing bugs just because they're old is not cool

Two bug reports that I wrote were recently closed with the following explanation:

Last message was posted nearly three years ago. Considering abandoned and closing.


Whoops, I thought, I must have missed a request for more information. So I went to the bug page and, nope, the only message on the bug was my initial report.

Let me repeat that: the total sequence of interactions on these bugs was:


  1. I report a bug in 2004
  2. Someone closes it in 2007 because it's "too old".


Now, there are times when it's at least somewhat excusable to close old bugs without verifying that they're fixed (or even knowing that they might not be). When a package has hundreds of bug reports, closing old bugs that can't be reproduced can be a good thing: even if the reports are valid, keeping reports that can't contribute towards a fix around is arguably less useful than cleaning out the bug list so it's usable.

In my case, though, the package in question has only 20 or so bug reports, an easily managed number. Worse, both bugs I reported could be trivially reproduced. One of them was arguably not a bug, but the guy who closed my bugs did not argue that; as far as I can tell, he didn't even look at my bug report.


Notice that I haven't mentioned the maintainer of the package? That's because he didn't close the bug. In fact, the person who closed the bug is not a member of Debian, nor is he in the NM process. Evidently he's just a random user who decided that old bugs offend him, so they should be closed.

So please, everyone, exercise a modicum of common sense when it comes to closing bug reports. This will keep the BTS useful for all of us and keep blood pressures at a reasonable level. :)

Remi Vanicat: A better spell checker for firefox

I’m using firefox as a web browser (well, Iceweasle in reality, but it is mostly the same, no ?). One thing I like, is that there is a spell checker that can spell check what one enter into a web form. But this spellchecker is not the one I would have choose. For exemple, when you are typing in French, and you type “ame”, the iceweasel spell checker propose as possible correction : but not “ me”, which is the obvious correction. I’m not sure of what spell checker iceweasel/firefox use, but for sure, the first corrections to propose in French are the one where only difference is the presence or absence of accent. Even good old ispell in this case propose “ me”, even if it can’t find “ t ” as a possible correction for “ete”
Aspell do that for French, but I cannot find a way to use Aspell for Firefox version 2 or latter.
It seem that there are other browser that could use Aspell (at least Opera and Konkeror), but I don’t really want to change of web browser for this… And I don’t want to install kde (I’ve learnt to use gnome, don’t want to change), and there is no debian package for opera (is opera even free? I haven’t follow the evolution there, and is there an amd64 build somewhere? on opera.com they give me an i386 version it seem). Is there any solution ? Another think I lake, is the equivalent of M-TAB when one is using flyspell-mode in emacs : when one have just enter a word, it can use M-tab to go through the possible correction of the misspelled word. But there might be a keybord binding I don’t know about there.

Evan Prodromou: 20 Prairial CCXV

What a great day. The weather in Montreal has been fantastic the last few days -- we've had sunny, hot, clear days with showers at night to clean up the air. It's been really spectacular to be out. Of course, this is the time of year that Montreal really shines -- festival season. It kicks off this weekend with the Grand Prix du Canada, which includes a giant party in the downtown area, on St. Laurent, and in the rest of the city as well. In my neighborhood (old and new), we have the Nuit Blanche sur Tableau Noir, a street fair that closes down av. Mont-Royal for auto traffic from June 7 to June 10th. There are huge murals painted on the street itself, and every business, retail outlet and restaurant expands onto the street, while people rove up and down all day and all night. And soon we get the International Fireworks Festival, which kicks off in only two weeks. One of the hallmarks of summer in this city is that just about every Wednesday and Saturday there's a gigantic fireworks show on le Ste. H l ne, at La Ronde amusement park. You can see the lights all over the city, and feel the thumping in every house and bar. It's disconcerting and awe-inspiring. We've already started having Piknic lectronik events, with another going tomorrow. Wow. tags:

SXSW talk online So, my talk at South by Southwest 2007 is now available online as a podcast. You can get the audio at the sxsw.com site and you can follow along on the OpenOffice.org or Powerpoint slides at Talks/SXSW07. I liked listening to this recording, although I realize that I need to do some speech practice for future talks. I say "ummmmm..." after every sentence in this talk, which would probably drive me crazy if I were listening to it. I'm surprised that the applause at the end is so strong -- I'd probably have thrown food at this guy. tags:

Wikimania On that note, I'm glad to point out that my and Maj's talk for Wikimania 2007 was accepted. I guess that means we'll be going to deliver it in Taipei. The subject is Extending wikis with social networking tools. We're going to cover Wikitravel Extra: our motivations for it, implementation issues, and results. It's going to be pretty interesting. tags:

8 June 2007

Ian Murdock: Where do I download OpenSolaris ?

Quick poll: What do you think of when you hear the name “OpenSolaris”? It’s an operating system? The community version of Solaris? Right? Not quite. Like Linux, OpenSolaris is a kernel. Except that it’s more than a kernel. Or, rather, more than a kernel but not quite a complete operating system. Are you confused yet? This comment from a recent Register article sums up the problem quite nicely:
If you go to the OpenSolaris web site, all bright eyed and eager to download a new operating system, you will walk away in bitter disappointment. Sure, it says the word “open” in two dozen languages on the web page, but when you go hunting for an installer disk to download, suddenly you are cast into a maze. Nevada builds? What the hell is Nevada? Oh, it’s what they’re calling the OpenSolaris code base. You’ll need to download these components and build them. Well, how do I install it? Oh, you can’t do that, you need to have a Solaris machine up already to build on. But you can get started if you go to Sun’s site and download their Solaris Express Enterprise Pro Champion Edition (after dutifully registering), and then enjoy that pleasant install experience. And when that’s done, you still have the work ahead of you of getting ON (what the hell is that? Oh, OS and Network. Sorry, I don’t work at Sun) built and updated. Did I miss anything? We haven’t gotten to packages to make the system usable yet.
Now, I’m willing to wager most of you reading this have probably heard about DTrace, ZFS, Zones, and the other great stuff Solaris has to offer, not to mention that Solaris is about as enterprise grade as they come, having been at the heart of the data center longer than many of the alternatives have even existed. And don’t forget about more mundane but critical things like backward compatibility, where Solaris has excelled for a very long time. But how many of you have actually experienced this great stuff first hand? How many hands go down if you’re under 30 and don’t remember the Sun workstation—i.e., you’re one of the many for whom Linux = Unix for as long as you’ve been in the computer business? How many of you would take Solaris for a spin if doing so was as easy as, say, downloading the latest version of Ubuntu and installing it? In other words, with all the buzz about making Solaris more familiar to Linux users, it turns out the widest part of the familiarity gap isn’t even technological. So, how do we bridge it? We need to make “OpenSolaris” something you can touch, something you can “Download Now!” and run on your laptop to try out the latest and greatest from the OpenSolaris community. We need to clearly articulate the link between Solaris and OpenSolaris in ways the industry understands—namely, that OpenSolaris is the rapidly moving version that delivers the latest innovations, and that Solaris is the enterprise-grade, supported-for-many-years, backward-compatibility- guaranteed version for the data center. Furthermore, the link needs to be more than just “OpenSolaris as upstream for Solaris”. Given how many more copies of Fedora and Ubuntu are running in the world than the enterprise Linuxes, there is significant opportunity here if we can get the model right. In short, to make OpenSolaris (and, by extension, Solaris) more familiar to Linux users, the first thing we need to do is make it a “distro” in the Linux sense of the word. After all, when people say they know “Linux”, that’s what they’re talking about—how many people really care about the Linux kernel underneath? What they care about is the GNU tools, the desktop, the development environment, and all the other things their favorite distro bundles—and the package system that holds it all together. There’s no reason in the world why (Open)Solaris can’t deliver those same things. Oh yeah, and DTrace, ZFS, Zones, enterprise grade security/scalability/performance/etc., backward compatibility, etc. too. Put this way, it’s easy to imagine what OpenSolaris needs to look like. That’s why the issues here are not primarily technological. This is the essence of the Project Indiana you’ve read so much about in the past several weeks. Our goal is to create a binary distribution of OpenSolaris that simultaneously delivers what people have come to expect from “Linux” alongside the great stuff that make Solaris unique. What comes next? We’re working that out in real time. If you’re interested in following along, participating, or just giving us your two cents, I encourage you to join the indiana-discuss mailing list we just created. We’re particularly interested in hearing from you if you consider yourself a “Linux user” and have been interested in taking Solaris for a spin but, for whatever reason, have considered the gap too wide. What would it take to get you running Solaris?

Russell Coker: Heartbeat service scripts

A service script for Heartbeat needs to support at least three operations, start, stop, and status. The operations will return 0 on success, 7 on failure (which in the case of the monitor script means that the service is not running) and any other value to indicate that something has gone wrong. In the second half of this post (not in the feed) I have included an example service script. It is a very brief script and does not support some of the optional parameters (monitor, validate-all, and meta-data). So this script is not of a quality that would be accepted for inclusion in a Heartbeat release but is adequate to demonstrate the concepts. The XML configuration for a service can have an arbitrary set of name-value pairs, and they are passed to the script as environment variables. For example the below script expects that the XML configuration item named ip will have the IP address used by the service, my script receives this as a variable named OCF_RESKEY_ip. My script doesn’t use the address, it merely allows it to be inherited by the IPaddr2 script (which is part of the Heartbeat distribution) and that script assigns the address to an Ethernet interface. The script is for testing Heartbeat, it mounts a filesystem and starts Apache (which is configured to serve web pages from the filesystem in question on the IP address supplied by the ip parameter). For test purposes the script looks for a file named /root/fail, if this file exists then the status check will always abort. An aborting status script means that Heartbeat can not be certain that the node in question has released all resources that it was using for the service. This means that Heartbeat will have to kill the node via the STONITH service. Such test scripts are the only way to test that STONITH works, and I believe that it’s a necessary part of pre-production testing of a Heartbeat cluster. Update: Made it display error messages in all cases and also reformatted it for better cut/paste.
(more…)

7 June 2007

Amaya Rodrigo: Walking Around

Update: Aprox. translation

Sucede que me canso de ser hombre.
Sucede que entro en las sastrer as y en los cines
marchito, impenetrable, como un cisne de fieltro
Navegando en un agua de origen y ceniza.

El olor de las peluquer as me hace llorar a gritos.
S lo quiero un descanso de piedras o de lana,
s lo quiero no ver establecimientos ni jardines,
ni mercader as, ni anteojos, ni ascensores.

Sucede que me canso de mis pies y mis u as
y mi pelo y mi sombra.
Sucede que me canso de ser hombre.

Sin embargo ser a delicioso
asustar a un notario con un lirio cortado
o dar muerte a una monja con un golpe de oreja.
Ser a bello
ir por las calles con un cuchillo verde
y dando gritos hasta morir de fr o

No quiero seguir siendo ra z en las tinieblas,
vacilante, extendido, tiritando de sue o,
hacia abajo, en las tapias mojadas de la tierra,
absorbiendo y pensando, comiendo cada d a.

No quiero para m tantas desgracias.
No quiero continuar de ra z y de tumba,
de subterr neo solo, de bodega con muertos
ateridos, muri ndome de pena.

Por eso el d a lunes arde como el petr leo
cuando me ve llegar con mi cara de c rcel,
y a lla en su transcurso como una rueda herida,
y da pasos de sangre caliente hacia la noche.

Y me empuja a ciertos rincones, a ciertas casas h medas,
a hospitales donde los huesos salen por la ventana,
a ciertas zapater as con olor a vinagre,
a calles espantosas como grietas.

Hay p jaros de color de azufre y horribles intestinos
colgando de las puertas de las casas que odio,
hay dentaduras olvidadas en una cafetera,
hay espejos
que debieran haber llorado de verg enza y espanto,
hay paraguas en todas partes, y venenos, y ombligos.
Yo paseo con calma, con ojos, con zapatos,
con furia, con olvido,
paso, cruzo oficinas y tiendas de ortopedia,
y patios donde hay ropas colgadas de un alambre:
calzoncillos, toallas y camisas que lloran
lentas l grimas sucias.


Pablo Neruda

Thijs Kinkhorst: Package Sponsorship

Miriam is worried that getting packages sponsored is a burden on DD's and that she's asking them a favour. I can understand where that comes from, but at least for me personally, that's definitely not the case. When I spend time to review and upload a package prepared by someone else, I don't do that just to help a friend, I do it because I've got a genuine desire to improve Debian. One way to do that is to work on my own packages, another is to help get the work done by others incorporated into Debian proper. I see that not as a burden or something they should be thankful for. Rather, I make it a habit to explicitly thank the sponsoree for their work after I've uploaded it. Just like I would thank someone that has provided a patch for my personal project. It's great that so many people are willing to contribute to Debian, and this needs to be encouraged wherever we can.

5 June 2007

Martin-&#201;ric Racine: Tales of positive upstream collaboration

Amaya talks about a case where an upstream developer contributed a patch to the Debian package of his software. I'll take this opportunity to mention a couple of positive experiences of my own: Wouldn't it be great if all upstream developers subscribed to the Debian PTS for their software and answered bugs related to the codebase themselves?

Next.

Previous.