Citing Wikipedia
A meme that has been going around is that you can’t cite Wikipedia. <h3>You can’t Cite Wikipedia Academically</h3>
Now it’s well known and generally agreed that you can’t cite Wikipedia for a scientific paper or other serious academic work. This makes sense firstly because Wikipedia changes, both in the short term (including vandalism) and in the long term (due to changes in technology, new archaeological discoveries, current events, etc). But you can link to a particular version of a Wikipedia page, you can just click on the history tab at the top of the screen and then click on the date of the version for which you want a direct permanent link.
The real reason for not linking to Wikipedia articles in academic publications is that you want to reference the original research not a report on it, which really makes sense. Of course the down-side is that you might reference some data that is in the middle of a 100 page report, in which case you might have to mention the page number as well. Also often the summary of the data you desire simply isn’t available anywhere else, someone might for example take some facts from 10 different pages of a government document and summarise them neatly in a single paragraph on Wikipedia. This isn’t a huge obstacle but just takes more time to create your own summary with references. <h3>When Wikipedia is Suitable</h3>
The real issue however is how serious the document you are writing is and how much time you are prepared to spend on it. If I’m writing a message to a mailing list or a comment on a blog post then I probably won’t bother reading all the primary sources of Wikipedia pages, it would just waste too much of my time. Wikipedia is adequate for the vast majority of mailing list discussions.
If I’m discussing several choices for software with some colleagues we will probably start by reading the Wikipedia pages, if one option doesn’t appear to have the necessary features (according to Wikipedia) then we may ask the vendor if those features are really missing and if so whether they will be added in the next version – but we may decide that we don’t really need the features in question and modify our deployment plans. Many business decisions are made with incomplete data, time is money and there often isn’t time to do everything you want to do. Using Wikipedia as a primary source for business decisions is a way of trading off a little accuracy for a huge time saving. This is significantly better than the old fashioned approach of comparing products by reading their brochures – companies LIE in their advertising!
When writing blog posts the choice of whether to use Wikipedia as a reference depends on the point that you are trying to make and how serious the post is. If the post isn’t really serious or contentious or if the Wikipedia reference is for some facts that are not likely to be disputed then Wikipedia will probably do. For some posts a reference to a primary source will be better.
A blog post that references data that is behind a pay-wall (such as a significant portion of academic papers and news articles) is practically of less use than a post that cites Wikipedia. In most cases Wikipedia references free primary sources on the Internet (although it does sometimes refer to dead tree products and data that is behind a pay-wall). In the minority of cases where the primary references for a Wikipedia page are not available for free on the Internet there will be people searching for freely available references to replace the non-free ones. So if you refer to a Wikipedia page with non-free references a future reader might find that someone has added free references to it. <h3>The Annoying People</h3>
One thing that often happens is that an Internet discussion contains no references for anything – it’s all just unsupported assertions. Then if anyone cites Wikipedia someone jumps in with “you can’t cite Wikipedia“. If you want to criticise Wikipedia references then please first start by criticising people who state opinions as fact and people who provide numbers without telling anyone where they came from! The Guinness Book of Records (now known as “Guinness World Records”) was devised as a reference to cite in debates in pubs [1]. It seems that most of the people who dismiss references to Wikipedia on the net would prefer that Internet debates have lower requirements for references than a pub debate.
When Wikipedia is cited in an online discussion it is usually a matter of one mouse click to check the references for the data in question. If Wikipedia happens to be wrong then anyone who cares can correct it. Saying “the Wikipedia page you cited had some transcription errors in copying data from primary sources and some of the other data was not attributed, I’ve corrected the numbers and noted that it contains original research” would be a very effective rebuttal to an argument that relies on data in Wikipedia. Saying “you can’t cite Wikipedia” means little, particularly if you happen to be strongly advocating an opposing position while not providing any references.
If one person cites an academic paper and someone else cites Wikipedia then it seems reasonable to assume that the academic paper is the better reference. But when it’s a choice between Wikipedia and no reference then surely Wikipedia should win! Also references to non-free data are not much good for supporting an argument, that’s really just unverified claims as far as most people can determine – therefore the issue becomes how much the person citing the non-free reference can be trusted to correctly understand and summarise the non-free data.
Also it has to be considered that not all primary sources are equal. Opinion pieces should be considered to have a fairly low value and while they are authoritative for representing the opinion of the person who wrote them they often prove little else – unless they happen to cite good references which brings them to the same level as Wikipedia. The main benefit for linking to opinion pieces is that it saves time typing and gives a better product for the readers – it’s sometimes easier to find someone else expressing an opinion well than to express it yourself.
So please, don’t criticise me for citing Wikipedia unless others in the discussion are citing better references. If most people are not citing any references or only citing opinion pieces then a Wikipedia page may be the best reference that is being provided!
1. transfer out of Dan's jurisdiction and work directly under Chris. 2. move my desk next to John's cube 3. need a phone with caller ID 4. if I can't keep my existing IP, I need ISU to treat my VPS as an extension of our network. 5. I will tail Jim where ever he goes until he gives me access to IBM datapower
That is the absolute minimum working condition for me to continue my career here.
Cryptonomicon
ISBN: 0099410672 Arrow Books Ltd (2000), Paperback, 918 pages LibraryThing <script type="text/javascript">GBS_insertPreviewButtonPopup('ISBN:0099410672');</script> | I read this book on an international trip, and it was a good choice for that. Its long (around 900 pages), but very readable. This is the second time I've read the book, and this time its amazing how well the description of Silicon Valley startups matches my experiences there. I love this book.
Tags for this post: book( Related posts: INVOL RER DUE TO OVERSOLD LX40; Bill the Galactic Hero Series; First Family; On Basilisk Station; Death Bringer; The Complete Hammer's Slammers Volume 1; Body Armor: 2000; Without Warning; Bolo Strike; Blood River; Bolos 4: Last Stand; The Complete Hammer's Slammers Volume 2; The Complete Hammer's Slammers Volume 3; Bill the Galactic Hero on the Planet of Bottled Brains; Forever Peace; The Stars Must Wait; Bolos 2: The Unconquerable; Bolo Series; Bolos 1: Honor of the Regiment; Bio of a Space Tyrant: Refugee; Bill The Galactic Hero |
Google Released Google Buzz Widget For Android
Google has launched Google Buzz Widget For Android, which will easily update your status and chase your location. First of all Google released Google Buzz For Mobile almost six weeks ago and while...Syndicated 2010-03-21 05:03:58 from shafiq.pk - Latest Technology Updates
Repositioning myself within the Fedora Project
After talking with a few people recently and doing some self-analysis, I feel like it’s time to make a major shift in what I do within the Fedora Project. My Fedora résumé so far has consisted mostly of wiki czaring,1 package maintenance and other odds-and-ends jobs others kindly ask me to do.
I’m presently concerned with the second in that list — a combination of increased stress and decreased time available due to school and the speed of discussion on package maintenance and release engineering is a losing game. In the next few weeks, I’ll be checking all of my packages and determining which ones have dead or slow upstreams or bugs that I can’t resolve on my own. Those packages will likely be orphaned, and if nobody wants to care for them, so be it.
The two others? Wiki czaring is fine, but I need to improve on it a bit (see the footnote), and I always enjoy the random problems that I can help quickly solve for people. This being said, development on mw, supybot-fedora and other convenient software is (hopefully) Not Going Away™ any time soon.
With the pushing away of my first Fedora love, package maintenance, I’ve found something new to focus on. Through my internship with Red Hat last year, I discovered that there is a large deficit of good statistics about our community. There’s a large deficit of good statistics about most free software communities, according to some random Google keywords I just tried, apart from “this is how many times our product has been downloaded.” I really loved the opportunity to combine my self-proclaimed mad Python skillz with answering other people’s questions, such as:
Some of these, obviously, have no answer. Yet.
When I finally graduate from high school, I’ll be pushing full swing into answering these sorts of things. Until then, you can help me make Fedora a better place by simply telling us what you want to see tallied up. I asked this about 9 months ago and I got a lot of responses — thank you. But with recent discussions about the future of Fedora and a lot of claims about our user and contributor bases not being backed up (not pointing fingers), I think there are even more questions that can be answered. Please add your statistically-inclined questions to [[Statistics 2.0]] and I’ll do my best in the near future to get them answered with statistics on our community.
I also love help. (Shout out to joshkayse who is taking the lead on making it simple to find a single contributor’s actions within Fedora, taking inspiration from Mel’s FAS scraper.)
Quick summary: Maintaining packages is a drag (for me) right now. I like taking questions and answering with numbers. I graduate soon. Ask questions.
<small>1 While writing this I decided to Google for “fedora wiki czar“. What I found was a mysterious character who was appointed as such in a community touting full transparency. Mel brought this to my attention the other day — I really suck at providing transparency into the process of administering the wiki. It’s pretty much on a whim. It shouldn’t be this way.</small>
Syndicated 2010-03-21 04:10:19 from Ian Weller’s free software blog » Advogato
Looking to buy a house or sell your home in the Fort Mill SC or Rock Hill SC area? Keller Williams real estate agent Sharon Salisbury can help you find the perfect house or sell your existing home without the typical hassles or headaches associated with real estate.
For more information you can visit our website at http://www.sharonsellscarolina.com
40: Charging into the future

Syndicated 2010-03-21 02:48:00 (Updated 2010-03-21 02:48:06) from Ade Oshineye
what I want in a mail client
From about 2001 until about 2009 I used evolution as my mail client. I got addicted to how it handled vfolders and got comfy with it. Then vfolders self-destructed and started telling me I had MAXINT new messages while not actually having ANY mail and well, it stopped being useful for me. So I switched back to my old stand by of alpine. It works fine more or less there is only one feature I miss from evolution – the ability to have multiple windows open when I’m composing a mail. So I can get info out of one mail and paste it in to use in the one I’m composing.
I setup claws-mail this weekend to see how that would work for me. It looked very hopeful until I went to setup multiple imap servers and it refused to see the other imap server at all. It’s like it didn’t even exist. So I shelved it back away and went looking for something else. Nothing has sprung up so far. We’ll see.
Suggestions are welcome, but here’s what I’ve tried:
thunderbird -
kmail -
alpine
mutt
claws
Writing games in Perl - Part 3 - Collision detection
Following posts 1 and 2 on the subject of writing games in Perl, now we are going to add colision.
The idea is quite simple, we are going to add another square to the game, and when the ball hits it, it will change direction. Following the way we were working, I'm going to add another object, called Wall.
The first thing is modelling our wall, which will be a rectangle, so it has the following attributes.
package Wall; use Moose; use Util; use SDL::Rect; # Position - vertical and horizontal has pos_v => (is => 'rw', isa => 'Num', default => 0); has pos_h => (is => 'rw', isa => 'Num', default => 0.12); # Width and height has width => (is => 'rw', isa => 'Num', default => 0.005); has height => (is => 'rw', isa => 'Num', default => 0.4);
Unlike the ball, a wall doesn't move, so we don't need a time_lapse method, but we still have the get_rect and draw methods.
sub get_rect {
my ($self, $height, $width) = @_;
my $inverted_v = ($height - ($self->pos_v + $self->height));
my $x = Util::m2px( $self->pos_h );
my $y = Util::m2px( $inverted_v );
my $h = Util::m2px( $self->height );
my $w = Util::m2px( $self->width );
my $screen_w = Util::m2px( $width );
my $screen_h = Util::m2px( $height );
if ($x $screen_w) {
$w -= ($x + $w) - $screen_w;
}
if ($y $screen_h) {
$h -= ($y + $h) - $screen_h;
}
return SDL::Rect->new( $x, $y, $w, $h );
}
my $color;
sub draw {
my ($self, $surface, $height, $width) = @_;
unless ($color) {
$color = SDL::Video::map_RGB
( $surface->format(),
255, 0, 0 ); # red
}
SDL::Video::fill_rect
( $surface,
$self->get_rect($height, $width),
$color );
}
See the first post for more details on the get_rect and draw codes.
Now we need to add our wall to the game, that will mean a simple change in our main code, first we need to load the Wall module, then initialize the Wall just after initializing the ball, and finally calling the draw method just after calling the same method on ball.
use Wall;
my $wall = Wall->new;
$wall->draw($app, $height, $width);
If you tried to run the code at this point, you'll notice you won't see any wall. That happens because the application is only updating the screen where the ball is passing. The Wall needs to be drawn a first time, and the screen needs to be updated at that position. This prevents us from re-updating the wall rect everytime, which is pointless, since the wall is static - that code goes right before the main loop.
# let's draw the wall for the first time.
$wall->draw($app, $height, $width);
SDL::Video::update_rects
( $app,
$wall->get_rect($height, $width) );
Now we need to check for a collision. This should happen in the place of the time_lapse call. Note that while I neglected math in the movement part, here it's more complicated because I need to react in a reasonable manner depending on how the collision happened. But as we're working in Perl and we have CPAN, I can just use Collision::2D (zpmorgan++ for working on this and pointing me in the correct direction)
If you don't have the Collision::2D module installed, just call
# cpan Collision::2D
If you're not sure wether you have it or not, just try installing it anyway, it will suceed if the module is already installed.
use Collision::2D ':all';
sub collide {
my ($ball, $wall, $time) = @_;
my $rect = hash2rect({ x => $wall->pos_h, y => $wall->pos_v,
h => $wall->height, w => $wall->width });
my $circ = hash2circle({ x => $ball->cen_h, y => $ball->cen_v,
radius => $ball->radius,
xv => $ball->vel_h,
yv => $ball->vel_v });
return dynamic_collision($circ, $rect, interval => $time);
}
I assumed an API that wasn't currently implemented in our Ball object, so I changed the ball so that pos_v, pos_h, width and height return the bounding dimensions for the ball I won't put the code in the post, but you can check at the github repo.
Okay, now it's time to check for collisions and act accordingly. Again, we'll assume an 100% efficient collision, so the code looks like:
my $frame_elapsed_time = ($now - $oldtime)/1000;
if (my $coll = Util::collide($ball, $wall, $frame_elapsed_time)) {
# need to place the ball in the result after the bounce given
# the time elapsed after the collision.
my $collision_remaining_time = $frame_elapsed_time - $coll->time;
my $movement_before_collision_h = $ball->vel_h * $coll->time;
my $movement_before_collision_v = $ball->vel_v * $coll->time;
my $movement_after_collision_h = $ball->vel_h * $collision_remaining_time;
my $movement_after_collision_v = $ball->vel_v * $collision_remaining_time;
if ($coll->axis eq 'x') {
$ball->cen_h(($ball->cen_h + $movement_before_collision_h) +
($movement_after_collision_h * -1));
$ball->cen_v($ball->cen_v +
$movement_before_collision_v +
$movement_after_collision_v);
$ball->vel_h($ball->vel_h * -1);
} elsif ($coll->axis eq 'y') {
$ball->cen_v(($ball->cen_v + $movement_before_collision_v) +
($movement_after_collision_v * -1));
$ball->cen_h($ball->cen_h +
$movement_before_collision_h +
$movement_after_collision_h);
$ball->vel_v($ball->vel_v * -1);
} elsif (ref $coll->axis eq 'ARRAY') {
my ($xv, $yv) = @{$coll->bounce_vector};
$ball->cen_h(($ball->cen_h + $movement_before_collision_h) +
($xv * $collision_remaining_time));
$ball->vel_h($xv);
$ball->cen_v(($ball->cen_v + $movement_before_collision_v) +
($yv * $collision_remaining_time));
$ball->vel_v($yv);
} else {
warn 'BAD BALL!';
$ball->cen_h(($ball->cen_h + $movement_before_collision_h) +
($movement_after_collision_h * -1));
$ball->cen_v(($ball->cen_v + $movement_before_collision_v) +
($movement_after_collision_v * -1));
$ball->vel_h($ball->vel_h * -1);
$ball->vel_v($ball->vel_v * -1);
}
} else {
$ball->time_lapse($oldtime, $now, $height, $width);
}
Okay, the above code was a bit complicated, let's brake it down...
my $frame_elapsed_time = ($now - $oldtime)/1000;
Collision::2D works with time in seconds, it calculates if the two objects would have collided during the duration of this frame.
if (my $coll = Util::collide($ball, $wall, $frame_elapsed_time)) {
...
} else {
$ball->time_lapse($oldtime, $now, $height, $width);
}
Now we check if there was a collision. If not, we just proceed to the regular code that calculates the new position for the ball.
my $collision_remaining_time = $frame_elapsed_time - $coll->time;
my $movement_before_collision_h = $ball->vel_h * $coll->time;
my $movement_before_collision_v = $ball->vel_v * $coll->time;
my $movement_after_collision_h = $ball->vel_h * $collision_remaining_time;
my $movement_after_collision_v = $ball->vel_v * $collision_remaining_time;
In the case we have a collision, Collision::2D tells us when and how it happened. In order to implement the bouncing, I also calculate how far they would have been proceeded before and after the collision.
if ($coll->axis eq 'x') {
...
} elsif ($coll->axis eq 'y') {
...
} elsif (ref $coll->axis eq 'ARRAY') {
...
} else {
...
}
The method that describes how the collision happened is "axis". If it was a purely horizontal colision, it will return 'x', if it was purely vertical, it will return 'y', if it was mixed, it will return a vector that describes it. In the case of a bug, it will return undef.
$ball->cen_h(($ball->cen_h + $movement_before_collision_h) +
($movement_after_collision_h * -1));
$ball->cen_v($ball->cen_v +
$movement_before_collision_v +
$movement_after_collision_v);
$ball->vel_h($ball->vel_h * -1);
In the case of perfect horizontal or vertical collision (or bug), we reposition the ball by first calculating where it would be at the time of the collision and then bounce it away - depending on how the collision occurred.
my ($xv, $yv) = @{$coll->bounce_vector};
$ball->cen_h(($ball->cen_h + $movement_before_collision_h) +
($xv * $collision_remaining_time));
$ball->vel_h($xv);
$ball->cen_v(($ball->cen_v + $movement_before_collision_v) +
($yv * $collision_remaining_time));
$ball->vel_v($yv);
This last part of the code uses a cool feature for Collision::2D, which returns a bounce information for that collision, which we then use to figure out the correct position after the bounce.
And now we can run our code. I have made some other changes not explained here, because they are just settings that control the behavior. Remember to access the github repo for more details.
Now a small video of the game running. <object height="385" width="480"><param name="movie" value="http://www.youtube.com/v/PcDe0dKOflA&hl=pt_BR&fs=1&" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed allowfullscreen="true" height="385" src="http://www.youtube.com/v/PcDe0dKOflA&hl=pt_BR&fs=1&" type="application/x-shockwave-flash" width="480" /></object>
Contributing to Open Source projects
Prior to joining Google I always joked that Google was the black hole that swallowed up open source programmers. I'd see awesome, productive hackers join Google and then hear little to nothing from them afterwards. When I joined I decided I'd solve this mystery and post about it but it's been over 2.5 years and I've been busy and somewhat forgot. Fortunately a discussion at work last week reminded me of this again, and a bunch of us got to talking about the phenomenon.Xen and Debian/Squeeze
Ben Hutchings announced that the Debian kernel team are now building Xen flavoured kernels for Debian/Unstable [1]. Thanks to Max Attems and the rest of the kernel team for this and all their other great work! Thanks Ben for announcing it. The same release included OpenVZ, updated DRM, and the kernel mode part of Nouveau – but Xen is what interests me most.
I’ve upgraded the Xen server that I use for my SE Linux Play Machine [2] to test this out.
To get this working you first need to remove xen-tools as the Testing version of bash-completion has an undeclared conflict, see Debian bug report #550590.
Then you need to upgrade to Unstable, this requires upgrading the kernel first as udev won’t upgrade without it.
If you have an existing system you need to install xen-hypervisor-3.4-i386 and purge xen-hypervisor-3.2-1-i386 as the older Xen hypervisor won’t boot the newer kernel. This also requires installing xen-utils-3.4 and removing xen-utils-3.2-1 as the utilities have to match the kernel. You don’t strictly need to remove the old hypervisor and utils packages as it should be possible to have dual-boot configured with old and new versions of Xen and matching Linux kernels. But this would be painful to manage as update-grub doesn’t know how to match Xen and Linux kernel versions so you will get Grub entries that are not bootable – it’s best to just do a clean break and keep a non-Xen version of the older kernel installed in case it doesn’t initially boot.
A apt-get dist-upgrade operation will result in installing the grub-pc package. The update-grub2 command doesn’t generate Xen entries. I’ve filed Debian bug report #574666 about this.
Because the Linux kernel doesn’t want to reduce in size to low values I use “xenhopt=dom0_mem=142000” in my GRUB 0.98 configuration so that the kernel doesn’t allocate as much RAM to it’s internal data structures. In the past I’ve encountered a kernel memory management bug related to significantly reducing the size of the Dom0 memory after boot [3].
Before I upgraded I had the dom0_mem size set to 122880 but when running Testing that seems to get me a kernel Out Of Memory condition from udev in the early stages of boot which prevents LVM volumes from being scanned and therefore prevents swap from being enabled so the system doesn’t work correctly (if at all). I had this problem with 138000M of RAM so I chose 142000 as a safe number. Now I admit that the system would probably boot with less RAM if I disabled SE Linux, but the SE Linux policy size of the configuration I’m using in the Dom0 has dropped from 692K to 619K so it seems likely that the increase in required memory is not caused by SE Linux.
The Xen Dom0 support on i386 in Debian/Unstable seems to work quite well. I wouldn’t recommend it for any serious use, but for something that’s inherently designed for testing (such as a SE Linux Play Machine) then it works well. My Play Machine has been offline for the last few days while I’ve been working on it. It didn’t take much time to get Xen working, it took a bit of time to get the SE Linux policy for Unstable working well enough to run Xen utilities in enforcing mode, and it took three days because I had to take time off to work on other projects.
LibrePlanet 2010 Day 2
John Gilmore keynote – What do we do next, having produced a free software system for our computers? Perhaps we should aim at Windows? Wine + an extended ndiswrapper to run other hardware drivers + a better system administration interface/resources/manuals. However that means knowing a lot about windows internals – something that open source developers don’t seem to want to do. We shouldn’t just carry on tweaking – its not inspiring; whats our stretch goal? Discussion followed – reactos, continue integrating software and people with a goal of achieving really close integration: software as human rights issue! ‘Desktop paradigm needs to be replaced’ : need to move away from a document based desktop to a device based desktop. Concern about the goal of running binary drivers for hardware: encourages manufacturers to sell hardware w/out specs; we shouldn’t encourage the idea that that is ok. Lots of concern about cloning, lots of concern about what will bring more freedom to users, and what it will take to have a compelling vision to inspire 50000 free software hackers. Free software in cars – lots of safety issues in .e.g brake controllers, accelerators.
Eben Moglen – ‘We’re at the inflection point of free software’ – because any large scale global projects these days are not feasible without free software. Claims that doing something that scales from tiny to huge environment requires ‘us’ — A claim I would (sadly) dispute. Lots of incoming and remaining challenges. ‘Entirely clear that the patent systems relationship to technology is pathological and dangerous’ – that I agree with! Patent muggings are a problem – patent holders are unhappy with patents granted to other people
. Patent pools are helping slowly as they grow. Companies which don’t care about the freedom aspect of GPLv3 are adopting it because of the patent protection aspects. Patent system is at the head of the list of causes-of-bad-things affecting free software. SFLC is building coalitions outside the core community to protect the interests of the free software community. We are starting to be taken for granted at the high end of mgmt in companies that build on free software. … We face a problem in the erosion of privacy. We need to build a stack, running on commodity hardware that runs federated services rather than folk needing centralised services.
Marina Zhurakhinskaya on GNOME Shell: Integrates old and new ideas in an overall comprehensive design. Marina ran through the various goals of the shell – growing with users, being delightful, starting simply so new users are not overwhelmed. The activities screen looks pretty nice
The workspace rearrangement UI is really good. The notifications thing is interesting; you can respond to a chat message in-line in the notification.
Richard Stallman on Software as a Service – he presented verbally the case made in the paper. Some key quotes… “All your data on a server is equivalent to total spyware” – I think this is a worst-case analogy; it suggests that you can never trust another party: kindof a sad state of paranoia to assume that all network servers are always out to get you all the time. And I have to ask – should we get rid of Savannah then (because all the data is stored there) – the argument for why Savannah is not SaaS is not convincing: its just file storage, so what makes it different to e.g. Ubuntu One? “If there is a server and only a little bit of it is SaaS, perhaps just say don’t worry about it – because that little bit is often the hardest bit to replace.” ”Lets write systems for collaborative word process that don’t involve a central server” — abiword w/the sharing plugin ?
RMS seems to be claiming that someone else sysadmining a server for you is better than someone else sysadmining a time-shared server for you: I don’t actually see the difference, unless you’re also asserting that you’ll always have root over your’ own machine’. The argument seems very fuzzy and unclear to me as to why there is really a greater risk – in particular when there is a commercial relationship with the operator (as opposed to, say, an advertising supported relationship).

mattl: @candrews actually, we don't do that yet, so yes... one day.
@candrews actually, we don't do that yet, so yes... one day.نوروز مبارک
<h1 style="text-align: center;">نوروزتان پیروز</h1> <h1 style="text-align: center;">بهارگاه مبارک
Happy Norouz</h2>
Syndicated 2010-03-20 20:31:23 from مصطفی دانشور (Mostafa Daneshvar) » linux
Division Two Magazine and "12 Things a Klingon Programmer Would Say"
I've set up a mirror of the old "Division Two Magazine" site that went offline and was replaced by a parked domain. Lots of gems there:
Today I'm going to tackle one of the hottest topics in the industry, comparing Microsoft's latest offerings to the offerings being released by the major Linux players for both network servers and desktop solutions. I am going to steer clear of "total cost of ownership" arguments, because Microsoft has already funded extensive research that has proven Windows is cheaper to own and operate than Linux. I'm going to be looking at the issue from a pure usability perspective. Which platform saves me the most time? Which platform has the features I need? Which platform has the best third party applications and utilities?
(See "Windows vs. Linux on the Server and the Desktop by Jorge Lopez, MCSE for more.)
I also added "Top 12 things likely to be overheard if you had a Klingon Programmer" (which was also not originated by me):
12) "Specifications are for the weak and timid!"
11) "This machine is a piece of GAGH! I need dual Pentium processors if I am to do battle with this code!"
10) "You cannot really appreciate Dilbert unless you've read it in the original Klingon."
There are two new fortunes on the shlomif-fav collection.
Added Waf to the "Software Construction and Management Tools" directory. Added Bluefish and Code::Blocks to the list of Editors and IDEs.
New links in anti-Apple page, and the "Stop Using Internet Explorer" page.
Finally as part of the conversion of the Website META Language's build system from GNU Autotools to CMake, the web-site's build process was cleaned up and updated to build more cleanly.
A New Decade, a new beginning...
It's been awhile since I've posted. 2009 was a year of reflection and figuring out a new direction. Now that 2010 is here, things have been up on the up turn. I accepted a position at RIM (Research In Motion) and look forward to exciting stuff.consistency in UI
So ubuntu tried (or is trying) changing the window bar completely in beta 1 of lucid. They moved the window controls to the left of the bar and reordered them. Presumably to free up space on the right for “something.” What that something is, is unclear. But that “something” cannot possibly be anything critical, since apps should work in different themes and different distros.
I guess they may end up doing something cool with the freed up right hand side. But, and this is a big but, is it going to be worth all the annoyance to people switching? Given that all three of the computers run a different flavour of linux, it is likely that this “new” ui will only be on my home machine. I still can’t get used to closing the window on the left, especially since at work, on my netbook, on marketa’s machine or on whatever random computer I get to use for a bit it’s on the right. I think at some point I’ll be annoyed enough to change the window button order back (once I figure out what gconf key does that).
People that have to also use windows will be annoyed to no end. Whatever minor improvement in usability we may get from whatever cool thing is on the right hand side of the window title bar in the future will be more than wiped out by the annoyance of having to switch between two layouts on two machines. So using the UI is slower simply because I have to think what machine I am on.
This is my favourite pet peeve with the direction GUI is trending to. Consistency is usually flushed down the toilet for whatever “cool” experiment a certain designer is trying. MP3 players have been suffering from this for years. Web pages have the same problem. Now many other applications are following suit.
GNOME Shell and friends for example come up with completely different looking and working widgets for standard things such as scrollbars, buttons and menus. The netbook launcher is almost unusable for it. If it was built from standard widgets it would have probably had working keyboard navigation, would have been arguably easier to use and even would have been easier to code up and would have fewer bugs. GNOME was suffering from this from the beginning. We had widget themes way before we had a half working desktop.

