Search Results: "tar"

14 June 2007

Nico Golde: libacpi-0.1

After asking for testers of a libacpi snapshot I got a fair amount of test mails. Thanks to all the people who tried it and helped me!!

Now I finished with coding, testing and documenting everything and happy to release version 0.1 of libacpi.

It is a general purpose shared library for programs gathering ACPI information. It fully implements information about fans, batteries, ac states and thermal zones (apart from trap points).

Try it out on: http://www.ngolde.de/download/libacpi-0.1.tar.gz.

There is also an online documentation (well doxygen generated) on http://www.ngolde.de/libacpi/doc/html/.
test-libacpi.c is an example on how to write programs using libacpi.

For more information download the tarball, have a look into the manual, test-libacpi.c, README and the doxygen documentation.

The next step for me is to port yacpi to libacpi which was also the reason for libacpi since I first wanted to rewrite it and thought it might be useful to have the functionality in a library. There are not yet Debian packages for it because I am really busy at the moment so if you want to maintain it, feel free to do so.

Ross Burton: Tasks 0.8

After all of the mad Tasks hacking that I did over the last few weeks, I thought it really was time to make a release. So without much ado, here is Tasks 0.8. Tarballs and packages for Etch, Edgy and Feisty are on debian.o-hand.com. Packages for Sid are uploaded already. As a teaser, using the experience from working on both the Nokia addressbook and Tasks I've started working on a framework for the next generation of Contacts. Large amounts of the code are from Tasks but with s/task/contact/g applied, and it works quite well already. Hito screenshot That is a view of my entire addressbook, filtered on the OpenedHand group. There is no widget to select groups yet, so you'll have to trust me that it's live! To anyone who noticed that not all of OpenedHand are in the list, and are wondering if I'm subtly dissing people: No I'm not. We have an internal LDAP server, so I stopped keeping my local addressbook up to date some time ago. NP: What's Come Inside Of You?, Freescha

Andrew Pollock: [life] Marfan's Syndrome

Ever since Sarah started seeing Dr Liang at the Stanford Marfan Syndrome and Related Aortic Disorders Clinic for her aortic aneurysm, I've been meaning to write something about them and the condition to try and get them onto the first page of Google when doing a search for the disorder. So here it is. Whilst Sarah doesn't have Marfan's Syndrome, one of the symptoms is aortic aneurysm/dissection, which Sarah has a family history of. So that makes cardiologists that specialise in this field the best people to talk to.

Christine Spang: Impressions

The Real Cambridge is quite a lot different from the US Cambridge. There are vast stretches of green grass everywhere. People drive little brightly-coloured Volkswagons on the wrong side of the street, and in some places one can be walking down the middle of the street and not realize that vehicle traffic can go there too until a car creeps up behind you, trying to get through. Everywhere that’s not explicitly marked “no cycles” (the colleges, historic important buildings, etc.) features dozens of locked up, often step over-framed commuter bikes, decorated with panniers and front baskets. I still find it vaguely nerve-wracking being in a British vehicle, since I’m always expecting cars traveling in the opposite direction to come wheeling towards me. But I have yet to step off the curb and almost get hit by a double-decker bus because I looked in the wrong direction before starting across. The Cam River is frankly quite puny. Walking alongside it you can witness such events as crew boats nearly crashing into tour boats, and apparently a sort of crew racing called “knocking” is often used because of the river’s narrowness. It’s also not very deep, as can be proven by the periodic punt hires along its shores. And here punting is not to procrastinate (very much an MIT-ism) but to propel a punt , which is a flat-bottomed boat with square ends, by pushing a pole against the bottom of the river. It’s difficult to go six hours without being offered a cup of tea, especially if one is visiting many different people. And I have no idea how people can manage to get drunk off of beer, because a pint is quite enough to fill my stomach and leave no room left for more. So much liquid! And the prices of everything here are just about the same as in the US–except in pounds sterling, not dollars. Which means things really cost twice as much. But since the only things I really need to buy are food, drink, and miscellaneous (like anti-death-by-hay-fever-histamine), things will work out alright. Things have been awesome so far, and the local free software-Debian-Ubuntu-GNOME crowd has made me feel right at home. Maybe someday I will actually swap Cambridges for a while. I’ve gotten to see a bit of Cambridge University here too. Since Hanna’s (really awesome) dad is a fellow of King’s College, we got to go in and look around even though it’s exam season and the general public isn’t allowed in — there’s always a person in funny academic robes standing at the gate and shooing away tourists. Right through the gates there is a large, pristine mowed lawn. It’s in such a condition because no one is allowed to walk on it — unless they’re a fellow of the college. Flaunt that. Her dad also supervises the Cambridge end of CME, so we crashed an end-of-the-year garden party for that this past afternoon. And Saturday it’s off to Scotland, which should be just as awesome! And with more people and more Debian! I’m excited.

