Search Results: "will"

18 October 2008

Martin Michlmayr: Amazing figures on the open source adoption in Finland

I attended Openmind last week, an interesting conference organized by the Finnish Centre for Open Source Solutions (COSS) to bring together open source professionals, community members and academics in Finland. In the session about business aspects of open source, in which I gave a talk about FOSS Governance, Nina Helander and Mikko R nkk presented the preliminary results of the National Software Industry Survey 2008. I found the results incredibly interesting. In particular, they found that 75% of responding firms use open source software in some way. This figure is up from approximately 13% in the year 2000, which is a major increase in just a few years. The study also found that that there was no statistically significant difference of company size when it came to the use of open source. Finally, companies that have open source components in their offering rate themselves as more innovative. Roberto Galoppini, who moderated the session, commented that Finland is where Gartner predicted that companies would be in 3 years. Indeed, I think everyone in the room was pleasantly surprised by the amazing numbers from the survey. We should not forget that the study was with software companies and that the use of open source will certainly be lower in other industries, but nevertheless the study shows that Finland is a leading country when it comes to the adoption of FOSS. (Originally published on FOSSBazaar)

MJ Ray: You Wait Ages for a Survey

As well as my little What topics do you want to read here? survey, there’s a more serious Free/Open Source Participant Satisfaction Survey by Brenda Chawner for the Victoria University of Wellington New Zealand which you might like to answer. It seems that the results will be published under CC-NC, which is less than great, but better than not sharing them at all. Shame I don’t know of a third survey. The joke doesn’t quite work without it.

17 October 2008

Joey Hess: relative dates in html

One of html's deficiencies is that it doesn't have a tag to mark up a date. If html had such a tag, then browsers could display dates using your time zone, and in whatever format you like. Rather than in some random time zone, that is often not even shown, and some random format. My fav way to see a date is as relative date, such as "two days ago". With a mouseover so I can see the exact, absolute date in the rare case I need it. It's possible to combine some javascript with html, so that, if javascript is available, a nicely formatted relative date is displayed. And with no javascript, an plain old absolute date is shown. Perhaps the cleanest way to do it is using html like this, combined with javascript that fires on page load, parses the date and replaces it with something nicer:
<span class="date">Fri Oct 17 16:17:02 2008 (EDT)</span>
But you might want to avoid using the ugly machine-parseable date, since it will still display in any situation where javascript isn't available. To do that, I added an attribute containing the machine-parseable date. I chose to use the "title" attribute, so as a bonus you can hover over it to get a popup with the raw date.
<span class="date" title="Fri Oct 17 16:17:02 2008 (EDT)">Friday afternoon, October 17th</span>
So, relatively clean html out of the way, now we just need some javascript to munge in the relative dates. There are various examples out there. The best one, requires the prototype framework. I try to stay away from javascript frameworks, since I'm not a javascript programmer, and since I dislike page loads pulling in thousands of lines of irrelevant code. So I came up with my own more bare metal implementation, which handles both types of html above. You can see it in action on my website, or by enabling the relativedate plugin on your own ikiwiki. (This code is in the public domain, but do note that I'm not a javascript programmer, really.)
var dateElements;
window.onload = getDates;
function getDates()  
    dateElements = getElementsByClass('date');
    for (var i = 0; i < dateElements.length; i++)  
        var elt = dateElements[i];
        var title = elt.attributes.title;
        var d = new Date(title ? title.value : elt.innerHTML);
        if (! isNaN(d))  
            dateElements[i].date=d;
            elt.title=elt.innerHTML;
         
     
    showDates();
 
function showDates()  
    for (var i = 0; i < dateElements.length; i++)  
        var elt = dateElements[i];
        var d = elt.date;
        if (! isNaN(d))  
            elt.innerHTML=relativeDate(d);
         
     
    setTimeout(showDates,30000); // keep updating every 30s
 
function getElementsByClass(cls, node, tag)  
        if (document.getElementsByClass)
                return document.getElementsByClass(cls, node, tag);
        if (! node) node = document;
        if (! tag) tag = '*';
        var ret = new Array();
        var pattern = new RegExp("(^ \\s)"+cls+"(\\s $)");
        var els = node.getElementsByTagName(tag);
        for (i = 0; i < els.length; i++)  
                if ( pattern.test(els[i].className) )  
                        ret.push(els[i]);
                 
         
        return ret;
 
