Search Results: "tar"

14 December 2007

John Goerzen: A Clarification

You may remember my post Monday in which I told Mother Nature to "bring it on".

I would like to clarify that remark at this time. I would have preferred Mother Nature to interpret this in the President Bush sense of "please don't hurt us", rather than the "let's just knock out power to the entire plains region". A nice little romantic power outage Tuesday evening would have been nice.

We lost power at 3:10 on Tuesday according to my workstation's logs. It's still out, and our rural electric cooperative is estimating it will be another week until it's back, though that's better than the Dec. 22 date the state's much larger for-profit utility is giving people. We were lucky enough to be able to find a generator to rent on Wednesday morning. $35 a day isn't cheap. But on the other hand, we don't have a flooded basement due to not pumping out the sump pump, our food isn't spoiled, and our pipes aren't frozen.

At work, our Internet connection went down Tuesday morning. We use a fixed wireless connection, and this was the first time our ISP's radios have been tested in ice. Some antenna designs performed flawlessly. Then there were the antennas we had. 80% packet loss or worse. It wasn't safe to get up on the roof to deice them until Wednesday afternoon, and even then we couldn't get all the ice off. Finally today the connection was back to normal.

That two weeks after someone -- yes -- dug through Sprint/Embarq's apparent only fiber-optic link into town. Took down all long-distance calling into or out of the town, most cell towers, as well as all access to 911 (since dispatch is in another town) for about 8 hours. If we had still be using wired T1s, we would have been out of service with Internet as well.

All told, 200,000 households or business customers of the state's largest utility have been without power. Dozens of other utilities have also had significant outages. Ours alone lost 700 power poles and there are substations in need of repair all over the eastern part of the state. And we weren't even the hardest hit.

On the generator, we can generally pick any three of refrigerator, server, workstation, or furnace to run. So sometime warm, I'll upload the pictures I've taken so far. We have one nice CFL-powered electric lamp we're using, flashlights, and a kerosene lamp. It's amazing how after just a few days of this, we're starting to want to go to bed earlier. Or perhaps that was because I haven't had the chance to get a lot of sleep lately...

When we look out the house to the east, we see pitch black. Normally we can see some yard lights in the distance. Not this week. Nothing at all to the east. To the west, we can see yard lights tantalizingly close -- only 2 miles away, fed from a different location. Ah, the joys of being at the very end of a utility's network.

All this despite the fact that this storm wasn't really all that bad. The roads were never really terrible, and there weren't as many trees down as there were in the ice storm of 2005.

I heard a comment on the news today from an Iowa Republican who had followed the GOP debate yesterday. She mentioned that Romney made a comment like "Well, guess there's no global warming in Iowa with an ice storm like this, huh?" She pointed out that if Iowa was still as chilly as it used to, it would have been a snow storm instead of an ice storm. I agree.

13 December 2007

Raphael Geissert: HOWTO create and maintain a repository using reprepro and DeBaBaReTools

DeBaBaReTools seems to work good enough that writing an early-stage HOW TO seems to worth the time :)

The first thing to do is of course fetch the sources:
$ svn export https://neo.yahostme.com/svn/DeBaBaReTools/trunk/ DeBaBaReTools


Build and install the package:
$ cd DeBaBaReTools; dpkg-buildpackage -b; dpkg -i ../debabaretools_0.2_all.deb


$ dpkg -L debabaretools
/.
/etc
/etc/DeBaBaReTools
/etc/DeBaBaReTools/common.conf
/usr
/usr/bin
/usr/bin/wannaBuild
/usr/bin/needsBuild
/usr/bin/needsReBuild
/usr/bin/buildQueue
/usr/bin/checkSums
/usr/bin/wannaUpload
/usr/bin/processIncoming
/usr/share
/usr/share/doc
/usr/share/doc/debabaretools
/usr/share/doc/debabaretools/copyright
/usr/share/doc/debabaretools/ENV
/usr/share/doc/debabaretools/changelog.gz
/usr/share/doc/debabaretools/TODO
/usr/share/DeBaBaReTools
/usr/share/DeBaBaReTools/backends
/usr/share/DeBaBaReTools/backends/config
/usr/share/DeBaBaReTools/backends/config/reprepro.sh
/usr/share/DeBaBaReTools/backends/probe.sh
/usr/share/DeBaBaReTools/backends/fetch
/usr/share/DeBaBaReTools/backends/fetch/dget.sh
/usr/share/DeBaBaReTools/backends/verbosity.sh
/usr/share/DeBaBaReTools/backends/lock
/usr/share/DeBaBaReTools/backends/lock/default.sh
/usr/share/DeBaBaReTools/backends/setDefault.sh
/usr/share/DeBaBaReTools/backends/buildQueue
/usr/share/DeBaBaReTools/backends/buildQueue/plaintext.sh
/usr/share/DeBaBaReTools/backends/signature
/usr/share/DeBaBaReTools/backends/signature/gpgv.sh
/usr/share/DeBaBaReTools/backends/check
/usr/share/DeBaBaReTools/backends/check/default.sh
/usr/share/DeBaBaReTools/backends/build
/usr/share/DeBaBaReTools/backends/build/pbuilder.sh
/usr/share/DeBaBaReTools/backends/upload
/usr/share/DeBaBaReTools/backends/upload/dput.sh
/usr/share/DeBaBaReTools/backends/parsers
/usr/share/DeBaBaReTools/backends/parsers/default.sh
/usr/share/DeBaBaReTools/backends/repository
/usr/share/DeBaBaReTools/backends/repository/shared.sh
/usr/share/DeBaBaReTools/backends/repository/reprepro.sh
/usr/share/DeBaBaReTools/backends/misc.sh
/usr/share/DeBaBaReTools/backends/codenamesTable
/usr/share/DeBaBaReTools/backends/codenamesTable/release.sh
/usr/share/DeBaBaReTools/backends/codenamesTable/reprepro.sh
/usr/share/DeBaBaReTools/backends/config/default.sh
/usr/share/DeBaBaReTools/backends/fetch/default.sh
/usr/share/DeBaBaReTools/backends/buildQueue/default.sh
/usr/share/DeBaBaReTools/backends/signature/default.sh
/usr/share/DeBaBaReTools/backends/build/default.sh
/usr/share/DeBaBaReTools/backends/upload/default.sh
/usr/share/DeBaBaReTools/backends/repository/default.sh
/usr/share/DeBaBaReTools/backends/codenamesTable/default.sh