Vernal equinox
Spring is here !
Google just published the list of this year’s GSoC mentoring organizations. DocBook will participate for a first time, as will (as usual) Boost. If you are interested in any of this, don’t hesitate to get in touch !
I have also started looking into switching to CLang as Cpp/C/Cxx parsers for Synopsis. While this looks very promising, there is still quite a lot of work that needs to be done before this will be usable. Any help is highly appreciated.
Somehow, I found this three-year-old Coding Horror article about the FizBuzz programming test; it's a very simple programming problem, yet it turned out that a majority of the people applying for a programming job were not able to solve it.
Also interesting is that many people in the comments-section still got subtly wrong solutions – by not carefully reading the requirements.
I suppose many of the job-applicants who could not solve FizBuzz still got jobs in that field, somewhere. What does that mean? Would they just be very slow, that is, could they still solve it after many iterations, debugging and what not? Or is there a sufficiently large segment of programming jobs that put such limited emphasis on algorithms that they can get away with it?
ah, hell. we have a gpl violation on our hands. i'm trying to get this one resolved without having them threatened with a cease and desist order, and am going through a series of escalatory measures to indicate to them the importance of compliance, before we get to that point.
the reason for taking this approach is simple: Chitech's CT-PC89E is _the_ first non-big-company low-cost and _decent_ ARM netbook we've yet been able to find. the factory's main business isn't netbooks, at all - it's machinery: the creation of an Intel Atom 10in netbook and the 8.9in ARM netbook seems to be a business venture which i respect enormously, and i want to make sure that they get it right, and i want them to succeed.
yes there are IBM and HP and Dell ARM netbooks being created, but they're available only with a large retail markup: this little machine could easily sell for £95 to £100 ($150 to $160) _retail_ because it costs only $102 in 20k volumes (and there are ways to get that cost down further)
right now, the sheer lack of experience and the fact that they're cutting themselves off from the linux kernel and linux OS development communities, citing "business advantage", means that they're actually jeapordising the chances of success of the product, and will fall foul of the very thing that they fear and are using to justify witholding the GPL source code: their competition will create an alternative product.
right now, they are a few months ahead of their competition. they need to fix a couple of hardware/software issues (no watchdog timer is being used to reset the machine, which is quite serious), and the DM9000 TX/RX lines are crossing over on the PCB but there is no ground plane between them, and the capacitors on the DM9000's driver are well below spec'd values required as stated in the application notes - but that's really about it.
but the most significant thing about this product is the fact that they have bought or somehow encountered an entirely new embedded linux OS, called MID-Linux. MOS is using maemo for the repositories, but there is absolutely no sign of any source code. the actual OS itself is fantastic: it fits in under 200mb and yet provides web browser, video player, music player, document viewer, one of those osx-style rollerbars, that and more. it's absolutely fantastic, it's debian-based, there's 350 .deb packages installed aaaand... there's no source code.
so we _need_ to get this resolved, quickly and without a fuss, and get this company on track, and support them in their efforts. they really do want to become a big successful hardware/software company, and that's a really ambitious goal that i want to _absolutely_ support them in .... beginning with them understanding that the big companies like IBM, HP and Apple _also_ release GPL source code (albeit, in apple's case, by hiding it).
Not a week goes by without hearing about a few more open font released under the Open Font License...
So until they are added to our open font catalogs - with all the relevant details like designers, style and target writing systems and then to the pipeline of the various packaging teams - check them out directly: Designation, Segment14, GFS Göschen Cursive, Biolinum, Magyar Linux Libertine (a Hungarian branch of Linux Libertine), Raleway and Itsadzoke.
Now to work on getting all that packaged and more widely available...
Co-ops at the North Somerset Initiative
On Wednesday, I went to a meeting of the Business Initiative for North Somerset for Cooperatives-SW (our regional cooperative cooperative). It was the first time anyone from the cooperative and mutual sector was present.