var timeUnits = new Array;
timeUnits['minute'] = 60;
timeUnits['hour'] = timeUnits['minute'] * 60;
timeUnits['day'] = timeUnits['hour'] * 24;
timeUnits['month'] = timeUnits['day'] * 30;
timeUnits['year'] = timeUnits['day'] * 364;
var timeUnitOrder = ['year', 'month', 'day', 'hour', 'minute'];
function relativeDate(date)  
    var now = new Date();
    var offset = date.getTime() - now.getTime();
    var seconds = Math.round(Math.abs(offset) / 1000);
    var ret = "";
    var shown = 0;
    for (i = 0; i < timeUnitOrder.length; i++)  
        var unit = timeUnitOrder[i];
        if (seconds >= timeUnits[unit])  
            var num = Math.floor(seconds / timeUnits[unit]);
            seconds -= num * timeUnits[unit];
            if (ret)
                ret += "and ";
            ret += num + " " + unit + (num > 1 ? "s" : "") + " ";
            if (++shown == 2)
                break;
         
        else if (shown)
            break;
     
    if (! ret)
        ret = "less than a minute "
    return ret + (offset < 0 ? "ago" : "from now");
 

William Pitcock: dsyslog 0.5.0 coming really soon now.

Sorry about the lack of updates, I have been really busy! Anyway, dsyslog 0.5 will be out soon, with TLS support. Audacious2 development is moving along quickly again, we might actually get an alpha release out before the beginning of 2009. Once I get dsyslog 0.5 out, I am going to start looking at NMUs in Debian to squash so we can get Lenny out… so the next few weeks should be pretty exciting.

David Welton: Linux in Sardinia

This was a pleasant surprise: La Sardegna adotta il software libero What that means is that the region of Sardinia (Sardegna, in Italian) will be adopting "software libero" for their IT infrastructure.

Michal &#268;iha&#345;: Gammu news

I finally catched up with Gammu backlog from holidays and now it is time to move it a bit further. Automatic testing During this week I set up CDash instance for acquiring results of automatic nightly checks of Gammu. Each night Gammu is build on several hosts (currently Debian x86_64, Debian x86, SUSE x86_64 and crosscompilation for Windows on Debian) and results are posted to the dashboard. If you have some other architecture which could participate in testing, you are welcome to contribute! It is simple - just checkout svn, create build directory and configure there Gammu using cmake. You can enable coverage tests (-DCOVERAGE=ON). Then just run every night make Nightly for regular testing or make NightlyMemoryCheck to do dynamic allocation analysis. There is more detailed documentation in sources (INSTALL file). Thanks to this, I can hopefully sooner spot regressions and possible problems on different architectures. Roadmap With upgrade of Mantis, new feature called roadmaps arrived. I started to use it for planning features in future Gammu releases, so you can see what bugs should be fixed in future releases in Gammu roadmap. Currently there are not much things planned, because till now I had to focus only on bug fixing, but I think with 1.21.0 we have reached much better quality than in past releases and now is time to do some important changes in the core. Nokia phone required As you can already see in roadmap, I plan some bigger changes to Gammu core. I currently have on Sony-Ericsson phone and I would not be able to properly test how these changes will affect Nokia drivers. So for start I will need at least Nokia Series 40 3rd edition phone. Nokia 6233 (or 6234) currently looks as a reasonable choice, but if you have any hints for cheaper one with similar features, just drop me an email. Perfect would be if somebody would have half broken phone (I do not intend to use it for anything else than Gammu development, so broken camera, speaker, microphone or display does not really matter) and will be willing to donate it to me. If this will not work out, I'll have to buy used one and I will try to collect funds for this. If you want to contribute, check my donations page for possibilities.

Jaldhar Vyas: Plumbing the Depths

