Search Results: "xam"

3 April 2007

MJ Ray: Web searchers: Your Questions Answered

Totally unoriginal, but I thought it was amusing. I also get some strange search phrases: "My gas meter is making a clicking noise" - then stop using the computer and call your gas company! (In England, the contact number should be on a label on the meter, or in most phone books under "Gas".) "My computer is making loud ticking noise" - that's better. Open the case and listen to the fans and hard disks. One is probably broken. "How many cars are there on the roads today" - too damn many? "How to send an email so that everyone doesn t see the addresses" - put yourself in the To line and everyone else in the Bcc (blind carbon copy). See my email guide for other handy tips. "How do i say in an email that there is an attachment" - How about "There is an attachment"? "Samsung yp-u2 linux" - it works as long as you don't want to upgrade the firmware. More... "How to satellite aiming motor europa" - point it at the sky, not at europa. I'll add more instructions to my satellite page as I rebuild my system. "MJ bad" - at least there are 4 times as many "good" searches. "How do I get the software for the samsung ml-4500" and "Samsung ml-4500 xp drivers" - I have a Ghostscript driver patch. Does Ghostscript work as a printer driver on XP? "Cycle tracks near sandringham" - there's part of NCN1 alongside the A149, but most of the other cycle routes near Sandringham are along quiet roads (which is fine). "What does wag stand for regarding football?" - Wives And Girlfriends. BTW it's a stupid TLA IMO. "Wretton planning", "Wretton parish council", "business properties for sale in Wretton" and "properties for sale in field lane Wretton" - I've not been to Wretton in some time, let alone mentioned its planning or set up an estate agent there! "How to grow grapevine in a conservatory?" - damned if I know. I would think the temperature change each time you open a door would hurt it too much. "Hanging washing out over night" - it's a bad idea if it's going to freeze. "Why some people take so long to reply to emails" - we're busy trying to thaw the washing out. "Satellite frequency for ulster tv for sky plus box" - 10906MHz Vertical polarisation 22Msym/s, but can you record "other channels" on Sky Plus or should you buy a real DVR? "Where can i find a picture of st james swimming pool in kings lynn?" - try Norlink's Picture Norfolk section. "What happened to opensource.org?" - It was transferred from SPI to OSI. Strangely, the next search phrase listed was "simple example of unethical behaviour"... "What to do about death?" - be very still and start to rot? "bf uk cbhf" - I give up. Did 8 of you headbutt the keyboard? "I hate belkin" - Me too. "Interesting questions to ask someone" - no, not on this site. "Bar" - best idea yet. Cheers!

Erich Schubert: Ubuntu gets AppArmor support

