Search Results: "cas"

18 January 2009

Wouter Verhelst: Filesystems: the saga continues

Bernhard comes up with a few arguments in support of multiple filesystems which, in my arrogant opinion, make no sense. The first argument (about hardlinking a file to your homedirectory until something bad is discovered in one of the binaries) has been sufficiently debunked by Joey Hess. The second and third arguments are the same, really. Repeating your argument won't buy you any beer, sorry. Finally, all your arguments talk about server. I was talking about laptop. I don't know about you, but me, I'm not in the habit of loaning out my laptop to someone I don't trust. I'm not even in the habit of loaning out my laptop to someone I do trust, come to think of it. I do run some servers on my laptop, but I also have a firewall on my laptop that refuses incoming connections. This is a laptop. Not a machine in a data center. As such, the only person with access to my machine is me. Now I don't say I trust each and every bit of software that I run on my laptop, but I do trust myself. I won't start scanning my laptop's hard disk for rogue SetUID hardlinks in another user's home directory, because there isn't another user, stupid! Paranoid security is nice and dandy and totally useless. Security is all about trade-offs. Even Bruce says so: if the cost of a security measure (having to deal with with 73 filesystems) does not outweigh its benefit (protection against cosmic rays changing not only my firewall configuration, but also writing a suid CGI binary and installing that in /usr/lib/cgi-bin), then it's just not worth it. Now of course you might argue that 'having to deal with 73 filesystems' is no cost at all, in which case it would be worth it. But to me, it certainly is a cost, and one I'm not willing to take even if it did protect me against a real-life problem. And if someone were to break into my system, I'll just reformat it and recover from back-ups. I won't even have to revoke my GPG key, this time, since it's no longer on the disk.

Wouter Verhelst: Of course I am

In case there was any doubt: I'm going to FOSDEM, the Free and Open Source Software Developers' European Meeting Not that I think there was, but, well. In related news, there've been some minor updates to the devroom schedule, especially on saturday. If you were interested in some of the saturday talks, you'd better go have a look.

17 January 2009

Gunnar Wolf: M talo, luego virig as (roughly: Kill him, ask questions later)

The phrase on this title is often attributed to Pancho Villa (1878-1923), Mexican Revolution leader. He had a fame of cruelty, killing suspects before even questioning them.
Today, it started as a very nice day. I had even time in the morning to find, fix, upload and send upstream a trivial bug in libgruff-ruby... At 11:00, I left the Institute as my father came to the city to do some paperwork... We sat having a cup of coffee in a restaurant near the office we had went to at around 12:00, and my phone rang.
And it was from work. That's never a good sign. My boss told me he was facing a massive virus infection, and decided to disconnect the firewall. I corrected him - that will do no good once the virus is in our system, if you want to disconnect anything, disconnect all of our switches.
Came back, and found him and my coworker stunned and not knowing what to do. He says, the antivirus alarm went off almost simultaneously on the two computers he had on his desk, and in few minutes over 15 computers all over the Institute were ill. The symptoms? Programs not showing up in the taskbar, copy/paste functionality b0rken, many programs misbehaved or just didn't open... They were grimly facing a complete recovery operation they have grown used to: The whole OS has become corrupted or destroyed, we will have to open the computer, extract the HD, install it elsewhere, back it up, reinstall OS and applications, restore the backup. Yes, I know too many extra steps are included here, but I have come to accept their ways of dealing with Windows. Nobody says dealing with Windows is fun. I like my work to be fun, so I stay clear of theirs.
I insisted on turning back one one of the switches, the one for the servers and my machine (and some more in the same physical area). OK'd. But they didn't want to switch on any other switch, so a traffic capture (tcpdump / wireshark) led nowhere - but at least it gave my my Google back.
They have configured the antivirus software we deploy to all of the Windows machines in such a way that it deletes upon sight any malware - And when they manually scan, they blindly hit Delete whenever anything is found as well. Of course, no infected binary was left alive for me to inspect, and the machines were dead. But I was able to glimpse at the name of the deleted file: rpcss.dll.
After googling a bit - Bliss! Joy! I found the answer. So here is the set of interactions, and how they led to this killing spree. Please remember I am a Windows newbie and speak just out of guesswork.
  1. This is a fast-spreading virus. My friend Rub n at DGSCA suggest it might be related to this report submitted today; at Barrapunto there is a thread about another virus that appeared four days ago, infected 1.1 million Windows machines on its first day, and so far is around the ninth million. Update: Equivalent thread at Slashdot, for the Spanish-impaired.
  2. The virus infects at least two copies of a system binary: %system32%\rpcss.dll and \Windows\ServicePackFiles\i386\rpcss.dll. Windows uses the second one to restore the first one in case it is damaged, if I understood correctly.
  3. The antivirus does not detect the infection when the library files are written, but when they are linked, so it only spots it the next time %system32%\rpcss.dll is brought into memory.
  4. This is a very common library - It takes care of, well, RPC. So, quite probably, this file will be linked again on the next program launch - or accessed when a running program requires anything not currently in RAM? Dunno. The thing is, the library gets linked.
  5. The antivirus will happily tell you it has killed a threat! Your nice RPC library is now defunct. M talo, luego virig as!
  6. So, of course, notifying the taskbar of a new window appearing, or clipboard actions, or whatnot will refuse to work.
  7. Machine restart, full system scan requested. The antivirus finds de second copy of this library in the master directory (\Windows\ServicePackFiles\i386). The virus used this location so that Windows won't restore a clean version over it. But yes, it will fall again under the claws of the antivirus... I guess. Anyway, the antivirus offers to delete this file as well, and does so.
  8. User is desperate. My coworkers are desperate. I am... mildly annoyed?
