Search Results: "rul"

12 June 2007

Antti-Juhani Kaijanaho: Benja on denotational semantics

My friend Benja Fallenstein got carried away in the comment section of my latest post on recursion and wrote a tutorial on how it all relates to denotational semantics. It’s a shame it is buried somewhere in the comments, so I am reposting the comment here with Benja’s permission. The tagline is, Denotational semantics tutorials. It s the new monad tutorials!
Benja Fallenstein writes: Having read and understood [the] entire post, I can now summarize Antti-Juhani s complaint in a way that programmers with no theoretical background will understand: The definition is an infinite recursion. Sure, it s self-referential, but since it recurses forever, it doesn t actually define what recursion is! :-) That said, I find it kind of a pity to introduce all this theory without talking about why it nicely models the real world. Antti-Juhani argues that this pretty much the definition of popularized science, but I have to admit that, as definitions go, I like recursion: see recursion better. :) So let me have a quick go. [UPDATE: Didn t turn out to be quick at all. This is, in fact, as long as Antti-Juhani s original post. Proceed at your own peril.] All of this comes from denotational semantics, which is concerned with what expressions in a programming language mean and which ones mean the same thing. For example, 7 denotes the number seven, 7+2 denotes the number nine, and 5+4 also denotes the number nine. Now, here s the knotty problem. If we have f(x) = if x = 0 then 1 else x*f(x-1) then f(4) denotes the number twenty-four, but what does f(-2) denote? So, denotational semantics introduces a new, special value, recurses forever. An expression of type integer either denotes an integer, or, like f(-2), it denotes recurses forever. Now, about these partial orders. (Reminder: A partial order says, for every pair (x,y) of elements of a certain set, that x is smaller than y, equal to y, larger than y, or incomparable to y.) Here is Benja s guide to what the partial orders of denotational semantics mean: Let s say that you write a program where, in one place, you can plug in either x or y. If you can write such a program that prints foo when you plug in x and prints bar when plug in y, then x and y are incomparable. If you can t do that, but you can write a program that prints foo when you plug in y, and recurses forever when you plug in x, then x is smaller than y. If every program you can write will do the same thing whether you plug in x or y, then x and y are equal. (We ignore details like out-of-memory errors and *how long* a program takes to do something.) Examples: - 5 and 7 are incomparable. Proof: if ___ == 5 then print foo else print bar . - f(-2) f(2). Proof: if ___ == 2 then print foo else print foo if you plug in f(-2), this will loop forever, if you plug in f(2), it ll print foo . - (5+2) = 7. Whatever program I write, it will do the same thing, no matter which of these expressions I plug in. Now, with expressions of type integer, the resulting partial order is: Recurses forever is smaller than everything else. All other values are incomparable. Recall from Antti-Juhani s post that the bottom element ( ) is defined to be the smallest element of a mathematical universe (if such a beast exists). Since recurses forever is smaller than everything else, it s the bottom element of this universe. That s what denotational semantics calls it. (Haskell, too.) Of course, this partial order is kind of boring (the technical term is flat ). It gets more interesting when we consider functions. In general, we can talk about functions from values of type S to values of type T, where we already know the partial orders of S and T. In particular, we can talk about functions from integers to integers. Now, if you can find an x and a program that prints foo when you plug in f(x) and bar if you plug in g(x), then you can write a program that prints foo when you plug in f, and bar when you plug in g. (Exercise! ;-) ) Further, denotational semantics wants applying a function to a parameter and then doing something with the result to be the *only* way you can get information about a function. No f.get_function_name, please. (If your programming language has that, you can t map the functions of your programming language 1:1 to the functions of denotational semantics.) By my rule above, this implies that f = g if and only if f(x) = g(x) for all x. Since formal theories can t have fuzzy stuff like my rule, denotational semantics takes this as the *definition* of the partial order on functions. The bottom element of this mathematical universe, then, is the function that always returns bottom, no matter what it is given or in other words, a function that recurses forever, no matter what parameter you pass to it. (Side note. Denotational semantics allows only monotone functions that is, if x = y, then f(x) = f(y) for all f, x, and y. That s an example of how all these definitions allow us to make formal statements about the real world. In the real world, if you can find a function f and a program that prints foo when given f(x) and bar when given f(y), then you have a program that prints foo when given x and bar when given y so if f(x) and f(y) are incomparable, then x and y must be incomparable, and the other way around, if x and y are comparable, then f(x) and f(y) must be comparable, too. (This reasoning doesn t exclude the case that x = y and f(x) >= f(y). If you really care, prove it yourself. :) ) This ends the side note.) Recall, now, Antti-Juhani s definition of recursion: An equation of the form x = some expression (which may contain x), interpreted as a recursive definition, defines x to be the smallest value satisfying this equation. The models constructed in denotational semantics have the property that for any equation of this form, the set of values satisfying it does have a smallest element, so x is well-defined no matter what the equation is. It s important to note that this does not mean that x has to be bottom, because there are equations to which bottom is not a solution. Let s look at a slightly simpler example than the one Antti-Juhani gave. f(x) = if x = 0 then 0 else f(x-1) We have f(0) = 1, but bottom(0) = bottom, so f can t be bottom. The equation has more than one solution, though. It is satisfied by a function that returns 0 for x >= 0 and returns bottom (recurses forever) for x 0; but it is also satisfied by a function that returns 0 for every input. And by an infinite number of functions that return 0 for some negative inputs and bottom for others. We want the first of these solutions, of course, because that s what we get if we interpret the equation as a computer program, and computer programs are what we re trying to model. But we re in luck: The first solution is smaller than all the other ones, because for all inputs, they either return the same value, or the solution we want returns bottom and the solution we don t want returns 0 (and bottom 0). The point of it all is, of course, that when we interpret an equation as a computer program, we always get the least value satisfying the equation (if we use a partial order that follows my rule, above). And that, my friend, is denotational semantics.

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.