Ubuntu got AppArmor support. This is bad news. AppArmor is a weak design. IMHO it gives the users a false impression of security, while leaving too much open to bypass security. But the biggest problem IMHO is that noone at Ubuntu seems to be working on their SELinux support. All I've seen is Ubuntu users breaking their system to a point where they didn't know how to fix it in the attempt to install their SELinux packages. The packages are mostly a 1:1 copy of the Debian packages I guess, but for example their new 'upstart' init-replacement likely isn't capable of actually starting a SELinux enabled system. Oh, and Debian didn't include the relevant package in any 'stable' release, Ubuntu had it in 'universe' since 'warty'. Right now, feisty will include the package, though it reportedly can't be installed. In the example used in the blog, evince is maybe protected from exploits by bad PDF files, but if you do a cp /usr/bin/evince /tmp and run that copy, all the protection is gone. A symlink might already be sufficient! So AppArmor is heavily relying on the user playing nicely. You might want to read this Article at LWN about AppArmor and why it's having a hard time getting into Linux mainline and "Security Anti-Pattern: Path based access control" in Joshua Brindle's "SecurityBlog" for a detailed article on the weaknesses in AppArmors approach. And their constant claim of being easier to use than SELinux isn't true either: the 'learning' mode itself will only generate you an incomplete policy. It's about as much as you can achieve in SELinux by transforming audit errors to allow rules using the "audit2allow" tool. Maybe even less; for example when an application accesses a font file, SELinux audit2allow will generate a rule that allows access to all font files (since they have the same type). This doesn't rely on any directory globbing magic, but because there is a type for font files. I expect that future versions of audit2allow will actually recommend which interfaces to add instead of just listing raw allow statements. AppArmors 'abstractions' seems to match what is called 'interfaces' in SELinux, except that interfaces in the SELinux reference policy are well documented and much more extensive. The 'abstractions' offered look like an early, incomplete version of the old NSA policy to me, before this was restructured to become the 'reference policy'. Interaction between processes also seems to be completely ignored by AppArmor. So it seems to me that "preventing evince from trashing your home directory when opening a malicious PDF file" is pretty much all you can do with AppArmor? But again, this isn't so much about bashing AppArmor or Ubuntu. I'm just disappointed that noone at Ubuntu seems to work on the more sound and solid SELinux. Most of SELinux is already in Ubuntu (inherited by their Debian roots), but it's lacking some integration work and such. Ubuntu is often said to be more agile than Debian and better at adopting new technologies, but in my experience, this often is limited to 'visual' stuff. If Debian were better at recruiting new people (for example in the SELinux section, we also seriously lack manpower), I'd probably be annoyed by Ubuntu 'trying to be first with all the pretty stuff' (yes, saying this would not be fair, that's why I'm putting it in quotes). Right now I'm mostly happy that they 'divert' many newbies off Debian and to their huge forums. Although it occasionally means I need to help an Ubuntu user to fix his system when he doesn't get any help there.

Erich Schubert: Launchpad and usefulness

Launchpad, Ubuntus proprietary (!) bug tracker has received a facelift. I'm deliberately calling it a facelift, because I still don't understand it. It sure is a lot prettier than Debians bug tracking, and it likely has some really nifty features, too, but I'm totally lacking the basics: Have a look at this bug for example. It's about the Intel ipw3945 driver being unstable on systems with SMP and load when using WPA2 encrypted networks. Launchpad says "fix committed" for linux-source-2.6.17, but I still havn't found out in which revision of that package. Or how I could actually find out how they fixed the bug. Or how I could access that information. Nor have I found any way to access changelogs for the packages.

2 April 2007

Joshua Kwan: GIMP dependent events

Dear Lazyweb,
Suppose I do several things in the GIMP, for example, make a path around a text layer and then stroke it, then dropshadow a different text layer. Suppose I want to undo the stroke, but not the dropshadow. Normally, since they happen consecutively, I have to also undo the dropshadow to undo the stroke.
Is it possible for GIMP to know that these two events are independent, and only undo the stroke? If so, has it been written? If not, has anyone thought of this yet?
Sincerely,
Josh

1 April 2007

Biella Coleman: The Joy of Weather, Writing, Music, and Software