Once I found this line of thought... I went to a working machine, inserted my flash memory, and copied %system32%\rpcss.dll to it. Went back to a sick machine, and ran cmd. Then, it was just matter of copy f:\rpcss.dll c:\windows\system32, a simple reboot (it never hurts to reboot in Windows!), and problem solved!
Oh, as a side rant: I find it extremely annoying and sad that many people I know, sometimes with more experience as a computer operator/supporter than what I have of experience as a living human being, are so scared of using a command-line interface. They were dismayed at seeing no drag-and-drop and no copy/paste functionality were available! copy is not an option.
Anyway... Today was an experience on how a simple, mostly-harmless and quite-fertile virus is able to be terribly magnified by the presence of a trigger-happy antivirus.
Why won't they give themselves a chance to try something else? Say, GNU/Linux? :-/

16 January 2009

Michal Čihař: Gammu test version 1.22.91

After another week, new Gammu testing version is out. The biggest change is integration of python-gammu into Gammu. This makes easier to test everything together and new tests revealed lot of bugs and memory leaks which were immediately fixed. Besides these changes, Windows Service support has been fixed and added possibility to run more SMSD instances. You can download from usual place: http://cihar.com/gammu/, Debian users will find packages in experimental soon.

Petr Rockai: darcs 2.2.0

I am happy to announce general availability of darcs 2.2.0. Getting the release For this release, we have decided to provide two flavours, depending on the build system used:
  1. The source tarball, http://www.darcs.net/darcs-2.2.0.tar.gz, which can be built using the traditional autoconf-based system. This is the fully supported version. After downloading and unpacking, you can issue:
    $ ./configure
    $ make
    
    and possibly
    # make install
    
    More detailed instructions inside the tarball (file README). Please note that we had at least one report of build failure, with quickcheck-related message. The currently best workaround, if this happens to you, is to use the cabal version of the package instead, see below.
  2. Cabalised source. You can either download a tarball from http://hackage.haskell.org/packages/archive/darcs/2.2.0/darcs-2.2.0.tar.gz and build manually (see the build instructions in README inside the tarball), or, alternatively, you can use cabal-install to obtain a copy:
    $ cabal update
    $ cabal install darcs
    
    This will give you a darcs binary in ~/.cabal/bin you should probably add that to your PATH.
In addition to source tarballs, we expect binary packages for various UNIX platforms will be available in due time. For Windows users, Salvatore Insalaco has prepared a binary build, available from http://homepage.mac.com/kirby81_it/darcs/darcs-2.2.0-win1.zip. You just need to unpack the directory somewhere and add it to your path (if you like). Moreover, an experimental TortoiseDarcs release for darcs 2 has been made available by Kari Hoijarvi and is looking for home. It can be found at http://datafed.net/darcs (unfortunately, at the time of this writing, the site seemed unreachable If you can help with hosting, please mail Kari.) What s New The summary of changes since version 2.1.2 (released last November) follows: And a summary of issues that have been fixed in darcs since version 2.1.2 (compiled by Thorkil Naur): 525 amend-record => darcs patches show duplicate additions
971 darcs check fails (case sensitivity on filenames)
1006 darcs check and repair do not look for adds
1043 pull => mergeAfterConflicting failed in geteff (2.0.2+)
1101 darcs send cc recipient not included in success message
1117 Whatsnew should warn on non-recorded files
1144 Add darcs send in-reply-to or header In-Reply-To: x@y.z
1165 get should print last gotten tag
1196 Asking for changes in /. of directory that doesn t exist gives changes in entire repo
1198 Reproducible mergeConflictingNons failed in geteff with ix
1199 Backup files darcs added after external merge
1223 sporadic init.sh test failure (2.1.1rc2+472)
1238 wish: darcs help setpref should list all prefs
1247 make TAGS is broken
1249 2.1.2 (+ 342 patches) local drive detection on Windows error
1272 amend-record not the same as unrecord + record
1273 renameFile: does not exist (No such file or directory)
1223 sporadic init.sh test failure (2.1.1rc2+472) I would like to thank all contributors for making this release possible. Future The next release will be 2.2.1, fixing low-risk issues found in 2.2.0, or those that have been excluded for 2.2.0 due to freeze. This release will appear in two or three weeks time, depending on circumstances. The next major release will be 2.3, due in June or July this year. The focus of this release will be new features and further work on performance. Moreover, we expect that it will use Cabal as its default build system and will make first steps towards sustainable libdarcs API.

Wouter Verhelst: Re: On filesystem layouts

