Certifiable Linux Professional

My LPI exam results came on Thursday, but I only just read the email…

Score Report for Exam 101

Your Score: 660
Required Passing Score: 500
Status: Pass

Test Section Information
Percent Correct Section
 71%            Hardware  Architecture
 78%             Linux Installation & Package Management
 95%            GNU & Unix Commands
100%            Devices, Linux Filesystems, Filesystem Hierarchy Standard
 75%            The X Window System
Score Report for Exam 102

Your Score: 690
Required Passing Score: 500
Status: Pass

Test Section Information
Percent Correct Section
100%            Kernel
 75%            Boot, Initialization, Shutdown and Runlevels
100%            Printing
100%            Documentation
100%            Shells, Scripting, Programming and Compiling
 66%            Administrative Tasks
100%            Networking Fundamentals
 94%            Networking Services
 83%            Security

Given my intense need to know just how much cleverer I am than those around me, I went to the LPI website to find out just what the LPI scores mean. It turns out that they’re scaled to give a mean of 480 and a standard deviation of 100.

If you’re not familiar with standard deviation, Wikipedia to the rescue: Standard Deviation

This means that passing should be just under 50%. However, their stats say that the pass-rate was about 64% up to 2003, and the recent stats say they’ve given 100k exams and have 32k certified LPIC-1’s — you need two exam passes to be an LPIC-1. Well, I guess at least they’re consistent over the years…

More importantly, this means that my 101 result puts me at the middle-high end of the 84.1 — 97.7% block (1σ-2σ) and my 102 result puts me at the low end of the 97.7% — 99.8% block (2σ-3σ). Which means a score between 780 and 860 is top-0.2%, for those playing along at home.

I’m quite pleased, given they only took me around 20 minutes each. ^_^

So how am I spending my weekend? Installing Visual Studio for a development project I’ve won. >_<

I also recently discovered a new prime number generation algorithm. Ask a client to submit all their new artwork for their website. Some portion of it will need scaling down. And some portion of that will have a dimension that is prime. O_O

Edit: Fix image


Things to do in your loungeroom when you're broke

Meh. There’s another weekend spent doing very little. And for a change, this didn’t involve me spending any time either playing video games, or on IRC.

I took a troll through Planet Linux Australia (and also remembered to submit my blog there again…) and came up with the following links, for your eddification and mine:

So what else have I been doing? Well, I played with Google Maps until I identifed my current home, and the CBIT offices, although the latter’s photo is slightly old now, as there’s a sort of overhang thing over the entrance now.

I finished Every Which Way But Dead by Kim Harrison. Happily, the next book in the series is due out in June… Although lord knows how long it’ll take to get here. I also this week finished The Shining City by Kate Forsyth. Sequel also due mid-year, and she’s Australian so I am more hopeful of seeing it before next summer… I prolly should go to one of those ‘enter my books’ sites and record for posterity just how many books I’ve spent my rent-money on.

Speaking of rent-money, I’m at the broke end of the week, so went last night and spent $32 on food until Wednesday. This covered four pot-noodles, five microwave paster dinners, and five bottles of Caffiene-Free Diet Coke. Also some lollies, to cover sugar-cravings. Mind you, I haven’t eaten yet today… Hmm, I’d better do that soon.

Of course, you can’t waste a weekend if you have no plans. And this weekend, I was supposed to finish the new CBIT Internet Customer Administration interface… It’s neat, and AJAXified (using the very neat xajax PHP-based setup) and the only thing I did on this this weekend was fix a problem I was having with Internet Explorer 6 on Windows. I couldn’t do this at work, because I’m developing under Linux on my PowerBook.

OK, I guess that’s not all I did. I spent a few hours screwing with wine, trying trying get IE6 going under Win2K-mode (partly for the AJAX stuff, partly so I could run QuickBooks). I’ve gotten IE6 installed, but it seems to barf when making the AJAX calls, not to mention needing to be Ctrl-C’d when presenting a username/password box.

In the end, I grabbed the IEs 4 Linux script, which installed IE6 in it’s own WINEPREFIX, like a charm. I’m well pleased with it. ^_^