Spring has arrived in many parts of North America. But in Edmonton, North America’s largest and most northernly city, spring has sort-of-come-but-not-really as it recedes fairly quickly. There will be a day of explosive warmth (you know, a balmy 45-55 F) and of course locals strip down to near nakedness, wearing shorts and, the more flamboyant will don an 80’s inspired cut-off tee. Hot. This sartorial statement says WE are SO ready for the long winter to leave … for good. Despite the collective sentiment, which is probably shared by 99.999999% of Edmonton’s inhabitants, the winter cold, snow, and breeze are indifferent to our deepest pleas and they come right back, making us sport at least a few layers of winter clothes. Within this dance between winter breeze and spring warmth, I have spent most of my time staring at my computer doing everything possible to transform half-baked ideas, hunches, sentiments, and theories into coherent words, sentences, paragraphs, and chapters for my book. I am working on it full-force and am enjoying it more than I have in a year though from time to time I get fed-up, lost, sick of it, and my writing soul descends back, deep into one of Dante’s infernal rings, where I fester with my frustration, convinced that I should have become an organic flower farmer/acupuncturist that I almost became (well not really, but I have always fancied that combination as an ideal and fulfilling career path). Slowly I usually make my way back up, brush off the cobwebs of despair, and proceed anew. Within this highly secluded life of monastic-like repetition, thankfully, I have been enjoying some new things this spring. Once a week I head over to an University of Alberta off-site library facility to pour over archive material for a new project, which I am not going to talk about here (it is super-duper-top-secret) but it has been interesting working at an archive, especially one that is housed in an old Ikea. Since I am one of those right-brained people, I like to listen to music while I work, and lately I have also become pretty obsessed with house & electronic music, mainly thanks to a local DJ, David Stone whose weekly radio show on CJSR, BPM, is simply the bomb. He claims to bring the latest and greatest of electronic dance music from around the world and I think he is totally right. If you like this type of music, do catch his weekly show on Sat nights at 6 PM (MST). I sometimes get a little sad when I listen to some good music or see some stellar performance because it reminds me that what I may one day have to offer to the wider world an academic book and article here and there simply cannot bring the type of joy that musical performance and other creative expressions can bring. While you can listen to songs and over again, a book, if it is really superb, may attract a second or third reading. An academic book or article may at times light an inner light of joy, but let’s face it, it is usually a pretty cerebral light oh’ joy, leaving untouched those part of the brain, soul, heart, where more visceral, mysterious, yet fully self-enveloping feelings of joy reign high (but I am trying my hardest to stick a funny section or two in every chapter to leave a trace of laughter because if I can’t manage that with an ethnography on hackers, I will have failed miserably). Every track David Stone plays is something I want to listen to over and over again and thanks to mplayer stream dump function, I can. And funny enough, is that in the last month software believe it or not has brought me much joy as of late. I have been using free software since 1997 and I used to get A LOT more annoyed no make that a downright frustrated with programs (or lack of programs) than I do now. In fact, now, I am simply stunned whenever I upgrade to a version of a program. For example, Word Press 2.0 is like so much nicer in terms of usability and functionality than 1.5. The same goes for Open Office, the Gimp, and even Firefox, which has some bugs, but is so much better than its predecessors. I once described free software using the well-worn clich as “the gift that keeps on giving. And I think that this is becoming more and more true. And like wine, with the passing of time, these gifts usually get better and better. And like a unexpected present that arrives on your doorstep, these software packages induce some joy, because it is actually pretty neat to see these programs develop and grow into something stronger and more useful; so thanks to those who spend their time hacking away at making and improving this software and thanks to those (you know who you are) who helped with my recent WP upgrade!

Julien Valroff: First steps with SELinux

I made my first steps with SELinux today, on an up-to-date Etch system. So far, everything is running smoothly thanks to the Debian wiki, and to other distributions online documentation (namely Gentoo’s and Fedora’s). I have even bought a book on SELinux, which isn’t exactly what I expected, ie. a little bit too technical for beginners like me. My system is now fully working (hopefully securely) with SELinux enabled and enforced.

Erich Schubert: Running multiple Mono/.NET applications

I just filed Intend-to-package bug number #416996:
* Package name    : stereo
  Version         : 2.0 beta
* URL             : http://www.mono-project.com/Stereo
* License         : LGPL
  Programming Lang: C#
  Description     : Mono (.NET) extension for running
                    multiple applications