Now you have to create a base reprepro repository. I strongly recommend setting the REPREPRO_BASE_DIR ENV variable if possible.

A recommended repository structure is (in repoitory/):
.:
./build:
./build/cache:
./build/data:
./build/data/logs:
./build/tmp:
./conf:
distributions
incoming
options
tiffany.py
uploaders
./db:
./debian:
./debian/dists:
etch
oldstable
sarge
sid
stable
testing
unstable
./debian/dists/...
./debian/pool/...
./incoming:
./incoming/accepted:
./incoming/new:
./incoming/rejected:
./pub:
./pub/UploadQueue:

Note that the build/, incoming/ and pub/ directory structures are DeBaBaReTools' defaults, if you want to change them you will have to set some variables at the configuration file ($HOME/.DeBaBaReToolsrc).

The distributions file must at least contain the Codename, Suite and Architectures entries for DeBaBaReTools to work correctly. Note that the current code used to correlate the suites with the codenames greps for the given codename/suite including two lines before and two after the match, so the entry must be on that scope.
E.g.
$ cat conf/distributions
Codename: sid
Suite: unstable
Architectures: i386 amd64 source
Components: main contrib non-free
Uploaders: uploaders
DebIndices: Packages Release .bz2 .gz .
DscIndices: Sources Release . .gz .bz2
Contents: .bz2 .gz .
Tracking: minimal includechanges keepsources


conf/incoming must name at least one rule. This is because when installing, DeBaBaReTools will grep for all the rule names and execute them one by one.
The rest of reprepro's setup is trivial.

When building packages with pbuilder, DeBaBaReTools expects the basetgz's to be named like $PBUILDER_CACHE/$CODENAME.tgz where $PBUILDER_CACHE is an environment variable defaulting to /var/cache/pbuilder.

Tweaking DeBaBaReTools:
Because we are using reprepro and pbuilder we'll give some hints to DeBaBaReTools so it uses a reprepro-specific and/or pbuilder-specific backend where possible.

$ echo 'HINT_ALL="reprepro pbuilder"' > $HOME/.DeBaBaReToolsrc


The .DeBaBaReToolsrc file is sourced by all scripts, so you might even set variables like $REPREPRO_BASE_DIR there.

/usr/share/doc/debabaretools/ENV documents only some of the multiple environment variables that can be specified to customise DeBaBaReTools' behaviour. It is important to say that variables which are empty will be filled with a default value.

You may now want to modify .dput.cf by adding a 'local' target for your repository:
[local]
fqdn = localhost
method = local
incoming = /home/raphael/Deb/repository/pub/UploadQueue
allow_unsigned_uploads = 0
run_dinstall = 0


So let the fun begin! :)

To make sure everything is ok let's run processIncoming in verbose mode:
VERBOSE=1 processIncoming
processIncoming v0.1 started.
processIncoming v0.1 stopped.

Not getting that output means something is not ok.

All the scripts will try to source a file called $HOME/.$ APP_NAME rc, where $APP_NAME is the name of the script, e.g. processIncoming. This can be used to customise them even more.

Tweaking the scripts behaviour:

processIncoming offer some options such as:


wannaBuild:



When you should call which DeBaBaReTools script:
processIncoming takes care of accepting package uploads and installing them when told to do so.
needsBuild processes the .changes files accepted by processIncoming and tells the build queue manager that a given package needs to be built, or when the binary package is also uploaded, or is already built.
wannaBuild only takes care of building source packages (note that arch: all-onnly packages WON'T be built, they must be uploaded together with the source package).

So the workflow is:
processIncoming -> needsBuild -> INSTALL=1 processIncoming

A package won't be installed in the repository if it isn't handled before by needsBuild.

Here's a demonstration (note the usage of VERBOSE=1):
$ dput local kcometen3_1.1-1_source.changes
Checking Signature on .changes
...
Uploading to local (via local to localhost):
Successfully uploaded packages.
Not running dinstall.
sh: /usr/bin/mini-dinstall: No such file or directory
Error while executing command.
Continuing...

The package is now at pub/UploadQueue

$ VERBOSE=1 processIncoming
processIncoming v0.1 started.
Processing /home/raphael/Deb/repository/pub/UploadQueue/kcometen3_1.1-1_source.changes...
mv'ing "/home/raphael/Deb/repository/pub/UploadQueue/kcometen3_1.1-1.diff.gz" to "/home/raphael/Deb/repository/incoming/accepted/"
mv'ing "/home/raphael/Deb/repository/pub/UploadQueue/kcometen3_1.1-1.dsc" to "/home/raphael/Deb/repository/incoming/accepted/"
mv'ing "/home/raphael/Deb/repository/pub/UploadQueue/kcometen3_1.1-1_source.changes" to "/home/raphael/Deb/repository/incoming/accepted/"
mv'ing "/home/raphael/Deb/repository/pub/UploadQueue/kcometen3_1.1.orig.tar.gz" to "/home/raphael/Deb/repository/incoming/accepted/"
processIncoming v0.1 stopped.

After checking sums and signature, the upload is accepted.

$ VERBOSE=1 needsBuild
needsBuild v0.2 started.
Architectures: i386 amd64 all
Now processing /home/raphael/Deb/repository/incoming/accepted/kcometen3_1.1-1_source.changes
Adding kcometen3 to be built in i386 for the sid distribution
Adding kcometen3 to be built in amd64 for the sid distribution
mv'ing "/home/raphael/Deb/repository/incoming/accepted/kcometen3_1.1-1.dsc" to "/home/raphael/Deb/repository/incoming"
mv'ing "/home/raphael/Deb/repository/incoming/accepted/kcometen3_1.1.orig.tar.gz" to "/home/raphael/Deb/repository/incoming"
mv'ing "/home/raphael/Deb/repository/incoming/accepted/kcometen3_1.1-1.diff.gz" to "/home/raphael/Deb/repository/incoming"
mv'ing "/home/raphael/Deb/repository/incoming/accepted/kcometen3_1.1-1_source.changes" to "/home/raphael/Deb/repository/incoming"
needsBuild v0.2 stopped.

The package is now marked to be built on i386 and amd64 for sid (note that distro to codename conversion is performed) and moved to incoming/ so processIncoming is able to install it.

$ VERBOSE=1 processIncoming
processIncoming v0.1 started.
processIncoming v0.1 stopped.

There's nothing under pub/UploadQueue and nothing is installed (do you remember the INSTALL=0 option? :))

$ INSTALL=1 VERBOSE=1 processIncoming
processIncoming v0.1 started.
No distribution found for 'kcometen3_1.1-1_source.changes'!
There have been errors!
No distribution found for 'kcometen3_1.1-1_source.changes'!
There have been errors!
No distribution found for 'kcometen3_1.1-1_source.changes'!
There have been errors!
making diffs between /home/raphael/Deb/repository/debian/dists/sid/main/source/Sources and /home/raphael/Deb/repository/debian/dists/sid/main/source/Sources.new:
generating diff
Exporting indices...
processIncoming v0.1 stopped.

The errors can be safely ignored, it is just that reprepro couldn't install kcometen3_1.1-1_source.changes for the specified install rule (I've one for each distro, that's why).

$ VERBOSE=1 wannaBuild
wannaBuild v0.1 started.
Fetching list of packages to be built for unstable
Fetching source package kcometen3 v1.1-1
Use of uninitialized value in string eq at /usr/bin/dget line 377.
cat: /home/raphael/Deb/repository/build/data/needsBuild.unstable: No such file or directory
Starting build backend...
Executing sudo pbuilder --update --basetgz /var/cache/pbuilder/unstable.tgz
Starting build process
Verifying signature of /home/raphael/Deb/repository/build/kcometen3jb3362/kcometen3_1.1-1_i386.changes...
gpgv: no valid OpenPGP data found.
gpgv: the signature could not be verified.
Please remember that the signature file (.sig or .asc)
should be the first file given on the command line.
Fetching list of packages to be built for testing
Fetching list of packages to be built for stable
Fetching list of packages to be built for oldstable
wannaBuild v0.1 stopped.

There are still some things that need to be fixed (e.g. the no such file or directory message).
Other than that, the output is just fine: the package wasn't automatically signed so when trying to check the signature it failed to find it thereby not uploading the package automatically.

Now we cd to build/kcometen3jb3362/, review the build log, the .changes file, and we finally sign it.
Afterwards, we upload the package and install it:

$ VERBOSE=1 processIncoming
processIncoming v0.1 started.
Processing /home/raphael/Deb/repository/pub/UploadQueue/kcometen3_1.1-1_i386.changes...
mv'ing "/home/raphael/Deb/repository/pub/UploadQueue/kcometen3_1.1-1_i386.changes" to "/home/raphael/Deb/repository/incoming/accepted/"
mv'ing "/home/raphael/Deb/repository/pub/UploadQueue/kcometen3_1.1-1_i386.deb" to "/home/raphael/Deb/repository/incoming/accepted/"
processIncoming v0.1 stopped.

$ VERBOSE=1 needsBuild
needsBuild v0.2 started.
Architectures: i386 amd64 all
Now processing /home/raphael/Deb/repository/incoming/accepted/kcometen3_1.1-1_i386.changes
mv'ing "/home/raphael/Deb/repository/incoming/accepted/kcometen3_1.1-1_i386.deb" to "/home/raphael/Deb/repository/incoming"
mv'ing "/home/raphael/Deb/repository/incoming/accepted/kcometen3_1.1-1_i386.changes" to "/home/raphael/Deb/repository/incoming"
needsBuild v0.2 stopped.


$ INSTALL=1 VERBOSE=1 processIncoming
processIncoming v0.1 started.
No distribution found for 'kcometen3_1.1-1_i386.changes'!
There have been errors!
No distribution found for 'kcometen3_1.1-1_i386.changes'!
There have been errors!
No distribution found for 'kcometen3_1.1-1_i386.changes'!
There have been errors!
making diffs between /home/raphael/Deb/repository/debian/dists/sid/main/binary-i386/Packages and /home/raphael/Deb/repository/debian/dists/sid/main/binary-i386/Packages.new:
generating diff
Exporting indices...
processIncoming v0.1 stopped.


done :)