I’m also gonna grab Opera to test the site against. Happily, not only do they have an Apt repository, they’ve also got a public beta program which includes Linux-PPC support. ^_^ This is really how commercial, closed-source software should be addressing the Linux community.

Also, Opera for Nintendo DS. I mean, like, wow.

Also wow, ABC’s podcasts. I wonder if they’ll do video podcasting soon? Not that I’m watching or listening to any podcasts, but…

I also wasted a few hours this weekend watching the latest episodes of TV shows from the US. Thinking about it, I watch: Battlestar Galactica, Boston Legal and House MD. I also watch Dr Who and Tripping The Rift when it’s on… I know that Apple now sells TV episodes over their iPod store, and so I feel like I should be paying something to watch these shows, but I dunno what they’re charging. I’d happily pay 50c per episode. I dunno if I’d pay more than that, though. Maybe if I had a better viewing setup, or planned on keeping the files and watching them again…

I also watched the Casanova BBC Miniseries last weekend. It was really really really good. ^_^ I was kinda iffy about the Heath Ledger movie, but Margaret and David thought it was leave-your-brain-at-the-door funny, and I’m now willing to give it a burl.

Hmm. I wish I was a large software corporation, so I could go try and do what Loki failed to do, but instead of buying the license and selling the game, I’d contract to the publishing houses to port the game for them, kind of like how many Mac-ported games seem to be done. I _really_ want to play GuildWars, but it doesn’t yet work in wine, and don’t want to reboot to Windows to do so. I _might_ give a burl to this partial success report for GuldWars on Wine…

And fun as Battle for Wesnoth is, I’m awful at it.

Quantum::Entaglement, the dream that perl is made of

Still on a bit of a Perl6 high from LCA06, I went looking for something to apply Quantum::Superpositions to. I think I’ve blogged about these before, and the fact that they’re in Perl 6 (as “Junctions“). Today I was looking for a use for them, and realise that the Sudoku booklet I was holding was perfect.

Upon actually reading the CPAN entry for Quantum::Superpositions, I realised that it wasn’t actually what I wanted. Luckily, Quantum::Entanglement also showed up when I searched CPAN for “Quantum”. Quantum::Entanglement is what I want.

The idea of Quantum::Entanglement is that you create an entanglement, which has a certain probability of being in a particular state, and a probability of 1 of being in _a_ state. You then operate upon this, and it collapses as appropriate when you actually learn something about it, producing either a result or more entanglements. I’d read the page for more information. And in fact, that’s what I did.

Sudoku on the other hand, is apparently sweeping the world by storm. It’s basically a 9×9 grid, in which you must places digits 1-9 such that each digit appears once in each row, column and each of 9 3×3 disjoint squares. You are given a couple of numbers to start, and then it’s off. If there was ever a candidate for quantum computing quite as good, I can’t imagine what it is. (OK, I can imagine. Breaking cryptography that relies on large primes…)

So the code looks like this:

#! /usr/bin/perl

use strict;
use Quantum::Entanglement;