MJ Ray: Cracking Open Minds to Discover Debian Developer Joining Dates BOF

Ben Armstrong commented:

"When trying to pin down the exact date when I joined, the keyring changelog is no help. First entry for me is in 2000, which is 3 years later. The web archive is no good, as I joined too late in 1997. Searching for me in the PTS shows my first changelog entry 6 Nov 1997, but that's a bit sloppy because that datestamp was added when the packaging process started. It doesn't reflect when the package was finally uploaded. Mailing list posts are little help. But the first file on master is Dec 8 1997 .Xauthority. So I know it was between November 6th and Dec 8th. Not too bad, but I'd love to know the exact day."
Glad it was some use. I have my suspicions that the only way to find the exact date is to get all the keyring maintainers from that time and regress them under hypnosis. Do you think we can arrange that as a BOF at Debconf next week? The "Cracking Open Minds to Discover Debian Developer Joining Dates BOF"?

13 June 2007

Joachim Breitner: DebCamp HalfTime

The DebCamp week (which is before the week of real DebConf) is half way through, time to give some report.I m staying at the Budget Backpacker s Hostel, which is very nice: A newly built hostel, clean, sufficient breakfast support and funny guys at the reception. It s only a few minutes walk from where DebCamp is happening, I just have to pass a whichcraft shop and an old church.I ve seen some parts of the Edinburgh old town by now, from walking around in the evening looking for pubs and from a walk up to Arthur s Seat. It looks all very old and massive, like one large medival move scene. Since we get food at the university cafeteria (which is, I think, lower cafeteria standard), I could not yet try out the food places in Edinburgh.I have started to work on the metainit idea: Creating init scripts for various init systems from small description files, where possible, but the code is not very far yet. Thankfully Urs, who I ve met in Salem, met again at the GPN5 and who know studies here in Edinburgh, has helped me a bit. I was also forced by Enrico to give an unprepared, sponanious 1.5h talk about Haskell, which went well enough. The first gpg keys have been signed; if you take part in the keysiging party, you might want to check out my slightly patched version of gpgsig.In the evenings we either went to the pubs (which sometimes do have bitter lemon, and sometimes not even Fanta), or played great rounds of Mao, or both. From today on, though, there is a room nearby where we can sit and hack all night, it seems, so this habit might change.

Joachim Breitner: DebCamp HalfTime

The DebCamp week (which is before the week of real DebConf) is half way through, time to give some report.I m staying at the Budget Backpacker s Hostel, which is very nice: A newly built hostel, clean, sufficient breakfast support and funny guys at the reception. It s only a few minutes walk from where DebCamp is happening, I just have to pass a whichcraft shop and an old church.I ve seen some parts of the Edinburgh old town by now, from walking around in the evening looking for pubs and from a walk up to Arthur s Seat. It looks all very old and massive, like one large medival move scene. Since we get food at the university cafeteria (which is, I think, lower cafeteria standard), I could not yet try out the food places in Edinburgh.I have started to work on the metainit idea: Creating init scripts for various init systems from small description files, where possible, but the code is not very far yet. Thankfully Urs, who I ve met in Salem, met again at the GPN5 and who know studies here in Edinburgh, has helped me a bit. I was also forced by Enrico to give an unprepared, sponanious 1.5h talk about Haskell, which went well enough. The first gpg keys have been signed; if you take part in the keysiging party, you might want to check out my slightly patched version of gpgsig.In the evenings we either went to the pubs (which sometimes do have bitter lemon, and sometimes not even Fanta), or played great rounds of Mao, or both. From today on, though, there is a room nearby where we can sit and hack all night, it seems, so this habit might change.

Eddy Petrișor: NaughtySVN

After the feedback related to my latest post about NaughtySVN I thought it would be nice to commit my pending changes about update, although they are not enough to make a functional update feature.