Stereo is an extension to the Mono (.NET/C#) platform for running multiple applications at the same time. As you probably know, C# is a language using a bytecode, called CIL: Common Intermediate Language. Using code in an intermediate language has benefits for platform and operating system independence (Java is the most prominent example of this approach), however it also means an overhead when running the applications. Various approaches have been tried to remedy these effects, such as JIT (just in time) compilers translating the bytecode to native code when needed. Applications running based on such bytecodes tend to use more memory than regular applications (for example, they need to keep the compiled code in writeable memory, whereas regular applications can use shared read-only memory for this), and you probably have heard many people complain about the memory usage of Java and .Net applications. Some people even claim the Linux .NET platform is called "Mono" because you can run at most one such application at the same time. That how "stereo" was born: an extensions to run two (or more) applications in the same mono environment, thus reducing the memory overhead significantly, and making it useful for more people. Future versions should even be able to run Python (using IronPython) and eventually Java applications in the stereo runtime. It is also planned to add support for multiple user operation. So eventually, it will be able to replace your whole system. The project will then also change it's name to Multics, to reflect it's unique multi-user capabilities. At least if we get enough funding by Dunc-Tank, who is currently sponsoring all our development efforts.

29 March 2007

Benjamin Mako Hill: Dollar Books

One of my favorite weekend activities is spending a Saturday afternoon going through the dollar book carts outside many New York and Boston area used book stores. It's not only because the books are cheap -- although I like that. The dollar book section is the great equalizer of bookstores. A neglected Dickens or Shakespeare can rub out against a discarded Mary-Cate and Ashley teeny-bopper quasi-romance novel. In the best cases, random shelving creates perfect (if unintuitive and ironic) pairs like Run Run Run about Abbie Hoffman and Fun Fun Fun about other youngsters -- a pair I found adjacent in a dollar book section last week.
/copyrighteous/images/run_fun_run.jpg
But you also get to meet books you will never meet in the bookstore sections you normally frequent. The dollar book section at the Strand has introduced me to a whole class of books with intriguing non-fiction sounding titles that I had pulled excitedly off the shelf only to find out that they were, in fact, novels. There are also the books with titles so good you suspect the book will be downhill from that point. The Complete Idiot's Guide To Being a Model (not, as one might expect, Becoming a model) and this guide to the British pierage are great examples.
/copyrighteous/images/british_piers.jpg

Nico Golde: Aaaaarrrrgghhh

Today I wanted to learn for my examns and thought I'd make a quick dist-upgrade before, looked at the packages, found nothing important to make a backup and DANG

All installations with debconf usage didn't succeed like here for example:

dpkg: error processing samba-common (--configure):
subprocess post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of smbclient:
smbclient depends on samba-common (= 3.0.24-6); however:
Package samba-common is not configured yet.
dpkg: error processing smbclient (--configure):
dependency problems - leaving unconfigured

I straced, asked in #debian-devel, read source code and really didn't find the problem.
Thanks Mika for noticing the same problem before I did and the fix was sooo easy.
ln -sf /bin/bash /bin/sh

Never ever link /bin/sh to zsh on Debian :-)

Russell Coker: questions regarding SE Linux

I just received a question about SE Linux via email. As I don't want to post private messages containing material that's globally useful I'll answer through my blog:

> other than strict and targeted policies......other policies like
> RBAC, MCS, Type Enforcement are also there....how are these policies
> implemented

The two main policies are the strict policy and the targeted policy. The strict policy is the earliest and was originally known as the sample policy (but was given the name "strict" after targeted was developed).

The strict policy aims to give minimal privileges to all daemons. The targeted policy aims to restrict the programs that are most vulnerable (network facing daemons) and not restrict other programs (for ease of use). There is currently work in progress on combining those policies so the person who compiles the policy can determine which features of strict they desire.

RBAC means Role Based Access Control. The strict policy assigns users to roles and the role then limits the set of domains that can be entered. For example the user_r role does not permit the sysadm_t domain so a user who is only permitted to enter the user_r role can not perform sys-admin tasks. Like many terms RBAC is used in different manners, some people consider that it means direct control by role (EG role user_r can not write to /dev/hda), while SE Linux has a more indirect use of roles (role user_r can not run programs in domain sysadm_t or any other domain that allows writing to type fixed_disk_device_t - the type for /dev/hda). You may consider that the strict policy supports RBAC depending on which definition of the term you use.

Generally the targeted policy is not considered to support RBAC, although if you consider a role to merely be a container for a set of accesses that are permitted then a SE Linux domain could be considered a in the RBAC sense. I don't think of targeted policy as being a RBAC implementation because all user sessions run in the domain unconfined_t which has no restriction. I think that to be considered RBAC a system must confine user logins.

Type enforcement is the primary access control mechanism for SE Linux. Every object that a process may access (including other processes) has a type assigned to it. The type of a process is known as a domain. The system has a policy database which for every combination of domain, type, and object class (which is one of dir, file, blk_file, etc - all the different types of object that a process may access) specifies whether the action is permitted or denied (default deny) and whether it is audited (default is to audit all denied operations and not audit permitted operations).