11 June 2007

MJ Ray: Stopping the Nixforce.com Sploggers

I asked: Should we try to stop them, or just post that "Nixforce look like an unscrupulous load of swines trying to trade on Debian Developer names without permission" all over their site? Paul wrote:
"They are violating Google's Adsense policies by inviting people to click on their ads on their front page ("If you dont want to enter, at least go to one of our Advertisers below"). You could, at the very least, have this line of their income terminated by reporting them here "
Works for me. It said they'll respond within 24 hours. Brandon Holtsclaw suggested:
"Or set something to look for the referer pulling the feed and redirect just that nixforce domain to a 404 or some nasty pr0n feed :) just a thought."
I would, but I think most things will fail to pull if I send a 40x and I can't think how to do a redirect or proxy neatly without messing with RewriteRule or similar - nixforce aren't worth messing with RewriteRules. I also suspect they're pulling from Planet Debian, rather than my web host, so if I made a mistake, I'd be very unpopular. Also: Russell Coker and Antti-Juhani Kaijanaho

10 June 2007

Gustavo Franco: I'm in Edinburgh, my baggage isn't.

I arrived yesterday in Edinburgh for debcamp and debconf 7 after aprox. 14 hours and 3 flights from Brazil to Scotland (Rio->Guarulhos, Guarulhos->London, London->Edinburgh). The city looks really cool with a lot of interesting places to visit and the weather is ok for me until now. We're now in the main talks room, that's is a sort of hacklab at this moment too.

Unfortunately TAM and British Airways (they call each other partners) don't give me my baggage yet, at least I've my laptop and my friend Felipe (faw) to help me with essential stuff. Hopefully this problem will be sorted out really soon, so I can concentrate on real Debian related work.

See you!

9 June 2007

Axel Beckert: .org registration rules arbitrariness