Someone posted a comment to my previous post on ACLs; and now Andrew blogs about the same question: Why don't I believe in multiple filesystems for a laptop? Andrew's arguments don't really convince me. A filesystem eating itself? That's never happened to me yet. A hard disk dying on me, however, I've had that. Since I first owned a computer with a hard disk, I think there've been 5 of them. There's only one thing you can do against that -- have a proper backup strategy. That not only protects you against losing your data due to the somewhat likely event of a hard disk dying, it also protects you against losing your data due to the somewhat unlikely event of a filesystem eating itself. On the other hand, however, a laptop hard disk is usually slow, small, and painfully so. Partitioning already-small hard disks into even-smaller partitions therefore doesn't sound like a particularly bright idea to me. Losing half a gig on unused space for /, then 400M for /usr, and 600M for /home, and another 2G for /var, or some such, is pretty stupid if you want to store a 3G file that you want to burn to disk; you have the available space, but you don't have it in one partition, so you get to do the cleanup dance. And nobody likes to do that, right? Oh, and don't try to fool me I have yet to see a laptop that's been in use for more than a few months and whose disk is not filled to all but a few gigabytes. Nobody removes files until they're out of space, and then you only remove just as much as you need to be able to do the job at hand... Occasionally, I do install server systems with multiple filesystems, and with LVM. On a server, the inability of a run-away system process (or user) to 'accidentally' fill up the root filesystem with junk is definately a life-saver. But once you have lost data, you need to recover anyway, and having partitions doesn't particularly help you in doing that. Also, servers tend to have multiple huge disks in a RAID array, so loss is less likely, and disk space is plenty; as such, the loss of 10% on the LVM overhead isn't something I care about, which it is on my laptop. But, hey, to each their own preference. I won't look at you funny for preferring multiple partitions on your laptop. Promise!

Michael Casadevall: Re-enginneering my network ...

As I move to having more and more machines on my internal LAN, I felt the time had finally come that I sit down, and rebuild my network to take advantage of things such as gigabyte networking, LDAP, single-user sign on, and so forth. I'm doing partially for fun, and partially because its an interesting experiment to see how Linux from an IS environment compares to a Windows 200x IS environment (one of my former jobs was a 2000/XP/2003/Vista sysadmin position).

So, here's my current network setup
blacksteel <- *wireless* ---------------------------------------------- cerberus <-> Internet
/
dawn <------ *wired*-----------------------------------------------------
/
360 <---- *wired* -----------------------------------------------------

Online machines:
cerberus - WRT51GS
backsteel - My laptop
dawn - Development machine
360 - Xbox 360, used to play media from blacksteel