I also thought is time to clarify a few things about the project:
[1] see the comment starting from "A word of caution" in this message from Alexander Thomas

David Welton: Ruby gems annoyance - GPL'ed libraries

I tend not to be much of a license bigot, and think that they all have their places, but GPL'ed libraries are annoying, especially when they've been "blessed" by being inserted into an official repository like Ruby's gems. Consider:
  1. A big, large stand-alone application, like...Linux, for instance. I can see why people might GPL it - because there is a very real risk of someone "taking it proprietary" (or was - these days the comunity is too big and too fast to compete with). So I can understand the use of the GPL there.
  2. 200 lines of library code. There is no way anyone is going to "take it proprietary" and make any money off it. Even incorporated into some proprietary application, it's not going to make or break it. So, if it's GPL'ed, those working on proprietary software won't use it. If, on the other hand it uses a liberal license, then they can use it, and if they're smart, they'll contribute back any improvements to it.
I suppose that in case 2, someone might still GPL the code if their goal is solely to keep it out of the hands of proprietary developers, even at the cost of having less utilized and contributed to free code, but it's not an optimal strategy otherwise. The problem that I've stumbled upon is that Ruby's Gem repository is full of randomly licensed code, including lots of GPL stuff. At the very least, this information ought to be very visible so that it's possible to weed out any GPL'ed libraries. At best, the Ruby guys would only accept MIT/BSD licensed code for the standard repository. This is something that's done well in the Tcl community. Tcl is BSD licensed, and so is everything that surrounds it. Sure, people at times consciously decide to GPL their applications, but that's their right, and it's much easier to understand than some tiny bit of random code that one might like to use for some particular function in an application.

Miriam Ruiz: Gnash 0.8.0 is released

The third alpha release of Gnash has been released, with the version number of 0.8.0. As the package is now waiting in the NEW queue, I’ve made some packages available for those who want to test them. They’ve been compiled with Debian SID, not with Lenny or Etch. You might notice that the version in NEW is 0.8.0~cvs20070611.1016-1 instead of just 0.8.0. The tarball for the packages in NEW has been obtained from the 0.8.0 branch of the Gnash CVS, while the ones in the directory I mentioned have been created a bit later from the official 0.8.0 tarball release. They should almost be the same in any case. We have packaged Gnash with the OpenGL backend this time, to be able to support Konqueror’s plugin. If you want to be able to watch YouTube or Lulu TV videos, don’t forget to add the recommended packages: gstreamer0.10-plugins-base, gstreamer0.10-alsa, gstreamer0.10-fluendo-mp3, gstreamer0.10-ffmpeg. If you’re not using ALSA, you might need to replace gstreamer0.10-alsa by the corresponding package providind gstreamer0.10-audiosink that suits your system. Without this packages, you will be able to reproduce Gnash films, but not to see video streams. There seems to be some kind of JavaScript-related problem with Konqueror anyway when visiting YouTube. The videos don’t seem to play from the page, even though they do if you use the .swf URL directly. Feedback is welcome :)

Eddy Petrișor: Your next Gnome subversion client...

... is NaughtySVN.

I have joined this project which was started by Alexander Thomas a few weeks ago and I have convinced him that is better to have a release sooner rather than later. The project is still in its early alpha stage[*] but I thought is better to have a rather minimalist and functional client first.
So, I talked to Alexander and we came up with a roadmap; for the 0.0.1 release I am working on the update feature which is about 40% done[1][2] (update dialog screenshot).

Of course, after the release I will probably make a debian package, too, unless someone else beats me to it :-) .

So, the future is bright.


Update: as a response to a comment, NaughtySVN is designed to be not only a Subversion client, but also a framework for other VCS-es and other clients. It just happens that we are working on the Subversion backend and client at the moment.

P.S.: as curiosity of mine, I have written in python a small nautilus plugin that does the svn update (is a svn frontend) and I must say I really miss the development speed of python when writing in C (or maybe I am out of practice).

[*] only a few features are implemented and can't be used yet as a SVN client without being forced to use another client.
[1] according to my estimations
[2] update related code is not committed yet

Ross Burton: Postr 0.7

Postr 0.7 is out, fixing a couple of very nasty bugs. Tarballs at the usual place, packages heading towards Debian shortly. NP: Flight 602, Aim

