Search Results: "xam"

15 May 2007

Benjamin Mako Hill: Ubuntu Community Council

Very quietly, the Ubuntu community reached a major milestone today when we held a Community Council meeting, like it does fortnightly. The only thing different was that the council included five new members -- Mike Basinger, Corey Burger, Matthew East, Jerome S. Gotangco and Daniel Holbach. These members are, with the exception of Holbach, not employed by Canonical and were each confirmed by a vote of the full Ubuntu membership. Before the recent elections, I was the only member who was not a Canonical employee -- and I used to be one. From a technical perspective, the founding Ubuntu team was able to benefit from everything that Debian had built -- a running start if there ever was one. From a community perspective though, we had to start from scratch and had to deal with the very difficult situation that paid labor and closely entangled corporate interests. Working with the rest of the team, I drafted a set of community norms (the Code of Conduct) and governance structures designed to keep both the community and Canonical under control. They seemed like good ideas but, because we didn't have a community yet, only reflected the sensibilities of Mark Shuttleworth, myself, and the rest of the early Ubuntu team. The highest Ubuntu governance board, the Community Council was initially filled with people that were in the room in Oxford when we came up with the idea: myself, Mark, James Troup, and Colin Watson. We decided that the council members should, and would, be approved by a vote of the membership. With no members though, we faced a bit of a bootstrapping problem. Three years later, Ubuntu has a vibrant community with hundreds of enfranchised members who have an up-or-down say on the members of the council itself. When we looked for new potential council members to propose to the community, we tried to pick the most active, most level-headed, and most representative group we could find. It was pleasing to see that only one member of the new CC board works for Canonical; Canonical employees are now outnumbered. It has been interesting to see announcements by Fedora, FreeSpire, OpenSuSE over the last few years proposing systems of more inclusive community governance structures that, perhaps not entirely coincidentally, look a bit like what Ubuntu has built in its attempts to empower users in that sometimes awkward community/company environment. Whatever the reasons, I think it means there's more pressure on us at Ubuntu to keep raising the bar. I see today as a great example of how we've done just that.

14 May 2007

Russell Coker: priorities for heartbeat services

Currently I am considering the priority scheme to use for some highly available services running on Linux with Heartbeat. The Heartbeat system has a number of factors that can be used to determine the weight for running a particular service on a given node. One is the connectivity to other systems determined by ping (every system that is pingable can add a value to the score), one is the number of failures (every failure deducts a value from the total score), one is the weight for staying on the same node (IE if the situation changes and the current node is not the ideal node you might not want to immediately move the service to a different node as that gives some seconds of no service), and one is the preference for each node that may run the service. For a given node to run a particular service then the score has to be greater than all other nodes and also greater than zero. If all nodes have a score that is zero or less then the service will not run. Now in the case of a service that repeatedly fails (EG a filesystem mount that relies on a hardware RAID which is not connected) then what should we do? One option is to have the score for running on a particular node be for example 100 times the value that is subtracted on failure. In this case after 100 failures on that node (and an appropriate number of failures on other nodes which are permitted to run the service) it will be disabled. Then the service has to be explicitly re-enabled (or a node rebooted) before it will run again. The other option would be to have the value that is subtracted on failure be less than a billionth of the score for running on a particular node, so that the service will keep trying to start for the next few hundred years. The up-side of this is that there is less fiddling required, the down-side is that some CPU and disk resources will be kept active in repeatedly starting the service. Now I have to decide which option to take in this regard, any comments would be appreciated.

Mark Brown: ATI graphics drivers

While the announcement from ATI about their intention to provide better support for Linux is certainly welcome it’s not clear what exactly they intend to do. They don’t appear to have actually said that they will release their drivers. This could actually be a really good thing - for example, I’d expect that documentation and support for people producing free drivers would be at least as useful as their current proprietary code - but it’s worth bearing in mind.

MJ Ray: Planet Debian Editorial Policy (Reader Comments)