MCS is a confidentiality protection mechanism where each file has a set of categories assigned to it. The set may be empty, may contain all 1024 categories, or any sub-set. Each process has a set of categories that determines which files it may access. File access is granted if Unix permissions allow it, if the domain-type model allows it, and if MCS allows it (on an MCS system). I have just had an article on MCS published in Linux Journal.

MCS is an optional feature for people compiling Linux from source or for distribution vendors. For Red Hat Enterprise Linux, Fedora, and Debian the decision was made to include it, so the strict and targeted policies for those distributions include MCS.

There is another policy known as MLS. This is a policy build that comprises the strict policy plus Multi-Level Security. Multi-Level Security aims to give the highest confidentiality protection and comply with the LSPP (Labeled Security Protection Profile - roughly comparable to B1) Common Criteria certification. It would be possible to build a targeted policy with MLS but that wouldn't make sense - why have the highest protection of confidentiality with anything less than the highest protection of integrity?

As for how the policies are implemented, I'm not about to write a tutorial on policy writing for a blog post, I'm sure that someone will post a link to a Tresys or Fedora web page in the comments. ;)

> there r some packages of linux in which some changes has been made
> to support linux......for eg:- coreutils, findutils

That is correct. Every program that launches a process on behalf of a user at a different privilege user (EG /bin/login, sshd and crond) and every program that creates files for processes running in different domains (EG logrotate creating new log files for multiple daemons) needs to be modified to support SE Linux. Also ls and ps were modified to show SE Linux contexts as well as the obvious programs in coreutils.

> 'Z' is the new thing that have been added to most of the
> utilities......wherever I search I get the changes made only in few
> utilities like ps, mv, cp, ls
>
> Can u help me by giving all the changes made in each of the utilities.....

Unfortunately I can't. This has been identified as an issue and there is currently work in progress to determine the best way of managing this.

28 March 2007

Enrico Zini: passing-values-to-turbogears-widgets

Passing values to turbogears widgets at display time In turbogears, I often need to pass data to widgets at display time. Sometimes it works automatically, but sometimes, in cases like passing option lists to CheckBoxLists or number of repetitions in a RepeatingFieldSet, it doesn't. All the examples use precomputed lists or pass simple code functions. In most of my cases, I want them computed by the controller every time. Passing a function hasn't worked, as I did not find any obvious way to have the function know about the controller. So I need to pass things the display() method of the widgets, but I could not work out how to pass the option list and default list for a CheckBoxList that is part of a WidgetsList in a TableForm. On IRC came the answer, thanks to Xentac:
you should be able to...
    tableform.display(options=dict(checkboxname=[optionlist]))
And yes, it works. I can pass the default value as one of the normal form values:
    tableform.display(values=dict(checkboxname=[values]), options=dict(checkboxname=[optionlist]))

27 March 2007

Adrian von Bidder: Samsung D900