We can now setup some cronjobs:
*/10 * * * * processIncoming
*/5 * * * * needsBuild
@daily INSTALL=1 processIncoming

needsReBuild and uploadQueue still need to be written, so don't expect them to do anything right now.

I hope people start using it so I receive more feedback :D

Steve Kemp: Children Of The Dammed

After a lot of hacking I've now got chronicle displaying comments upon entries. Since my blog is compiled on my home desktop machine and comment submission happens upon a remote machine the process involves a bit of a hack:
Publish Blog
The blog is compiled and uploaded to the live location using rsync.
Wait For Comments
Once the blog is live there are embedded forms which may be used to receive comments. The CGI script which is the target of the forms will then write each comment out to a text file, located outside the HTTP-root.
Sync Them
Prior to rebuilding the blog the next time I update I rsync the comments directory to my local machine - such that the comments posted are included in the output
This my local tree looks something like this:
~/blog/
 -- comments/
 -- data/
 -- output/
 -- Makefile
 -- chroniclerc
Here I have a Makefile to automate the import of the comments from the live site to the local comments/ directory, rebuild, and finally upload. All this means that I can rebuild a blog created by a combination of plain text post files and plain text comment files. It also means that there is a fair lag between comment submission and publication - though I guess there is nothing stopping me from auto-rebuilding and syncing every hour or two via cron... I'll make a new release with this comment.cgi script and changes once the package hits Debian unstable...

Aigars Mahinovs: Vanessa Mae in Riga

On Monday I was at a Vanessa Mae concert in arena “Riga” in Riga, Latvia. The concert was almost an hour late due to flight delay. It would have been fine if the organisers would let us into the hall or at least informed the several thousand people about the delay and its reason and not just have us stand in the rather restricted lounge. around half an hour after the planned start time, we were let to our seats and some ten minutes later an announcement was broadcasted explaining the reason for the delay. Vanessa came out with her own band and a local Latvian string orchestra. I wonder if she played with local orchestras in other locations as well. The orchestra preformed perfectly as far as I could tell, which is not much because they were mixed way down and were barely audible most of the time. I am a big fan of Vanessa Mae - I like classical music, I love her interpretation of that music and I appreciate how she made classical music more acceptable for a modern teen to like. That said, the concert was a mix of joy and disappointment for me. The joy came from hearing the music that I know and like and seeing how it is played in real life. It was a great joy and most of the time I was bobbing in my chair as a very happy boy. However, there were moments when I cringed and unfortunately there was more than a handful of those during the two hour concert. The problems could be put into three categories: 1. Vanessa missing a note or even a handful of them badly. I will be an optimist and blame that on the tuning - just the day before she was playing in Seatle in 80% humidity and then came to Riga and 20% humidity. She had to retune her wooden violin after each song because of that. She apologised for that mid-show. 2. Spotlight and camera missing the action. At times Vanessa steps back and one of her band members goes on a solo, but most of the time the person controlling the spotlight and the person controlling the camera were not ‘in’ the action and just stayed on Vanessa. The worst cases were when a couple seconds into the solo the camera would start to pan over to the band member playing the solo part, spend a couple more seconds framing and focusing and then after another second the spotlight did the same and by that time the solo part was over. Two cameras and two spotlight should be used for such cases with people controlling them having a clear idea of what happens next. One camera should always be on a wider angle shot and one for closeups, so that when a switch is coming, you could switch to wide angle a couple of seconds before the switch, give the closeup camera time to change target, re-frame and re-focus and then switch to it. And for the spotlights, one would always track the main person and the other seeking out the next person of interest. 3. Mixing problems. Vanessa was always way too loud and drowned out the other instruments even when that was not desirable. Background orchestra was too low. In general the mixing was very pop-ish - no dynamic range. The worst cases of this were Bolero and Storm. Storm is my favourite melody and I especially love the slow and quiet beginning of the song, but that was skipped entirely in the concert cutting straight to the loud part. Some other songs were also brutalised that way. I know that true artists generate most of their income through concerts and for that reason I recommend every Vannessa Mae fan to buy the tickets to her concerts, but if you are an audiophile .. don’t go there - stay at home with you trustworthy stereo system and FLAC recording of great sound. The concert is there to support the artist and for the atmosphere not for the best sound, unfortunately.