Conference
<h3>Bank of England</h3>
The first speaker was Geoff Harding from the Bank of England, who talked through topics in their agents’ summary and related news.
One interesting graph showed a steep rise in the percentage of household income being saved. Answers to questions suggested that more of that goes to mutuals and building societies, but they find it difficult to be competitive while the banks are keen to increase their balances.
There was mention of “employment hoarding” – businesses short-time working, redeploying or shutting down temporarily to keep trained workers under contract, rather than make them redundant and rehire later.
People from both the Federation of Small Businesses and the Hoteliers’ Association made strong comments about the banks claiming to government that they are willing to lend, but still offering deeply unattractive depth-of-recession rates and terms. If the regional agents get details of such cases, they pass them to the central bank. <h3>South West Regional Development Agency</h3>
The second main speaker was Ann O’Driscoll, who covers business development for the “West of England” (what many people call CUBA – Councils that Used to Be Avon). She introduced their four strategic priorities:-
Low Carbon Economy – apparenly our region has good wind, wave and solar experience. However, Vestas were mentioned and I know that when Vestas closed the UK’s only wind turbine blade factories in August 2009, the RDAs were criticised for not acting against “the subsidy-chasing, socially irresponsible conduct of Vestas” and related companies continue to worry workers. If Vestas is one of the praised companies, I wonder whether we’re attracting sustainable work to the region.
On a related note, North Somerset Council and NS Enterprise Agency are organising a Climate Change forum on 1st April, but it’s at Cadbury House Hotel, which is awkward to get to except by car: no footpath to the door, a mile-and-a-half walk along a busy road from a train station, bad roads for biking, wheelbending speedhumps on the drive, I can’t remember if there is bicycle parking and its website doesn’t say…
Successful Businesses – SWRDA funds our rather poor Business Link service. Does someone in the South West have some good news about Business Link? If so, please leave a comment on this article.
Prosperous Places – intervention in areas like south Bristol or central Weston.
United Approach – co-ordinating with other regional groups.
The main activities introduced were:
The questions were fascinating, except for mine. The best one was probably about the forthcoming election and the Conservatives pledge to shut down the RDAs and Business Links. The answer was that much of the work will still need to be done somehow, so it’s more a question of who will do it, rather than what the name on the door says. So I don’t think axing RDAs is going to achieve more than shuffling people between organisations.
When allowed to ask a question, I got too excited and ranted a bit about how the Co-operative Group’s co-operative enterprise hub is doing work that Business Link should have been funding, but the RDA doesn’t understand social enterprise and treats it as a ghetto service. I’ll try to take that up in a more coherent form later. <h3>Overview</h3>
I think Cooperatives-SW were invited to the North Somerset Initiative largely because of pressure from software.coop for co-ops to be represented better in the Local Strategic Partnership, which has treated us badly. NSI holds one of the three business places on the partnership board, with the other two being held by NSEA and Bristol International Airport.
I think it’s a bit off that a private company and an enterprise agency are both represented by other groups and also have their own board seats while co-ops don’t even have a collective seat, so that pressure for a representative organisation for co-operatives and mutuals to have a board place (in line with national government guidance) should continue, useful though the NSI meetings seem to be.
The other thing which would really help is some funding for co-operative business development specialists to work in North Somerset at strategic tasks like this, instead of it being left to ordinary workers from other sectors. I don’t know where that funding will come from and until then, I’ll continue to try my best. We need to make sure that local strategy at least does no harm to the sector.
Syndicated 2010-03-19 09:14:38 from Software Cooperative News
Ada Lovelace Day 2010: highlight a woman in technology or science
Ada Lovelace Day will be Wednesday 24th March this year, ie, this Wednesday. The idea is to recognise and improve knowledge of women in tech and science, and you blog (or podcast or etc) about a woman you want to recognise. Quite a lot of people I read online did this last year, so here's your reminder to go for round two.
Syndicated 2010-03-19 22:54:21 from puzzling dot org: thoughts
LibrePlanet – GNU Hackers Meetup
GNU Hackers meetups are a face to face meeting to balance the online collaboration that GNU maintainers and contributors do all the time. These are a recent (since 2007) thing, and are having a positive effect within GNU and the FSF.
The LibrePlanet 2010 GNU Hackers meetup runs concurrent with the first day of LibrePlanet.
We started with some project updates:
Felipe Sanches presented his list of things that should be on the high priority project list:
–lunch–
John Eaton on Octave. John compared the octave contributors – 30 or so over the years, and never more than 2 at a time. The Proprietary product Matlab that Octave is very similar to has 2000 staff working at the company producing it. Users seem to expect the two products to be equivalent, and are disappointed that Octave is less capable, and that the community is not as able to do the sort of support that a commercial organisation might have done. Octave would like to gain some more developers and be able to educe users more effectively – convert more to become developers.
Rob Myers, the chief GNU webmaster gave a description of his role: The webmasters deal with adding new content, dealing with mail to webmaster@, which can be queries for the GNU project, random questions about CDs, and an endless flood of spam. The webmasters project is run as a free software project – the site is in CVS (yes CVS), visible on Savannah. Templates could be made nicer and perhaps move to a CMS.
Aubrey Jaffer on cross platform. There is a thing called Water which is meant to replace all the different languages used in web apps – generates html, css, alters the DOM, does what you’d do with javascript. So there is a Water -> backend translator that outputs Java for servers, C# for windows, and so on. (I think, this wasn’t entirely clear). He went on to talk about many of the internals of a thing called Schlep which is used as a compiler to get scheme code running in C/C#/Java so as to make it available to Water backends in different environments.
Matt Lee spoke about GNU FM – GNU FM is a free ‘last.fm’ site. The site is running at http://libre.fm/. 24ish devs, but stalle after 6 months – whats next? Matt has started GNU Social to build a communication framework for GNU projects to talk to each other – e.g. for each GNU FM site to communicate on the back end, with a particular focus on doing social functionality – groups, friendships, personal info. The wiki page needs ideas!
GNU advisory board discussion… too much to capture, but focused GNU wide issues – things like how projects get contributors, contributions, coordination. Teams were a big discussion point, bug trackers – how to coordinate teams followed up of that, and there is s ‘GNU Source Release Collection’ project to do coordinated releases of GNU software that are all known to work together.