For about nine years, my domain deuxchevaux.org was hosted (which means web, DNS and a catchall e-mail forward) by Internett at Saarbr cken. Although it was a sponsered hosting without much support I was quite happy with their service. But especially my ideas and demands regarding spam filtering grew out of the possibilities of a mass hosting solution. Since I run my own web, mail and name servers for a while now, it was no question that also deuxchevaux.org should become self-hosted. Since I run a root-server at Hetzner and their “robot” also offers domain handling, I planned to transfer deuxchevaux.org to them. Therefore I first had to register my two DNS servers (sym.noone.org and virt.noone.org) with them. In the documentation there was a note that for .org domains, name servers in a .org domain have to be registered with the same registrar. And just a few hours after registering the name servers via their web interface I got a mail from Hetzner Support that the domain of my name servers are not registered with Hetzner and so I cannot use them form .org domains. Asking for the cause of this rule, I got the answer that this is a rule by Hetzner’s upstream registrar, Cronos AG. Well, since I don’t understand such arbitrarily looking rules, I was looking around for another registrar with usable web interface. On the DaLUG mailing list, someone recommended eDNS. Since their single user account is free of setup and monthly fees, I signed up with them and started playing around with their web interface. When I tried to transfer deuxchevaux.org using the Auth-Code, I got the response that the transfer failed and when I clicked on “Details”, I got “$VAR1 = [];” as detailed information about the failure. Data::Dumper says hello. I wrote them and asked if they can tell me, what that should mean last Thursday and got no answer so far. I don’t think, I’ll register domains with them anymore. So where to try it now? Someone recommended GoDaddy, but I neither like their website (way too much targeted on beginners and mainstream) nor do I want to apply for a credit card or a PayPal account to be able to pay their bills. So a bill from my UML hoster Korypet (aka VD Server) caught my eye: They were lowering prices for registrations at some top level domains (and in comparison to the recent lowerings at eDNS the new prices also apply to existing contracts) including .at and .org (and I only have .at, .ch and .org domains). I didn’t knew they also do domains outside of selling them in packages with UML hosts. So I wrote to Korypet support, if they offer a web interface for domain handling and got a reply less than two hours later: Not yet, but they’re working on it. Until then, I can request domain handling tasks by e-mail to their support. Since I know their UML managing web interface – which works fine – and since I’m happy with their support, service and prices since years (I’m customer there since 2003), I replied with all the necessary data for the transfer. Well, the transfer failed, too. But in comparsion to Hetzner or eDNS, they made the effort to exactly find out, what happened. So what did happen? The rule which the Hetzner support guy told me that it was from their upstream registrar wasn’t from there but from Public Internet Registry (PIR) itself. And the rule seems to match not that often, so that many people involved in domain registration don’t know about it (and usually neither understand its existence when they hear about it). Also I have no understanding for this harassment and so I felt the strong urge to get one over on them. Korypet suggested several solutions fitting my needs (i.e. the usage of my DNS servers for my domains). They even offered A records under some of their PIR registrered domains pointing to the IP addresses of my DNS servers for no fee, but luckily some A records under my own .ch domain sufficed. So the transfer was successful on Friday evening, 6pm local time, my own mail server (running Postfix) was happily rejecting a lot of spam to (and even from) non-existing users (which came in over the catch-all before) as well as hosts greeting with not fully qualified or invalid HELOs and greylisting others via David Schweikert’s Postgrey. The number of accepted mails and recognized spam sunk immediately by approximately factor four on the whole mail server, although deuxchevaux.org isn’t the only domain that receives mail there (but was the only one which had a catch-all before). So in the long run, I’ll probably move all .org and .at domains over to Korypet since they have not only fair prices but also a competent and individual support. (And yes, this is a recommendation. ;-)

Isaac Clerencia: How to hire great people: drive, curiosity and ethics

I’ve just come across this article from Marc Andreessen about hiring. It raises some interesting points about the hiring process, which he bases in three criteria. Drive
I like to see what someone has done. Not been involved in, or been part of, or watched happen, or was hanging around when it happened. If you’re a programmer: the open source project to which you’ve made major contributions. Something. If you can’t find anything — if a candidate has just followed the rules their whole lives, showed up for the right classes and the right tests and the right career opportunities without achieving something distinct and notable, relative to their starting point — then they probably aren’t driven. And you’re not going to change them. Motivating people who are fundamentally unmotivated is not easy.
Curiosity
Sit a programmer candidate for an Internet company down and ask them about the ten most interesting things happening in Internet software. REST vs SOAP, the new Facebook API, whether Ruby on Rails is scalable, what do you think of Sun’s new Java-based scripting language, Google’s widgets API, Amazon S3, etc. If the candidate loves their field, they’ll have informed opinions on many of these topics. That’s what you want.
Ethics
Pick a topic you know intimately and ask the candidate increasingly esoteric questions until they don’t know the answer.
They’ll either say they don’t know, or they’ll try to bullshit you.
Guess what. If they bullshit you during the hiring process, they’ll bullshit you once they’re onboard.
He also links to Software Interview, a site which lists questions and answers that several companies use in their hiring processes.

Russell Coker: configuring a Heartbeat service

In my last post about Heartbeat I gave an example of a script to start and stop a cluster service. In that post I omitted to mention that the script goes in the directory /usr/lib/ocf/resource.d/heartbeat. To actually use the script you need to write some XML configuration to tell Heartbeat which parameters should be passed to it via environment variables and which nodes may be candidates to run it. In the below example the type of web means that the script /usr/lib/ocf/resource.d/heartbeat/web will be called to do the work. The id attributes are all arbitrary, but you want to decide on some sort of consistent naming scheme. I have decided to name web server instances web-X where X is the IP address used for providing the service. The nvpair element contains a configuration option that will be passed to the script as an environment variable. The name of ip means that the environment variable will be named OCF_RESKEY_ip. Naming of such variables is arbitrary and a script may take many variables. A well written script (which incidentally does not mean my previous blog post) will have an option meta-data to give XML output describing all the variables that it accepts. An example of this can be seen by the command /usr/lib/ocf/resource.d/heartbeat/IPaddr2 meta-data. In the XML the resources section (as specified by --obj_type resources on the cibadmin command-line) describes resources that the Heartbeat system will run. The constraints section specifies a set of rules that determine where they will run. If the symmetric-cluster attribute in the cluster_property_set is set to true then resources will be permitted to run anywhere, if it is set to false then a resource will not run anywhere unless there is a constraint specifying that it should do so - which means that there must be at least one constraint rule for every resource that is permitted to run. In the below example I have constraint rules for the service giving node-0 and node-1 a priority of 9000 for running the service. In a future post I will describe the cluster_property_set and how it affects calculations of where resources should run.
(more…)