David, after the demise of the little joystick of my previous phone (Sony Ericsson T610), I opted for the D900 (at CHF 21.-- plus 2 years, quite a good offer IMHO.) The hardware is very slick, though the display is disappointingly dark if you use the phone outside in bright light (Look at Casio's Exilim cameras for a good example of how a display can be readable even in direct sunlight.) Since I'm using the device as a phone only (and write less than 5 messages per month, usually), I still think it's a nice thing, but... Would I buy that phone again? I don't know. The price was good, and, again, it's still a very slick looking phone. But the firmware designers should be locked up for a few years and forced to write their code with the built in editor or someting like that. But if you expect anything other than to be able to call people over this device: don't go near it. I haven't relly looked at any other phones when I bought it, so I can't compare.

26 March 2007

Adam Rosi-Kessel: COPA Unsurprisingly Unconstitutional

The Children’s Online Protection Act, or COPA, requires website operators who provide commercial material that could be “harmful to minors” to verify their users’ age, for example, with a credit card. The statute was immediately challenged as unconstitutional under the First Amendment. A preliminary injunction against enforcement of the law was upheld by the Supreme Court, which remanded the matter for factual development as to whether filters could accomplish the same purpose while interfering less with free speech. (Ironically, the ACLU found itself in the unusual position of arguing for Internet filters in this case.) It was just about one year ago that the Government sought to enforce a subpoena against Google for records of user queries and URLs stored in Google’s database. The court granted the motion with respect to stored URLs but not queries in Gonzales v. Google. It was never quite clear what the Government would really do with the data or why they pushed so hard to get it after receiving what they needed from other search providers. (The U.S. apparently argued Google’s search results would “add luster” to its analysis). In any case, the statute has now finally been held unconstitutional. As Ed Felten insightfully points out, unlike in previous instances where courts have struck down Internet speech regulation, in his opinion, Judge Reed did not provide a roadmap for Congress to try yet again to enact a law that would pass First Amendmend muster. Maybe Congress will leave the issue alone for a while:
Two things make the judge s ruling relatively roadmap-free. First, it is based heavily on factual findings that Congress cannot change things like the relative effectiveness of filtering and the amount of HTM material that originates overseas beyond the effective reach of U.S. law. (Filtering operates on all material, while COPA s requirements could have been ignored by many overseas sites.) Second, the alternative it offers requires only voluntary private action, not legislation. Congress has already passed laws requiring schools and libraries to use content filters, as a condition of getting Federal funding and with certain safeguards that are supposed to protect adult access. The courts have upheld such laws. It s not clear what more Congress can do. Judge Reed s filtering alternative is less restrictive because it is voluntary, so that computers that aren t used by kids, or on which parents have other ways of protecting kids against HTM material, can get unfiltered access. An adult who wants to get HTM material will be able to get it. Doubtless Congress will make noise about this issue in the upcoming election year. Protecting kids from the nasty Internet is too attractive politically to pass up. Expect hearings to be held and bills to be introduced; but the odds that we ll get a new law that makes much difference seem pretty low.

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

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

  float real;
  float imaginary;

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

Jordi Mallach: No more TV3 in the Valencian Country: another example of PP's democracy

Tomorrow at 9 in the morning some officers from the Valencian regional Government will drive up to the mountains of the Bartolo, Serra Perentxissa, Montd ver and Carrasqueta to power off the set of antennas which have broadcasted the signal of TV3, the Catalan public television, during the last 20 years for the entire Valencian territory. These news have been responded with protests from most of the Valencian cultural collectives. You can sign a petition, or send an e-mail, which will be swiftly ignored by the people in charge. Behind the official reasoning for this attack to our freedom of choice -the broadcast is illegal- there is a set of good reasons for the usual suspects, the Valencian Partido Popular to do this. The biggest one is that two months before the local and regional elections, the right-wing are doing their math and it may not be working out too well for them. They need to scrape as many votes as they can, and an easy granary is attracting the extreme right-wing, which is a bit active but fragmented in the region, and mostly in the city of Val ncia. This social group is greatly virulent against anything which sounds like Catalan , especially the people known as blaveros , who claim our culture and language has no common root and has nothing to do with the culture and language from the North. Fortunately, the ISO 639 standard and the entire scientific community agree that they are nuts. But back to my rant. So, how can the PP try to get a handful of votes from the right-wing? Easy, start an anti-TV3 show on the media and start scalating it until the final act -tomorrow-, where milions of citizens are deprived of one of the best channels available in our TV sets. This will surely be sold as a major victory against the Catalan invasion or as the end of an "alegal situation", although there are like 30 other channels in the same situation in the city of Val ncia, and the PP-controlled Canal 9 channel is broadcasted in the Balear Islands (also controled by PP) in the same legal situation. In a time when watching Middle-East or American channels is trivial using a satellite set, some people think the best thing they can do is to end a service paid and provided for free by Acci Cultural del Pa s Valenci , an important cultural entity, during the last 20 years, ending the right to choose one of the only channels with all the programs in our language for milions of Valencians. Their right to do it is also challenged in court, but there is no doubt that tomorrow they'll go ahead and shut it off. We could have a reasonable government who would maybe want to accept the Catalan TV and radio channels in our territory, if the Catalan government would also accept our (crappy) channels in theirs, but they refuse this as well, because they now feel insulted . All in all, I had enough of PP long ago, and am hoping I am not the only one. In less than a month, Valencians will celebrate the 300th anniversary of the Batalla d'Almansa on the 25th of April of 1707, although we seem to be fighting a new battle now in 2007. The Batalla d'Almansa meant the end of the War of the Spanish Succession in Spain, but also the start of tough times for our culture, language, and people, when Felipe V abolished the Valencian furs. But this story can make a blog post of its own next month. Quan el mal ve d'Almansa, a tots alcan a...

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


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

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

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

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

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

Joachim Breitner: Debian Ideas: Instance-Capable Init Scripts

Debian as a Linux distrubtion is all about integration and ease of management, which includes init-scripts. I d like to propose a feature that might be helpful to quite a few system administrators while being non-disruptive to all others.For a lot of daemons there are use-cases that require more than one instance of the daemon to be running. With instance I mean a separate process with it s own configuration files, but on the same system, which rules out virtualisation or changeroots. Examples are copies of the main server running on a different port, to test new settings, different servers on different IPs, a HTTP-Server-Split into a slick static-and-proxying server and a heavy backend server, a mail server split with a virus scanner in between etc.So as an administrator I currently not only have to write the configuration for the additional instances, but also write my own init scripts and modify them, never being sure if I did it good or whether it will cause problems on package upgrade or similar things. I d rather see the functionality built-in to the package s init script directly.There is a package in Debian that already provides this: The OpenVPN package maintained by Alberto Gonzalez Iniesta allows the user to define new instances of OpenVPN simply by adding a new file to /etc/openvpn/. The file /etc/default/openvpn defines which of these instances are to be started when I or the system start runs /etc/init.d/openvpn start. /etc/init.d/openvpn stop stops all running instances and /etc/init.d/openvpn restart also restarts just the currently running servers. I can easily control a specific instance by adding it s name (which is the configuration file s basename) after the command to the init script.I think these semantics are clear, sensible and non-disruptive and should be available with every Debian package where the administrator might want to run several instances at once: web server, mail server, ftp servers, name servers etc.In those cases where the daemon is not configured by a single file alone, one directory with the configuration for one instance is needed. Otherwise, I don t see why this should be a problem. For backwards compatibility, the normal configuration file locaction could be an implicit instance called default and all additional instances go to their own directory (e.g /etc/ntpd.conf is instance default , and /etc/ntpd/public.conf is instance public ).Comments welcome.

Peter Van Eynde: 'The Trap'

Yesterday I went to bed too late because I was captivated by the last episode of The Trap: What Happened to Our Dream of Freedom, a series by Adam Curtis. Even since I saw Pandora's Box I've been an avid viewer of his work. The Trap talks about what freedom is, and this morning I realised that many things he talked about can be seen in the OSS world, and more specifically in Debian. I'm certain Biella can write something much better (and shorter) and I'm still thinking about it, but I wanted to write some stuff down.
One of the main ideas is the modern western culture has been formed to appeal for people thinking like a model in the 'prisoners dilemma': they only case to further themselves. This lead to the idea that life (not only the economy) should be like a free market, and that people should be 'free' to choose what they liked. Of course in practice the rich are 'free' to send their kids to better schools then the poor who are 'free' but constrained to send their kids to worse schools. The program called this negative freedom: there is constrained freedom. Think of it as Microsoft's vision of freedom, their 'freedom to innovate' (which they don't), your freedom to select which of the N licences of vista is good enough for you. This limited freedom is more stable then the positive freedom that is actual seeking true freedom, without constraints. This positive freedom was then developed by Satre, Fanon and Shariati into the idea that true freedom could only be gained by armed struggle, to gain freedom but also an identity that transcends the simple individual.
The whole idea of the two freedoms was described by Isaiah Berlin and he also had the idea that freedom can only be gained by limiting the power of the state over the individual, otherwise both concepts of freedom would become tyrannical because the powers that be would decide what freedom is, and then suppress anybody that does not agree with that idea. Examples are the communists in the USSR, but also how the Americans turned to torture, imprisonment without tribunal to 'liberate the Iraqi people'. Or older still the Reign of Terror during the French revolution.
All of this has some relevance to OSS and Debian in particular. Don't we search freedom from constraints (licences, absence of source)? Don't we want a revolution in the use of computers? Are we not using disruptive means to get it? The introduction of a samba file-server in a pure MS environment by a disgruntled admin who just wants stuff to work could be seen as being almost a terrorist method of working. Not that we want to terrorise the population, but make them aware that an alternative exists. And this to chance the system. Sometimes the whole mindset does seem to be a little too much confrontational, almost towards having a real conflict. Just think about the many references that some disaster should wipe out the Seattle area. Are we not at risk of becoming tyrannical in many ways? Ignoring any Debian discussions, there is the whole FreeBSD/OpenBSD split, people complaining that wikipedia is removing contents the consider valuable, projects refusing to create howto's and introductions to keep the newbies away etc. OOS does seem to have a tendency to become tyrannical in some aspects. Not that this is always bad, see the benevolent dictators handling the Linux kernel or python.
If I understand the idea's correctly it means that even if we want freedom, from the moment we start using the powers of the project to limit somebody we start the slide towards being oppressive and tyrannical. Somehow I fear that all this will lead to a lot of reading and thinking...