Offline machines (aka, machines I have, but haven't fired up since moving:
helios (PowerMac G4)
apollo (old Dell P3)
junker (RS/6000 rescued from the dumpster, might be dead)
alexandria (NSLU2; gave up its plug for dawn)
coldfusion (Coldfire Board, might be dead; ethernet controller is faulty, but might be able to use a USB based one to breath some life into it; can't autoreboot due to built in bootloader not supporting it; and no JTAG to sanely change the default bootloader).
siren (old MacBook Pro, has a dead internal HDD, but runs fine from an external hard drive. Was my Debian test box until its HDD went to dawn)
exodius - second WRT54GS used to be part of a WDS bridge.
unnamed dev box (not here yet, but likely soon).

Of all these machines, only apollo has a wireless card which ATM is non-functional. In addition, the wired bits of my network are 100Mbps, with a g based wireless hotspot (WPA secured). Futhermore, blacksteel, helios, and siren have gigabyte ethernet. apollo has 100MBps ethernet card. alexandria and dawn have 10MBps, which is painful, especially for NFS root.

I'll drop another 1Gbps NIC into apollo, replacing its wireless card, and give dawn, alexandria, and maybe coldfusion USB based NICs once I get around to resurrecting systems (alexandria and coldfusion don't have hard drives at the moment)

What I would like to do is use an Linux-based router and replace Cerberus. Helios has two gigabyte NICs, so it will take up this duty, as well as provide DHCPv4, and radvd (for IPv6) for the internal network. It's an old computer, and has an onboard model, and its position in my apartment will be close to a phone jack; maybe I'll set it up so I can dial in from outside the LAN in case something goes down (although my phones here are VoIP based so I dunno how useful that's going to be :-)).

Another box (I might task this to apollo, or helios) will run LDAP and NFS services, providing both a netboot based installation with preseed for fast re-installation, and NFS home folders for all machines except blacksteel (unless someone knows a great solution for having a laptop sync NFS and local home folders. helios will run mail, news, and any other untrusted net facing services, with everything else shielded behind it. All machines will run IPv4 and 6.

Anyway, this is the start of my plan in a nutshell, and I intend to continue discussion as I slowly build and implement this updated setup. Wish me luck :-).

15 January 2009

Julien Blache: Antec PSU suck

How not to start your day, from the all-hardware-sucks department. For years, I ve been struggling to keep my machines quiet. I ve miserably failed for years, and pretty much gave up once I realised that the quiet parts I was looking for just did not exist. Last year, I finally found what I was looking for: I ve been very happy with this hardware for both my workstation and my filer. Well, until today. No need to mention that this hardware is not exactly cheap, but the price is right for the quality. So, wake up today, do random things, grab my TomTom, unplug it from the workstation it s sucking its power from, do things, plug it back in the USB port so it won t draw its battery. This is how it went: Check machine temp, PSU temp, attempt to restart PSU, check UPS, check cables, replace power cable and bypass UPS. Admit defeat for this round and accept the PSU as dead. Pull out the machine, rip out the fscking damn PSU. Grab the tools, crack the PSU open. Notice bulging and leaking capacitors. Yes, this PSU is anything but cheap, yet it uses el-cheapo chinese capacitors. Antec, you suck, big time. For the past decade everybody in the industry has known that el-cheapo chinese capacitors manufactured after 1999 are total crap, using an electrolyte that isn t actually one because its formula was stolen by industrial spies who got totally PWNED and ended up stealing a bad formula. (If you need a reference, google for singing capacitors . Note that singing capacitors can also happen with good parts used in a crappy electronic design. Like that 100 Mbps D-Link switch over there, or that Sony-Ericsson mobile phone charger. Hmm. Not everybody can hear it, I do.) A healthy, young capacitor should not bulge nor leak. A capacitor that leaks, bulges or sings is a crappy capacitor and needs to be replaced with a quality part ASAP. I ve been routinely replacing such capacitors on my older motherboards (manufactured between 1999 and 2001) in the past years. I ve not had the problem in ANY of my el-cheapo PSU, and did not replace any capacitor in any of them to date. Fortunately, the machine did not suffer any further damage, nor did the TomTom. Everything is up and running again with a spare PSU. I m now going to replace the fscking capacitors on this PSU, replace the fuse, probably R&R a couple of high-voltage transistors too (they have a tendency to fry before the fuse blows out) and get it back up and running. Then I ll do the same with the other PSU in the filer, because that machine has 8 disks attached, so draws more power and hence is much more vulnerable. Fuck you Antec.

Adeodato Sim : Behind a firewall with ssh access? ssh -D ftw!

Asheesh Laroia explained how to use ssh as a SOCKS proxy if you re behind a firewall that allows you to ssh to some machine not restricted by it: ssh -D. (I don t know how common such firewall setups would be, but the one at my Uni does indeed allow ssh to the outside over authenticated wireless.) With -D, ssh will listen in a local port, and behave as a SOCKS proxy. Set it up like this:
  % ssh -N -f -D localhost:4444 external-machine.example.com
And then you can point your SOCKS-capable application at localhost:4444. Chances are, however, that the application you want to use doesn t support SOCKS (like, in my case, Git). You can use tsocks then, which LD_PRELOADS a library that will divert an app s TCP traffic through the SOCKS proxy. To use it:
  % cat >~/.tsocks.conf
  server = 127.0.0.1
  server_type = 5
  server_port = 4444
  % tsocks git pull
AIUI, this is better than setting -L forwarding because you don t need a forward for each host whose port you want to access. If you re interested in starting ssh in SOCKS mode from .ssh/config, the configuration item is DynamicForward.

MJ Ray: FS-4400 Satellite PVR

You may remember that I m quite a satellite TV fan, having installed it in 2004 and compiled a FAQ. Over the holidays, I replaced my 4-year-old Digiquest receiver (terrible website) with a FortecStar FS-4400 PVR from Maplin. I d love to build a MythTV but how am I ever going to build such a small, quiet receiver for anything like that price? The FS-4400 s decoder gives a dribblingly clear picture and (one firmware upgrade later) the recorder works flawlessly. I can even watch other channels on the same transponder while recording. It has a couple of small niggles (the file manager that appears every damn power-on, the pidgin English on-screen displays and it s too easy to activate the motor), but it seems pretty good value on the whole. Now I ve a dilemma. I put a 4Gb USB stick into it, just to see how I got on with the recording. I like it, but 4Gb is enough for only 2 or 3 hours and I don t want to get into swapping sticks around like video casettes. I still don t know what s where on half my tapes. I ve seen a few places report things like Solid State Drives Getting Ready to Take Over (by Jaymi Heimbuch) with much larger capacity just around the corner, but the best rate I found today is around 1 Gb/pound for SSDs up to about 32Gb, compared to nearly 10 Gb/pound for USB-powered hard disks from around 300Gb. On the flip side, SSDs are silent and I don t know how noisy or power-hungry the HDDs are. How would you play this? By the way, if you care about UK TV, BERR.gov.uk is consulting about reducing Sky s control of itv - what s to consult about? Sky s doing all they can through the courts to drag their feet, but we need to put the independent back into independent television! Tell them by Friday 23 January 2009, please.

Kapil Paranjape: Securing Synchronisation with unison (Mostly Wrong)

There are a number of documents about how to permit ssh access to run rsync or unison for remote synchronisation by an appropriate configuration of the authorized_keys file. Of these the best two are probably those by St phane Kattoor and Christian 'Greek0' Aichinger. Joey Hess also explains some of the pitfalls. The problem is the familiar one: to limit the file-system hierarchy accessible. The humble chroot is a natural way to implement such restrictions which is probably what led "Greek0" to suggest the use of dchroot. This is indeed a fine solution ... except, how does one implement it if one is not root on the server machine? WARNING: The rest of this entry is wrong as was pointed out by Joey Hess. See the update at the bottom. The package fakechroot by Piotr Roszatycki provides a way out. The problem I had was as follows: A recent enough version of fakechroot (version 2.8 worked) allows one to do make use of environment variables as follows:
LD_PRELOAD=libfakechroot.so
LD_LIBRARY_PATH=/usr/lib/fakechroot:/usr/lib64/fakechroot:/usr/lib32/fakechroot:/usr/lib:/lib
FAKECHROOT=true
FAKECHROOT_VERSION=2.8
FAKECHROOT_EXCLUDE_PATH=/bin:/lib:/usr
export LD_LIBRARY_PATH LD_PRELOAD
export FAKECHROOT_EXCLUDE_PATH FAKECHROOT FAKECHROOT_VERSION

After this setup one can run
HOME=/ chroot $HOME/some/dir /usr/bin/unison -server

and the unison server1 will only be able to view /bin, /lib, /usr and $HOME/some/dir; the latter will be mapped to /. (One needs to set the $HOME variable to something sensible for unison to function.) One should not be tempted to create subdirectories of $HOME/some/dir containing only the "relevant" portions of the system directories for unison. The reason is that those files will be created as me and so could be overwritten by unison. The creation of a suitable entry in authorized_keys to use this is an easy exercise! UPDATE: As Joey Hess has noted:
Taking a program, be it fakechroot or unison, that was never designed with security in mind, and trying to use it as a security barrier, is an open invitation to pain.
I had thought about the problem of uploading static-linked binaries and had imagined that it had been overcome. However, the basic facts in this case are:

  1. For those trying this out at $HOME with some terminal command like /bin/sh instead of /usr/bin/unison a suggestion is to add /dev to the FAKEROOT_EXCLUDE_PATH variable so that you have access to your terminal. Be aware that giving remote access to /dev may have unintended consequences!

13 January 2009

Simon McVittie: Compiling against uninstalled versions of libraries

Developers seem to do a lot of fighting with bleeding-edge libraries installed in a --prefix, so I thought I'd share how I develop telepathy-glib (a library) and telepathy-gabble (a program using that library). ~/Collabora/telepathy/tpglib on my laptop is a git clone of telepathy-glib.git, branched using the process I documented on http://telepathy.freedesktop.org/wiki/Git, which is basically: ~/Collabora/telepathy/gabble is a git clone of telepathy-gabble.git, using the same process. In my Gabble checkout, I used to configure like this:
cd ~/Collabora/telepathy/gabble
./autogen.sh \
TP_GLIB_CFLAGS="-I$ HOME /Collabora/telepathy/tpglib" \
TP_GLIB_LIBS="$ HOME /Collabora/telepathy/tpglib/telepathy-glib/libtelepathy-glib.la"
This would make libtool link Gabble against the copy of telepathy-glib built by my bleeding-edge git checkout, without ever needing to install it. This allowed me to try out my latest telepathy-glib changes with Gabble's more extensive regression tests, which was a great win. It also meant I could develop Gabble branches that required a not-yet-released telepathy-glib, and all without touching my system copy of telepathy-glib (the one I use to run Empathy and talk to people - which is the packaged version from Debian unstable or experimental). The reason I could do this is that I laid out the telepathy-glib source tree in The Right Way , which is: if a header is designed to be used via #include <my-library/foo.h>, then it goes in a my-library/ directory in the source tree, and includes other headers (even from the same project) with #include <my-library/other.h>. This means you can just add the top directory of the source tree to your include path (which automake does by default) and the right thing will happen. (Actually, this is a slight simplification of the truth: because telepathy-glib contains generated headers, you have to add the top directory of the build tree to your include path too, if you want to support out-of-tree builds. Which, of course, you do.) Other projects that do this correctly include GLib and Avahi. Avahi is a particularly interesting example because it has numerous libraries in the same tarball (including avahi-common, avahi-core, avahi-glib and avahi-gobject, which form a dependency chain). Projects that don't do this correctly include telepathy-mission-control (which is on my hit list for further swamp-draining) and libtelepathy (which is obsolete). Today I committed a patch to telepathy-glib, inspired by GStreamer, to generate telepathy-glib-uninstalled.pc. The presence of this patch simplifies the process further, to:
./autogen.sh PKG_CONFIG_PATH=$HOME/Collabora/tpglib/telepathy-glib
This has the same benefits as setting TP_GLIB_CFLAGS and TP_GLIB_LIBS, but is easier to remember, and is more future-proof against changes to telepathy-glib. It only works because pkg-config has a special case for this situation - if you ask for the package "foo", pkg-config will always look for foo-uninstalled.pc before foo.pc. (Edited 2009-01-13: putting environment variables on the ./configure or ./autogen.sh command line like ./autogen.sh PKG_CONFIG_PATH=foo is better than putting them in the environment like PKG_CONFIG_PATH=foo ./autogen.sh, since it works around Debian bug #398901 and bugs like it)

12 January 2009

Jonathan McDowell: Life with the Google/T-Mobile G1

I've previously mentioned my desire for a new smartphone. I'd been eyeing the G1 since its release, with the main factor stopping me from going ahead the need for a T-Mobile contract. They don't have any 3G coverage north of Belfast that I've seen and I'm very happy with my 20/month O2 Simplicity contract and don't have any need to pay twice that. Luckily Katherine decided to get me one for my birthday, and after some confusion involving it going to Norwich (always remember to update your Paypal delivery address as well as the card address when you move home, folks. Oh, and your Amazon wishlist address too; it's different than your primary address and I've been bitten by that myself in the past) it turned up the weekend before Christmas.

I have a UK spec T-Mobile G1. First step was to get it unlocked for use on O2. I used Unlock G1 - they weren't the cheapest, but I'd seen them recommended on a few G1 news sites and they had a helpful guide on their site about activating without a T-Mobile SIM. They claim a code within 2 business days. I ordered at 19:30 UTC on a Saturday night and had a code by 21:00 that worked first time.

Once the O2 SIM was working I needed to check if the phone was easily rootable. I typed reboot and was rewarded with a rebooting phone. I had the RC7 UK firmware release, which still had the bug. I followed the android-dls.com guide to keeping root and upgraded to the RC8 release. With that out of the way I could start to actually have a play.

The screen is lovely. I'm used to the high res E70 screen and have been disappointed at the number of phones that only do 320x240. 480x320 is probably the minimum I'd want (if I can't manage an 80 character wide SSH session I'm not really interested) though obviously if HTC ever get round to a Touch Pro with Android I might be tempted... Touch aspect is perfectly responsive, as is the interface in general - while I don't use a phone that much day to day my mobile is the only number I give out so it tends to be the only phone I use. This means that the ability to make/receive calls/sms is the most important feature for me (it's odd having to say this, but I know people who've claimed to love phones but on further probing reveal it's a great PDA but dire for calls and they have to carry something else for that). The G1 performs admirably for my needs.

The built in apps are good too. The browser is much better than the E70. I don't know if that's the bigger screen (though the resolution isn't much different) or a faster processor, but browsing on my mobile is a much more realistic proposition now. I've only played briefly with the iPhone browser and I wouldn't say the G1 was any better, but it's certainly good. Calendaring is functional too and copes with multiple Google Calendars as you'd hope. Shame it doesn't deal with anything else, but for the moment this suits my needs. I haven't used it for email; I prefer to ssh to my colo box and run mutt. Contacts are mostly ok, though I have a few gripes I'll mention later.

I haven't felt the need to install many apps. The connectbot ssh client was an obvious one and is pretty nice (main missing feature is UTF-8 and there's a feature request for it raised already). I've installed a few games off the Android Market, as well as Barcode Scanner (does what you'd think) and CellFinder (displays your location and which mobile cell you're using; it's a bit scary how few O2 masts there seem to be near my house). Installation from the market has been a breeze and it's nice to be able to flick through what's available. With my E70 it was always a real pain to go and hunt down Symbian apps (especially when S60 3rd Edition was new) and install them.

Before I start on my gripes, let me clarify that I am very happy with this phone. I wanted something with a keyboard that was functional and this fits the bill. It's a definite improvement over my E70 and I feel it's much more responsive than any of the recent Windows Mobile devices I've encountered. Also the battery life hasn't proved to be an issue - from articles I'd read I'd expected to have difficulty getting a day out of it, but in general I can easily get 2 and have had 3. Maybe my usage patterns aren't as heavy as everyone else, but that's fine for me (I remember my 9000i Communicator which really was a case of having to charge it every night).

The first issue I hit was the contacts system. Google have tied this into GMail and it really seems to have been a last minute thought process, perhaps along the lines of "Where can we stick this? Oh, hang on, people have email contacts, how about there?". Trying to move my contacts over from my E70 I was surprised to find that there's no way to import a vCard. The only option is CSV. WTF? I'm not saying vCard is perfect, but it's pretty much what we have as a standard method of contact interchange. I ended up writing some Perl to crudely parse the vCards and output CSV. I shouldn't have had to.

Then again, maybe the issue is that Google know their contacts system is a bit lacking. You'd think a company with online calendaring and contacts would be able to cope with things like birthdays, tying them together between contacts and displaying them in your calendar, wouldn't you? They can't. I can't see any way to store a birthday or anniversary with a contact. Nor a home page. The contacts system is the one area that the E70 outshines the G1.

I miss an onscreen keyboard more than I thought I would (ie at all). I understand this should be coming in the next release, which will make things like quick replies to SMSes much easier (there's no point opening the keyboard for a "Nearly there" response).

The use of only a single APN for internet access and MMS is a bit troublesome; I haven't managed to get this to work properly with O2 - either I have fully working 'net or fully working MMS with only web seeming to work. I haven't played with the settings very much though and I spent 7 months without MMS even enabled on my O2 account, so it's not high priority. Also something I understand is being fixed upstream.

I'd like a way to see the next calendar event on my home screen. I may just be missing how to do this, but it was a nice feature on the E70.

I haven't played much with the camera, but I get the impression it's pretty typical of the average mobile phone; ie not great. Not a problem for me, but don't expect this to replace a compact digital camera.

While I accept this phone isn't for everyone I think it's pretty much what I'm looking for in terms of what's on the market today. There's nicer hardware out there, but a large part of what makes this phone is the Android software. I look forward to seeing new phones in the coming year making use of it, hopefully leading to a decent selection by the time I need a new phone again. :)

Theodore Ts'o: Wanted: Incremental Backup Solutions that Use a Database

Dear Lazyweb, I m looking for recommendations for Open Source backup solutions which track incremental backups using a database, and which do not use hard link directories. Someone gave me a suggested OSS backup program at UDS, but it s slipped my memory; so I m fairly sure that at least one or more such OSS backup solutions exist, but don t know their names. Can some folks give me some suggestions? Thanks!

horizontal separator There are a number of very popular Open Source backup solutions that use a very clever hack of using hard link trees to maintain incremental backups. The advantage of such schemes is that they are very easy to code up, and it allows you to easily browse incremental backups by simply using cd and ls . The disadvantage of such schemes is that it creates very large number of directories blocks which must be validated by an fsck operation. As I ve discussed previously, this causes e2fsck to consume a vast amount of memory; sometimes more than can be supported by 32-bit systems. Another problem which has recently been brought home to me, is how much time it can take to fsck such file systems. This shouldn t have come as a surprise. Replicating the directory hierarchy for each incremental backup is perhaps the most inefficient way you could come up with for storing information for an incremental backup. The filenames are replicated in each directory hierarchy, and even if an entire subtree hasn t changed, the directories associated with that subtree must be replicated for each snapshot. As a result, each incremental snapshot results in a large number of additional directory blocks which must be tracked by the filesystem and checked by fsck. For example, in one very extreme case, a user reported to me that their backup filesystem contained 88 million inodes, of which 77 million of them were directories. Even if we assume that every directory was only a single block long, that still means that during e2fsck s pass 2 processing, 77 million times 4k, or 308 gigabytes, worth of directory blocks must be read into memory by e2fsck s pass 2. Worse yet, these 308 GB of directory blocks are scattered all across the filesystem, which means the time to simply read all of the directory blocks so they can be validated will take a very, very, long time indeed. The real right way to do implement tracking incremental backups is to use a database, since it can much more efficiently store and organize the information of what file is located where, for each incremental snapshot. If the user wants to browse an incremental snapshot via cd and ls , this could be done via a synthetic FUSE filesysem. There s a reason why all of the industrial-strength, enterprise-class backup systems use real databases; it s the same reason why enterprise class databases use their own data files, and not try to store relational tables in a filesystem, even if the filesystem supports b-tree directories and efficient storage of small files. Purpose written-and-opimzied solutions can be far more efficient than general purpose tools. So, can anyone recommend OSS backup solutions which track incremental backups using some kind of database? It doesn t really matter whether it s MySQL, Postgresql, SQLite, so long as it s not using/abusing a file systems hard links to create directory trees for each snapshot. For bonus points, there would be a way to browse a particular incremental snapshot via a FUSE interface. What suggestions can you give me, so I can pass it on to ext3/4 users who are running into problems with backup solutions such as Amanda, Backup-PC, dirvish, etc.? Update: A feature which a number of these hard-link tools do right is that they do de-duplication; that is, they will create hard links between multiple files that have the same contents, even if they are located in different directories with different names (or they have been renamed or their directory structure reorganized since they were originally backed up) and even if the two files are from different clients. This basically means the database needs to include a checksum of the file, and a way to look up to see if the contents of that file have already been backed up, perhaps with a different name. Unfortunately, it looks like many of the tape-based tools, such as Bacula, assume that tape is cheap, so they don t have these sorts of de-duplication features. Does anyone know of non-hard-link backup tools that do de-dup and which are also Open Source?

Wouter Verhelst: Hackergochi 'meme'

Christian, you forgot my (not so) recent hackergochi redo :-) Anyway, the picture I took of you back in Argentina isn't great hackergochi material; it cuts off part of your chin and the top of your head, which will get you a very very ugly hackergochi if you try to use it. Trust me been there, done that. In addition, it's very likely that you like the picture because of the somewhat dark background, even if only subconsciously; by turning it into a hackergochi, you cut out that background, so the appeal of the picture gets lost somewhat. Since you won't be at FOSDEM, I can't offer to take another picture of you. And since the picture you refer to is mostly great because of the lighting (which will no doubt be completely different, it freezing right now over here and everything) and the lens I used (which wasn't mine, but belonged to someone else; I just borrowed it for a few hours), I seriously doubt that I'll be able to get a picture that's in any way similar to the one you seem to like so much. Having said that, taking a good hackergochi picture isn't too hard; just think of a few basic things while taking it. If you're not happy with any of the pictures you already have, then take a new one! The following might help you with that: After that, just cut out the head and add a dropshadow. Even if you're not very familiar with The Gimp, that shouldn't take you a very long time; andn The Gimp is fun enough to play with anyway. Hints: Look for 'scissors select'; the dropshadow is in 'filters' -> 'light and shadow' -> 'dropshadow' Good luck :-)

11 January 2009

Russell Coker: Planet Flooding

One annoying thing that happens regularly is Planet Flooding . This is when one of the many blogs that is syndicated by a public Planet installation changes it s time stamps and has 10 or more old posts appear as new. It s doubly annoying when the blogger in question knows about the problem. Planet Flooding is easy to solve. If you are changing your blogging software or doing something else that may result in old posts appearing to be new then all you have to do is configure your blog to include a small number of posts (maybe two or three) in the RSS feed. Seeing two old posts re-appearing plus a new post explaining it is not going to annoy anyone. If you run a Planet (or Venus) installation then configure it to have a maximum number of posts per feed. For a Planet that syndicates feeds from a number of individuals and only includes a few days of traffic (which is probably a category that covers most Planets) there is no need for more than four items per feed. For a severe case of Planet flooding (EG posts which always appear as being the newest and are therefore at the top of the list) the thing to do is to immediately remove the feed until the problem is fixed. Allowing a broken blog configuration to annoy other people is not doing any favors for the blogger in question, it simply drives people to filter the Planet to exclude the articles by that blogger. Yes it does take some work to adjust the configuration of the Planet, but that is surely no more work than replying to email rejecting requests for the configuration to be adjusted. The first aim of running a blog or a Planet should be to make it readable, Planet flooding breaks this for the Planet and for the blogger who caused it. It is a technical problem and needs a technical solution (which can be temporarily removing the blog from the Planet syndication list).

10 January 2009

David Welton: Developer > Project, or Project > Developer(s)?

I've been fooling around with "git" lately - it's useful for local projects where I don't want to have to set up a remote server, and it also seems to be "the way the wind is blowing" - lots of open source projects are starting to use it, so I might as well familiarize myself with how it works. The github service seems to be very popular at the moment, and it's not hard to see why. They've created a very useful service, and give it away completely free for open source use. That's a pretty good deal! It's also an easy to use site that's well integrated with git, so you can see lots of stuff graphically instead of fooling around with command line tools. However, I have a nagging doubt. Github apparently bases everything around the developer. In other words, projects hosted there are mostly attached to a developer who 'owns' the project, rather than existing on their own. There are a few exceptions - there seems to be a 'rails' role account to manage Rails, rather than having it belong to, say, DHH, so it's not impossible to do something in a project-centric fashion, but it doesn't seem to be very common either. What I'm wondering is what sort of effects this might have in the long term. Github, and git itself, make it very easy to 'fork' projects. Could, or will this lead to a situation where people don't try so hard to get their code in the 'official' branch? What happens when someone loses interest in their project? Sure, someone else can fork their repository, but if all the links were pointing to the first guy, because he was the main hacker on a project for X years, they're not going to switch overnight even if guy B takes over maintanance. And in the meantime, casual searchers might turn up the 'dead' branch, or simply be confused as to who's doing what. This could make things confusing for someone who just wants to check out some code and start using it.... trying to sort out various revisions and ancestry of a project could be quite discouraging. At the Apache Software Foundation, on the other hand, people are obviously very important, but projects are the organizational unit that people get involved with, and a lot of emphasis is placed on not having one big benevolent dictator, but on having a group of people who make decisions and act as arbiters of what goes into the project. People can come and go as they please, but the project, and, importantly, the links to it, remain the same over time (barring any big, unforeseen blowups). As far as I can tell, this is not a git problem, but something related to how github organizes their site. And, of course, it's possible that I have simply missed something due to my lack of knowledge of git, and not being more than superficially familiar with github. Even if I'm right, it shouldn't take that much effort for github to create a system where it's possible for multiple people to 'own' a project.

David Welton: Developer > Project, or Project > Developer(s)?

I've been fooling around with "git" lately - it's useful for local projects where I don't want to have to set up a remote server, and it also seems to be "the way the wind is blowing" - lots of open source projects are starting to use it, so I might as well familiarize myself with how it works. The github service seems to be very popular at the moment, and it's not hard to see why. They've created a very useful service, and give it away completely free for open source use. That's a pretty good deal! It's also an easy to use site that's well integrated with git, so you can see lots of stuff graphically instead of fooling around with command line tools. However, I have a nagging doubt. Github apparently bases everything around the developer. In other words, projects hosted there are mostly attached to a developer who 'owns' the project, rather than existing on their own. There are a few exceptions - there seems to be a 'rails' role account to manage Rails, rather than having it belong to, say, DHH, so it's not impossible to do something in a project-centric fashion, but it doesn't seem to be very common either. What I'm wondering is what sort of effects this might have in the long term. Github, and git itself, make it very easy to 'fork' projects. Could, or will this lead to a situation where people don't try so hard to get their code in the 'official' branch? What happens when someone loses interest in their project? Sure, someone else can fork their repository, but if all the links were pointing to the first guy, because he was the main hacker on a project for X years, they're not going to switch overnight even if guy B takes over maintanance. And in the meantime, casual searchers might turn up the 'dead' branch, or simply be confused as to who's doing what. This could make things confusing for someone who just wants to check out some code and start using it.... trying to sort out various revisions and ancestry of a project could be quite discouraging. At the Apache Software Foundation, on the other hand, people are obviously very important, but projects are the organizational unit that people get involved with, and a lot of emphasis is placed on not having one big benevolent dictator, but on having a group of people who make decisions and act as arbiters of what goes into the project. People can come and go as they please, but the project, and, importantly, the links to it, remain the same over time (barring any big, unforeseen blowups). As far as I can tell, this is not a git problem, but something related to how github organizes their site. And, of course, it's possible that I have simply missed something due to my lack of knowledge of git, and not being more than superficially familiar with github. Even if I'm right, it shouldn't take that much effort for github to create a system where it's possible for multiple people to 'own' a project.

Michael Schutte: Re: Nice(r) console fonts

Bastian, You could also have a look at console-setup. In your case, installing it would be sufficient to get the desired result: it depends on console-terminus and uses it in its default configuration. Another benefit is ckbcomp, an xkbcomp clone for the console which is absolutely cool if you use some obscure keyboard layout which doesn t come with an up-to-date Linux console keymap. Just dpkg-reconfigure (or set XKBLAYOUT and friends in /etc/default/console-setup) and let the setupcon script do everything for you.

Lucas Nussbaum: On Debian membership

The more I think about it, The more I m convinced that the both approaches that have been proposed to change the way we deal with Debian membership (Joerg s new statuses for non-developing contributors, and Lars counting of advocates) are both steps in the wrong direction. I really would like something simpler, and less technical, to become a Debian Developer. After all, what matters is that we trust new developers to make the right decisions (for example, not touch something that they are not confortable with). We currently verify that they know each and every technical bit about things that they may never encounter during their DD life, but that doesn t say anything about their ability to work with others inside a community, or their judgement when touching packages that they don t maintain. For example, we could have something inspired by the current process to become a Debian Maintainer: instead of going through 50+ questions, we could rely on advocations from existing Debian Developers to judge new applicants. The advocation wouldn t simply be +1 emails (as in Lars proposal), but would instead contain a detailed description of what the applicant did. A group of DDs (DAMs, basically) would then read the advocation emails, and decide whether there s sufficient proof that the applicant can be granted DD status. That would allow a much faster process, removing the load from the Application Managers and NM Frontdesk Members. And it probably wouldn t reduce the quality of new DDs, because of the need to collect advocation emails from several DDs. Probably the best way to move forward with that would be to work on a document (DEP?) that would list all the changes and explain them, and then ask all the developers to vote on it, like it was done for the Debian Maintainers GR. Are there some people interested on working on a first draft of such a document?

Next.

Previous.