Wow this Joe the Plumber phenomenon really seems to have Democrats spooked as they are now scrambling to find any possible dirt on the guy who dared to question Dear Leader. One might think people with a solid 6-10% lead wouldn't need to be so desperate but Adam is probably well aware of the Democratic partys penchant of snatching defeat from the jaws of victory. A lot of these progressive types are still nursing resentment for the "swiftboating" of John Kerry and wary that it will happen again so todays strategy is pre-emptive douchebaggery before Karl Roves evil minions can sully the pristine reputation of their fair candidate. What they don't realize is that calling Kerry an America hating traitor worked because there was reasonable evidence that he threw his medals away, and made speeches denouncing his country which are typical of acts people associate in their minds with America hating traitors. The 527s exaggerated but the exaggeration would not have worked if there was not an element of truth behind it. Now no one is disputing that Obama actually did make the "share the wealth" remark. Whether the person he said it to is a republican plant or some other sort of nogoodnik is immaterial. Obama is a redistributionist and that is precisely the reason why liberals want to him to be president. And how pathetic is the "dirt"? He owes backtaxes? Gee I wonder why someone who already owes money would be apprehensive about having to pay more? A lot of people owe money at one time or another and even have liens placed as a result. Perhaps it is relevant to mention that for someone in public office (like oh, say, Charles Rangel who I'm sure Adam will discuss in his next post.) but for a private citizen? Isn't that one of the "chilling effects on free speech" we were going to be subjected to in Bush's America? The other one one was how is not a real plumber. Apparently he is not licensed but, sit down for this one, it is actually possible to do work without a piece of paper from the government. Really! I've seen it happen. Is it always a good idea to ignore licensing regulations? Well they often serve to protect the public from malpractice but then again they often prop up cartels. Here in the NY/NJ area plenty of people of all political persuasions seem to be willing to take the risk of hiring unlicensed plumbers and other tradesmen because at the end of the day, it's the, you know plumbing, that makes you a plumber nothing else. And none of this has any bearing on Obamas policies or what they mean for America. So if you like socialism and think its what America needs, feel free to make the case to the voters and perhaps they will agree with you or perhaps not. But stop with with the ad hominems against people who point that out.

16 October 2008

Petr Rockai: adept 3.0 beta 4

I have released fourth beta of Adept today. For the unaware, Adept is an APT front-end for KDE: it lets you install, remove, upgrade software and such your Debian and Kubuntu boxes (and maybe on some other Debian derivatives, too). Changes since Beta 2 Since I have done beta 3 somewhat in a hurry, I have regressed the installer component badly — to point of complete unusability. However un-sound software engineering practice, the deep freeze for Kubuntu Intrepid hits today, so I have released beta 4 in rapid succession. Other than the regression fix, I have mostly reworked the paging implementation in the installer — however, the report of complete installer rewrite (hi Jonathan) is somewhat exaggerated. Sadly, the KPageWidget we have been using before turns out to be completely unsuitable for the job, so a quick rewrite probably fixed more issues than it caused (and this seems to be confirmed by early testing feedback). Moreover, this beta got a bunch of improvements to the search, including package name hits, a set of cosmetic improvements (button icons, nicer sidebar, etc.) and a button to run software-properties-kde from the Sources tab (works on Intrepid, but sadly breaks on Debian for now… will fix later. Need time, need sleep.) Where to get I have prepared binary packages. These should be now part of Debian Sid (unstable) and also of Kubuntu Intrepid. You should be able to get the new version from your distribution:
apt-get install adept
Again, as with beta 2, there is no Hardy backport, since my time is tight. If anyone is willing to do a backport please drop me a note: I will gladly publish installation instructions. Heroes of Beta 4 Jobs for Beta 5, RC and Final Mostly just testing and reporting bugs. I currently plan a beta 5 with a few fixes that have started accumulating since beta 4 already (mostly one-liner fixes with minimal risk of regressions). After that, an RC is in order and a final release (finally…). Notifier is not included. Kubuntu has an independent sort of notifier now, I believe. Maybe I’ll find time to reconcile it in 3.1 or so. Moreover, I assume that a beta 4 or a very minorly patched beta 4 will become part of Kubuntu Intrepid — there should be no major roadblocks left, so I hope everything will bode well for Intrepid. I assume that whatever becomes 3.0 final will be eventually included in Intrepid updates. And then, plans should be set forth for 3.1… Known issues The about dialog still says beta 2. Bummer. Please try to note in your reports that this is actually a beta 4 that you are using. I’ll make sure beta 5 fixes that — but it might be another week till then, or so. The Intrepid version should have that fixed, thanks to Jonathan Thomas (again).

Steve Kemp: Dirty. Dangerous. Your kind of people.

Screen Fork?
There are times when I think of forking. Mostly sanity returns very quickly, though Still GNU Screen is one program that I use almost constantly, and it seems to work at a glacial pace. The Debian package has a lot of open bugs against it. Some trivial, some annoying, and some with patches. Making the program GNU/Linux only would simplify a lot of things. But then again would that be a legitimate reason to fork it? Me? I'd just like to see some additional primitives.
More QPSMTPD
I've come up with a nice simple qpsmtpd plugin to do spamgourmet-like setup. This means I can have email addresses:
  • steve.3.count@steve.org.uk
    • Allows only three mails to this address.
  • steve.date.20-10-2008@steve.org.uk
    • Allows only mail to be sent here prior to Oct 20th.
Plugin code will be in the usual place in the next day or two..
ObFilm: xXx

Biella Coleman: SISU Strikes Again: Two Bits Online

I have blogged about it before, but I will blog about it again as it is that cool: SISU. According to its author, Ralph Amissah, “Susu was born of the need to find a way, with minimal effort, and for as wide a range of document types as possible, to produce high quality publishing output in a variety of document formats.” And really what it does it makes reading on the web a whole lot easier. He can only throw up Free Material and so his options are a little limited but he has recently added Christopher Kelty’s Two Bits, making it easier to read than ever. We just finished reading a about 3 chapters of the book for my class (wish I had known about the SISU for my students but oh well, next time) and here is the latest entry from one of my students covering the birth and development of F/OSS and ending with some questions about Free Culture. Good stuff, if I can say so myself.

Biella Coleman: SISU Strikes Again: Two Bits Online

I have blogged about it before, but I will blog about it again as it is that cool: SISU. According to its author, Ralph Amissah, “Susu was born of the need to find a way, with minimal effort, and for as wide a range of document types as possible, to produce high quality publishing output in a variety of document formats.” And really what it does it makes reading on the web a whole lot easier. He can only throw up Free Material and so his options are a little limited but he has recently added Christopher Kelty’s Two Bits, making it easier to read than ever. We just finished reading a about 3 chapters of the book for my class (wish I had known about the SISU for my students but oh well, next time) and here is the latest entry from one of my students covering the birth and development of F/OSS and ending with some questions about Free Culture. Good stuff, if I can say so myself.

Mark Brown: If we build it they will come

It looks like the jack reporting API for ALSA which just got merged into the mainline kernel for inclusion in 2.6.28 already has its first user - code from Matthew Ranostay supporting the jack detection in Sigmatel HDA codecs was just queued for merge in the next merge window. Admittedly, the jack reporting API has been available in ALSA git since July but it does look like it is just impressively fast adoption after the mainline merge. Still, a long way to go before user space can start to rely on knowing if things are plugged in or not.

15 October 2008

John Goerzen: The Best Photo Printing Services

When I first got a digital SLR camera a few years ago, I spent some time evaluating photo printing options. I sent a set of test prints to several different companies, and wound up deciding to use Shutterfly for my photo printing.

It's been some time since then, so I figured it was about time to re-evaluate options.

There are three main things to consider when obtaining prints of photos: cost of prints, quality of prints at delivery, and longevity of prints. Many people look only at cost, and those that look past cost rarely look past quality at longevity. Longevity (or permanence) is, in my opinion, the most important factor to consider. But let's look at all of them.

Longevity

All color photo print technologies fade or otherwise degrade over time. There are several main things that can cause this: exposure to light, exposure to gases (especially ozone), and exposure to humidity. The impact of these different items varies by print technology, paper, and process.

Longevity: Traditional Photo Paper

Most services such as Shutterfly, Snapfish, Ofoto, as well as retailers such as Walmart, Target, and Walgreens print on traditional photo paper.

Historically, traditional photo paper has had terrible fading characteristics. Typically, old photos exposed to light -- for instance, hanging on a wall underneath a light bulb or in the sun -- will exhibit severe fade towards yellow or magenta. Modern papers are much better, but you will still not want to leave them directly in the sun or under lights.

Over at TPR, you can find several papers analyzing this. Perhaps the most interesting are test of digital prints and image permanence: comparing the technologies.

To attempt to summarize, what you see is that of the two common consumer-grade photo papers, Kodak Royal and Fuji Crystal Archive, the Fuji paper has better permanence. However, the pro-quality Kodak Professional Supra Endura is better than either of them by a significant margin. The photo papers didn't really have a problem with humidity, and not much of a problem with ozone.

Longevity: Inkjet

So what about inkjets and laser processes? The main thing I learned from my research is that there is a tremendous amount of variance here. When looking solely at top-quality inkjet papers and inks, they ranged everywhere from having little bits of them flake off after a few months to doing better than any of the photo papers. This variance occurred even with similar papers from the same manufacturer.

As far as light exposure is concerned, every inkjet paper tested by TPR did better than Kodak Royal. Some fared about the same as Fuji Crystal Archive. And some even beat out Kodak Supra Endura.

But look at the ozone exposure test and you see a far different picture. All of the photo papers did really well, though suprisingly Supra Endura was the worst of them (though the scale is so small here that the difference is pretty minimal).

Not one of the inkjet papers came even close to that, and some faded so fast that they couldn't even make it halfway through the test.

As far as humidity is concerned, it barely impacted the photo paper prints at all. Inkjet impacts were still mostly small, but also were mostly more impacted than the photo paper.

Longevity: Laser

And finally, how about laser prints. There was huge variety here. An HP printer they tested faded so fast it couldn't complete the light exposure test, while a Konica-Minolta fared better than Kodak Supra Endura in one test. In another light exposure test, they performed about the same as the photo papers. Ozone had little effect on the laser papers, except for the Dell test, which faded so fast they had to abort the test early. Humidity also had little effect on the laser prints.

Longevity: Other Examples

Brett Wilson did some interesting experiments with photos hung in front of a window as well. Wilhelm Imaging also has done some research in this area, though they are done using fluorescent lights only, which is prejudicial in favor of inkjet papers and against photo papers.

For the ultimate in longevity, true black and white photo paper is well-regarded.

TPR also has a report covering different lacquer and other finishes often applied to prints to improve their longevity.

Longevity: Conclusions

With the exact right combination of inkjet paper and ink, you can get a print that will last exceptionally long. Some inkjet paper and ink combinations have really poor longevity characteristics, however, as do the laser papers.

Photo papers, especially Kodak Supra Endura, but even Fuji Crystal Archive, will last quite awhile as well, and are probably the best storage if kept in dark conditions such as an album.

Print Quality

When looking at print quality, I'm concerned with correct color balance, saturation, cropping, consistency, sharpness, contract, and detail in both dark and light areas -- the typical things you'd look for.

Printing inkjet prints at home leaves all this up to your printer, inks, papers, and you, so we can't really compare meaningfully.

Back when I looked at it, Shutterfly and Ofoto did the best. Walmart, Walgreens, dotPhoto, and many of the other online sites were really too poor to even bother with. Ofoto had a bit of a yellow tint to it, while Shutterfly did pretty well.

Most of the reviews of the major sites I've seen lately rank Shutterfly or Snapfish at the top in terms of quality. Many also rank Ofoto/Kodak near the top.

Walmart and Walgreens produce consistently bad results, and I only use them if all that matters is speed. If you ever read a review where somebody says that they get good results from one of those places, find a review where somebody has a better idea what they're talking about.

Besides your mass-market sites like Shutterfly and Ofoto, there are also some slightly more expensive sites. The two best-known are mpix.com and adorama.com. Mpix is a division of Miller's Professional Imaging, a pro lab. Mpix is basically a website where you can submit photos in the way you would to one of these other sites, and they can do their thing. Their standard rate includes human color correction on every print, but they offer a cheaper rate if you don't need that. Their standard paper is Kodak Pro Supra Endura (the one that ranked highest in longevity tests), and the options go up from there. They also offer printing on true black and white paper, as well as wrap-around canvas and other such options.

I've sent some work their way and have been exceptionally happy with the result. Everything from the color of the prints down to the packaging shows extreme care and attention to detail. Among the reviews that cover mpix -- many don't -- it almost always comes out at the top of the pack, easily beating out Shutterfly and Snapfish. It can be more pricy (though sometimes actually cheaper, since shipping is flat-rate with them), though not significantly.

Adorama is also sometimes mentioned. Most people seem to prefer mpix over adorama, but some prefer adorama. It's a bit cheaper when you don't need color correction for some prints, but sometimes -- right now, for instance -- closes for weeks at a time to observe Jewish holidays. It didn't seem to be enough for me to bother.

Cost

Perhaps the easiest to figure out is cost, since websites typically list it right there for you.

High-quality inkjet prints are by far the most expensive option. I looked at 4x6 prints. Using the high-quality paper/ink combinations that did well in the TPR tests, and when buying supplies in bulk to get the best possible discount, it's still 25 cents or more for a single 4x6 print. That's with doing all the color work yourself, and not even figuring in the cost of the inevitable experimenting with getting the software set up right and the wasted prints when ink gets low. It also doesn't figure in the cost of the printer.

At mpix, if you do your own color correction, it's 19 cents per print, plus shipping. Prints are on Kodak Professional Supra Endura Shipping is a flat rate of $3 for 50 or fewer 4x6 or smaller prints, or a flat rate of $5.95 for USPS Priority Mail for anything else. They offer FedEx at an additional cost, which maxes out at a flat rate of $12.75 for overnight shipping. Some items such as framed canvas prints are more expensive.

Other options at an additional cost include color correction by a human, metallic paper, Ilford B&W paper, etc. There are also some more typical pro-lab options: red-eye removal by a human, custom retouching, etc.

At Shutterfly, a 4x6 print goes for 15 cents. You can get them as low as 10 cents if you buy a pre-paid plan of 600 prints for $60. Shipping varies based on the number of prints, starting at $1.79 for up to 10 prints, ranging up to $21 for 500 prints, with 3 cents per print after that. Priority and express mail is available at an additional charge. Shutterfly's standard paper is Fuji Crystal Archive.

At Snapfish, a 4x6 print goes for 9 cents. You can get them as low as 8 cents if you buy a pre-paid plan of 250 prints. Shipping at Snapfish follows a complicated formula, but is generally approximately the same as Shutterfly. Though if you print more than 595 prints, watch out for the 10 cents per print overage fee. They don't state what paper they use. Recent reports seem to suggest that it's Fuji Crystal Archive, but some reports claim it's Kodak Royal.

My Conclusions

I'm planning to switch most of my prints to mpix -- their higher quality and cheaper shipping offset their higher per-print cost for me. Also, I plan to try out Snapfish and see what sort of quality I get from them for things where quality isn't really that critical.

Russell Coker: Programming and Games for Children

The design of levels for computer games is a form of programming, particularly for games with deterministic NPCs. It seems to me that for a large portion of the modern computer user-base the design of games levels will be their first experience of programming computers, the people who don’t start programming by creating games levels would be writing spread-sheets. Probably a few people start programming by writing “batch files” and shell scripts, but I expect that they form a minute portion of the user-base. I believe that learning some type of programming is becoming increasingly important, not just for it’s own sake (most people can get through their life quite well without doing any form of programming) but because of the sense of empowerment it gives. A computer is not a mysterious magic box that sometimes does things you want and sometimes doesn’t! It’s a complex machine that you can control. Knowing that you can control it gives you more options even if you don’t want to program it yourself, little things like knowing that you have an option of using a different choice of software or paying someone to write new software open significant possibilities to computer use in business environments. Games which involve strategic or tactical thought seem to have some educational benefit (which may or may not outweigh the negative aspects of games). To empower children and take full advantage of the educational possibilities I think that there are some features that are needed in games. Firstly levels that are created by the user need to be first class objects in the game. Having a game menu provide the option of playing predefined levels or user-defined levels clearly shows to the user that their work is somehow less important than that of the game designer. While the game designer’s work will tend to be of a higher quality (by objective measures), by the subjective opinion of the user their own work is usually the most important thing. So when starting a game the user should be given a choice of levels (and/or campaigns) to play with their levels being listed beside the levels of the game creator. Having the users levels displayed at the top of the list (before the levels from the game designer) is also a good thing. Games that support campaigns should allow the user to create their own campaigns. The KDE game kgoldrunner [1] is the best example I’ve seen of this being implemented correctly (there may be better examples but I don’t recall seeing them). In kgoldrunner when you start a game the game(s) that you created are at the bottom of the list. While I believe that it would be better to have my own games at the top of the list, having them in the same list is adequate. When a user is playing the game they should be able to jump immediately from playing a level to editing it. For example in kgoldrunner you can use the Edit Any Level menu option at any time while playing and it will default to allowing you to edit the level you are playing (and give you a hint that you have to save it to your own level). This is a tremendous encouragement for editing levels, any time you play a level and find it too hard, too easy, or not aesthetically pleasing you can change it with a single menu selection! When editing a level every option should have a description. There should be no guessing as to what an item does - it should not be assumed that the user has played the game enough to fully understand how each primary object works. Kgoldrunner provides hover text to describe the building blocks. Operations that seem likely to be performed reasonably often should have menu options. While it is possible to move a level by loading it and saving it, having a Move Level menu option (as kgoldrunner does) is a really good feature. Kgoldrunner’s Edit Next Level menu option is also a good feature. Finally a game should support sharing levels with friends. While kgoldrunner is great it falls down badly in this area. While it’s OK for a game to use multiple files for a campaign underneath the directory it uses for all it’s configuration, but it should be able to export a campaign to a single file for sharing. Being able to hook in to a MUA to enable sending a campaign as a file attached to an email as a single operation would also be a good feature. I have filed Debian bug #502372 [2] requesting this feature.

Joachim Breitner: Infinite loops in Haskell

Just some small thoughts about cyclic lists in Haskell. Every Haskell beginner knows that you can use infinite lists, as long as you don t fully evalute them. So, this is perfectly valid
endless = [0..] -- All natural numbers!
main = print (endless !! 10)
It will not crash, but print "10" as the list has not been fully used.What happens if we take a piece of the list further down, let s say at position 1000000000:
endles = [0..]
main = print (endless !! (10^9) )
If you try this at home, better run "ulimit -S -v 1000000" before, because then you ll get "test: out of memory (requested 1048576 bytes)" instead of a sluggishly swapping machine. What happened? The long list will be evaluated, and fills the memory. Does this mean that we can not use arbitrary long lists? Let s try a special case: A list that is infinitely long, but repeating the same values all over again:
list = "Oh, happy day! Oh, happy day. "
cycle' list = list ++ cycle' list
main = do let rlist = cycle' list
print ( rlist !! (10^9), rlist !! 0 )
We repeat the (finite) list endlessly, and then try to pick the 1000000000th element. We also pick the first element again, to make sure the compiler does not cheat by forgetting the first 999999999 elements (It s actually pretty nice that the compiler will forget these elements, but not what I want to demonstrate here). Running that code, sure enough, fills up the memory.But maybe I was coding badly. At least I have re-implemented a function that already exists, which is bad practice. Let s try with Haskell s own cycle:
list = "Oh, happy day! Oh, happy day. "
main = do let rlist = cycle list
print ( rlist !! (10^9), rlist !! 0 )
Now it takes a while, but surprisingly, the memory gauge does not skyrocket, and in the end I m told that the 1000000000th character in my infinite character string is 'd'. This leads me to the conclusion that the Haskell library uses black magic. Or does it? Here is the definition of cycle:
cycle xs = xs' where xs' = xs ++ xs'
What is the difference to our cycle'? Here, the result is given a name (xs'), which is used again inside the function. So while our cycle' appends the list over and over again, filling up the RAM, their cycle ties a loop and makes the end of the list refer to it s beginning. And my list lookup will no longer evaluate the list up to infinity, but just run around in, well, cycles until it has counted down from 1000000000. I could even ask for the last element of this list, and it will not use any more RAM than a small, finite list, while endlessly searching for the end of the list.Despite Haskell being a very high level language, I sometimes wonder how my data will look like on the physical memory. And as you can see, it can make a difference. Some more thoughts on this were written down by Duncan Coutts.