Holger Levsen: HTML5 and the video tag

Maybe you have heard about Nokia, or rather a Nokia employee speaking in the name of the company, spreading FUD about ogg theora and proposing it shouldn't be recommended in HTML5. Read this article from the metavid blog to learn in 10min why it really is clueless FUD and nothing else. Morons! And most probably that word is too friendly...

Gunnar Wolf: Supertheory of supereverything

First time I had read the Bible
It had stroke me as unwitty
I think it may started rumor
That the Lord ain't got no humor Put me inside SSC
Let's test superstring theory
Oh yoi yoi accelerate the protons
stir it twice and then just add me, 'cause I don't read the Bible
I don't trust disciple
Even if they're made of marble
Or Canal Street bling From the maelstrom of the knowledge
Into the labyrinth of doubt
Frozed underground ocean
melting - nuking on my mind Yes give me Everything Theory
Without Nazi uniformity
My brothers are protons
My sisters are neurons
Stir it twice, it's instant family! I don't read the Bible
I don't trust disciple
Even if they're made of marble
Or Canal Street bling My brothers are protons
My sisters are neurons
Stir it twice dlja prekrastnih dam... Do you have sex maniacs
Or schizophrenics
Or astrophysicists in your family
Was my grandma anti anti
Was my grandpa bounty bounty
Hek-o-hek-o-hej-o
They ask me in embassy! 'Cause I don't read the Bible
I don't trust disciple
Even if they're made of marble
Or Canal Street bling And my grandma she was anti!
And my grandpa he was bounty!
And stir it twice
And then just add me!
Partypartypartypartypartyparty
now afterparty...
That's the Supertheory of Supereverything, by the gypsy-punk Gogol Bordello. I was really surprised to find their Super Taranta! at a local music shop. Of course, five minutes later, we were heading home with our shiny and oh-so-very-green purchase. Highly recommendable!BTW, does anybody else think that Eugene Hutz is Larry Wall's evil twin? (No, and I don't only mean it because of their choices in background colors)

12 December 2007

David Welton: Programming languages are not like hand tools

I have seen the "right tool for the job" comment one too many times, and felt like writing something about it. Real tools are pretty simple, really. Things like saws and hammers have been around for thousands of years, and don't require a great deal of thinking to understand. Some people are masters with hand tools and create wonderful works of art with them, but the tools themselves are not complex. My programming language, Hecl, is a pretty simple one in a lot of ways (it has to be, to fit on cell phones), and at last count, the core has 7670 lines in a rough count that includes comments. That entails quite a few "moving parts" compared to even something like an electric drill. Programming languages are complex. Certainly to create, but even to use well; to understand the nooks and crannies and ramifications of the language's design is not something that is accomplished in a few days for most people. Your average programmer really doesn't know all that many languages, and even those who know many probably don't use most of them on a day to day basis. I like learning new languages, yet still wouldn't relish the idea of going through the mental task-switch required to move between too many in one day. What this means, is that when there is a job to be done, most programmers will reach for what they already know, rather than the best possible system, and that makes sense. If you know Python, why not write web software in Python, if you get asked to create something for the web? Or if you know Tcl because you create gui's with Tk, you're still likely to pick it when you need to create a little server. There are reasons why something like Erlang might make for a better server platform than Tcl, but is it that much better to justify dropping everything, learning a new language, committing to a new set of infrastructure requirements, and adding another thing to ask of people joining your organization? Most likely, it is not, unless the server you're writing is for a telephony switch that has to be on all the time, in which case, yes, maybe you do need Erlang. If, as is often the case, it wasn't something that had to be the best in the world, all that extra time to learn a new language would have been mostly "wasted" (ignoring, of course, the fact that for individuals, learning new things is almost always good, but that's not what we're talking about). Even the smart folks who hack away in languages like Haskell are fond of using what it has to offer, rather than jumping ship to something else at the first hint of the "something else" being better at their language of choice for a given task. So both Tcl and Erlang were up to the task of creating a little server. You could have used Ruby or Python as well. Java might prove a bit more verbose, but it's certainly up to the task. Any number of languages would be, of course. So it's not like there is a "right tool" and a "wrong tool". Maybe a better analogy is languages are like toolboxes, or even whole workshops, full of tools. Most of them have most of the common tools like hammers and saws, some sort of web libraries or the means to create tcp/ip servers. Where they differ is in things like the amount of tools available, the specialized tools that you get for free, the craftsmanship and ease of use of the tools in the hands of both experts and beginners... or in some cases (lisp, say), some fancy tools and supplies that make it possible to build yourself some new tools if you need to (that only you know how to use, but that's another topic). Some sets of tools really aren't very good for some jobs - you don't want to build blazing fast 3-d shooter games in PHP, just as you wouldn't want to use a regular set of screwdrivers on a delicate watch. However, even though you'd want to use a toolset that also has some specialized tools for working on the watch, you'd rather own a toolbox that came with the watch tools as well as the regular Phillips screwdrivers, because those are pretty handy around the house, and it wouldn't do to have only the watch tools for fixing common household items. The point being, languages are big investments, so those that do more, even if they're not the absolute greatest or first choice for a given task, are generally going to be more useful to more people, especially those just starting out who want a "safe" choice, a language they know will let them do a variety of things, rather than only one or two things (pound nails, say) really well.