8 June 2007

Biella Coleman: Michael Moore wants to hear your horror stories

Not so long ago, I blogged about my trials and tribulations with Blue Cross Blue Shield of NJ. I got a very interesting response that I will blog about later today or tomorrow, though I can’t say the outcome has been to my liking. While my problems with BCBS have not reached the status of truly horrific, I do think they are indicative of the how many insurance companies operate: with total lack of transparency and often, integrity (again more on this later). For those of you who have had horror stories, Michael Moore is now calling for collecting your horror stories as a consequence of the American health care system and health insurance companies. Do take the time to make a video if you have a story to tell.

Thijs Kinkhorst: Opentaal word list gets official approval

Good news: the OpenTaal Dutch word list (and spell checker) has gotten official approval from the TaalUnie, official authority on the Dutch language, which means that it's considered to be "just as correct" as the Green Booklet. The list is released under the LGPL licence. I've only contributed a bit to the project so far, but the next step will of course be to get it into Debian. The project originated to create a free update of the exising 1996 word list, according to the new spelling rules. Now that this is "finished", next projects are a grammar checker and thesaurus.

5 June 2007

Martin-Éric Racine: Award to the Debian community of Finland

Open Source 2006 is a one-day seminar that provides Free Software actors of Finland with a forum to present their work and the current trends in Free Software development to a greater audience comprised mainly of decision-makers from the business and governmental sectors. Finnish Open Office localization team This year, a noticeable trend were governmental cases of transition to Open Office and other Free Software solutions on the municipal desktop. Thus, it was only fitting that Finnish localization took greater importance than before and, in concordance, that this year's Linux-tekij award went to the Finnish Open Office localization team. The jury invited 3 people from the localization team to receive the award on their team's behalf: Pastor Koskinen also gave a very stimulating lecture on the collaborative effort behind the localization, mentioning in passing that Czech Pavel Jani k also plays an important role in building the Open Office binaries for a number of Baltic and Scandinavian languages. Debian community of Finland The jury also granted an honorary mention to the Debian community of Finland to acknowledge years of achievements, reaching an important milestone in 2005 when Finland hosted the yearly Debian Conference. Another motivation was a number of nominations for Ubuntu, both as a distribution and for its extremely active local user community. Given how a majority of Ubuntu developers actually are Debian Developers, the jury unanimously decided to honor them collectively from the perspective of Debian and its derivatives. The jury invited 3 people to receive the honorary mention on the community's behalf: Lars gave the audience a very interesting perspective of his long involvement with Debian, while Tapio emphasized particular pride in seeing non-programmers that maintain documentation or localize software be acknowledged. Fabian gave a very emotional speech in which he praised the commendable efforts of dozens of volunteer DebConf5 organizers that discretely handled unpleasant tasks that were nonetheless essential to the success of the event. The Jury Yours truly was invited to join the jury on behalf of Linux Aktivaattori, alongside representatives from the academic, business and Free Software communities. During the prize ceremony, FLUG chairman Arto Ter s and myself took turns at describing the award's selection process and at introducing the winners.

Martin-Éric Racine: Buzzword opportunism won't do