mattl: !lp http://www.gnu.org/philosophy/who-does-that-server-really-serve.html !gnu !fsf !dbd !w7s !librefm !facebookfree
!lp http://www.gnu.org/philosophy/who-does-that-server-really-serve.html !gnu !fsf !dbd !w7s !librefm !facebookfree!sness!! performs dZ
dZ - radiodrum performance from MISTIC on Vimeo.
GStreamer MusicXML2MIDI Release 0.1
A few months back I started writing a GStreamer element for converting MusicXML into MIDI, the eventual goal of this from my perspective is to allow for score editing inside Jokosher (without Jokosher having to deal with all the pain of the MIDI format itself). It’s far from being perfect and still has trouble with more complicated files, but hopefully it’ll be of use to some people in its current state so I’m releasing version 0.1. <h4>Example Uses</h4>
gst-launch filesrc location=song.xml ! musicxml2midi ! wildmidi ! audioconvert ! autoaudiosink
gst-launch filesrc location=song.xml ! musicxml2midi ! filesink location=song.mid
gst-launch filesrc location=song.xml ! musicxml2midi ! wildmidi ! audioconvert ! vorbisenc ! oggmux ! filesink location=song.ogg
Running the OGG Vorbis pipeline on the twovoices.xml test file produces the following output:
<audio controls src="http://blog.mikeasoft.com/wp-content/uploads/2010/03/twovoices-musicxml.ogg">twovoices-musicxml.ogg</audio> <h4>Download</h4>
MusicXML2MIDI 0.1 – Source Package
MusicXML2MIDI 0.1 – Debian/Ubuntu Package for 32-bit systems
MusicXML2MIDI 0.1 – Debian/Ubuntu Package for 64-bit systems
Alternatively there’s a PPA available: https://launchpad.net/~gst-musicxml2midi/+archive/ppa/ <h4>Contribute</h4>
All the source code is stored in a git repository: http://github.com/Elleo/gst-musicxml2midi. If you’d like to help out simply clone the repository and start hacking away, once you’re happy with your changes you can propose your branch for merging with my own.
If it's worth doing, it's worth doing right.
Yesterday in the PyAr mailing list a "silly" subject appeared: how would you translate spanish to rosarino?
For those reading in english: think of rosarino as a sort of pig latin, where the tonic vowel X is replaced with XgasX, thus "rosario" -> "rosagasario".
In english this would be impossible, but spanish is a pretty regular language, and a written word has enough information to know how to pronounce it, including the location of the tonic vowel, so this is possible to do.
Here is the thread.
It's looong but, final outcome, since I am a nerd, and a programmerm and programmers program, I wrote it.
What surprised me is that as soon as I started doing it, this throwaway program, completely useless...I did it cleanly.
A year ago I wouldn't have done that. I think I am finishing a stage in my (slow, stumbling) evolution as a programmer, and am coding better than before.
I had a tendency to, since python lets you write fast, write fast and dirty. Or slow and clean. Now I can code fast and clean, or at least cleaner.
BTW: this would be an excellent exercise for "junior" programmers!
BTW: here is the (maybe stupidly overthought) program, gaso.py:
# -*- coding: utf-8 -*- """ Éste es el módulo gasó. Éste módulo provee la función gasear. Por ejemplo: >>> gasear(u'rosarino') u'rosarigasino' """ import unicodedata import re def gas(letra): '''dada una letra X devuelve XgasX excepto si X es una vocal acentuada, en cuyo caso devuelve la primera X sin acento >>> gas(u'a') u'agasa' >>> gas (u'\xf3') u'ogas\\xf3' ''' return u'%sgas%s'%(unicodedata.normalize('NFKD', letra).encode('ASCII', 'ignore'), letra) def umuda(palabra): ''' Si una palabra no tiene "!": Reemplaza las u mudas de la palabra por ! Si la palabra tiene "!": Reemplaza las "!" por u >>> umuda (u'queso') u'q!eso' >>> umuda (u'q!eso') u'queso' >>> umuda (u'cuis') u'cuis' ''' if '!' in palabra: return palabra.replace('!', 'u') if re.search('([qg])u([ei])', palabra): return re.sub('([qg])u([ei])', u'\\1!\\2', palabra) return palabra def es_diptongo(par): '''Dado un par de letras te dice si es un diptongo o no >>> es_diptongo(u'ui') True >>> es_diptongo(u'pa') False >>> es_diptongo(u'ae') False >>> es_diptongo(u'ai') True >>> es_diptongo(u'a') False >>> es_diptongo(u'cuis') False ''' if len(par) != 2: return False if (par[0] in 'aeiou' and par[1] in 'iu') or \ (par[1] in 'aeiou' and par[0] in 'iu'): return True return False def elegir_tonica(par): '''Dado un par de vocales que forman diptongo, decidir cual de las dos es la tónica. >>> elegir_tonica(u'ai') 0 >>> elegir_tonica(u'ui') 1 ''' if par[0] in 'aeo': return 0 return 1 def gasear(palabra): """ Convierte una palabra de castellano a rosarigasino. >>> gasear(u'rosarino') u'rosarigasino' >>> gasear(u'pas\xe1') u'pasagas\\xe1' Los diptongos son un problema a veces: >>> gasear(u'cuis') u'cuigasis' >>> gasear(u'caigo') u'cagasaigo' Los adverbios son especiales para el castellano pero no para el rosarino! >>> gasear(u'especialmente') u'especialmegasente' """ #from pudb import set_trace; set_trace() # Primero el caso obvio: acentos. # Lo resolvemos con una regexp if re.search(u'[\xe1\xe9\xed\xf3\xfa]',palabra): return re.sub(u'([\xe1\xe9\xed\xf3\xfa])',lambda x: gas(x.group(0)),palabra,1) # Siguiente problema: u muda # Reemplazamos gui gue qui que por g!i g!e q!i q!e # y lo deshacemos antes de salir palabra=umuda(palabra) # Que hacemos? Vemos en qué termina if palabra[-1] in 'nsaeiou': # Palabra grave, acento en la penúltima vocal # Posición de la penúltima vocal: pos=list(re.finditer('[aeiou]',palabra))[-2].start() else: # Palabra aguda, acento en la última vocal # Posición de la última vocal: pos=list(re.finditer('[aeiou]',palabra))[-1].start() # Pero que pasa si esa vocal es parte de un diptongo? if es_diptongo(palabra[pos-1:pos+1]): pos += elegir_tonica(palabra[pos-1:pos+1])-1 elif es_diptongo(palabra[pos:pos+2]): pos += elegir_tonica(palabra[pos:pos+2]) return umuda(palabra[:pos]+gas(palabra[pos])+palabra[pos+1:]) if __name__ == "__main__": import doctest doctest.testmod()
GStreamer and Google Summer of Code 2010
So a big thank you to Leslie and her team at Google for also this year accepting GStreamer as a mentoring organisation. Last few years we had some great projects coming out of the Google Summer of Code, including MPEG PS muxing, Quicktime Muxing, ASF muxing, LADSPA version 2, Avisynth, MHEG support and more.
If you are a student and want to get some useful experience while getting paid this summer, developing multimedia software, I think there is no better way to do so than a GStreamer GSoC project, for instance you could help us develop our first native VAAPI elements or any of the other tasks on our SoC project suggestion list.
Of course don’t limit yourself to that list, personally for instance I would love to see some proposals from students interested in extending PiTiVi.
With it being shipped with Ubuntu now and transition support getting merged very soon it is a great time to help userfriendly video editing on linux become a reality. Just be sure to keep it stable as you add your features though as we don’t want join the other efforts out there in the click and crash category
Interested students should check out the Google Summer of code website for details on how the project works and how to sign up.
Please feel free to ask questions on the GStreamer-devel mailing list or on the #gstreamer channel on irc.freenode.net.
Binding the Daemon - Black Hat Europe 2010
census will be presenting “Binding the Daemon”, an in-depth analysis of FreeBSD kernel stack and kernel heap exploitation methodologies at Black Hat Europe 2010. This year the European Black Hat Briefings conference will be held in Barcelona, Spain. We hope to see you there!
Counter-Strike/Day Of Defeat userconfig.cfg and the neverending quest for a Libre Software business model regarding games

