
|
English language planetList of feeds
January Liverpool LUG
It’s a rare occurrence that I post about Liverpool LUG and the meetings, as I thought a few people are not signed up to the mailing list it’ll only help to post it elsewhere. So to save rewriting what has already been posted, here is the original notification email.
If you’re thinking of heading down and not sure of the location then drop me a email, I’ll be getting into Liverpool at about 6:30pm at Liverpool Lime Street. Posted Tue Jan 6 09:32:52 2009
Handling explicit and implicit recusion in Haskell data
For a while I have been pondering over a problem that arises when your functionally written program has some state with cross references – for example a list of users, each of which uses a number of computers, and a list of computers, each having an owner. Implicit referencingFor doing queries on such data, it would be convenient if every reference is just the referenced object itself. Although we would visualize this as a graph, semantically, it is more like an infinite tree. This is possible in Haskell, due to laziness, and if you create the data structure cleverly, it even uses constant memory, no matter how “deep” you enter this infinite tree (a recent post of mine talks about this). A possible data definition would be:
data User = User {
Explicit referencingBut such a representation is very unsuitable for updates (at least I can’t think if a nice way of updating such a graph without breaking the internal cross-references) and serialization, which is a must for a HAppS based application. So what one would probably start with is this data structure:
data User = User {
I think the semantics of this are clear. Note that the referencing is currently not type-safe, but this can be provided by phantom types. Maybe I’ll write more about that later. Now imaging you want to display the information about the first computer with your web application. You extract the information with let State _ cs = testState in head cs and pass that to your templating engine. But what if your template wants to display the name of the owner? It only has access to his userId. You would either need to know what information the template will ever need, extract that from the state beforehand and pass it along, or give the template access to the whole state. In that case, though, there has to be lookup-logic in your output code, which is also not nice. Woudln’t it be nice if you could, in your application logic, work with the explicit references, which are easy to modify and store, but somehow turn that into the implicit referencing? Duplicated representationOne way would be to have two unrelated sets of data structures, ExplicitState, ExplicitUser, ExplicitComputer, which use explicit identifiers to reference each other, and ImplicitState,... which are defined as the first representation of our state. It is then mostly trivial to write a function that converts ExplicitState to ImplicitState. The big disadvantage of this is that you have to maintain these two different hierarchies. It also means that every function on the state has to be defined twice, which often almost identical code. Clearly, this is not desirable. Annotated representationIt would be more elegant if the state is stored in one data type that, controlled by a type parameter, comes in the one or the other representation. To do that, we need two types: One that contains a value, and one that contains just a reference: newtype Id v = Id v deriving (Show, Typeable, Data) Then we need to adjust our data definitions, to make use of these. (I’ll leave out the names, to keep the code smaller)
data User ref = User {
Here we introduce a type parameter “ref”, which will later be either Id or Ref. Note that now a reference also states the object it is a reference for, which greatly increases type safety. Functions on these data types that don’t work with the references will be polymorphic in the “ref” type parameter, so only need to be written once. A User Id is a complete user with all related data, while User Ref is a user with only references. And a Ref (User Ref) is reference to a user, which contains references... Not so kind kindsDid you notice the lack of a deriving clause? Our data structures have the relatively peculiar kind ((* -> *) -> *), which makes it hard for the compiler to derive instances for things like Show. But we already know that we will only use Id or Ref for the type variable, so we can use ghc’s StandaloneDeriving language extension and have these instances created: deriving instance Show (User Id) Toggling a type parameterThe next step is to write the conversion function. It will have type unrefState :: State Ref -> State IdFor that, and for later, we need lookup functions: unrefUserRef :: State Id -> Ref (User Ref) -> Id (User Id)These expect a State (with implicit referencing) and a reference, and look up this reference. The function unrefState then looks like this: unrefState :: State Ref -> State Id Note how we “tie the knot” in the let expression. This is the trick that ensures constant memory consumption, because every reference points back to the same place in memory. Satisfied already?So what do we have? We have no duplication of data types, we can write general functions, and we can resolve the explicit referencing. We can also easily write functions like unrefUser :: State Ref -> User Ref -> User Id, which transform just a part of the state. But writing unrefState is very tedious when the State becomes more complex. Each of the other unrefSomething functions are very similar, but need to be written anyways. This is unsatisfactory. What we want, is a generic function, something like gunref :: State Ref -> a Ref -> a Id which, given a state with explicit references, replaces all explicit references in the first argument (which could be State Ref or User Ref or anything like that) with implicit ones. This function can not exist, because we would not know anything about a and b. But maybe we can do this: gunref :: (Data (a Id), Data (a Ref)) => State Ref -> a Ref -> a Id Typeable and DataBefore being able to do so, we need to derive Data for our types. We can start with deriving instance Data (User Id) but that will complain about missing Typeable instances. Unfortunately, ghc’s deriver for Typeable (even the stand-alone-one), does not handle our peculiar kind, so we need to do it by hand. With some help from quicksilver on #haskell, I got it to work: instance Typeable1 ref => Typeable (User ref) where everywhere is not enoughTurning to the documentation of Data.Generics, I notice with some disappointment that there is no function that is able to change a type – they all seem to replace a value by another value of the same type. But the functions gfoldl and gunfold sounded like they could be used for this. Warning: What comes now is a very non-haskellish hack that subverts the type system, just to get the job done. Please read it with a healthy portion of distrust. If you know of a cleaner way of doing that, please tell me! Wrapped DataI want to do some heavy type hackery, so I need to disable haskell’s type system. There is Data.Dynamic, but not even that is enough, as we need to carry a type’s Data instance around as well. So let’s wrap that up: data AData where AData :: Data a => a -> AData There is also a function that converts an AData back to a normal type, if possible. If it’s not possible, then there is a bug in our code, so we give an informative error message. AData transformersSimilar to everywhere, we want to have transformers that combinable. They need to have the change to convert an arbitrary value, but also signal that they could not convert something (and this something has to be recursed into). I came up with this: type ADataT = AData -> Maybe AData ADataT is the type for such a transformer. doNothing will not transform anything, and extADT can be used to add any function to the list of tried transformers, in the spirit of extT. The ugly partTo apply such a transformer, I want to use this function, which I’ll describe in the code comments: everywhereADT :: forall a b. (Data a, Data b) => ADataT -> a -> b What a beast! But surprisingly, it works. Here are some examples. Note that I always have to specify the requested output type: bool2Int :: Bool -> Int I hope this code does not inflict too much pain on any Haskell-loving reader. I know I violated the language, but I didn’t know how to do it better (at least not without using Template Haskell). I also know that this is not very good performance wide: Every single value in the input will be deconstructed, type-compared several times and re-assembled. If that is an issue, then this function should only be used for prototyping. Almost doneTo apply this to our state, we only need to glue it to our lookup functions from above: gunref :: (Data (a Id), Data (a Ref)) => State Ref -> a Ref -> a Id Now we have a generic unreferencer. I set the type a bit more specific than necessary, to make it safe to use (under the assumption that the list of lookup functions is complete and will not leave any Ref in the output). *Main> testState Oh, and by the way, if you want to test this code, you’ll need at least:
{-# LANGUAGE ?DeriveDataTypeable, ?FlexibleInstances, GADTs,
Posted Wed Dec 31 15:21:28 2008
MuMer relaunch – preview online
A few years ago, I had some ideas about a real-world trading game. In short, a combination of the game play of “Settlers of Catan”, the cute pseudo-medieval world of “The Settlers” (the computer game), which you can play in your every day live along, without having to sit in front of the computer for a long time. I then started some code, lost motivation and let it sit there for a while. Recently, I re-developed interest in the idea and started from scratch, using Haskell and HAppS. To avoid losing interest again, I’m now putting the code online and set up the server. I invite everyone to play around with it, maybe have a look at the code, send me patches or comments. As you can see, the web user interface is plain ugly HTML and could need some love. Some CSS is definitely needed, some AJAX would be nice. Also, the resource tree is very small at the moment – there are a lot of things to work on, even if you don’t want to touch Haskell! You can register at http://mumer.net/. You will be either given a forest (a source for wood) or a source of stone. You can reap your source, and trade on the “Free Market”, which is where you can always trade online, at bad prices. The idea is that you find real trade partners, to get better prices. For now, trading without physical contact is possible. You can create so-called issue ids, which represent stips of paper. You can then load resources on them, and give the paper (i.e. the number) to other players, who can then redeem them. Eventually, it is planned that these pieces of paper are provided centrally and (sufficiently) unforgeable, so that it is clear who owns a resource. You can also bid on certain stuff, such as a sawmil, which allows you to turn wood into boards. It will regularily be re-leased to the highest bidder. You can get the code (in a darcs repository) from http://darcs.nomeata.de/mumer2 and also browse the code. If you happen to be at the CCC right now and would like to talk about it, please do so! Posted Sun Dec 28 12:33:42 2008
19 months of laptop battery data
In June 2007, I bought a new 9-cell-battery for my ?ThinkPad notebook. Since then, I recorded, via a cron job, every five minutes these bits of information:
I had planned to make some detailed analysis of this, but I haven’t gotten around to do more than this graph (warning, large), of which the following is a cut out. Since I now got a new laptop (with a new battery), I’ll share my records. I find it interesting that the last-full-state sometimes jumps up, closer to the design state. This could be re-calibration. Or the battery, after a while, re-scales iits output to appear less degraded. This might be checked by comparing the speed of discharge and charge at various points in time. If you want to do some analysis of your own, you can download the raw data (44354 data points). It has been anonymised by starting the time counter at zero, and shortening any gap of more than four hours to four hours. If you want to do some analysis in Haskell, you can take some code from my anonymizer script to parse the data. If you happen to find something interesting, appropriate crediting is appreciated. Posted Wed Dec 24 13:52:00 2008
Loggerhead 1.10 released!
The 1.10 release is mostly a bug fix release. There has been some effort to improve performance, we’ve updated the code to work with bzr 1.10, URLs are now much more user-friendly and permanent and breadcrumbs have been added to make navigation easier. As part of the release, I have also uploaded packages to the bzr
PPA: https://launchpad.net/~bzr/+archive It has also been rolled out to
Launchpad, so you will see nicer URLs like:
http://bazaar.launchpad.net/~loggerhead-team/loggerhead/trunk/annotate/head:/serve-branches - Fixed some performance issues (Robert Collins, James Westby,
Martin Albisetti)
Please show some respect while standing on the shoulders of giants
I unsubscribed from -devel and -vote the other day, as the
pain/gain ratio was just not worth it anymore (and -project is very
much pending). Sadly, I still could not escape from what I wanted
to escape from, as some people bring up those discussions and
"their style" on planet.
Release Lenny GR
This is the worst vote that has come up since I’m part of Debian. And Manoj — the secretary — has refused to listen to the remarks of many developers about the misleading titles/summaries, about the unjustified 3:1 ratio, and worst of all, about the mixing of multiple questions in a single ballot. I have ranked misleading options (“Reaffirm social contract“ at least) lowest and below “Further discussion“ and sorted all the other options according to my preference, and ranked some of them equally when the choices answer different questions (where I can not prioritize any preferred outcome). I’m not yet sure if I put “Further discussion“ first or not. There’s some hope that the vote will be cancelled and redone with separate ballots but I’ve lost trust in Manoj’s abilities to do his job properly. I’m sure he’s convinced that he’s doing the right thing but that doesn’t help at all, on the contrary. It also means we probably should fix the constitution to make it crystal-clear how the secretary should decide whether 3:1 ratio is needed for a given resolution or not. Not really the kind of thing I enjoy within Debian, but that’s the price to pay if we want to continue to work together. On this and much more I agree with Russ Alberry. Update: Manoj resigned as secretary. I want to thank him for having taken this hard decision. And I sincerely hope he doesn’t resign from Debian completely as our strength is also in our diversity of opinions. Partagez cet article / Share This Posted Thu Dec 18 10:29:20 2008
Dell Latitude E4300 with Debian
So I replaced my Latitude D410 with a shiny new Latitude E4300 (Intel Core 2 Duo SP9400 2.4 Ghz with 4 Gb RAM). Here are some notes about this laptop that might be interesting for others. SSD diskI now use an SSD drive for my main disk (Dell Ultra Performance SSD, it’s the second generation of Samsung SSD) and I’m satisfied with that choice, I can boot (an unmodified Debian desktop install) from the SSD in less than 30 seconds while the same system booting from a traditional hard-disk takes more than 45 seconds. X serverThe Intel GM45 graphic card is not auto-recognized by Xorg 7.3
(or rather by xserver-xorg-video-intel 2.3.2 which is in lenny) so
you end up with the vesa driver by default. It’s possible to force
the usage of the intel driver by adding a “Driver “intel”” line in
the device section of xorg.conf but I have opted to use Xorg 7.4
(available in experimental). With this version, I can successfully
use the DVI output in the associated dock and I have working
suspend/resume. It does create some interesting problems however
since that version of the xserver relies on HAL to detect the
keyboard layout and doesn’t use the Keyboard section of xorg.conf.
You have to create Wifi supportThe Intel 5100 Wifi chipset requires Linux 2.6.27 at least for the new iwlagn driver. This driver also needs a new firmware (the iwlwifi-5000 one) that is not yet integrated in the non-free package firmware-iwlwifi (see #497717). Sound supportIt works ok with alsa and the version integrated in linux 2.6.27 but it still has some rough edges when used in combination with the dock. Using the output jack connector on the dock doesn’t stop the output in the integrated loudspeakers and the volume on that connector is so low that you could think that it doesn’t work at all if you don’t pay attention. Using the microphone works fine. For reference, if you play in the mixer, “Front mic” means the microphone connected on the dock while “Mic” means the one connected on the laptop. Each “Analog loopback X” option goes pairwise with the corresponding “Input source X” setting. In order for the recording to work, I have to set “Digital Input Source” to “Analog Input”, “Digital” must be activated and “Input source 1” defines the default input used for the recording. Bluetooth supportContrary to the previous laptop, Dell offered no choice on the bluetooth chipset, they only propose the “Dell 365 Bluetooth™ Card” so I took it but it doesn’t seem to work out of the box. In fact I can’t even see it with lspci or lsusb so I wonder if they did something wrong during the assembly. Googling on the topic didn’t gave me any good result, let me a comment if you know how to get this working. Update: so apparently the bluetooth component is there (ID 0a5c:4500 Broadcom Corp.), it just appears as an USB hub so it’s somewhat difficult to guess that it’s effectively a bluetooth card. Freezes, in particular with an amd64 installationI first installed the system in 64 bits mode (amd64 architecture) but I had very regular freezes of the system (I couldn’t finish a single kernel compilation for example). Since I switched to an i386 installation, the system is more stable but I still get an occasional freeze every other day. It might be that a more recent kernel fixes this or maybe it will be fixed with a future Dell Bios update… we’ll see, but it’s my biggest complaint with this laptop so far. LinksLucas Nussbaum bought the same laptop, you might want to read his remarks as well. More detailsLoad the full article only if you want to see the lspci and
lsusb output on this laptop.
CrunchBang Linux - A day’s usage review
A while ago I spotted a post about a new Ubuntu based distribution that had been released, called CrunchBang Linux, as i’m not a great fan of Ubuntu distros anymore I passed this one up and never look at it again. A few weeks had passed until I heard mention of it again, Dan from Linux Outlaws, mentioned that he is trying out the recent version for a review on the show and that Fab is a massive fan. I decided to take a second look at it, trying my hardest not to be critical due to it’s Ubuntu base. I’ve now got ?CrunchBang installed on my main desktop machine and I’ve been using it for a day, Maybe it’s a short length of time to review a distribution but I feel with my past experiences with numerous distros will help me get to grips with a new one quite quickly. Some of you may know, after being a Ubuntu user for well over a year I decided to move back to Debian and became quite critical of Ubuntu for its rash decisions regarding design and key choices. My dislike is not centred purely on Ubuntu, I remember one time where I had a near fit at using a OpenSUSE KDE 4.0 Live CD as I couldn’t switch off the default sound scheme, but that’s for another post. Back to the review… CrunchBang Linux promotes itself as a lightweight version of Ubuntu, unlike Xubuntu’s XFCE desktop they’ve decided on using OpenBox and a few key programs from other desktop environments, like Thunar and Lxpanel. My previous experience of the *box window managers have been with Blackbox during the very early days, when Enlightenment was all the rage and most distros used FVWM95, so checking out Openbox will hopefully be a refreshing blast to the past. My main concern was compatability, a lot of applications out there depend on certain features of the desktop environment. I left all my expectations at the door and decided to grab the Live CD and have a 10-15 minute play to see if everything works as expected and that it actually works on my slightly quirky setup. The Live CD / Installation media is mirrored on a few sites, as it’s only a “baby” distro it’s not been picked up by the mainstream mirrors, thankfully, a few people in the community had offered some space up to the project and finding a local, fast mirror isn’t that difficult. As with all Ubuntu style Live CDs, it was a simple case of burning the ISO to a disc and rebooting the machine. I’m not sure if this is a feature of all new Ubuntu discs now, but the ISOLINUX menu had a option to check the installation media for errors, this would save you quite a bit of time if you suspect dodgy media. The boot was quick, quicker than I expected. Usually with Ubuntu CDs I pop the disc into the drive the slip off to make a cup of tea and head back in time to get the last second or so of the desktop booting. This wasn’t the case with ?CrunchBang, after returning from a delightful brew making trip I noticed that the desktop was loaded and the default conky panel on the right side informed me that it’s been booted for about 5 minutes. So, boot speed, even from the CD it’s nice and quick. To a user who has been brought up on the GNOME or KDE environments the initial desktop may take a second to sink in, by default it comes with a minimal panel and system information pane on the right side of the screen and nothing more, no desktop icons or fluffy applications menu, just a basic desktop. Right clicking anywhere on the desktop brings up the system menu and the list of applications. The default install gives you a nice range of applications, some you’ll never use, others are dire essentials.The default includes a few keynote applications:
A few more are available, and a full list can be found on the CrunchBang wiki. Needless to say I was impressed, not only had they selected reasonable defaults but as the distribution is based off Intrepid it had the latest and greatest versions available. Skype is a interesting nugget in my opinion, possibly being the only QT application in the default installation. I do understand that lots of people use Skype for VOIP, but maybe they should consider including another application like Ekiga. So, I have my desktop running as a Live CD, time to see how it fayred in real world usage. I can happly say, after a good hour or so usage I didn’t feel restricted by the choice of desktop environment, Openbox is low key but quick and powerful. I decided after just a few hours usage to commit to this distro, ditching my current Debian Lenny install. The installation of ?CrunchBang was nothing really spectacular, It’s a standard Ubiquity installer which does it’s job very quickly. A few quick selections and the dreaded disc paritioner screens and you on your way. Installation took about 10 minutes on my machine and felt a little quicker than previous Ubuntu installs, but I put this down to a little bias on my part. Rebooting the machine brought up a standard GRUB menu and I happly noticed that it detected my existing Windows installation and put the relative entry in. Again, the boot was quick and my machine boots to the desktop in under a minute. So, here comes the negatives. A few minor issues have bugged me since i’ve started using ?CrunchBang, but nothing show stopping. So to save time I’ll just put them down as bullet points:
As I said, the negatives are MINOR. Really, really minor. ?CrunchBang was designed as a “2nd - 3rd” distribution for users, so it targets the section that are more than happy to have a twiddle with the system configuration and the thought of text only configuration doesn’t phase them. If you fall into this category and you’re looking for a lightweight desktop distribution then i’d suggest you grab a copy of ?CrunchBang and give it a whirl. Posted Mon Dec 15 13:32:23 2008
Dear Debian developers
I’m a hardware vendor, shipping systems with free software only. Plus I’m a Debian user, supporter, and small-scale contributor since long. I’ve read Martin’s “The Debian System” book, as well as the three “bibles” on how to contribute, made some packages, I’m following some newsgroups and Planet Debian, and in general I think that I more or less know how the system - and the community - works. However, with following the latest discussions in/on the Planet about the Lenny release, combined with some personal experiences and thoughts, I think I need to get into the discussion somehow. Why? Take into consideration: Centrino2, for example. Lenny has a kernel version 2.6.26, which doesn’t support most of that newest hardware out of the box. Which is fine with me, since I know how minor and trivial it is to include newer kernels into Debian. But also consider end-users, and you’ll get a completely different picture. What I want to say, and what I’m really afraid of, somehow - is: Lenny is and will be obsolete and outdated, before it’s even released. Now, don’t get me wrong here: as I said: I think I know the Debian rules, guidelines, procedures, and whatever not, and I’m a great supporter of all that. But I’m afraid we will lose the end-user, if we continue like this. This is in no way the start of a topic like: we need a “benevolent dictatorship”, or something like that - I would immediately turn my back on the distro, if it wasn’t as democratic as it is right now. And how about Etch-n-half? Why don’t we do something like a partial freeze, still considering newer kernels during the bug-squashing period? And fixing the kernel (and glibc and whatever depends on it) at the very last possible moment? Just my 2 cents. I don’t want a situation where I could only recommend Debian to server administrators and geeks. This blog is aggregated on the Debian community blog, and that is good, because I think the topic I mention here will also affect real big installations like - for example - the city of Munich, and so forth. So the second thought I had was: How to contribute more, and better, as a non-developer? How would I get feedback on this one? Through my blog? Through my email, which some of you know (and most of you don’t)? As a “user”, who also has other things to do to earn a living, and to support his family, I’m afraid that I really can’t subscribe to all possible newsgroups and mailing lists… Just take the time to consider my situation: I’m offering hardware, pre-installed with Linux (Ubuntu or Debian, which is the customer’s choice). Centrino is declared EOL (end of life) by most manufacturers by now, while Centrino2 is all the hype (whether it deserves it or not, is a completely different question). That means that my distributors won’t get any Centrino hardware from the manufacturers anymore before long, or even by now. And Centrino2 isn’t supported with Lenny, which isn’t even released yet. Just wanted to make that point clear. Thanks to you all - without people like you, people like us would have no income at all. Best,
Aggregating Git tips
Instead of commenting on all the recent Git on Planet Debian, I’d like to point you all to the Git Wiki, and specifically the page BlogPosts. Please link your Git-related blog posts from there. Also, there is Planet RCS for you to aggregate RCS/VCS-relatd posts. NP: Anekdoten: From Within Posted Sat Dec 13 13:01:06 2008
Init7 and Transtec please me
Init Seven has once again established themselves high on my ranking of awesome service providers. After battling and not resolving the problems with crap nVidia hardware, I was ready to return the server to Transtec, despite having invested a full day of work into it. Having a machine in a rack across town, with the looming danger of simple network traffic taking out the network card along with the bridged IPMI remote console (thus requiring me to head out to the colocation centre each time there was a problem) was just not going to justify the expense for the server. Init Seven connected a second switch port to my VLAN, which now allows me to hook the IPMI card directly to the LAN. This does not solve the problem with the sub-zero-quality crap manufactured by nVidia, but at least it makes it possible to resurrect the machine remotely, until the problem with the hardware has been addressed and dealt with by the forcedeth driver. And if that is not possible (due to nVidia pile of shit), then the last option is a separate network card attached to the riser card slot. In related news: Transtec was
quick to proxy to the Supermicro’s support (the motherboard
manufacturer), and within a few hours, I had a “newer”
Regardless, I’ve been impressed by Transtec’s support level so
far. Yes, I did purchase a five year express warranty extension,
but it wasn’t very expensive, definitely nowhere near the price for
a real SLA. And yet, my requests to date have each been answered
within a day at most, including such extravagant things as them
providing doanloadable floppy images of the BIOS update, which
Supermicro only distributes as Windows Now if only they (and everyone else) would stop shipping nVidia hardware… NP: AC/DC: Dirty Deeds Done Dirt Cheap Posted Thu Dec 11 16:56:55 2008
Healthy home-order food in Zurich
If you’re looking to set up a business in Zurich but lack an idea, here’s one almost guaranteed to be successful — or well, at least it fills a niche: Healthy home-order food. I’d be your first customer, and quite a regular one too, if you delivered to my door freshly cooked, (ethnically) diverse meals with lots of vegetables, at reasonable prices, of course. I’m happy to cook fancy dishes for guests, but cooking for the purpose of having something enjoyable to eat alone is just not my thing at all. I sometimes wish it were… And before you wonder about my quest for “healthy” foods: yes, I wouldn’t mind losing a bit of weight, but I am certainly not crazy about it. It’s more that I’ve simply developed a strong liking for vegetables, and quite like not suffering from a heavy stomach after a meal. NP: AC/DC: Ballbreaker Posted Thu Dec 11 16:25:55 2008
Wordpress Upgrade
Last night I learned about the Wordpress 2.7-RC2 release, the latest and greatest release with all new fangled features. My current install has been nagging me to upgrade for quite a while, so I decided to jump up to one of the test releases to give it a whirl. After all, If anything went wrong I can just roll it back no fuss. The download package is the usual mixture of raw files and brief instructions, I roughly followed the extended guide on the website as I knew a few steps could be skipped on my install. I backed up the original directory and MySQL database, then grabbed the new install package and installed it in a similar directory to my current install, then slowly copied over the required files to the new folder. After about ten minutes I had a ready to go version of 2.7-RC2, with a quick “ln” command I had the site live. A quick run of the upgrade page and everything worked. So, how is it? The admin interface is a complete change to the older 2.6 releases and it makes a lot more sense than the old version. No longer do you have to fight with a massive list of options in the setting pages, instead of being stretched across the top they’re in a nice, tidy sidebar. I’m sure I’ll hit some issues sooner or later, but all the plugins I use work fine and as fast as ever. Here’s hoping to a successful 2.7 final release. Posted Thu Dec 11 10:51:49 2008
forcedeth: nVidia network chips are broken
Yesterday, I removed my new server from the rack and brought it back home, after the problems with the nVidia network chip (forcedeth) took down the NIC to the point that the IPMI chip, which is routed through the primary interface, wasn’t reachable anymore. Even though a soft reboot fixed the problem, a bit of large-packet traffic, like downloading via IPv6, broke the card again. Since IPMI is also affected, I cannot remotely manage the machine and thus can’t leave it in the rack. In fact, I am strongly considering to make use of the try&buy contract and return the thing. I cannot rule out a software problem, but given that the NIC goes into a state in which it gets unusable even to the IPMI system, which is completely independent of Linux, I somewhat doubt it. Instead, I suspect a hardware error, beyond the known problems with nVidia network chips and segmentation/checksum offloading. On the other hand, it’s not news that drivers can break hardware, and the fact that I am using Linux is reason for hope. One alternative, which would allow me to potentially help in fixing this bug, is to use a riser card to stuff a different network card into the server. This would mean I didn’t invest all the time into the server for nothing. Unfortunately, this workaround comes with extra costs, and would require Init Seven to allocate another switch port for the IPMI card, which I am not sure they’ll be keen about. The bottom line of the story is that I will avoid nVidia even more in the future, and you might want to do so as well. Companies that produce crap hardware and do not cooperate with people writing free drivers for them do not deserve the money. Unfortunately, almost everyone out there uses the MCP55 chipset these days, and deny any problems with it. I guess I will take a look at HP and IBM, although I’d really prefer not to pay for their brands, and not to enslave myself to their customer support standards. NP: Neil Young: Dead Man Posted Fri Dec 5 14:52:17 2008
Symbian, IPv6, SIP: lack of testing, no QA, no surprise
Trying to put my new Nokia E71 to use, I was positively surprised to see that it has an IPv6 stack. Even though the integrated web browser does not care about it and insists on IPv4, it still made me happy to realise that Symbian (manufacturers of the OS) aren’t totally missing the beat of time. But when I tried to get the builtin SIP client to speak to my Asterisk PBX, I ran my head against a wall. It didn’t take me long to find out why it wasn’t working, though:
This is Asterisk’s debug dump of the SIP You can choose between IPv4 and IPv6 for GPRS connections, but not for Wifi. There is also no way to turn off IPv6 altogether, at least none that I found. This really makes me wonder about the development process at Symbian, which must exclude testing and QA, or else I could not explain how such braindeadness could make it into a published product. On the other hand, we are all well aware of the lack of quality in software products that come force-bundled with hardware, like phones or plain computers. After Nokia acquired Symbian, they open-sourced the operating system (thanks, Penny, awesome girlfriend, for reminding me. Happy now? grin). After a bit of searching, I am pretty convinced that this was just marketing buzz, because I failed to find any information on how to obtain the code or how to put it onto the phone, six months later. I am not sure how to move on. I can either return the phone (wouldn’t be the first time I had to return a Nokia E series phone for lack of quality), switch from Asterisk to some IPv6-enabled VoIP software (like FreeSwitch, which has not been packaged for Debian yet, mostly because the ?FreeSwitch guys are acting up about the changes Debianisation would require), or find some hack around this limitation. Ah, the joys of being an early adopter… NP: Neil Young: On the Beach Update: Faidon Liambotis, who was also
influential in my decision for the E71, found the problem: the
phone’s DNS cache.
Good LaTex Font Overview
I just discovered the nice Survey of Free Math Fonts for TeX and ?LaTeX (PDF-Version) by Stephen G. Hartke – a good overview of the common font packages, with examples, useful for those who have seen enough Computer Modern by now. What I’m still missing is a good style guide: When should I use Palatino, when is Utopia a good choice? What are good reasons to use a sans-serif font for the text, and when is that not a good idea? They all look nice to me, but I doubt that the professional typographist leave it all to personal preference. Posted Fri Dec 5 09:45:00 2008
Liverpool LUG Talk
So, I finally got round to giving a talk at LivLUG, anyone who knows me will know i’m not the best public speaker in the world and I get quite nervous at the thought. It was time to grab the bull by the horns and actually do it! My first talk was on the usage of the Wiimote within Linux, The Wiimote are very simple Bluetooth devices that can be accessed over the standard APIs with an additional library called CWiid. This allows the device to be used as a input device or as a general I/O device. It’s quite hard to explain it in just text alone, So i’ve put my presentation on the LivLUG wiki everyone to have a look at. I recommend you grab it and give it a try yourself. EDIT: Yes, It’s on the wiki now, but heres the direct link. Posted Thu Dec 4 11:19:08 2008
Links:
planets
|