Being involved in no less than four different projects, all with excellent prospects for a permanent job, reminds me of why riding the Free Software bandwagon as yet another opportunistic buzzword won't do: In three of the projects, people insist upon communicating using the closed source VoIP application Skype. There indeed is a crude port for Linux on i386 (though not for amd64, powerpc, or any other architecture), but the dependencies are broken and my friends at Skype emphasize that Linux is a non-market for them, so I should not expect any solution any time soon. Still, the people behind some of these projects regularly threaten that I'm wasting their time by "refusing" to install Skype on my computer. Free Software promoters who don't understand what "non-free" means. In two of the projects, the corporate homepage is made as a single Flash animation. Mentioning that Flash support is extremely broken and thus essentially non-existent on Free Software platforms is pointless: the people behind the project are Windows users and yet they insist that their project is about promoting the free circulation of ideas using Free Software. Free Software promoters who don't understand interoperability. In one particular project, the product follows the Googlesque model of "the Web as my application and file server". Great idea, except that ― once again ― the people behind the project are Windows users and they insist that the Thin Client hardware must have a standard set of applications pre-installed and some storage media, thus defeating the purpose of this business model. Promoters of "the Web as my application and file server" model who don't understand the implications of a Thin Client solution. In all cases, the people behind the project mean well, but ― not being Free Software users themselves ― they clearly don't understand the profound implications of the Free Software agenda; they only see it as a license-free technology to connect the masses for cheap and they evidently find it difficult to think outside the Windows PC framework. Free Software as a business model, in a nutshell: data interoperability and the client-server model. Either get it or you're wasting my time ...and yours too. Nothing personal; just business. PS: I sincerely hope that anybody who recognizes themselves in the above rant will acknowledge my honest concerns and embrace this opportunity to truly adopt Free Software. Just do it! It doesn't matter where you get the FOSS. Just make sure that the FOSS gets you! (inspired by a great Candy Dulfer song currently blasting through the headphones).

3 June 2007

Matthew Palmer: OfflineIMAP and Deleting Folders

(File this under "Reminders for the future Matt") I use, and highly recommend, OfflineIMAP for the synchronisation of your e-mail between your daily working machine and your IMAP server (if you don't have an IMAP server available for your mail, it's high time you got one). You point it at an IMAP server somewhere far, far away, and a local Maildir, and all of your mail and folders magically get synchronised in both directions. New folder on the server? After the next run, it'll be on your local machine. Even more magical, though, is that any new mail or folders you create on your local machine will be uploaded to the server. Woohoo! Offsite Backups! (Before you GUI mail users say "pfft, my client does that all for me", I'll remind you that I don't need to chew several hundred megs of core to delete my spam) I've got some magical procmail rules (specifically, look for "ARTFUL PROCMAIL") that automatically filter list e-mail into individual folders (with automatic creation of the folder if necessary, of course). This makes mailing lists soooo much easier to handle. Of course, when I unsubscribe from the list a couple of weeks later, that folder is still sitting there, empty and forlorn. I don't mind empty directories, except that they slow down the OfflineIMAP sync run, since it asks "any new mail in here?" for every one of them. I'd just delete them from my local machine periodically, except that OfflineIMAP can't delete folders off the server if you remove them from your local Maildir (and vice versa). Instead, the folder gets re-created on the local machine, which is definitely not the result I'm looking for. I'm pretty sure this is an IMAP limitation, so I'm not criticising John Goerzen for not implementing this particular feature. However, the empty folders bother me a bit, so I decided to do something about it. Namely, I hacked up some little shell one-liners. These one-liners are all dependant on you having the same IMAP server (Courier) and folder name mapping (none) as me, otherwise there's a good chance that your file names won't match the patterns I've used. For reference, My folders on the server are dot-directories under $HOME/Maildir, and my folders all start with INBOX. on the client. Also, both sides use periods to separate folder levels. As an example, e-mail to the debian-devel-announce list gets stored in $HOME/Maildir/.lists.debian-devel-announce on the server, and $HOME/Maildir/INBOX.lists.debian-devel-announce on the client. I've got one big before you start warning: this process involves deleting things. If you're not able to verify that what these snippets are doing is correct for your particular situation, then please do not run them. Also, if running them causes all your e-mail to disappear or your cat to fall pregnant (despite being spayed and/or male), then that isn't my fault. The only warranty I give is that It Works For Me. It May Not Work For You. As a first step, make sure that your local and remote mail stores are in sync -- presumably by running OfflineIMAP. Otherwise, a folder which is empty on one side might not be quite-so-empty on the other side, and that would possibly make for sadness. Stopping e-mail from coming into your mailboxes would be good, too -- I just turned off my MTA for a few minutes, because clogging other people's queues is fun. Doing something smart with procmail would also work. On the OfflineIMAP client machine (laptop, home desktop, whatever), cd into your local mail store, and run this to generate a list of IMAP folders that don't have anything in them:
 for i in INBOX.*; do find $i -type f   grep -q $i   \
 (echo $i   sed 's/^INBOX//'); done >/tmp/empties
The contents of /tmp/empties should look something like:
 .Deleted
 .junk
 .lists.debian-devel-announce
 .lists.something-funny
 .spam
Review the list of folders it produced (just to make sure nothing really unpleasant ended up in the list), and then run:
 for i in $(cat /tmp/empties); do rm -rf INBOX$i; done