MJ Ray: Poverty, Credit Unions and Community Banking

Today is Blog Action Day about poverty. As a member of several cooperatives, I have a pretty strong hope that the responsible lending of credit unions can help people escape from poverty. The basic process of a credit union is that you save for a while, then when you’ve shown that you will put aside that amount of money regularly, you can borrow some multiple of it and repay at the same rate you were saving. In addition, you get a voice in controlling the credit union itself, although it is limited by financial services regulations and so on. At yesterday’s meeting of the Cooperatives-SW board in Taunton, some members expressed concern about a “social enterprise” called South-West Pound backed by a company called South West Community Banking Partnership. Although it’s called that, apparently it’s not a bank and also not a credit union: its members don’t manage it. It’s working with credit unions, but I’m very unclear on how it’s regulated. From the few details on their website, it looks to me like it could even be running a Farepak-style scheme which happens to hold deposits in credit unions instead of banks. Why is concealing member-controlled unions allowable as a “social enterprise”? Why would anyone go to a “community banking partnership” instead of direct to a credit union? (Coo, I’m getting a bit angry again, both at the lack of information and the hide-them-to-promote-them idea.) Tomorrow (Thu 16 Oct) is International Credit Union Day. If you’ve not already done so, please go open an account and help your local community to fund itself, then see if you can get involved in publicising them to communities who suffer financial exclusion.