Lucas Nussbaum: maintainer wanted for next generation tetrinet server!

You probably all know tetrinet - if you don’t, you should really try that game. There are several servers for that game out there, and one of them is tetrinetx. It is packaged in Debian, but it has several problems: A few years ago, I worked with a few friends on improving tetrinetx. This resulted in: This is hosted on sourceforge under the name tetrinetx-ng, but it hasn’t seen any activity for the last two years. It would really be great if a tetrinet fan could take over the project and start making it alive again. Then tetrinet.debian.net could support tetrifast ;) Also, I could try to setup a server with tetrinetx-ng. Someone wants to host tetrifast.debian.net for me ? Needed: MySQL DB + Apache (for the stats), + not being afraid of insecure code (doesn’t need to run as root)

Jacobo Tarrío Barreiro: Bike sheds

I had prepared a modified version of this photo, making each bike shed door a different color, and with labels on them saying KB , MiB , Tb , Gib , etc. (It was in reference to this thread, in case you were wondering). But then I noticed that the original photo had a CC by-nc-nd license, which means that derivative works are forbidden without permission. I could have asked for it, but when/if I received it, it would already be too late for the joke. So, no modified photo for you. And how does something on which you cannot base your own work be a part of any sort of Creative Commons ?

12 June 2007

Matt Brown: Back on the Intarnets

Now that we’ve settled into our new apartment in Dublin, the ADSL has been connected and I’m back on the net! Obviously I’ve had Internet access at work during this time, but there has been so much new information to take in that I haven’t really had time to do any Debian or WLUG work. I’m still waiting for the shipping company to deliver my computers, so it will be another week or two before I have a development environment that can build and test package. Once that’s setup again I have updates queued for the following: Unfortunately I’m not going to make it to Debconf this year, despite being the closest geographically that I’ve ever been. :(

Biella Coleman: Housebreaking Your Health Insurance

Are you having trouble with your health insurance? Are they stalling on paying a bill? Denying a claim? Not telling you what the heck is going on?? Well you can and should take action to eliminate some of the mystery and move forward, and possibly win fight against the health insurance company. Thanks to my unpleasant ordeals with BCBS of NJ, I have compiled some handy resources and tips to get you started. Good luck and I welcome any other tips that you think should be here. Please email them to me at biella(at)gmail(dot)com Can’t get a straight answer when dealing with health insurance representatives on the phone? Are different representatives providing different and contradictory information? Does talking to the representatives leave you with a pounding headache? Then the following may be helpful: 1. Ideally you should tape record all conversations. If this is not possible, get the name or employee number of the person you are talking to and write down what they told you along with the time and date. If they have agreed to something, make sure they send it to you in writing. This sort of documentation may come in handy later when you are trying to contest or prove something. Is your insurance company flip flopping on a claim? For example telling you that the claim is still being “reviewed” but sending you statements that indicate it has not been paid and never will be? What action can you take to inch things forward? The following may help: 1. Most states have a Department of Banking and Insurance and they are there to help you. Many (perhaps all) provide a service for filing a complaint against your health insurance company and other insurance and banking companies too. When I used the service in NJ , I got assigned an investigator and their service was prompt and helpful. It was my experience that even though they were not able to resolve my issue, the insurance company started to make firm decision on many claims and this alone has been helpful. Before this, it was impossible to get a clear answer from them as to the state of all sorts of claims. They said “NO,” & you think they should say “YES, YES, YES, YES!!!!” In other words, appealing a denial: 1. This site has some great information on how to avoid a denial and what you can do to fight one. 2. Included on their site is the Health Insurance Laws and Benefits Tool which will provide specific information about your rights in different states. For example, you will want to know if there is an external or independent grievance system to appeal your plan’s decisions. In the case of NJ, which is the state I am fighting, the tool provided the following helpful information:
Does New Jersey require an external or independent grievance system to appeal your health plan’s unfavorable decisions? Yes, for all health plans.

On what grounds can you file your external grievance?
Investigational treatment appeal, medical necessity. What is the status of the external grievance panel’s decision?
Binding. External grievance systems allow you to take a dispute with your health plan to a doctor or review board unaffiliated with your health plan. Thus, both you and your health plan receive an impartial ruling on its decision to deny coverage of services or treatment. Additionally, you can file a complaint against your health insurer with your state’s department of insurance.
Additional Helpful Information and Resources 1. The message boards on lawyers.com are a great place to hit for information. I have found folks there helpful.
2. You many want to blog about your experience as you may get an unexpected response directly from your insurance company. I think there are pro’s and cons to blogging about your experience but it does provide a public face to your ordeal and allows you to chronicle exactly what has transpired.
3. If your cases is particularly shocking, do not hesitate to hit the local media.
4. If your claim has been denied by an external review panel, you may not have much luck suing but if there is no external review panel, you can and should also try Small Claims Court or other legal action. Further, even if your claim was denied by an external review board, you may have other options for suing, for example, due to their bad faith handling of a claim. And on that note, here is a great legal resource covering the topic.

Daniel Stone: LCA 2008 CfP now open

The linux.conf.au 2008 Call for PapersPresentations is now open. We're accepting submissions from now until July 20th, 2007; you'll be notified in early September of the paper committee's decision.

Go check out the announcement, and start thinking of cool talk ideas. Once you've got to that stage, be sure to read mbp's How to get a conference abstract accepted, and Mary's Getting a talk into linux.conf.au (not just because she's a co-chair of the paper committee).