to delete all the empty folders. Next, copy the list of folders onto the IMAP server (yes, you need shell access on the server to do all of this; that's why I run a Linode), cd into your Maildir on the server, and run this:
 rm -rf $(cat /tmp/empties)
That removes the folders from the server as well. For some reason, OfflineIMAP doesn't notice that a folder has gone away, and so it doesn't remove the metadata for the deleted folders from it's cache. I'm not sure if that hurts performance or is otherwise injurious to your health. To be ultra-neat, go into $HOME/.offlineimap (or wherever your metadata dir is) on the client machine and run
 for i in $(cat /tmp/empties); do find . -name INBOX$ i ; done  xargs rm -rf
And that makes everything clean and tidy. Now, of course, someone's going to point me to a small script that finds all of your local empty folders and deletes them locally then issues an IMAP "delete folder" command on the server. But I had fun working all this out, so it's not a complete waste.

1 June 2007

Matthew Garrett

This thread on the Sun initiative to produce a more Linux-like distribution of OpenSolaris is interesting not so much for the technical goals, but as an insight into the community. The immediate response to the proposal? A set of complaints that it hasn't followed the correct process.

Now, to be fair, there have been other threads discussing the technical and social desirability of such a distribution already and some are still ongoing - it's not like the OpenSolaris community has ignored it entirely in favour of process fetishising. However, it's indicative of a community that's more concerned with procedure than it is with producing high quality software. What I suspect has happened is that Sun felt it was important to ensure that procedures were put in place before creating a community in order to avoid the problem of it immediately turning into low-grade anarchy. The problem with this is that if you create procedures before you create community, the people who end up enforcing the procedures tend to be the sort of people who find enforcing procedures to be the interesting part of the job rather than the ones who see them as necessary evils to enforce moderately sensible community development.

Sun's clearly stuck between a rock and a hard place here. They don't want to be seen to be directing the community too strongly, or they'd end up like Red Hat did with Fedora - you alienate your community by giving them the impression that they have no influence over the direction of the distribution. On the other hand, the rapid growth of the Ubuntu community strongly suggests that having a strong leader can ensure that people don't get too bogged down in procedure at the cost of technical progress.

I suspect that Sun made the wrong call here. Having more corporate influence to begin with might have put off some contributors, but it would also have allowed the development of a functional community at an earlier stage. Sun could then gradually withdraw (as Red Hat have been doing with Fedora) and let the community play a larger role. Perhaps that way we'd hear more about the technical contributions coming out of OpenSolaris and they wouldn't be left with just the same two cards they've been playing for a couple of years now - dtrace and ZFS.

On something of a tangent, I don't think their choice of license has helped a great deal here. Two of the areas where OpenSolaris is most behind Linux are hardware support and desktop/kernel integration. The choice of a GPL-incompatible license strongly discourages any Linux developers from working with the low-level code of OpenSolaris due to the perceived risk of contaminating the Linux codebase at some later point. That rules out a huge pool of skilled developers (I'm going to be potentially controversial here and say that I suspect Linux has a larger skillset here than all the BSDs put together, and quite possibly Solaris added to that) who are writing a good deal of advanced code. Meanwhile we're left with OpenSolaris having even worse laptop support than FreeBSD. These are people who could have added to the community socially as well as technically. Instead you've got a community led by a set of Sun staff who are paranoid about doing anything that might make it look like Sun controls the community. Score.

30 May 2007

Christoph Berg: Debconf Flights booked