Martin F. Krafft: Fixing the credit crunch problems the wrong way

We re all aware of the financial crisis due to credit default swaps shaking up the markets, media, politics, and what not. Some of us are feeling the pain, most of us aren t yet. A few days ago, politicians of the big, capitalist nations convened to agree on a way forward to stablise the financial market and set an end to the crisis. They are planning on doing this by throwing hundreds of billions at the market, buying all the subprime loan packages with the intention to create a new market for them, thus taking the weight off the shoulders of the countless barely-surviving banks and investors, who have written off billions in losses without an end in sight. Where does this money come from? Taxes and newly printed money. You may not yet feel the effects of this, but you will: taxes will rise, and inflation soar to even higher levels. Today is Blog Action Day with poverty as the focus, and it s a good occasion for me to state what s long been on my mind. The strategy by our political leaders to combat the credit crunch is short-sighted, and it fights symptoms, not causes. In fact, it s Robin Hood played in reverse: tax increases and inflation will hurt those most who cannot do anything against it: the poor. On the other side of things, those active in the financial markets will have their damages limited, and new CDS markets might even create more opportunities for those who can. I strongly oppose the way our politicians are handling the issue, even though I do have small amounts of funds invested in financial products myself, and have already seen the positive effects of their actions. Rather than throwing money at the markets, we really ought to put those away who have caused all this, those ruthless, greedy ones who have speculated way over their heads, underestimated the risks, and caused this crisis that killed many businesses, threatens to endanger entire countries, and hurts individuals who hardly ever had a choice. Think of it as a driver s licence, and that should be revoked for those who screwed up so royally bad and got us into this situation in the first place. Don t let them speculate again! Update: Andreas Metzeler notes that he is (rightfully) missing a what is to be done instead section in my blog post. I don t have anything to offer on that front, sadly. I also realise I should have phrased my opposition differently. Reading this interesting interview with Deutsche Bank ex-CEO Hilmar Kopper (German only) (thanks, Andreas!) helped me understand more that the politicians aren t saving banks, they are saving the system, and that they have little other choice. Another aspect I haven t previously seen as clearly as now is that the governments are purchasing (and willing to carry) risk for others, to relieve the markets. Risk by itself doesn t cost anything, so it might turn out that the billions they made available won t actually be spent though I always new that the governments might well come out of this with a profit even. The whole affair still stinks, and what I truly miss are the actions to prevent those responsible for getting us into this mess in the first place from doing so again. NP: This Will Destroy You: Young Mountain