Erich Schubert: Musicbox software

Dear Lazyweb, I was asked if I could easily setup a system with the following characteristics for a sport club: Two setups I was considering: This would likely require the least effort. It doesn't offer the playlist features I wanted (or only partially), and there are some access control limitations. No remote access. But for example the clients could even be Windows boxes I wouldn't have to deal with myself. Has better playlist sharing capabilities, and the web UI could probably be used remotely, too. But MPD doesn't allow extra metadata such as BPM information, it would need to be modified. Much more work. Maybe some solution using XMMS2 or VLC would also be possible. And the ideal solution would allow some pitching. Do you have any recommendations for me? Please send them via EMail to erich AT debian DOT org. IMHO, the key factor will actually be the UI for the trainers. It should allow them to easily locate a song when needed, or put a couple of songs into a playlist to use during their class. Carzy DJ mixing capabilities aren't needed; party evens will likely have a real DJ around. This setup is solely meant to help the trainers getting their music ready in no time. Right now there are always issues with cables gone missing, CDs in the wrong covers, CD readers not reading certain CDs, etc. pp. And after all CDs have a pretty bad usability; you can't reorder songs easily according to your needs, and you'll often have to switch CDs. Having the music on a harddisk and using playlists can offer some good improvements here. So instead the UI should allow easy searching of tracks, easy access to a large number of playlists and such key functionality. Note that this is just an idea floating around so far; I don't know if it will become reality sometime. Adding some PCs to the rooms, eventually even with a touch screen, is some expenditure; that money might be better spent differently.

25 March 2007

David Nusinow: A (Dubious) Benefit To FizzBuzz

There's been a ton of blog spew about FizzBuzz. My two favorites are from the always excellent Raganwald and Giles Bowkett. I waited until after the furor was over (at least, I hope it's over now) to post this, because a lot of the criticism of the FizzBuzz madness is spot on.

I think one of the neat things to fall out of it all that people seem to have ignored is that FizzBuzz provides an incredibly simple framework with which to play with essentially any language feature you want. Sure, the problem is trivial to implement, but that's the beauty of it. You can wrap up your simple solution in absurdly complicated structures in order to play with the more advanced features of the language. In this way, the problem gets out of your way and lets you focus on the language or toolkit.

I used it to play with some of Ruby's more functional aspects, for example, because I didn't feel like coding a more complicated app just for that. Sure, people are doing things like showing off how much java they can code around this little problem, and I don't think there's any value in that at all. But FizzBuzz does provide a surprisingly useful set of training wheels for diving in to new aspects of whatever you're working on. Note that FizzBuzz doesn't provide any real advantage over implementing something like a quicksort here, but that doesn't really diminish it either.

Next.

Previous.