I just booked my Debconf flights. Airline websites are a major PITA. Germanwings wasn't even available, "maintenance today from 23 to 2h" - sorry, no happy customer. Ryanair's appearance was the worst. I don't mind crappy html as long as it works, but why do I have to choice between "Herr" (Mr), "Frau" (Mrs), "Mrs" (!), and "Miss"? When I said I lived in "M nchengladbach" they replied with the equivalent of "Please do not use special characters like < > [ ]." Apparently I'm allowed some amount ("20kg 15kg for travel past November 2006") of luggage (except if I'm below the age of 2), but later they charge for it. Then there's a drop-down menu asking me in I which country live, but it doesn't really mention that this is really where I select whether I want travel insurance (I don't). At the end of the page I'm asked to confirm that I accept the travel insurance terms (I still don't), but that's also the checkbox for their general terms of service. That flight would have gone through Prestwick (PIK) which is apparently fairly well connected to Edinburgh, but the flight back would leave at 7.50 am. I don't think I like that. In parallel, I tried easyjet.com. They fly from Dortmund, and while looking where that airport is, I first tried "airport lounges" which was obviously the wrong place. A bit more hidden was a list of airports, but it didn't include Dortmund. Google for the rescue... Then they tell me "your total amount is 99,71 ", only to additionally add 7,50 on the next page just because I'm using a credit card - who doesn't? Of course I'm willing to fill out personal information like my address etc, but why do they want my phone number and email address? And why do they claim "you haven't entered a phone number" when I put it (rather a fake one) in the "mobile phone" field (below "home")? What really drove me crazy was when they refused to accept the booking when I left the "we like to find out about our customers [...] reason for your trip" field empty. That's a drop-down menu with the choices "Business", "Visiting friends or family and staying with them", "Holiday", and "Visiting friends or family but staying elsewhere". No, I'm not going to tell them. (I randomly selected "Business".) In the end, I booked there, but it wasn't really fun. Whatever. Meet you at Debconf :) [Update] Oh, and I had to confirm I "have read, understood, and accept easyJet's terms and conditions, including the new rules for hold baggage". Thats a minimum of 10kB legal blurb - a simple "accept" checkbox would have been enough...

27 May 2007

Miriam Ruiz: Debian multiple binary packages: example 2

Some days ago I wrote a small example of creating multiple binary packages from a source where the program was built and installed with autotools. Now I’ve remade the example, starting from a system built directly using a make script, and which doesn’t provide an install target. Even more, it is supposed to get the data from a directory relative to the working directory. This is, in fact, a scheme often found when packaging games. The debian/rules script uses quilt to apply the necessary patches, so that absolute directories are used for the data file.

22 May 2007

Alastair McKinstry: Irish, Schools and the Election

Well, theres a General Election here in Ireland on the 24 May, and the politicans are well and truly on the last lap of the campaign trail. We're a bit rural to see them all, for those who don't make it to the door, here's something to think about. In Moycullen we are on the edge of the Gaeltacht. Various institutions, such as the main primary school, have been struggling to retain that status with the encroachment of the B arla 'burbs (suburbs of the Gaeltacht where English dominates). Our children go to Baile Nua, the villages' gaelscoil. To hold standards, the school has a policy of capping its current enrollment (to 84, I think), to keep class sizes small, until the potential intake is large enough to justify another teacher. Fair enough. However this has the side-effect that, in an area supposedly set aside to protect the Irish language, students are necessarily turned away from the only Irish-language school in the Village. Any comments? Tags , , ,

20 May 2007

Steve Kemp: Tell you, might not believe it, but

I would like to have a simple way of mirroring a webpage, including any referenced .css, .js, and images. owever to complicated matters I wish to mandate that the file will be saved as index.html regardless of what it was originally called. This appears to rule wget out, as the -output=index.html option trumps the -page-requisites flag (which is used to download images, etc which are referenced.) Is there a simple tool which will download a single webpage, save it to a user-defined local filename and also download referenced images/css files/javascript files? (Rewriting the file to make them work too) Using Perl I could pull down the page, and I guess I could parse the HTML manually but that seems non-trivial but I d imagine there is a tool out there to do the job. So far I ve looked at curl, httrack, and wget. If I m missing the obvious solution please point me at it .. (Yes, this is so that I can take snapshots of links added to my bookmark server.)

19 May 2007

Wouter Verhelst: Updating Debian/m68k patches for gcc 4.2

In a perfect world, software would work perfectly. Unfortunately... well, you know the drill. Since GCC 4.2 is upcoming, our resident GCC guy doko asked me to find someone to have a look at updating the Debian patches for GCC 4.1 so that they'd apply. Since I need to learn about GCC anyway for the Debian/ColdFire project (which nobody seems to be working on except for me), I started looking into it myself. The procedure is simple enough: uncomment lines in debian/rules.patch, and fix those m68k-specific patches that break. The first one was easy. debian/patches/m68k-gc.dpatch has been integrated upstream, so is no longer necessary. The second one was slightly more involved. But only slightly so; the patch tried to change libffi/src/m68k/sysv.S, which had received some three extra lines that conditionally add a .note.GNU-stack section. These three lines weren't there at first; but the .S file was otherwise entirely unchanged, so fixing this was rather easy. The next one is, uh, pretty hard. gcc/config/m68k/m68k.md is a file of 7k LOC in the GCC-specific "RTL" pseudo-assembly language, which I'm not at all familiar with. Yet, anyway. As a bonus, the first hunk in this file which fails to apply does so because that bit of this code has been changed rather significantly from GCC 4.1 to 4.2. Meaning:
  1. I need to figure out how this RTL code works
  2. I need to figure out what this particular RTL code block does
  3. I need to figure out what the point of this particular patch was
  4. I need to figure out how to write a patch (in RTL) which semantically does the same thing as what the original patch was doing. Without breaking the changes between 4.1 and 4.2