MJ Ray: Software in the Public Interest October 2008

The monthly IRC board meeting of Software in the Public Interest will take place later today, as announced by SPI’s secretary last week. While the announcement is back on time (yay!), the agenda isn’t (aww!). I’d be quite interested to learn how SPI is going to try to reduce the risk to its reserves, given the current slow decline of its primary bank which is not one of the first US banks getting bailed out. I think the best way for not-for-profits to avoid risking donations at the moment is to avoid having them in their bank accounts, in line with the Better Business Bureau standard that
“the charity’s unrestricted net assets available for use should not be more than three times the size of the past year’s expenses or three times the size of the current year’s budget, whichever is higher.”
Back in June 2005, SPI’s board of the time (Ian Jackson, John Goerzen, Jimmy Kaplowitz, David Graham, Bruce Perens, Benj. Mako Hill, Branden Robinson) decided to “remain noncompliant” with that standard and I fear that chicken could be coming home to roost now. I hope we don’t lose anything, but AIUI we’ve got nearly $150,000 in play. Update: Unlike its UK analogue, the Federal Deposit Insurance Corporation covers corporation accounts up to $250,000, so SPI is only risking temporary unavailability, not yet a risk of loss. Thanks to bd_ for pointing me to that.

Erich Schubert: Facebook marketing campaign for Germany