Kevin Mark commented:
"Hear hear! I was waiting to read about the Eurovision results! But I'm sure AJ and Martin want a let's take the fun out of Debian planet debian tech and I'm sure someone can make them a custom feed for the cost of a reasonable bounty!
Nice to know I'm not alone. (Why mention AJ?) Joachim Breitner wrote:
"I once tried to start a German planet Debian because the official only allows English postings. Maybe it would be nice to have some kind of tagging standard that works across aggregators. This way, we could allow any kind of posts on p.d.o, and allow various sets to chose from, based on tags. I, for example, would choose (german OR english), others might chose (english AND tech), or ((french OR english) AND debian). Some (NOT politics). And some just (jokes) :-)"
Why didn't German planet debian work? I think there's a sort-of standard in dc:subject and xml:lang, but we'd need to agree a tag dictionary. And I think planetplanet generates files, so we'd need some cached or database solution. Update: Joachim Breitner replied:
"To be correct, I tried setting up an international planet debian on gluck with no language restrictions, but interest was rather low and planet (the software) is not really maintenance-free, so I stopped after a while. A German planet was tried by someone around Christmas, I think, but AFAIR he lost interest while trying to make it look pretty. I guess I should follow up on that. :-) (PS: Can you make the comment form store the information in a cookie? Would save some typing.)"
Sorry, these pages are static html at the moment. You could try using Saved Forms in Iceweasel/Firefox, which may be configured at Edit: Preferences: Privacy: Saved Forms or similar.

Uwe Hermann: Playing audio on the NSLU2