This year, we've introduced one optional step: a video submission. If you think that you're a great speaker, and if only we could see you, we'd say yes instantly, then grab a camera, and convince us. :)

Also, if you're interested in running a mini-conf before the main conference, we're also taking proposals for mini-confs.

See you in Melbourne!

David Welton: Information Asymmetry and IT Hiring

It appears as though Akerlof's "market for lemons" that Bruce Schneier wrote about has caught on. While hiring is certainly a case of information asymmetry like the "lemons market", there are some other factors at work: The Principal-agent problem: even once you've hired someone, there are some asymmetries at work of a different sort: your motives may not be the same as your employer's, and it may be difficult for the employer to monitor what you're doing. If you're digging ditches, it's pretty easy to see what you've done, and how well you've done it. If you're creating a complex system, on the other hand, it's much harder, even for an expert, to tell what sort of job you've done, let alone for a "pointy haired boss" with little knowledge of the domain at hand. The wikipedia article discusses different schemes and problems with attempting to align the interests of employee and employer. The curious may wonder why anyone hires anyone at all, rather than just having all work be a series of contracts between independant individuals, rather than companies and employees. Ronald Coase asked the same question a number of years ago, and determined that the answer lies in transaction costs - the subtle friction that permeates any real world exchange. Think about having to continuously search for potential contract workers, and bargain with them over prices. It's easier to employ someone, and be able to count on their work, at a steady rate, than to have to outsource important functions continuously and at variable prices. It's also probably cheaper in some ways because of people's tendency to be "risk averse" - they prefer the steady but stable job over a more variable, but higher paying income stream. As we've seen in recent years, as transaction costs have come down, it does become easier to outsource certain kinds of work, and we have seen more of it. Economics provides a fascinating lens through which to view the world of high tech and information goods, and the superficial overview that I've attained has certainly served me well. A good place to start, besides perusing wikipedia, is the book Information Rules by Hal Varian and Carl Shapiro.

Michal Čihař: Troubles on being popular

phpMyAdmin is quite popular tool and it attracts people who want to earn money on it. For long time Navicat company used phpMyAdmin name to propagate their completely different product, but this seems to be gone now (probably with help from Google, but I haven't receive reply from them, but short after my complain, all their ads abusing phpMyAdmin were gone). Today Marc spotted that somebody just stole our website added Google shopping cart and started to sell phpMyAdmin: Main stolen page screenshot Buy page screenshot Lets see how long will it take to get them down. PS: There is intentionally no link in this post, you can see URL on screenshot, if you really want. Update: It looks like hosting is very responsible on such problems, they just disabled this domain:
Hello, Thank-you for your e-mail enquiry. Please be advised that we have disabled site php-my-admin.awardspace.com. AWARDSPACE.COM provides legitimate web hosting services and has a ZERO tolerance policy towards these violations. We apologize for the inconvenience this has caused you. If you still have any concerns in regards this matter feel free to contact us. Best Regards, Harry AWARDSPACE Dedicated Support Team support@awardspace.com /"Your winning web hosting provider"/ http://www.awardspace.com

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).

Next.

Previous.