So Facebook pretty much missed the German market. There is StudiVZ which has about 10 times as many users in Germany than Facebook has, and which is sometimes called "red facebook" because of the similarities. Then there is "green facebook", Lokalisten, which had started quite regional (and invitation-only), but expanded since, and also is like 2-3 times the size of german Facebook.So apaprently Facebook now decided they need to compete more in the German market, and started a marketing campaign. As part of this campaign, Mark Zuckerberg, founder and CEO, gave a talk in Berlin and Munich. The marketing company uses a strategy where they try to push these two cities to compete for having the largest fb userbase in Germany.The talk was okay, I would have wished for more entrepreneural chat; but only a few of the questions were along these lines (e.g.: "when did you know you had something big?"), instead some usual feature requests came up ("Why can't I prevent others from tagging me on photos?")But the largest kudos I have to give to facebook is for actually finding so many "ambassadors" that will do advertisement for them for free. Well, they got a T-Shirt (that does a word play on "blue" and "taking a day off", although it should probably say "I'm doing free promotion for fb and all I got is this T-Shirt")It probably only works because Facebook on one hand has always been free, is a "hip web2.0 thing", and they're trying to play "good guys" just like Google does ("don't be evil"). Many people don't understand how despite the privacy functions in Facebook people can still get their data with just some old-style social engineering very easily (so no actual data manipulation or abuse required, but when you do it the right way, just about everybody on facebook will just give you his data voluntarily).Sometimes all this Web2.0 fanboying can be quite scary, but I figure that is just the way people and societies work.