Martin-Éric Racine: Ubuntu on an LG E200 laptop?

As my aging ThinkPad is starting to show signs of an impeding retirement, I recently began looking for a newer laptop to replace it. My current choice would be for an LG Electronics model E200-A.CPPPV laptop. However, when trying an Ubuntu Feisty live CD on it, X failed to find any usable screen resolution and aborted. Thus I was wondering if anybody had better results using a Gutsy CD? In principle, the hardware should be supported, since it's all Intel and ATI components but, these days, you never know, especially with graphic and wireless chipsets. Comments?

Riccardo Setti: How long must we sing this song ?

A lot of cool posts about n810 can be read on planet maemo these days. I just discover that the device can be bought in France and in England. I just wonder when it will be avaiable also here in Italy. Note: the device can be purchased without the possibility to use the discount code. so I have to ask the same question that my friend maddler asked on his blog: How long must we sing this song…?

MJ Ray: First week with the k608i

I got a Sony Ericsson k608i. It's fairly old and I don't like Sony (rootkit distributors that they are), but it was very cheap... if I didn't have the opportunity to use that, I'd've probably got one of 3's 50-quid Skypephones and ignored the Skype bit. I don't really know enough yet to buy smart and I'm not a 3G Power Phoner, so I suspect the bog standard would be good enough for me. A week on, it works pretty well. 3mail seems to be free to receive and read, so I can set my mail sieve to redirect copies from my heavily-filtered inbox to it and then choose between 10p/mail replies or 50p/day unlimited internet and use mujMail and MIDPssh. Typing on the phone isn't much fun, but it's not too bad. The speakerphone is good enough that I don't need to carry a headset around with me and some of the free video like animated weather maps are quite fun, but I'm not sure how much I'll use them. I usually have access to a TV, after all. Even larger train stations often have TVs around. 2.50 for unlimited access to BBC One, Three, News24 and itv1 may be useful if there's something I really want to watch, but I'd expect it to eat battery. Also, the video seemed to flake out far too easily when moving on local trains. The camera seems OK, although I haven't figured out how to make it flash and I've not yet copied pictures off to a bigger screen or a printer. I've got bluetooth working, but I think I also need to install obex. I need more time. Has anyone got either headsetd or alsa pcm type bluetooth working well? My headset seems to have a very quiet microphone, is slow to start and has been unstable so far. (2007-12-12: 1 comment)

Alastair McKinstry: Waiting for CoRoT

So, the CoRoT team apparently had a meeting in Paris on Monday. I've been waiting with baited breath (and intermittent internet access, for assorted reasons) for the results of a "Press Conference", that according to the blogosphere rumour mill, and a (started by a breathless interim report) was going to rewrite the sciences of exoplanets and stellar seismology. There were rumours of special editions of Nature (or Science, or A & A), Earth-mass planets (possible according to the apparent spec. of CoRoT). This mattered to me as I'm finishing up a literature review for a PhD and the work is on exoplanets, and depends a lot on stellar variation. CoRoT could rewrite large sections of my conclusions. So, it looks like I finish my review and just have to be patient while they release their results in the proper peer-reviewed manner. But it would probably be a good idea for the CoRoT team to set up a blog, as Rumour Central, to respond to mentions and rumours about their project that appear on the 'net. Kudos, for example, to Wesley Traub for taking the time to answer my questions aboout Darwin/TPF in this manner. Tags , , ,