Wish me luck. At least the first two parts are almost finished; after skimming through chapters 12 and 14 of gccint.info, this hugging code almost makes sense to me. (oh, and if that last link doesn't make any sense to you, ask me for my fortune file at debconf) (which is in less than a month! whee! excitement!)

18 May 2007

Mart&iacute;n Ferrari: About installing a complex perl web application

Today, MJRay asks how to make MakeMaker (no redundancy!) do what he wants. Incidentally, I faced this issue just yesterday, preparing an application for internal use in my job. As sysadmin, I want all the homebrew software to be Debian-packaged, even if they're not the most policy abiding packages. I was installing some modules for mod_perl2, some utility modules and a couple of scripts. Of course, it also needed accesory files, like images for the web or templates for HTML, and configuration too. After reading the reply to this post, written by Randal Shwartz himself, I got convinced that there wasn't any frigging way to make the thing do it. So my solution was far from ideal, as I wanted to put everything in the Makefile, but it wasn't so ugly, considering that it was only meant for use in a Debian package: In a nutshell, if you only want to process modules and CGIs, you can do it with MakeMaker

11 May 2007

MJ Ray: More Highway Code Cycling

More developments on cycling and the Highway Code: There was a written answer in parliament about the Highway Code which completely avoided the question - cyclists are voting 'no' to its 'Does this answer the above question?' poll. I have. bikeuser wrote about the Highway Code with excerpts and links to me and also linked Eleanor Blair - More Highway Code which mentions the Early Day Motion in parliament with a suggestion that you write to your MP and ask them to sign it. In a comment, Anonymous asked:
"I agree with you that cyclists should have the right to decide that a cycling road seems too hazardous. However, other than that, any reason why cyclists should get to use roads when cycle paths exist?"
Yes. The most important reason is that most cycle paths are built to a very low standard (design speed of 18mph on an unladen hybrid bike) which is unsuitable for commercial carriers and even ordinary road bicycles (what I used to call racers). Even national government suggests to use the road if you want to exceed the design parameters of cycle paths.
"As a general rule, if you want to cycle quickly, say in excess of 18 mph/30 kph, then you should be riding on the road."
Also, cycle paths usually get the lowest priority of all highways at every junction (contrary to national guidance) and are hopelessly badly signposted. Would you choose a bumpy-road that gives way at every piddling side road when you have the choice of a flat, smooth A road? I doubt it - that's the basic form of traffic calming in bypassed villages like Blisworth. There are some cycle tracks I use, but even those are so badly signed, it's taken me weeks to figure them out - and I've been visiting family in this area for years! For example, I don't enjoy riding on the exposed Somerset Avenue dual carriageway and the adjacent purpose-built shared-use path is segregated, with few junctions or pedestrians, but consider the junction complex at West Wick (the aerial picture shows the cycle path, but the roads on the bottom right have changed). It's faster to use the underpasses, cross Churchlands Way into Yew Tree Drive and then use the Summer Lane underpass to reach North Worle, but which way do the cycle route signs send you? Yep, round to the left, across four sets of traffic lights where the cyclists get the lowest priority (and a 'Cyclists Dismount' sign for good measure) and then along a path that level-crosses an estate road completely blind (under construction in the aerial pic, above the roundabout). Oh, and the cycle route map's wrong for that area, just to make it even more confusing. Because of the bad signposts and maps, it's also very difficult to report any problems with cycle paths and tracks to the highways maintenance team. Cycle paths often don't have names and I've sometimes had reports come back with "there is no fault" when it turns out they've looked at the nearby road, not the cycleway. Forcing cyclists to use cycle paths will probably always be the wrong choice, but there's a lot of improvements needed before you can expect many cyclists to use them by choice. Doing so now would be like directing all cars onto unsigned B-roads instead of motorways that exist for the same journey, just because vans and lorries have a bigger need for the motorways. I like having B-roads available for journeys which would be much longer otherwise, but I wouldn't want to be forced off the motorways just because they exist. Even if you're a car driver, write to your MP and object to directing classes of traffic off of roads that are safer than alternatives. Else, if you tolerate this... The bigger question is "why is so much money spent on the cycling equivalent of B-roads?" and I don't know the answer to that. We would do much better to widen roads to add cycle lanes (or allow safe in-lane overtaking by cars), instead of widening the adjacent paths and painting them as shared use.

Next.

Previous.