14 October 2008

Peter Van Eynde: Vista assymmetical speed problems

My wife has a laptop running Vista because she wanted to try out the operating system before having to decide on using it at work.

I called her various names because of it, but that didn't help :-).

So we have this setup with an SMC wireless router/AP talking to a Cisco 837 router that does the internet part. Upstairs we have a 'server' that is connected via Powerline IP-over-power, downstairs we have the Dreambox that is connected via a normal Cat5 connection.

In the last few days my wife complained that it was very slow to download media from Frost. Working at TAC having a network problem at home is almost a personal offence :-) so I decide to take a look and I find using iperf the following speeds:

frost (debian) --cat5--> sharrow (debian): 35 Mbit/sec
frost (debian) ---WL-cat5-> sharrow (debian): 18 Mbit/sec
sharrow (debian) ---WL-cat5-> frost (debian): 18 Mbit/sec
sharrow (debian) --cat5---> frost (debian): 35 Mbit/sec
frost (debian) ---WL---> martha-jones (vista): 0.2 Mbit/sec
sharrow (debian) ---WL---> martha-jones (vista): 12 Mbit/sec
sharrow (debian) ---cat5-SMC-WL--> martha-jones (vista): 6 Mbit/sec
martha-jones (vista) --WL-cat5-> frost (debian): 18 Mbit/sec
martha-jones (vista) --WL--> sharrow (debian): 18 Mbit/sec
martha-jones (vista) --WL-cat5-> sharrow (debian): 18 Mbit/sec


This made no sense at all. The speed halved going from a WL->WL to a WL->cat5 connection but only in one direction!

So having isolated the problem to the Vista machine I started looking round and I found a note saying that running netsh interface tcp set global autotuninglevel=disabled in an 'Administrator' cmd window will fix the problem.

Now I'm very weary of changing the TCP/IP options of the operating system. In most cases the 'tips' you see flying round the internet have no meaning at all and sometimes make the situation worse rather then better.

However I did find this on a Microsoft Technet site.... Hmm

So in the end I try it and modify the setting, disconnect and reconnect to the wireless and:

frost (debian) ---WL---> martha-jones (vista): 18 Mbit/sec
sharrow (debian) ---WL---> martha-jones (vista): 18 Mbit/sec
sharrow (debian) ---cat5-SMC-WL--> martha-jones (vista): 18 Mbit/sec


Aah, finally I could tune Vista so that it has the same speed as an untuned Debian machine. I only took me 2 evenings worth of work...

Next.

Previous.