11 December 2007

Adrian von Bidder: KDE 4

So much for KDE 4 ... after a lengty downgrade and package picking session (Yay! for dependency handling in Debian!) I'm now back to the trusted KDE 3.5.x (mostly x == 8) and will wait until KDE4 hits testing (which would be after lenny, I guess.) KDE 4 sort of worked - but I'd not call this &ldqupbeta%rdquo; at this stage, and apparently the KDE people joined the use-as-much-screen-surface-as-possible-for-funky-stuff crowd, leaving less space for actual application content than before. I hope the final versions can at least be configured to be smaller. I hoped the Live CD would be somewhat more complete than what's currently in experimental, but unfortunately, KDE wouldn't even start for me :-/ (Admittedly, I didn't fool around with it very long, so maybe it might have worked with some magic word.

Steve Kemp: Your trumpet's blowing for far too long,

So I run a blog. You might have read bits of it in passing, probably more due to syndication than actual desire. Initially I started off using Wordpress, but that was later purged once I bit the bullet and decided I'd rather be blogless than install PHP upon any server I cared about. To replace my blog I looked for different solutions and eventually decided to try something built upon Ruby (on Rails). That lead to me trying Typo. After a little bit of pain I decided this wasn't a great solution. So in the hunt for something new I moved to Mephisto, but over the past few months I've noticed that my virtual machine has been running low on memory - and the culprit has always been the Mongrel isntance which was running the blog. So once more into the breach. This time I had a new plan. I'd actually use a piece of blog software which I wrote for a couple more sites, a static system which outputs RSS & HTML files - with no dynamic-fu at all. That system is the chronicle blog compiler. In performing the migration I accidentally flooded a couple of Planet-Planet installations. It took me a moment to work out why, and that was because my RSS feeds didn't include valid "pubDate" files for the entries.. So now I've made a new release of chronicle which supports valid RSS feeds, as tested against the feed validator and all is well. Well almost. Users no longer have access to post comments, and whilst I've successfully migrated 700+ entries through to four different blogging engines I've managed to lost most (all) comments along the way at different points in time which is a real shame. In the future I'll setup a simple CGI system to write comments to text files, and then allow them to rsync'd and merged into the entries. I just don't have the concentration to manage that right now. In the meantime hello to Planet Sysadmin - never heard of you before, but thanks for carrying my feed. I'm suprised I qualify, but I guess at the very least I'm spreading interesting lyrics... (Remind me to post the mod_rewrite rules I'm using now; I've kept all links at the same location through successive blog migrations which means I have numerous mod_rewrite rules which are probably obsolete, but I just don't want to touch them because cool URIs don't change....)

Wouter Verhelst: Hardware sucks, but their manufacturers too.

A while back, I needed to do something with a mainboard made by Intel. The mainboard doesn't have a PS/2 connector; so I had to use a USB keyboard. In itself, this is horrible; USB is an incredibly bad interface to connect a keyboard to, IMO. But, well, sometimes the decision isn't yours, you know. Bad Intel. Given my above-stated opinion on USB, I guess it's not surprising that I don't have a USB keyboard; I don't believe in them. But, well, a mainboard without a PS/2 connector doesn't suddenly get one because I look at it, so I went to a nearby computer shop with the intention to buy me a keyboard. While it's bad enough that I had to get me a USB keyboard, they managed to make things worse. The particular model that I'd bought is broken in ... well, let me count the ways.
  1. Blue LEDs are annoying. Yes, a keyboard needs LEDs to show that num lock (etc) are enabled, but a yellow LED works too, and is far less flashy or distracting.
  2. A "Fn" key is nice if you want to overload keys on your keyboard. However, if there is not a single key on your keyboard that is overloaded using the Fn key, then you're silly.
  3. The particular model used a "condensed" layout, rather than the standard 105-key be azerty layout. I'm used to the standard 105-key keyboard layout, and having to type on one that is different is no fun. When I mentioned this to the salesguy, he told me that I'd "get used to this pretty quickly". Well, perhaps if that were my only keyboard. But I also have my home desktop (standard 105-key layout), my laptop (apple azerty laptop layout), some m68k macs (mac azerty 105-key layout), and some more; then, it doesn't get so easy.
  4. They keys on the keyboard were flat as on a laptop keyboard, rather than thick as on a desktop. This makes it harder to disassemble when it gets dirty, with the risk of breaking it (I've had to have my laptop's keyboard replaced when I broke it by disassembling it because the keys started to get stuck and I wanted to clean it...)
Now obviously it's possible to fix most of these issues by simply buying a decent keyboard—except that the shops that I went to simply don't have a decent keyboard anymore these days. At least this one still had 105 keys; for reasons that totally escape me, some keyboard manufacturers today seem to think it's a good idea to drop the insert key on their keyboards. WTF? People just don't make decent quality keyboards anymore these days... Bad hardware manufacturers. Bad, bad, bad!

Simon Richter: This is delicious crack

The main project I'm currently working on for money is a device driver for an actual bit of hardware. Since people working on Windows are slightly more used to the idea that money is exchanged for goods and services, this is the primary target platform. After dealing with all the interesting bits concerning development on this platform, I now have a .sys, a .inf, a .dll and a .xsl to install. The DLL was easy, Windows Installer has special handling for COM DLLs; the XSL file was a bit tricky since it needs to be placed in a "special" directory that will be phased out before Longhorn (the documentation is that old...), and I'm completely lost on the other two as the Installer does not know about the special registration system for drivers at all. At this point, I started entering the rabbit hole.

10 December 2007

Steve Kemp: to let the insects in

My migration to mercurial is now complete. I've completed the last step, which was the migration of all the $foo-commits mailing lists. It is at times like this that I remember two things: Right now I'm using ecartis for my mailing lists, primarily because it isn't mailman. (Long story). For making archives of mbox files I'm using hypermail. The latter I intend to change as soon as I can find something else to use. It isn't attractive, but it is in the Debian archive and seems reliable. Since I was changing things around already I've centralised the list-archive making, and started using the haschanged tool to avoid rebuilding the archives i there are no new posts. That works nicely.

Steve Kemp: We are the champions my friend

My tool to query apache logfiles via SQL seems suprisingly popular. Just as a recap the process goes like this: Now it is possible to save and load the SQLite database, so that you don't need to reparse the apache logs each time, that gives a nice speed increase for non-changing files. By tonight I'll have aliases working for queries so you can bookmark them:
alias refers SELECT distinct(referer) FROM logs
Then in the future the 'refers' command will be available and will run the named query. Neat. Now that I'm comfortable with SQL queries it just seems so natural, easy, and right to query logfiles this way. I guess that makes me strange.

Steve Kemp: Find me somebody to love

Debian Admin
It looks like the fine DebianAdmin.com site is at it agian: Word-for-word copyright infringement by the user "admin". See the other cisco articles for more infringements. (OK I'm still bitter their site is pimped all over the place, including wiki.debian.org, and their name is confusingly similar to my sites...)
Apache SQL
After yesterdays frustrations with SQL::YASP I moved to parsing logfiles to an temporary SQLite database. I now have a tool which you may use to load an arbitary number of Apache logfiles to, and query via SQL. It looks something like this:
asql> load /var/log/apache2/acc*
Creating tables
Loading: /var/log/apache2/access.log
Loading: /var/log/apache2/access.log.1
asql>   SELECT referer,COUNT(referer) AS number from logs GROUP BY referer ORDER BY number DESC,referer
- 4807
http://localhost/stats/ 2
http://foo.ocm/stats/ 2
asql>
Very useful :) A Debian package is available if you're interested in testing / using it, as is a mercurial repository. The package now stands at 0.4 and is essentially done. It has tab completion on filenames and does enough for me. It might be nice to allow it to auto-read certain files on startup, or persist the database but I'll not bother unless people ask for it.

Steve Kemp: All the time anywhere

Thanks for the comments/mails on my previous post. I've now started the migration properly. All code currently held upon cvsrepository.org will be moved to http://repository.steve.org.uk/ - a nice system-agnostic name. So far I've only setup the pages for two project (my dotfiles and ~/bin) but I'm happy with the process, and the naming scheme appears sane to me now. Using sub-domains I need only install one CGI which is a big win, and using a simple set of templates + mod_rewrite all projects get the same look and feel. I've still got to tweak the stylesheet a little, but otherwise I'm happy with things. I can host both public and private repositories, and that all works magically. Of course the huge win is no longer needing to run a pserver for CVS! All future checkouts will be via HTTP, and the rare few people with commit access will be able to do so over SSH. Once things have been migrated I'll cause the cvsrepository names to redirect to the new locations, and keep that up until the domain expires as a transition period. (I think +1 year :)) The other job for the weekend is releasing a fixed security update for Samba, to fix the regressions.... That is in hand, but the buildds are being slow. If they're not all done I'll release it anyway today/tomorrow. I'm annoyed that I handled the timing so badly, but I hope that people don't hate me for it.

Steve Kemp: to let the insects in

My migration to mercurial is now complete. I've completed the last step, which was the migration of all the $foo-commits mailing lists. It is at times like this that I remember two things: Right now I'm using ecartis for my mailing lists, primarily because it isn't mailman. (Long story). For making archives of mbox files I'm using hypermail. The latter I intend to change as soon as I can find something else to use. It isn't attractive, but it is in the Debian archive and seems reliable. Since I was changing things around already I've centralised the list-archive making, and started using the haschanged tool to avoid rebuilding the archives i there are no new posts. That works nicely.

Next.

Previous.