3D Sound USB Audio Device I'm a happy NSLU2 user since a few months now, and I'm using it for all kinds of things, e.g. as a 24/7 remote ssh server at home (using DynDNS and the ddclient Debian package), as IRC logger (screen + irssi), etc. etc. I was considering multiple options as to where/how to install the slug (USB thumb drive, Compact Flash, disk drive, ...) but I settled with a full Debian install on an 1 GB USB thumb drive for now. I implemented some measures to maximize the life time of the USB thumb drive, maybe I'll post some info on that later... One new thing I've been trying lately is to use the slug as an audio player. As it doesn't come with an integrated sound card, you have to use an external USB audio device. I've got mine (see photo) from eBay for ca. 5 Euro (+ shipping) and it works out of the box with Linux 2.6.18 using the snd_usb_audio kernel module. You simply attach it via USB (the module is automatically loaded) and then attach external speakers to it. Here's an lsusb of the device:
Bus 001 Device 011: ID 1130:f211 Tenx Technology, Inc.
One problem with playing audio on the slug is the slow CPU. At 266 MHz (and without FPU!) playing audio with "normal" audio players such as mplayer or mpg321 is not possible. But there are several ways to make the slug play your favorite music. Here's a list of players I tested and a status report of whether they work at all. If yes, I listed a rough percentage of CPU load resulting from playing the music.
  • Ogg vorbis:
    • mplayer, aplay, playsound, and ogg123 don't work.
    • $ apt-get install libvorbisidec-dev
      $ cd /usr/share/doc/libvorbisidec-dev/examples
      $ make
      $ cat foo.ogg   ./ivorbisfile_example   aplay -f cd
      
      Result: 40% CPU load
  • MOD, XM, S3M, IT, etc.:
    • $ mikmod foo.mod: 10% CPU load (even with compressed MOD files)
  • WAV:
  • FLAC:
  • SPEEX:
    • $ speexdec foo.spx: doesn't work, 100% CPU load. Any known alternatives?
  • AU:
    • $ cat foo.au > /dev/dsp: 3% CPU load (but sounds crappy)
    • $ cat foo.au > /dev/audio: 3% CPU load (sounds better)
    • $ mplayer foo.au: 5% CPU load
    • $ aplay foo.au: 5% CPU load
    • $ playsound foo.au: 5% CPU load
  • AIFF:
    • $ sox foo.aiff -t wav - aplay: 50% CPU load (a bit stupid, but it works)
  • Streaming MP3:
    • $ mplayer http://www.example.com/foo.mp3: doesn't work, 100% CPU load.
    • $ wget http://www.example.com/foo.mp3 -O - madplay - : 17% CPU load
  • Streaming Ogg Vorbis:
    • $ cd /usr/share/doc/libvorbisidec-dev/examples
      $ wget http://www.example.com/foo.ogg -O - ./ivorbisfile_example aplay -f cd
      : 40% CPU load
  • The SlugAsAudioPlayer page in the NSLU2-Linux wiki might have further information on this topic. Feel free to add comments if you know of other audio types which can be played on an NSLU2.

    13 May 2007

    Benjamin Mako Hill: Section Headings

    I think that this sign in the Housing Works Used Book Cafe is an example of how fixing "/ Crime" to any subject heading in a bookstore can have humorous results (apologies for the blurry phone picture).
    Pop Culture / Crime section heading in Housing Work

    Michal Čihař: python-gammu 0.20

    python-gammu 0.20 has been just released. New features:

    12 May 2007

    MJ Ray: Satellite TV: Eurovision 2007

    It's voting time in the lunacy that is the Eurovision Song Contest. Here is a summary, including some strange bits of Euronglish:
    1. Bosnia+Herzegovina - nice but no chance;
    2. Spain - 4 guys in tight white and pink lights - creepy;
    3. Belarus - Medallion man with a rock ballad to bukkake - "when you cast your loving potion over me";
    4. Ireland - Folksie, charming, dark yet jolly;
    5. Finland - more noisy dark rock with drums;
    6. Republic of Macedonia - up/down ballad with drums;
    7. Slovenia - Opera in black with drums;
    8. Hungary - Bluesy rock angst. No drums. Phew;
    9. Lithuania - Guitarry song with "lonely shades walking";
    10. Greece - an odd disco/dance at the "heart of attention";
    11. Georgia - a nice slice of trance;
    12. Sweden - revenge of 70s glam! Maybe "with my head in the can" was deliberate;
    13. France - Franglais pop. How did monoglots follow this?
    14. Latvia - a singalong. In Italian. But it looks like Italy aren't here this year. So how's that help?;
    15. Russia - another fun girl band, singing different (ruder) lyrics to the official song sheet;
    16. Germany - sexism swings;
    17. Serbia - a red up/down song;
    18. Ukraine - dance nonsense - the first song I walked out on this year;
    19. UK - an example of Britishness and why I call myself English, not British;
    20. Romania - a fun little polyglot guitar song;
    21. Bulgaria - drums, dance, squeaking;
    22. Turkey - "How much I crave for you" - a dancey whirly song;
    23. Armenia - the tearful stalker's song;
    24. Moldova - gothest song of the night - "each people will gnaw our wishes no more"???
    I can't pick a winner from that. I only voted to try to stop Ukraine.

    11 May 2007

    Martin Michlmayr: GCC 4.3 related build problems: pedantic preprocessor warnings in C++

    GCC 4.3 changed pedantic preprocessor warnings in C++ code into errors, in line with the C++ front-end. Because of this change, preprocessor warnings are now errors. This leads to a number of errors that are in my opinion too strict and I've started a discussion about this problem on the GCC mailing list. I hope this change will be reverted, or that some of these errors are downgraded to warnings again, but users of current gcc-snapshot package might encounter these errors. I haven't filed bugs about these issues since I'm waiting for a census from GCC developers. Nevertheless, it makes sense to fix these problems if they are present in one's package. This change has caused at least the three following errors which are all fairly common. error: "xxx" redefined It's not allowed to #define something twice, as in this example:
    #define TEST "foo"
    #define TEST "bar"
    
    This code will lead to the following error:
    test2.cc:2:1: error: "TEST" redefined
    test2.cc:1:1: error: this is the location of the previous definition
    
    Most typically, this occurs because something is defined in a header that is included and then redefined in the current source file. It can also happen when a #define is put in the code but also on the command line, e.g. via -DTEST="bar". This will lead to:
    test2.cc:1:1: error: "TEST" redefined
    <command line>:1:1: error: this is the location of the previous definition
    
    The correct solution is to avoid redefinitions directly or to use #ifndef to make sure that something has not been defined already. extra tokens at end of #endif directive While an #ifdef obviously needs a second parameter, it's not allowed to give one to #else and #endif. Unfortunately, this is commonly done as a reminder for what is being tested for:
    #ifdef TEST
    #endif TEST
    
    This code will lead to the following error:
    test3.cc:2:8: error: extra tokens at end of #endif directive
    
    missing newline The last line of a source file has to end with a newline. If this is not the case, the following error is now shown:
    test4.cc:1:19: error: no newline at end of file
    

    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.

    Michal &#268;iha&#345;: Service numbers in python-gammu

    python-gammu now supports service numbers dialogue. How it is useful for you depends on services your network provides. For example with Vodafone in Czech republic, you can use it to configure various services:
    $ ./service-numbers.py 
    This example shows interaction with network using service codes
    Enter code (empty string to end): *111#
    Talking to network...
    Network reply:
    Status: ActionNeeded
    Vitejte v Kapesni Samoobsluze!
    1 Muj ucet
    2 Me sluzby
    3 Nastaveni telefonu
    4 Info a zabava
    5 Oblibene
    Enter code (empty string to end): 1
    Talking to network...
    Network reply:
    Status: ActionNeeded
    Muj ucet
    1 Vyuct. a platby
    2 Vydaje pod kontrolou
    3 Osobni udaje
    4 PIN a PUK kod
    ------
    0 Zpet
    00 Uvod
    Enter code (empty string to end):
    
    Python code which can be used for this is available as example. It will be probably one time integrated to Wammu, but it needs a bit more time than hacking this simple script :-).

    Evan Prodromou: 20 Flor al CCXV

    Another beautiful day here in Paradise. Montreal is fantastic in the late Spring/early Summer -- it's a great time to be here in the city. Yesterday, Amita June and I went to Parc Jean Drapeau, the beautiful park on an island in the St. Lawrence, the former site of Expo 67. We played at the (really cool) new playground, ran around in the grass, and looked at the river rushing by. Today I rolled out a new table-of-contents layout on Wikitravel; you can see an example on our page about France. It's the culmination of about 11 months of debate and compromise amongst Wikitravellers, me, Maj, Internet Brands, and pretty much everyone else under the sun. It took a looong time, but we eventually got something that most people could live with and (shock!) some people actually liked. It wasn't easy, and my earlier unilateral decisions about it were so upsetting to people that it produced our current Wikitravel:Technical infrastructure policy. It's been great to finally reach some closure on this particular issue, since it was such a source of learning for me. tags:

    RoCoCo -- one week and counting We've got about one week before RoCoCoCamp starts. It's going to be pretty exciting; we've had a lot of responses and the list of participants is growing strong. But there are still a lot of infrastructure things to be done -- I'm going to be really impressed if we get them all done before next Friday. I'm getting more and more amazed that the folks in Portland (Oregon) manage to put on RecentChangesCamp there. It's pretty hard to do a three-day unconference. tags:

    Kanren So, I've just finished re-reading The Reasoned Schemer, the sequel to The Little Schemer and The Seasoned Schemer by Daniel P. Friedman and Matthias Felleisen. Reasoned is a really nice introduction into what seems to be a classic compulsion for Scheme freaks: re-implementing the logic language Prolog more-or-less in Scheme. The little language that unfolds in Reasoned is elegant, simple, and best of all, extremely Scheme-y. There's a really long digression into binary mathematics and deriving bitwise operations for arithmetical functions, which all seems to be the long way around the block since it's unlikely that users of their system would use anything but the math system built into the host language, Scheme. The implementation in TRS is laid out at the back of the book. It's a learning version of a bigger project, called Kanren. I've been fiddling with the system, which has re-inspired my dream of creating a declarative language framework for Web applications. I'd like to see what Web programming in Kanren would be like... I'll see how it goes. tags:

    Domains Another way I spent my time today was that we've finally gotten around to transferring the wikitravel.org/.net/.com domains to IB. IB's owned the site for a while, but we've never really had a reason to switch the domains over, so it's gone undone for a long time. And I'm kind of glad. It sucks transferring domains between registrars. wikitravel.org was on Joker. which used to be my registrar of choice, but which has been superseded by Godaddy. Transferring a single domain took 6 Web forms (on two different sites), 3 security codes, and 4 email confirmations. Thankfully, this also gave me a chance to transfer over my speculative domains phonojournalist.com (for telephone photos) and phrygiancap.org, for general freedom issues. I like the phrygian cap, what can I say? All right, so I have a lot of domains that I'm unlikely to ever exploit. If that's so wrong, I don't want to be right. tags:

    9 May 2007

    Michal &#268;iha&#345;: python-gammu has asynchronous wrapper

    Yesterday I hacked asynchronous wrapper for python-gammu. It is start of progress to make Wammu behave better while talking to phone. My plan is that all operations will go through this asynchronous wrapper and will be completely non blocking to Wammu. This means no progress bar will pop up to front, but entries will appear in window as they are being read. Progress will be of course still shown, but only in status bar. The current code is only first step, next thing which has to be implemented in python-gammu are virtual commands. Those will be used for things like getting all calendar events from phone, so all you will have to do for getting all is enqueue GetAllCalendar event and worker will do all for you including progress reporting. If you want to write own application using this new wrapper, you can look at example which is in sources. It shows all current possibilities, but it will be enhanced in future.

    8 May 2007

    MJ Ray: Travelling to Debconf7

    I've booked my travel to Debconf7. Here are some tips for anyone making the trip over land from England: There are cheap megatrains and megabuses from central Edinburgh to/from Manchester (train, weekdays) and Sheffield Meadowhall (bus, everyday) which give useful connections to points further south, avoiding London. Caledonian Sleeper Bargain Berths are now bookable, but Fridays go quickly (and seem to have gone for 15th). Similarly, there seem to be no cheap tickets left on the train up the Welsh border to Manchester for most useful dates. Find your "magic towns" for train tickets: stations where you can break long journeys to save money. They're often stations with more than one fast train operator, so these are usually old railway towns. For example, mine are Crewe and Derby from Somerset. Sometimes you don't even need to get off the train, but if you do change trains, you might be gambling on delays on the way to that town (if using timed tickets and so on), so allow enough time! Debconf's arrivals day (Saturday 16 June) is the European Day of Action Against Airport Expansion so arriving over land is a damn good idea, even without the CO2 reasons. (Debconf's last day is Pride Scotia - is all the silly scheduling deliberate?) Anyway, I think I'll have a bit of time in Manchester and Derby - anyone got tips on where to eat or what to see?

    Nico Golde: newsbeuter 0.4

    Ak just released newsbeuter-0.4.
    Now I guess newsbeuter is the most feature-rich RSS reader available for text-mode. Not even raggle has more (AFAIK).

    Here are the new features:
    The support for extension script rocks, now you write shell scripts which generate output, newsbeuter uses as input for example!

    I already uploaded the package to Debian unstable. While the buildds still compile, get it from incoming.

    7 May 2007

    Enrico Zini: tg-override-sqlobject

    Quirks when overriding SQLObject setters Let's suppose you have a User that is, optionally, a member of a Company. In SQLObject you model it somehow like this:
        class Company(SQLObject):
            name = UnicodeCol(length=16, alternateID=True, alternateMethodName="by_name")
            display_name = UnicodeCol(length=255)
        class User(InheritableSQLObject):
            company = ForeignKey("Company", notNull=False, cascade='null')
    
    Then you want to implement a user settings interface that uses a Select box to choose the company of the user. For the Select widget to properly handle the validator for your data, you need to put a number in the first option. As my first option, I want to have the "None" entry, so I decided to use -1 to mean "None". Now, to make it all blend nicely, I overrode the company setter to accept -1 and silently convert it to a None:
        class User(InheritableSQLObject):
            company = ForeignKey("Company", notNull=False, cascade='null')
            def _set_company(self, id):
                "Set the company id, using None if -1 is given"
                if id == -1: id = None
                self._SO_set_company(id)
    
    In the controller, after parsing and validating all the various keyword arguments, I do something like this:
                user.set(**kw)
    
    Now, the overridden method didn't get called. After some investigation, and with the help of NandoFlorestan on IRC, we figured out the following things:
    1. That method needs to be rewritten as _set_companyID:
              def _set_companyID(self, id):
                  "Set the company id, using None if -1 is given"
                  if id == -1: id = None
                  self._SO_set_companyID(id)
      
    2. Methods overridden in that way are alsop called by user.set(**kw), but not by the User(**kw) constructor, so using, for example, a similar override to transparently encrypt passwords would give you plaintext passwords for new users and encrypted passwords after they changed it.

    Pete Nuttall: Online Shopping

    Dan has been complaining I haven't been ranting enough lately. I have been waiting for the Scottish elections to sort themselves out, because thats a nice mess and easily due some ranting. However, given the need for a placeholder, I wrote this little moan on the subject of internet shopping. Everyone knows that the future of shopping is online. Every year, more money is spent online. Christmas last year was marked by getting a few parcels a day from amazon. However, I find it fraught with all things of annoying problems. Over the last few days, I have attempted to buy a t-shirt and a bottle of whisky online, while buying a pair of sandals and a book offline. While the wo aren't the same, it was still instructive as to the problems of internet shopping. Taking money from shoppers. To actually take money from people has to be the most important part of running any sort of shop. However, it is someone hard for me, the shopper, to give websites my money. Consider the example of Geekz Shop. To pay them, it appears I need to have a paypal account[0]. On examining the paypal signup page, I see references to the FSA. While its good that Paypal are actually registered and regulated these days, it does strongly suggest that they are a bank, and as such opening a account with them is the same as opening a bank account with HSBC or someone. In other words, I need to open a new bank account just to buy a t-shirt. Thats a lot of hoops to jump though. In their defense, they did offer a collection of other ways to pay when emailed about it, but its still a lot more work than walking into a shop and giving them cash. In more general terms, as a shop, its important to make it as easy as possible for your customers to give you money. Its common to outsource this to someone else, but any general solution serving lots of sites will suck[2]. Of course, doing it yourself means you are stuck dealing with credit cards - which is a pain, or BACS which is a joke. Oh well. The next issue you have is giving people their goods. In a real shop, you hand them their goods and they carry it away (massive generalization). Unless you are selling somthing completely electronic, for example domains, then you have to get the goods to the person. Once again, running your own service is hard - far harder than your own online payment system. However, it and your website is the thing people see of your shop. The classic problem is late delivery. You have to make some sort of claim as to when goods will arrive, but getting it wrong will result in arguments. My best example of this is a christmas present bought off amazon last year - it arrived in January, despite amazon's claim of having it to me before christmas day. The other classic example of getting it wrong is the apple store. It doesn't quote a delivery time - instead it quotes a "ready to ship" time. This is the time needed for apple to put your purchase in a box and stick a label on it. The problem with this is that your poor customer thinks that his new mac is going to show up in a couple of days. It doesn't, so he is massively disapointed. You've disapointed the guy before your product has left your warehouse. Thats one step aay from employing a bouncer to beat your customers when they leave your store. Having thought that delivery problems are an issue, consider people returning stuff. If its hard, they just moan at their credit card company. If your support and sales folk are in a call centre and can't be reached, then they spend the next week explaining to their mates about how dire you are and why they would sooner deal with the devil than you. Oh, and neither email nor rt is a way to deal with this. The final problem with most online shops is usability. Usability is hard - full stop. Its harder to sell something when the customer can't pick it up and feel it. While some shops are quite good, the number that force me to think when filling out the checkout forms or looking for products is amazing. Its like they don't want my custom. From this, I have claimed that a good online store needs a good way to take money off customers, a good way to get goods to customers, a sane way to deal with problems and a usable website (Next week, I'm going to blog about how water is wet). However, lots of sites, including big ones, fail at this. I don't think internet shopping is going away, but I do think that the shops that fail to take money off folk, that have sites that can't be navigated, that give goods to couriers who "lose" them, will go out of business. I hope that most shops steadily improve on these areas, just so I spend less time being pissed off at them BTW: this post was inspired by my mother's attempts to buy photos of my graduation online (no - it hasn't happened yet). The site in question was apparently so confusing that she has given up and has asked me to buy them. Sorry for ranting.

    6 May 2007

    Alastair McKinstry: The God Delusion, by Richard Dawkins

    The God Delusion by Richard Dawkins is an 'Atheism Consciousness-raising book', according to the author. It makes the case for Atheism, saying Atheists should stand up and be counted, and stand against the growing tide (in the U.S. in particular) of irrationality and belief. Although as one of Atheisms most visible proponents Dawkins has 'make converts' to the cause, in this book he is mostly speaking to the converted, presenting the evidence. The book documents the main arguments in favour of God. These are dismissed fairly abruptly; while a lot of pages are taken up going into them, they are probably not a comprehensive list. A book by a theologian or believer would probably be a better source for such a list. Nevertheless, Dawkins as a scientist does consider and list the opposing arguments. As presented however, they are extremely threadbare and easily dismissed. Mostly they are backed up by a willingness for people to take God (and Theology!) seriously: since so many people believe in God, it must be taken seriously, or so the reasoning goes. Not so: the proofs of Gods existence don't stand up and should be dismissed. Dawkins makes the case that we should instead of investigating God, investigate why people believe in God, given the lack of evidence. He gives some good hypotheses in terms of Darwinian thinking: reasons why faith, accepting what your parents said without evidence, has survival benefits, that in other circumstances lead people to believe nonsense stories with faith. Another under-estimated problem is the different definitions people have for 'God' and 'religion'. Most people from a Christian / Judaic background have a habit of framing belief and Religion in terms of the religion they grew up in. They may accept that you have a different God(s), but still view God(s) as something you pray to, that intercede on your behalf, etc. By confusing all the different aspects given to 'God' in the Christian tradition, they think that if you have 'proved' one of them, all the rest follow. If you prove / claim that something created the Universe, and label that God, then, they imply, there must be one overall, kind, monotheistic God, Jesus died on the Cross for your sins, that God will change the laws of physics to suit you (miracles), etc. Not so: all you have done is label something, not proved your religion. Dawkins (rightly) dismisses Buddhism, etc. as 'principles for living' rather than religions for the purposes of this book, and we need to be careful what we call religion, too. Dawkins also makes a good case against Agnosticism. He argues we should be more forthright and say we are Strongly Atheistic rather than Agnostic. Agnosticism was created by Thomas Huxley to explain his beliefs. He defined Athiesm is a positive belief in the lack of God, a proposition for which there is no evidence. He argued that, until we have proof that God does not exist, scientifically correct to consider ourselves 'sceptics' on this matter, and neither believe nor disbelieve in God. This sounds good, however in Science there are huge numbers of theories that in practice we have no evidence for either way that Occams razor mows down for us. We don't claim to be agnostic about them, we simply ignore them until they are actually needed to explain something. Which, given modern science and Darwins explanation of evolution in particular, God no longer is. The later chapters of the book cover whether, despite the lack of evidence, belief in God or Religion is a good thing, whether religion gives a moral purpose and direction to life, and defines a sense of "Good" that Atheists cannot have. For this he goes through the Bible with a disbelieving eye, pointing to the horrors of genocide that it promotes in the Old Testament, etc. He points out that we don't actually use the bible for moral guidance, but instead decide our own morality: we pick examples from the Bible a la carte to defend our choices. We don't decide, as an Old Testament interpretation would put it, that murder of an non-Jew is acceptable; that rape of an enemy is acceptable, that killing non-believers and witches necessary. Instead we pick examples to back up what we've decided already. If you're going to do that, stop pretending the Bible is giving you moral guidance and instead accept that we decide. Dawkins underestimates the social and ethnic aspects of religion. He is overly critical of religion, blaming it for much of the worlds violence, genocides, etc. It would be truer to say that Northern Ireland, etc. are examples of ethic rather than religious strife. "God says so" is just the ultimate argument. But conversely religion is a cohesive element in most societies. I suspect that a cause of the growth of christianity in the U.S. is that its proselytising nature goes out to be inclusive in Americas highly mobile society. When work, etc. causes people and families to move across the continent, they will find a church to welcome them into the community. Its against this background that atheists are the most distrusted minority. Shared beliefs, whatever those beliefs, bring neighbours closer. James Lovelock, (co-creator with Lynn Margulis of the Gaia Hypothesis) proposes that atheists can treat Gaia as an alternative religion, something to celebrate and to give moral direction to life. This I have sympathy with, that life is important, and to be celebrated, but not to be confused with something to be prayed to, or imagine that it is biased towards towards our existence. In these times when people are again using religion as a justification for war, claiming a "clash of civilisations", this is a book worth reading, but beyond deciding whether gods exist we need to understand why people believe. The Darwinian arguments are as Richard Dawkins points out, just a start, but I think more is needed to explain religion. Tags , ,

    3 May 2007

    Gunnar Wolf: On certifications

    Ok, so LPI will be at Debconf, giving discounted certifications to registered attendees. Is this good or bad? Mario likes the idea, Madduck is in the middle ground, not decided on his stance on this regard, and Joerg basically says it's not worth much to him personally. Actually, I'll quote Madduck, as he has an interesting point:
    I am not looking for employment, and if I was, I'd certainly not want to work at a company that thinks certifications are the true proof of capabilities. So I guess that leaves me with a 'no' still.
    When confronted with this topic, I always oppose certifications. Why? First of all, I think they are worth very little. I got three or four Brainbench certifications when they were free - And of course, noticed right away that such a simplistic test is worth very little. Of course, LPI is a better established name, and is usually respected - Lets be fair, and talk about LPI together in the line with Cisco's, Microsoft's, Novell's and similar certification programs.
    I've worked with several people who have got certified in different technologies, and almost always, this works against them rather than in their favor - Such people usually are blinded to all but their technologies. My most recent experiences are with the network infrastructure people - Cisco people know how to push Cisco, but know very little about protocol details, and cannot recommend a tool that's not madesold by Cisco. Same goes for 3Com. Same goes for everybody else. Although many certification tests include general situations like Solve this real-world problem, they are hampered by the final exam syndrome: The certification candidate spent a couple of nights frantically reading the books, and the material sits eager to jump on his brain lobes. Of course, given a couple of weeks, he has forgotten most of it and confused the rest. No, I don't have hard data to back this up except for my experience - But I have some experience at least. Oh, and of course: This people can quote from memory in inverse alphabetical order each of the command-line options to ls, but might be unable to spit up a clever shell pipeline without sketching it in paper and thinking it over for some minutes.
    What will this mean for most of Debconf's target audience? Well, just what Ganneff and Madduck said: Take the test if you want to get a new job more easily - but you should have more confidence in yourself.
    Just as a final note: Whenever I've interviewed people to work with me or for people that trust me, from all of the received curricula, I start by throwing out every curriculum that has the certifications earned in a prominent place. People who give too much weight to certifications IMHO tends to be worthless to work with.

    Gunnar Wolf: 09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0

    This looks like random blabbering, right? A very specific random blabbering that has somehow appeared in blogs of at least tens (if not hundreds, maybe even more) blogs of techies all over the place. What is it?
    For the more tech-friendly readers, it has some resemlance to a number - a long number, a 32128 bit one. And for those of you who are not Computer Science minded, you might actually prefer to see it as a simple base-10 (that means, decimal system) number: 13'256,278'887,989'457,651'018,865'901,401'704,640. I don't know how to spell it in English, but I do in Spanish (why? Because we have this difference: In Spanish, a billion is a million millions, and a trillion is a million billions - unlike English, where a billion is a thousand millions and a trillion is a thousand billions). So, lets do the excercise in Spanish:
    Trece sextillones, doscientos cinuenta y seis mil doscientos setenta y ocho quintillones, ochocientos ochenta y siete mil novecientos ochenta y nueve cuatrillones, cuatrocientos cincuenta y siete mil seiscientos cincuenta y un trillones, dieciochomil ochocientos sesenta y cinco billones, novecientos un mil cuatrocientos un millones, setecientos cuatromil seiscientos cuarenta
    Hah! I guess my fifth-grade teacher would be quite proud of me!
    Now, I hereby pronounce my transcription of this utterly long and basically random-generated number into the beautiful Spanish language copyrighted by me, and publicly available under the Creative Commons Attribution-ShareAlike 3.0 Unported License, as it is a very valuable and hard literary work.
    But, really, what is it? Well, this mindboggingly long number is the key with which most HD-DVD movies processed so far is encrypted with. Of course, the Motion Picture Ass. of America (MPAA) does not want this (again, randomly generated) number to be out there in the wild, so they say the number is copyrighted by them - This does not hold up, as it has been widely shown before (i.e. Intel dropped its 286/386/486 numbering scheme because a number is not copyrightable or trademarkable - and AMD was perfectly able to legally sell 386/486 chips). So, I have put more work into this number than what they have. I deserve the credit - the transcription is mine. Use it freely.
    Oh, and of course, some more examples: [update]: Yes, sorry, I was counting with half of my brain shut down and the other half brain trying to fetch some coffeine, or something like that. It's a 128 bit number, not 32!

    Next.

    Previous.