my $easy = [
[ 0,9,0, 5,2,4, 6,0,0 ],
[ 0,0,0, 0,0,0, 0,5,4 ],
[ 0,0,0, 0,0,3, 0,7,2 ],

[ 0,6,7, 0,0,5, 0,0,0 ],
[ 3,0,4, 7,1,8, 5,9,6 ],
[ 0,0,0, 2,0,0, 3,8,0 ],

[ 5,7,0, 4,0,0, 0,0,0 ],
[ 6,1,0, 0,0,0, 0,0,0 ],
[ 0,0,2, 3,9,7, 0,6,0 ]

# Build a board of quantum entanglements.
my $board;

for my $i (0 .. 8) {
for my $j (0 .. 8) {
$board->[$i][$j] =
entangle(1=>1, 1=>2, 1=>3, 1=>4, 1=>5, 1=>6, 1=>7, 1=>8, 1=>9);
print “Initial: ($i,$j) => “,$board->[$i][$j]->show_states();

# Now entangle the variables together, without collapsing any values

for my $i (0 .. 8) {
for my $j (0 .. 7) {
for my $k (($j+1) .. 8) {
print “($i,$j) != Row ($i,$k)\n”;
p_op $board->[$i][$j], ‘!=’, $board->[$i][$k];
print “($j,$i) != Col ($k,$i)\n”;
p_op $board->[$j][$i], ‘!=’, $board->[$k][$i];
# We don’t need to entangle again a cell that is
# both in the square and shares a row or column
unless ($i-$i%3 + int($j/3) == $i-$i%3 + int($k/3)
or ($i%3)*3 + $j%3 == ($i%3)*3 + $k%3) {
printf “(%d,%d) != Sqr (%d,%d)\n”, $i-$i%3 + int($j/3),
($i%3)*3 + $j%3, $i-$i%3 + int($k/3), ($i%3)*3 + $k%3;
p_op $board->[$i-$i%3 + int($j/3)][($i%3)*3 + $j%3], ‘!=’,
$board->[$i-$i%3 + int($k/3)][($i%3)*3 + $k%3];
# print $board->[$i][$j]->show_states(),”\n”;

for my $i (0 .. 8) {
for my $j (0 .. 8) {
if ($easy->[$i][$j] != 0) {
p_op $board->[$i][$j], ‘==’, $easy->[$i][$j];

# Turn on try-for-truth mode

$Quantum::Entanglement::conform = 1;

# At this point, printing any value from the array should
# collapse the entire entanglement.

for my $i (0 .. 8) {
for my $j (0 .. 8) {
print ” “,$board->[$i][$j];
print “\n”;

And how does it work? I have absolutely no idea. My computer has 512Mb of physical RAM, which is filled within the first five p_ops. The sixth takes it to a gigabyte, and suddenly kswapd0 is doing more work than perl…

I asked on #perl, and was told that Quantum::Entanglement (and Quantum::Superpositions) are crap. >_< So I guess this will remain a thought experiment, unless someone has either a Quantum computer lying around, or a machine with multi-mega-petabytes of RAM…

The reason the RAM usage climbs so high is that entangling two things with 9 states produces 72 possible global states (every combination of 1-9 and 1-9 except equality). Each cell added to this entanglement of the first cell is another 8, so the entire entanglement of the first cell (ie the entire $k loop has run) is 9 * 8^20 or 10376293541461622784 states. That’s 10×10^18 states. Each successive cell actually removes from consideration some of the earlier states, but the multicative effect completely hides that. Which is good news for people relying on GPG to protect their data. ^_^

Of course, now I’m going to be looking for something practical I can do with Quantum::Entanglement.

For reference, this is puzzle #1 from Lovatts Super Sudoku issue 8, which I actually fell asleep doing on the plane to LCA06, due to the tonsilitis, Panedine, Strepsils, penicilin and 28 hours (including three of highway driving) of continual awakeness preceeding it.

Oh, and apt-get install libquantum-entanglement-perl is the super-final-ultimate-killer proof that Debian is the only way to Linux. ^_^

One conference to bring them all and in the summer bind them: LCA End of Days

My final LCA06 report from the land of Dunedin, where the shadows lie. Although I’m here until Monday, I doubt my Internet will be working for much longer.

Started the morning at the usual time, which gave me an extra hour of bumming around (reading my LPI book…) before the (10am) keynote of the day.

And what a keynote it was. Mark Shuttleworth (The Ubuntu guy for those who’re playing along at home) gave a presentation about how collaboration works in successful projects, how it doesn’t work in unsuccessful projects, how to get projects to cooperate with each other, and how to get localisation from people who aren’t programmers. And he packed it in hard, leaving a fairly long period for questions. There were of course a few fairly long questions asked, so this was all for the best.

Amongst Mark’s major points were that the barriers to entry for things like bug tracking systems and translations are too high. Anything that isn’t debbugs needs you to register to post a bug, and you lose 50-70% of hits at that stage. Translation systems that aren’t Gnome currently require you to email around .po files, requiring the translator to edit them in plain text, and some even muck about with more esoteric tools. Gnome provides a neat program, and apparently so does KDE, to handle all that for you.

Mark’s other major point was that distributed revision control systems will turn the language of development from mailling lists to patches. A question from the audience pointed out that mailling-list review of patches (eg. linux-kernel mailling list, and we do this on FreeRADIUS-devel too) would probably suffer if people were just branching things, working on them, and then pushing them back upstream… It’s an interesting puzzle, but between this and the translations stuff, I’m the closest I’ve ever been to looking at contributing to Ubuntu… Scary.

For the one scheduled session of the day I went to a talk from Matthew Garrett about projects dealing with the loss of maintainers or pvioltal people, and how they can deal with it. I can relate, since I am both a sucker (I was kind-of the FreeRADIUS 1.0.0 Release Manager), and soon after moved, changed jobs, and basically stopped posting to (but kept reading what I could of) the FreeRADIUS-devel mailing list. I’ve been lucky that FreeRADIUS is a good, stable package, and so I don’t think my long periods of inattention have caused the Debian package to suffer.

After the barbecue lunch and ceremonial shaving of the luminaries (including Rusty’s moustache!), I attended one of the best-of session, about The RepRap, an attempt to produce a low-cost von Neumann Universal Constructor. And not only is this cool as heck stuff, it was heartwarning to see a geek from a different field, and know that much as our interests diverge, we are united in geekness.

It was also good to see that there are good jobs for geeks, doing geeky things for the betterment of humanity. Especially when one of those things is building the world’s largest nanobot.

At afternoon tea, I scored some Ubuntu 5.10 i386 CD sets, which I think I’ll take back to work and put on a desk with “Free! Try Linux without risking your data.” sign on it or something.

This reminded me that I haven’t checked WhirlPool in a week and a half, and I haven’t yet picked up Omiyage… Still, I will have tomorrow and Monday morning to do so…

Also sitting around the link, reminded again to try WorldForge and Thousand Parsec… Also to find the mesa 6.4 packages and see if the r300 driver’s been updated.

And a note about Blender that slipped my mind for yesterday… It’s awful without a mouse. In fact, a two-button mouse would be pretty awful, but shift-F11-touchpad is particularly not an easy thing to do with only two hands.

Went to the panel discussion, which was largely focussed on patents, trademarks, and how best to promote linux onto both desktops and SMEs.

Finally, was the conference close, where prizes were awarded for the programs for drawing the raffle, then the raffle was drawn, and during demonstrations of some of the other programs submitted, my ticket was drawn. >_<. Although I dunno if I really wanted one of the shirts, it looked like someone’d scribbled all over it, and it’d need some heavy-duty washing…

The total money raised for the John Lyons Chair was just over AU$48k, which is a sterline effort. We also raised NZ$1800 or so from the raffle for the NZ version of Kid’s Help line, which is an excellent cause. Hack fest winners were announced, much thanking of those who have sacrificed so much to get this going, including Mike Beattie’s second standing ovation (The only presenter I saw get a standing ovation was Van Jacobsen), which was well deserved.

Mike mentioned afterwards that the photoblog prize had been completely forgotten, so hopefully they’ll judge it anyway, and we’ll have something pretty to look at on the CD. There’s also supposed to be a written-blog prize, but I suspect my abuse of the “Excerpts” box may count against me. Unless the judges share my sense of humour. ^_^

I must say I have had an absolutly brilliant time. I’ve been rushed off my feet, exhausted, tired, I sat my second LPI exam tonight without having read the last three chapters of the Exam Cram book (It still only took twenty-two minutes by the wall clock… I hope I passed!) and on top of all that I’ve been coughy and snuffly when I wasn’t writing in pain from my throat. And I’d do the whole thing again at the drop of a hat. Or preferably a spiral.

Of course, like anime.au (with which I’ve been involved on the other side a couple of times, but which is only one day, rather than six) these things take so much time and effort to prepare, that managing one every year is quite impressive, even though it’s a new team each year. It’s been suggested that 2008’s LCA location be selected more than twelve months out to give them more time to prepare, but for me, my eyes are firmly fixed on LCA07, Sydney. (Their site’s not up yet as of this writing, but yesterday it wasn’t even in DNS. ^_^)

Unless I’m in Japan, of course. I was actually looking around yesterday afternoon in the link, at all these people, these luminaries of my industry and my passion, and wondering if Japan is the right choice… I mean, there’s CBIT now, and I’d hate to leave that. But it’s not what I want to do… And there’s the other project I may have mentioned, which I will be having a meeting about next week, with luck… And yet, having come this far, how can I not go further? Maybe I should be searching harder for Open-Source jobs in Japan, and combine my interests. Sure, I love teaching, and I love teaching languages… But it’s so scary!

I guess it comes down to Feel the fear and do it anyway. And I suspect if I do get to go on JET, as long as I have an Internet connection, I’ll be able to spend more time on my hobbies than I do now. Or maybe not.

A final thought on LCA06… I hope everyone realised the sense of humour it must have take to aware LCA06 to a New Zealand team… ^_^

Passing a penguin through the eye of a needle: LCA Presentations Day 2

Due to spending most of the day off wireless while I tried to get dscape working, today gets one LCA post… Which is a shame, because it was a spectacular day.

Damian Conway’s 14 lessons from the Perl 6 development process was of course both incisive and entertaining. The Perl6 design process has taken about six years so far, and is in fact almost complete, as has been previously reported.

The first presentation of the morning was a Blender tutorial, scheduled only late on Thursday night. It was interestined, but sadly the r300 driver had a few display issues, and having a more recent version of Blender (2.40) than the presenter (2.37) meant that I ended up with a very large and blocky gingerbread man…

Xen on POWER was next.

It started with an overview of Xen, particularly the problems it faces and the solutions it has chosen.

He then discussed the various current Power chips. Power 970 w/Hypervisor Extensions is the current target.

The Hypervison Extensions are: an IOMMU (Like an MMU for IO), a Hypervisor privilige level above the kernle privilige level, real-mode (MMU-less, used for exceptions) base+limit registers: keeps domains locked in their memory even in real mode while allowing direct-to-domain exception delivery.

The PPC Linux port supports wide hardware types, so many hardware interfaces (eg. interrupt controller) were already function pointers filled in by subarch-specific code. Other areas already supported PHYP (IBM’s Hypervisor) so port was generally easy

Currently can boot Dom0, DomU boots (with caveats). One binary runs PHYP, dom0, domU, direct to hardware thanks to OpenFirmware.

Still to be done: SMP, domU timekeeping, grant tables (Xen shared memory method), virtual IO, domain memory outside realmode area.

The main bottleneck to their work is Xen management tools portability… They rely on a hypervisor/userspace translation that i386 gets for free, but for PowerPC is very expensive without the MMU (eg. in Real mode, where the hypervisor runs…)

Long-range plans are: SMP, 970MP, live migration, non-hypervisor mode 970, cell CPU and the non-hypervisor mode 32-bit PPC (eg. my PowerBook, and my G4 tower. ^_^)

Lunch: Finally had time to write down the crashdump from the dscape modules on my PowerBook… On actual paper. It just fit in the blank column on the schedule sheets floating around. Jelmer sacrified his for my cause. ^_^

Avahi: mDNSSD. Interesting project, but it sounds like it wouldn’t be particularly helpful for wider-area service discovery (the multicast is only sent with a TTL of 1, seems kind of like Bluetooth for a LAN, based on the link-local IP address range). On the other hand, the program itself is very well done, and it’s IPv6-enabled. I’ll have to give this some further thought before I can see how to apply it. (In the enterprise world, DNS SRV and Kerberos/Active Directory are prolly better solutions anyway. This would make a network like Fenner Hall’s quite fun…). On the gripping hand, I saw a bug in one of the files he pulled up. I’m miscredited, but it’s close, and I have lots of witnesses. ^_^

Van Jacobsen: Wow. I guess it’s one of those things that just stares you in the face… The immediate upshot is I have to go whack irqbalance from all my SMP servers. The longer term upshot, if this sort of thing gets pushed successfully into Linux, is deleriously high-speed low-CPU networking… I wonder if Van Jaconbsen can drop the CPU usage of timidity like that?

I implemented a lockless ringbuffer into one of the projects I did for TransACT which has not to my knowledge seen the light of day yet. I’m glad to know that it was a good thing. I wish I’d had more time to look at Van’s code for that. I’ve prolly got a model version in a textbook at home, anyway.

Rasmus VS The Internet: Some very good advice from Rasmus regarding Internet security. It boiled down to “Don’t trust user input” which is really just as true for non-Internet applications… He also look at opcode caching briefly, and I linked to APC for his last presentation.

Rasmus took the opportunity to perform cross-site scripting attacks on sites provided by the audience, to the delight of said audience. Man, I’m alomst tempted to go back into Web Programming… almost

Perl BOF: Paul Fenwick gave a quick blurb about PerlNet, designed to be an AUS/NZ Perl community portal. Definately a project to watch, although it’s under CC-BY-SA-2.0-AU, which is a problem for code. I have to pull up the Debian discussion of this for Paul ASAP, so we can get it changed… For that matter, I need to reread the Artistic License. Sam Vilain gave a quick presentation forging on from Damian’s keynote (I ended up chatting briefly to Sam’s boss from Wellington at the dinner) and then Damian Conway demonstrated some of his favorite cool toys from CPAN.).

Interestingly, Creative Commons have put up plain-language versions of not just the license as used by perl.net.au but also plan-language versions of the GPL and the LGPL. This should make my argument easier to make… I wonder if they have one of the Artistic license…

In fact, a little light reading raises a question… The CC says that the SA term specifically applies to derivative works… I need to check the legalese to determine what applies to exact and direct copies… Not that it’s relative here. Taking anything from the site is a derivative work. I guess I need to talk to Paul further and see exactly what he’s trying to achieve… The important point is that any code on the site needs to be free enough to take into a GPLd or Artistic Licensed program, but both the GPL and Artistic License seem to be bound up in the code… Maybe a three-way disjoint license on the site, CC-BY-SA/GPL/Artistic. So you can make derivative works of the site under either CC-BY-SA (which means you must attribute and license it under CC-BY-SA), GPL (The aggregate must be under the GPL so everything must be GPL or looser) or the Artistic License (Roughly, if you change this apart from public- or the author-source changes, you either distribute it to the general public, only use it privately, or mark clearly what you’ve changed… Erk. Bad bad bad for a website.) And just to make things funner, one of the Perl6 RFC responses was the Artistic License 2.0. Something else I need to look up.

Penguin Dinner: Food was fine. Auction was entertaining. They ended up selling the Ian Ross signed book (link this!) for $10k, Linux Australia matches that with $10k, and USENIX matches _that_ for another $20k. The overall total needed is $500k, so I think we did our part. And the book was won by UNSW students and former students, so will be on display at UNSW next year at LCA07.

Damn, Keitarou’s down. No IRC for me, although I could drop irssi onto my laptop temporarily… Also no email until I get back home on Tuesday.

A late-2005 Perl6 release timeline which is still give-or-take valid Sam’s presentation at the Perl BOF had this in one corner, but HTML betrayed him and made it too small to see.

It is easier for a camel to pass through the eye of a needle than to finish Perl 6 In case you were wondering about the post title; also from Sam’s presentation

Edit: Actually link to previous post, rather than leaving myself a note saying “Link to previous post”…

IPv6 uptake suffers, 802.11g on the rise (and fall, about 2.4 thousand million times per second)

Well, the good news is that I got my wireless working with the latest dscape stack…

Up until now, any dscape stack more recent than the 060102 drop would bug when bcm43xx tried to send a packet. The stacktrace looked something like this:

Vector: 300 pc=e2157440: iee80211_master_start_xmit + 0x6c/0x4bc [80211]
            lr=e2157400: iee80211_master_start_xmit + 0x2c/0x4bc [80211]
msr 9032 sp df853d70 [df853cc0] dar -08 dsisr = 40000000
current=c1a8f240 pid = 1365 comm=udevd
[df853ab4] 00000008
[df853ab4] c01c449c qdisc_reestrt +0x100/0x1f0
[df853ab4] c01b2ddc dev_queue_xmit +0x160/0x2b0
[df853ab4] e27da328 mld_sendpack +0x2d4/0x3ec [ipv6]
[df853ab4] e27daa74 mld_ifc_timer_expire +0x21c/0x278 [ipv6]
[df853ab4] c0033507 run_timer_softirq +0x14c/0x1d0
[df853ab4] c002ea50 __do_softirq +0x68/0xf4
[df853ab4] c002eb24 do_softirq +0x48/0x60
[df853ab4] c00068dc timer_interrupt +0x1e0/0x1f4
[df853ab4] c0004584 ret_from_excet +0x0/0x1c
exception 901 [df853ab4] fedb9f0
[df853ab4] 1002000
[df853ab4] 10004474
[df853ab4] 0fe848ac
[df853ab4] 0fe849f4
[df853ab4] 00000000

Anyway, today I decided to actually track this down. Must be all the PowerPC presentations I keep going to…

First try was that low-hanging fruit, Ipv6. It gets dragged in somewhere during the boot process, despite not being listed in /etc/modules. Luckily, the easy solution is the rename the module, so modprobe can’t find it. ^_^

And lo and behold, the dang thing worked!

So I finished off the dscape-based packages I based on rene’s softmac-based packages and uploaded it to http://www.tbble.net/dscape/

So LCA report for today will be late, since I’m currently at the Perl BOF and will have to dash off to the Penguin Dinner after.

The PowerPC and the PHPassion: LCA Presentations Day 1 Afternoon

Lunch: Spent so much time editing the morning’s post, didn’t get to eat, and then went to two wrong theatres and missed the start of the 32/64 comparison with x86 and Power by Olof Johansson. And they were out of pies so I bought sushi instead…

The 32/64 bit presentation was interesting. I’d seen discussion on Debian-Devel along the lines that PPC64 is slower than PPC, and therefore a pure 64-bit Debian port (ala. AMD64 port) was a poor idea (as opposed to AMD64). Olof presented benchmarks (which supported this) as well as a discussion of the way the both x86 and PPC’s ABI’s differ between 32 and 64 bits. It seems that the PPC64 ABI has actually added more overhead to function calls, and hasn’t taken advantage of an ABI change to improve existing issues, while x86_64 has actually used the ABI change to make more use of CPU registers to improve function calls significantly.

An audience member mentioned that newer toolchains than those tested use a different function-call structure or something and should be more efficient. So maybe PPC64’s problems aren’t insurmountable. Mind you, PPC64 does seem to be mainly targetted at specific applications, rather than overall system support ala x86_64… I wonder how MacOS X on G5 does it? I presume its a 32-bit userland from this…

Following on neatly there’s a PPC presentation on next from Paul Mackerras… I wonder if this issue will be addressed then too?

Either way, it was a quick session, and happily I was _just_ able to follow the stuff that was going on and the following audience discussion… ^_^

And the short session meant I got to eat my sushi before the next presentation

Paul Mackerras (Paulus)’s presentation on Recent Developments in PowerPC

Merging 32-bit ppc and 64-bit ppc64 architectures in the Linux kernel: Lots of duplicate code, ensures both architectures benefit from features, cleanups, bugfixes and drivers etc. So instead, there’s one architecture powerpc which is now the default arch.

This explains why recently building kernel modules on my PowerBook G4 failed, unless I prefixed the make with ARCH=ppc… >_< I noticed rene’s bcm43xx packages did the same thing in debian/rules, so it’s not just me.

Interestingly, Paul said that powermacs are no longer supported in ARCH=ppc as of 10th January. So 2.6.16 I guess…

It’s been a fairly fast project, having been agreed to last July, first hit the tree on 29th August, and by 19th November the PPC64 stuff was completely gone.

During a question from Dave Miller about the PPC handing of OpenFirmware VS Sparc64’s handling I was passed a card to sign for Paul Mackerras’s birthday. I can’t imagine how the people sitting directly in front of him signed it without him seeing…

Further discussion of memory layouts (64kb hardware page support means lots and lots of addressable memory!) followed by a quick round of Happy Birthday rounded out the rather technical session nicely.

I spent the interlude before the PHP5 presentation (ie while everyone else was off getting afternoon tea) finishing the morning’s posting, and jealously guarding my powerpoint.

Rasmus Lerdorfs’s PHP5 talk was quite technical, fast and codery in nature, so I’ll just be noting the cool points I wasn’t previously aware of. The version posted on his site right now is slightly older (marked 2006-01-25) than the one he’s displaying on the screen (marked 2006-01-26).

PHP’s main aspects: Fail Fast, Fail Cheap, Be Lazy. The greatest efficiencies come from solving problems you will never have.

Rasmus said that PHP has the unix philosophy of solving one small problem and solving it well. It’s not a framework, or the complete solution, but it does what it does very well.

AJAX makes this even better because the layout stuff gets moved to the local browser side, meaning that PHP only really needs to serve up the data in a format like JSON or XML, and the client-side UI code is actually run on the client site.

AJAX appears (now that I’ve seen it on the code-side) to simply be javascript in the web browser sending requests to the server with updates and whatnot and dynamically changing the UI without refreshing the entire page. This is good stuff, and I probably would have understood it earlier if I had actually listened to anyone whom I’d talked to about it before now. I wonder if we’ll be talking about this at the Perl BOF tomorrow…

I now also know what MVC means, and why it’s not actually sensible for web applications. But we use AJAX to do something similar, seperating presentation and data (oooh, like XHTML!).

Oooh! A very very useful thing in PHP is the <<< construct. Like the << shell function, and it expands PHP variables that appear inline.

Coming soon from Yahoo!, some kind of useful library thing for AJAX and stuff. ^_^

Hmm. JSON is apparently a Javascript self-extracting object. Neat. And I didn’t even know Javascript had an eval() function…

Man, the CBIT Internet customer manager interface is gonna be sooo cool when I’m done with it. ^_^

PDO is a new PECL extension for PHP5, and part of PHP5.1 which looks a lot like Perl’s DBI. It lets you bind parameters which will also save a whackload of crappy coding on my part… Mind you, I didn’t use the binding stuff in Perl5, but I should be doing so.

Things in PHP5 that make it good for AJAX stuff: XML uses libxml2 and dom now. This gets us XPath and XSL… and SimpleXML! This gives a PHP native object from the XML file….

item as $it)
echo "link}'>{$it->title} {$it->description}

Huzzah. Two instruction RSS aggregator… I can’t imagine why Planet takes so much code… ^_^

And with the demonstration of http://buzz.progphp.com/ and unsafe search (I wasn’t quick enough on the URL, and the only thing Google will find is an old version of it, Rasmus’s one had images. Images!) it was obvious that this is the future of the web.


Boy’ve I’ve been looking for a place to use that last one. I can’t find the website I saw it on, but as soon as I saw it, I know I had to write it somewhere. ^_^

And then just to finish off (and whet our appetites for tomorrow’s “Fast and Secure websites” presentation) Rasmus pointed us to APC, a PHP Opcode Cache which Yahoo! is happily running on their servers. One server he pulled up has taken 87 million hits in the past few hours, with 20k cache misses. O_O

And then there’s the XHTML problem which I really need to sit down and unblithe my pages about…

BOFs… VoIP. I visited PowerPC, but on consideration this one’s actually more important to me.

VoIP BOF links for my own reference: MacOS X softphone, Platronics nice USB headset which can be bought from Harris Technology.

Interesting things pulled off Planet LCA2006: Gumstix – Small, small small computers; CryoPID – Freezes processes so they can be migrated across ttys and even machines. CryoPID was actually described at the lightning talks at LCA05, and received many oohs and aahs at the time at the idea of screening processes after they’d been started.

After the BOF, went to do my LPI 101 exam. As mentioned, I’ve been studying from LPIC 1 Exam Cram 2, which the LPI’s Books page describes as …the most up-to-date publication reflecting recent changes in LPI exam objectives.. Mind you, it fails to mention that they’ve since (as of October 1st 2005) merged the DEB and RPM exams… Mind you, I hadn’t checked the errata since I was actually only going along to ask a question about the exam proceedure. Having since checked the errata, there’s six pages of corrections, and there’s still some whoppers missing. The above change to the exams, and the fact that Linux doesn’t have an “Archive” bit…

Either way, it took 20 minutes of the 90 allotted, and I feel really good about it. Still worried about the second exam, will prolly put that off until Saturday and push hard to finish the book first.

And another episode of S.O.S watched, as this site was being slow for some reason… It’s so wrenchingly painful to watch, but I can’t possibly stop until I know what happens…

Either way, an excellent day topped off with way too much Japanese food. ^_^

Oh yes. If I get a chance, I must ask Dave Miller at the presenter’s panel about the IEEE 802.11 stacks…