Baby can come along too, but I'm getting drunk without or without you! - Gettin' Drunk by the Beat Farmers
Duke 3D was unmistakenly fun and definitely made the best out of numerous hours of LAN games. Counter-Strike’s (CS) gameplay, however, remains unique. Obviously, the rendering engine was technically modern enough (Duke 3D is fun, but you do not need to aim target in 3D, you can destroy a target up in the air while aiming the boardwalk ; in Doom II, you cannot even jump). But that’s not just it, no, the game really leads to team play. The two teams, counter-terrorists or terrorists, both have an obvious objective (blowing up a bomb, freeing hostages, etc) and each teammate that goes down is out of the game for the round. So unlike in Medal of Honor, Quake Arena, etc (where one player does not equal one another), any player matters. To some players, this a drawback, they rather have unlimited lives, moving fast, dying fast, respawning fast, moving fast, dying still fast. To me, it is part of what makes this game aside from the others FPS. Based of the same rendering engine (the one of Half-Life), Day of Defeat (DoD) and Team Fortress (TF) both provides some kind of team play also well thought but way more conventional (capture the flag, mainly), with respawn. Day of Defeat takes place during World War II while Team Fortress is kind of cartonish/fun, somehow reminding me of Duke3D.
Today, I found out that I no longer had my userconfig.cfg. In CS, you need to buy weapons at the begin of each round. And, clearly, when a round begins, you have no time to fool around, wasting precious seconds by looking at each possible weapon. You have to take the best you can get in the fastest way possible, which meaning having shorcuts. Such shortcuts are not provided, so you have to write them in a userconfig.cfg file. As, unfortunately, we are not speaking of Libre Software here, everything is really poorly documented, you have to google around. So here comes my cstrike userconfig.cfg:
// ---------------------------------------------------------------
// shopping: commands// gun
alias buy_gun "buy p228; buy secammo; buy vesthelm;"
// shotgun
alias buy_shotgun "buy xm1014; buy primammo; buy vesthelm;"
// cheapeast decent
alias buy_cheapest "buy mp5; buy primammo; buy vesthelm;"
// assault rifles
alias buy_cheap "buy galil; buy famas; buy primammo; buy vesthelm;"
alias buy_expensive "buy ak47; buy m4a1; buy primammo; buy vesthelm;"
alias buy_scope "buy sg552; buy aug; buy primammo; buy vesthelm;"
// equipment
alias buy_protection "buy vesthelm; buy vest"
alias buy_fb "buy flashbang; buy flashbang"
alias buy_he "buy hegrenade"
alias buy_smoke "buy smokegrenade"
alias buy_defuser "buy defuser"
alias buy_ammo "buy primammo; buy primammo; buy secammo"
alias buy_equipment1 "buy_protection; buy_defuser ; buy_ammo"
alias buy_equipment2 "buy_protection; buy_fb; buy_smoke; buy_he"// shopping: binds
bind "F1" "buy_equipment1"
bind "F2" "buy_equipment2"
bind "F3" "buy_gun"
bind "F4" "buy_shotgun"
bind "F5" "buy_cheapest"
bind "F6" "buy_cheap"
bind "F7" "buy_expensive"
bind "F8" "buy_scope"// ---------------------------------------------------------------
// communication: commands
// unfortunately, we have no variable to say exactly where we are
// so it is meaningless to provide much detailsalias waitalot "wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;wait;"
alias w "waitalot;waitalot;waitalot;waitalot;waitalot;waitalot;"
alias msg_enemies_none "radio3; w; slot4"
alias msg_enemies_few "radio3; w; slot2"
alias msg_in_a "say_team (A !!!)"
alias msg_in_b "say_team (B !!!)"
alias msg_bomb_here "radio3; w; slot3; w; say_team The bomb is here!"
alias msg_yes "radio3; w; slot1"
alias msg_no "radio3; w; slot8"
alias msg_follow_me "radio1; w; slot5"// communication: binds
bind "KP_END" "msg_enemies_none"
bind "KP_DOWNARROW" "msg_enemies_few"
bind "KP_PGDN" "msg_enemies_plenty"
bind "KP_LEFTARROW" "msg_in_a"
bind "KP_5" "msg_in_b"
bind "KP_RIGHTARROW" "msg_bomb_here"
bind "KP_HOME" "msg_yes"
bind "KP_UPARROW" "msg_no"
bind "KP_PGUP" "msg_follow_me"// EOF
In Day of Defeat, the userconfig.cfg matters less, as you do not have to buy weapons. However, the communication shortcuts can be of use, especially as in DoD:S, unlike in CS:S, you have access to the variable providing your location on the map. Here comes my dod usercfg.cfg making use of the location %l variable:
// ---------------------------------------------------------------
// communication: commands
// at the contrary of CS:S, we have the location
// variable (%l) that enables us to
// provide detailed infoalias msg_enemies_none "voice_areaclear; say_team %l clear"
alias msg_enemies_ahead "voice_enemyahead; say_team Enemy ahead %l"
alias msg_enemies_behind "voice_enemybehind; say_team Enemy behind us at %l"
alias msg_enemies_left "voice_fireleft; say_team To my left at %l"
alias msg_enemies_right "voice_fireright; say_team To my right at %l"
alias msg_enemies_machinegun "voice_mgahead; say_team MG at %l"
alias msg_enemies_sniper "voice_sniper; say_team Sniper at %l"
alias msg_enemies_grenade "voice_grenade"
// do not use voice_backup here because it may provide to much insight to the other team
alias msg_needhelp "say_team I NEED BACKUP AT %l"
alias msg_comeon "voice_gogogo"// communication: binds
bind "KP_END" "msg_enemies_left"
bind "KP_DOWNARROW" "msg_enemies_ahead"
bind "KP_PGDN" "msg_enemies_right"
bind "KP_DEL" "msg_enemies_behind"
bind "KP_LEFTARROW" "msg_enemies_machinegun"
bind "KP_5" "msg_enemies_sniper"
bind "KP_RIGHTARROW" "msg_enemies_grenade"
bind "KP_HOME" "msg_needhelp"
bind "KP_UPARROW" "msg_comeon"
bind "KP_PGUP" "msg_enemies_none"// EOF
And this dichotomy between CS:S and DoD:S, both based on the same rendering engine, definitely illustrates how frustrating proprietary software can be. If %l exists in DoD:S, it cannot be complicated to implement in CS:S. It is not really an issue of time, if anybody was able to read the code, edit it and redistribute the modifications made, there would have been an user willing to spend this time. I know I would.
But it is not and so we just have to rely on CS:S publisher that does not show much interest in developing further CS:S.
I’m wondering if we’ll ever see brand new games published as Libre Software. The only people that have the cash flow and the motives to do so could be ATI or NDVIDIA, the hardware producers. But they may has well just continue to work as they currently do.
(PS: and I’m not even going as far as expecting these to run under a GNU-based operating system)

How could this be? I interpret it to mean that somebody at Intel made sure the compiler for x86 -> internal RISC (implemented in silicon) recognizes the instruction sequence generated by Gcc for AES, and pastes in its place a hand-coded sequence of internal operations. This means, in turn, that any new cipher that doesn't much resemble AES will be unfairly handicapped by running much more slowly on current Intel chips. It might mean that if Gcc were to improve its optimization to the point that the chip doesn't recognize the sequence it generates as AES, performance might drop by half or more. I wonder which chip version first got this optimization.
[Update: Or, it means that L1 cache alignment came out unlucky for the assembly code, in that particular build. Or something.]
Thu 2010/Mar/18
Go and watch this scary/funny/excellent presentation of turning everything into an online game.
... And now go watch this presentation on why we should use online games to solve real-world problems.
That would be something very cool. Do a little guerrilla gardening? Get +10 points for gardening experience, +5 points for neighborhood-improver, +8 points for community-building if you garden with a neighbor.
I hate perl
Case in point, the Net::IP module. The documentation looks nice. It handles IPv6 and IPv4 addresses. It looks clean and simple.
Then, I decided I would like to be able to have IPv4 mapped IPv6 addresses match the IPv4 address ranges I'm singling out for special treatment. So I look into its tool for extracting an IPv4 address from an IPv6 address.
The call, ip_get_embedded_ipv4 doesn't seem to work on IPv6 addresses created with 'new'. It only works on IPv6 addresses represented as strings. This leads me to dive into the implementation.
I discover that the is no coherent internal representation. Just a lot of different attributes that are used at different times for different purposes and are converted from one another as needed.
Additionally, there appears to be no way to import particular symbols of certain classes from the module. You have to import them using the import statements specified in the documentation or take your chances on whether or not it will work. This is because the import mechanism and which symbols are global or not is handled in a fairly ad-hoc sort of way and re-implemented in each module according to the whims of the author.
It's really quite surprising the module works at all. And I'm left feeling like I really ought to re-write it if I want something I can count on.
In reality, looking at the module's implementation was a mistake. This is always what happens to me when I look at a perl module. Either it works in a completely mysterious way using language mechanisms I've never seen used before, or it works in a way that's totally broken and practically guaranteed to break for any use that varies from the specific use-cases described in the documentation. Frequently both are the case. Aigh! Run away!
I hope I can convince my new workplace to stop using perl.
Syndicated 2010-03-18 18:14:05 (Updated 2010-03-18 18:16:08) from omnifarious
Maintaining Screen Output
The following snippet of shell code demonstrates the solution I’ve discovered for this problem. It determines whether SCREEN is the parent process of the shell script and if so it sleeps for 60 seconds before exiting so I can see the KVM error messages. The other option is for the script to call “exec bash” to give me a new shell in the same window. Note that if I start a screen session and then run my KVM script I don’t want it to do anything special on exit as I will return to the command-line in the same window. If I run “exec kvm-unstable” or have a system boot script run “start-stop-daemon -S -c USER --exec /usr/bin/screen -- -S kvm-unstable -d -m /usr/local/bin/kvm-unstable” then on exit I will be able to see what happened.
#!/bin/bash
set -e
kvm ETC || echo “KVM gave an error return code”
COUNT=$(ps aux|grep $PPID|grep SCREEN|wc -l)
if [ "$COUNT" = "1" ]; then
echo "screen is the parent"
sleep 60
else
echo no screen
fi
Update: Thanks to John for the Slee for suggesting the following:
#!/bin/bash
set -e
kvm ETC || echo “KVM gave an error return code”
if grep -q SCREEN /proc/$PPID/cmdline ; then
echo "screen is the parent"
sleep 60
else
echo no screen
fi
CLDR 1.8 released
On the 17th the Common Language Data Runtime project at Unicode released version 1.8 of the CLDR.
CLDR 1.8 contains data for 186 languages and 159 territories: 501 locales in all. Version 1.8 of the repository contains over 22% more locale data than the previous release, with over 42,000 new or modified data items from over 300 different contributors.
Syndicated 2010-03-18 08:50:35 from In Nomine - The Lotus Land
Case Study: Generating Social Media Buzz
<object width="580" height="458"><param name="movie" value="http://www.youtube.com/v/tEqJV1acgN4&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/tEqJV1acgN4&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="580" height="458"></embed></object>
Here’s an absolutely brilliant video case study demonstrating how to use social media buzz to market directly to your specific demographic. It can be difficult reaching certain demographics ((millennial males, for instance) through traditional means. This often means you must think outside the box to get their attention. You must dare to be daring. Of course providing events as a form of marketing isn’t new, however, using social media to generate a global buzz is still in its infancy. But you don’t have to be a multi-national like Heineken to use it. Is there an event that you could be hosting to generate some buzz about your own brand?
<h3>The Event</h3>
The first thing to consider is the demographic you are trying to target. As with all marketing be specific. That will not only allow you to better cater to their needs and desires but will also concentrate your resources exactly where they matter. In the video Heineken focused on two immediate groups: die-hard Italian football fans – especially AC Milan or Real Madrid fans; and also their partners, bosses and friends. Especially the wives and girlfriends (WAGs). They provided the two groups with a memorable experience that they could both enjoy. The football match for the fans, and the conspiracy (and concert) for their partners.
Football is very important in Italy. The fans are called i tifosi because the popularity of the game spread like Typhoid Fever. Watching football and drinking beer also have close associations so it was an obvious choice to link the two in a marketing exercise. When deciding on what sort of an event to host you too may be able to link your product with a complimentary activity. Do something that your consumers are already doing but tweak it and present it in an exciting new way. In the Heineken case study, they tapped into the fact that Italian football fans watch big matches religiously, and they tend to do so with their friends. By showing the game on a big screen in an auditorium with their WAGs and bosses Heineken provided a unique experience. Something memorable for both demographics, especially for the WAGs who got to do something special for their partners but also got to be included in the actual activity – watching football tends to be a male-only environment. <h3>Generating The Buzz</h3>

Showing a football match in an auditorium may have been enough to generate some local buzz for in the Heineken case. However, by conspiring with the WAGS and bosses they took it to a new level. They also videoed the entire thing so they could share it. By distributing the video on the web and to traditional news outlets they presented it as an offbeat news story. This is the key to their success. It wasn’t just a video of what happened, they created a very human narrative about conspiracy, disappointment, joy, love and fun.
Videoing your event is a powerful way to advertise. However you must provide a way for those that weren’t at the event to tap into the emotion. Otherwise it becomes just a video record of the event rather than generating a desire to have been there. In the case study the audience experiences the fun of knowing about the conspiracy, the looks of horror as the fans must make the impossible decision and then sit through the concert, and finally the envy of watching football on a big screen in an auditorium – and presumably while drinking Heineken.
Hosting an event as part of your marketing can be richly reward and generate significant brand recognition in itself. However, by producing a video that touches upon the emotions of the viewer and distributing it through the various social media channels you can take the exercise to a competly new level.
<!-- Social Bookmarks BEGIN -->
James Antill is old
well, he’ll be older very soon (Saturday) – and I wanted to say happy birthday to him in a public and annoying way.
If you’ve used yum recently you’ve probably benefited from work that James has done. The yum history command in particular was entirely his work. James does some great stuff.
I discovered tonight that he has this amazon wishlist of all sorts of random things. So if you appreciate something James has worked on and you want to wish him a happy birthday, hint, hint.

Maintaining Screen Output
The following snippet of shell code demonstrates the solution I’ve discovered for this problem. It determines whether SCREEN is the parent process of the shell script and if so it sleeps for 60 seconds before exiting so I can see the KVM error messages. The other option is for the script to call “exec bash” to give me a new shell in the same window. Note that if I start a screen session and then run my KVM script I don’t want it to do anything special on exit as I will return to the command-line in the same window. If I run “exec kvm-unstable” or have a system boot script run “start-stop-daemon -S -c USER --exec /usr/bin/screen -- -S kvm-unstable -d -m /usr/local/bin/kvm-unstable” then on exit I will be able to see what happened.
#!/bin/bash
set -e
kvm ETC || echo “KVM gave an error return code”
COUNT=$(ps aux|grep $PPID|grep SCREEN|wc -l)
if [ "$COUNT" = "1" ]; then
echo "screen is the parent"
sleep 60
else
echo no screen
fi
mattl: @mikankun glad to have you here. i hope you'll join us for a beer later.
@mikankun glad to have you here. i hope you'll join us for a beer later.Blog update, forum crash.
Some have you may have noticed that my blog has a new look. Others may have noticed that the Israeli polyamory forum that I’m hosting has crashed, losing all information. Both of these events have to do with my (paid) hosting account at bluehost.com.
It all started when I wanted to upgrade my ancient wordpress install (with some custom modifications) to a more modern and standard install. So, I backed up my blog and database and proceeded to install the new version. This required a few iterations, each requiring to delete the old instance of the blog.
My major mistake was during one of those installations, I have misclicked and deleted the wrong site — the active poly forum. The delete action did create a backup, but since the database was exported using the wrong encoding, all Hebrew data (including the entire forum) was lost.
I immediately called my hosting provider, but they did not have backups of my account. I never set up a backup script for my hosting account, so the entire contents were lost.
I did reinstall a new forum and the blog. I am now working on a backup solution for my account.
The new blog has several nifty features: On the right sidebar you may find my current exact location. Also, the subscription system should work better and replies could be verified by OpenID.
mattl: how is everyone's !libreplanet so far?
how is everyone's !libreplanet so far?mattl: @donaldrobertsoniii -- your new avatar should be http://bostondarts.org/i/board.jpg
@donaldrobertsoniii -- your new avatar should be http://bostondarts.org/i/board.jpg
The final organizational details are being sorted out, and registration should be open very soon.
PayPal Wants To Increase Its WorkForce In Asia From 1000 To 2000
A good news for PayPal employees that the company is increasing its work force in Asia pacific region. PayPal has anticipated the future, therefore they are going to double its employees from 1000...Syndicated 2010-03-17 17:21:13 from shafiq.pk - Latest Technology Updates
mattl: don't forget to collect your !libreplanet badge and lanyard from the awesome folks at registration.
don't forget to collect your !libreplanet badge and lanyard from the awesome folks at registration.Google Makes Automatic Arrangements For YouTube Overlay Ads
Now a days Google is making serious efforts to push YouTube into profit. Google is trying its level best to post maximum ads into the billions of videos which people watch on the site daily. They are...Syndicated 2010-03-17 17:02:52 from shafiq.pk - Latest Technology Updates
Are you sure you don't mind me going without you?
Recently I received a small flurry of patches to my blog compiler, from Chris Frey. These patches significantly speedup rebuilding a static blog when using Danga's memcached.
The speedup is sufficiently fast that my prior SQLite based approach is no longer required - and (re)building my blog now takes on the order of 5 seconds.
On the topic of other people's blogs I've been enjoying David Watson's recent photo challenge. I was almost tempted to join in, but I'm not sure I could manage one every day - Although I can pretend I recently carried out my my first real photoshoot.
I'm still taking pictures of "things/places" but I'm starting to enjoy "people" more. With a bit of luck I'll get some more people to pose in the near future, even if I have to rely upon posting to gumtree for local bodies!
ObFilm: Love Actually
Syndicated 2010-03-17 14:00:03 (Updated 2010-03-17 15:06:21) from Steve Kemp's Blog
IAmA
I ran an "IAmA" on reddit the other day: I was president of the Cambridge University Heraldic and Genealogical Society; ask me almost anything. I mention it here in case you'd like to read along.FOAF updates: Trust rankings are now exported, making the data available to other users and websites. An external FOAF URI has been added, allowing users to link to an additional FOAF file.
Keep up with the latest Advogato features by reading the Advogato status blog.
If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!
| Users | 13909 |
| Observer | 9795 |
| Apprentice | 745 |
| Journeyer | 2351 |
| Master | 1014 |