diary at Telent Netowrks

I bought a new mp3 player#

Fri, 06 May 2005 18:38:53 +0000

I bought a new mp3 player. This has nothing (afaik) to do with Lisp, but I thought I'd note it anyway, if only to pacify the end-of-month bug.

This reminds me that I never did write the review I promised of my last foray into portable music devices, so here it is: "The Synn {something or other} is cheap in both senses. It ate batteries faster than my portable CD player - an impressive feat for something with no moving parts - and after a few months of intermittent use it developed a hiss in the left channel that was so loud it made the music unlistenable".

I hope to have better luck with the Creative Zen Micro.

Turns out that my multidimensional plist goop is perhaps not as useful as it could#

Mon, 09 May 2005 14:10:43 +0000

Turns out that my multidimensional plist goop is perhaps not as useful as it could be: because it accepts the keys as a &rest argument, it needs to be used with apply whenever you have a list of keys generated at runtime. Problem:

The following situations involving setf of apply must be supported:

(setf (apply #'aref array subscript more-subscripts) new-element)
(setf (apply #'bit array subscript more-subscripts) new-element)
(setf (apply #'sbit array subscript more-subscripts) new-element)

No other standardized function is required to be supported, but an implementation may define such support. An implementation may also define support for implementation-defined operators.


Maybe I should rethink the API a little. Shame. I quite liked it.

Yes, I'm still playing with non-OO database APIs.

 (dbs:with-query (q (database-handle "select  from blah where thing"))
      (let ((row (dbs:get-row database-handle* q)))
        (unless row (return))
	(destructuring-bind (&key ticket artist promoter venue) row
           (format t "ticket ~S artist ~S promoter ~S venue ~S~~%"
	   	   ticket artist promoter venue)))))

(dbs:insert-row database-handle 'employee '(:empid 22 :forename "John" :lastname "Smith" :managerid 3 :salary 25000))

(dbs:update-row database-handle 'employee '(:salary (* 1.2 salary)) '(= :empid 22))

I might hack the with-query macro around a little so it doesn't need both a database name /and/ a cursor; one should be sufficient. The parenthesized prefix notation stuff is done with sexql.

Time for a short consumer roundup#

Wed, 11 May 2005 12:16:44 +0000

Time for a short consumer roundup.


Thu, 12 May 2005 14:07:43 +0000


The headphones work a lot better with the large earbuds instead of the default medium-sized ones, though still require some fiddling to get them placed so that the sound isn't muffled and isn't tinny either. They do reduce external noise significantly too, but they're a long way from letting me walk around in blissful silence: I can still hear traffic and stuff. Which I think is probably good.

I can find no way of getting pictures off my phone over the USB cable, without forking out for a piece of Windows software (which I'd then have to run under Wine or something). I thought I read something that indicated it would do OBEX over the USB connection if fed the appropriate AT commands to put it into obex mode, but despite extensive searching I can't find that page any more so I might have imagined it. Gah.

For the record, the afore-mentioned Windows#

Tue, 17 May 2005 00:48:45 +0000

For the record, the afore-mentioned Windows software - which I gave in and bought, in the hope of getting it to work in Wine - is approximately as usable as xmms (for approximately the same reasons, too), and also doesn't seem to do anything anyway even in real Windows. More on this some other time, but in the meantime it only goes to confirm my previous opinion that mobile phone hardware companies are much more interested in network operators than network users, and any network user who cares significantly about being able to do what they want with their personal electronic equipment - rather than what some marketer somewhere thinks they should want - should look to some platform other than the mobile phone (say, a PDA) for doing it.

I must start diary entries with shorter sentences#

Tue, 17 May 2005 18:13:53 +0000

I must start diary entries with shorter sentences. That or do something sensible with my rss generator such that Planet Lisp doesn't get really ugly titles, but that would involve hacking and we all know I don't do that any more

The Awesome Power of Open Source came through for me in the end: I eventually found an app called moto4lin on Sourceforge which - after some smacking with the gdbhammer, as the error messages are not really conducive to working out what on earth it's trying to do - lets me download pictures and other files on my v220 in Linux.

void P2kProc::drv_switchP2K(char * st)
        char cmd[1024];
        sprintf(cmd,"echo \"AT+MODE=8\" > %s", (st == 0) ? ACMdev : st);

I'm pretty sure that even C++ has enough library support that you could do this without recourse to the shell, but leaving aside the slightly questionable style, AT+MODE=8 has a truly magical effect on a v220 - it causes it to stop being a tty, change its USB product id, and start presenting some probably-motorola-proprietary "P2K" interface to USB, which the moto4lin program will understand. Then I can browse the filesystem and also do SEEM editing, which latter sounds potentially irreversible so I have decided not to bother with until I have some idea what on earth it is.

How to get it out of this P2K mode again, other than by disconnecting the USB cable, I don't yet know. There's no longer any tty to which I can issue AT+MODE=0

The picture quality is exactly as bad as I was expecting, by the way. Still, nice gimmick.

I seem to have no network to cvs.telent.net#

Thu, 19 May 2005 11:49:12 +0000

I seem to have no network to cvs.telent.net. Dunno what's broken yet; more information as it becomes available.

Latest on cvs.telent.net: I plan to move to darcs#

Mon, 23 May 2005 01:48:44 +0000

Latest on cvs.telent.net: I plan to move to darcs.

To: lispwebred-bean.com,portable-clxlists.metacircles.com
Subject: Telent CVS broken (again), likely move to darcs
From: Daniel Barlow 

[ this message is crossposted. if you reply, please exercise restraint in your recipient lists ]

cvs.telent.net, the machine that does (did ...) CVS hosting for - among other things - Araneida, CLiki, and "telent CLX", is currently down with suspected hardware problems.

My time and inclination for babysitting flakey hardware in colo space is limited, but also, as many have noted, my record of late for hacking on and merging patches to these projects is pretty poor anyway. I intend, therefore, to move the said projects over to darcs


This is one of the new breed of cvs-replacement version control systems, with two important features from my perspective:

1) it's decentralised, so people can keep their own trees with local patches in them, and worry less about getting changes through me. If anyone does a really good job (or indeed, a consistently better-than-indifferent job) at patch merging and ongoing development for any of the formerly-at-cvs.telent.net projects, I will be entirely happy to hand over the "official" mantle to them.

2) it needs no special server support, so I don't have to worry about finding a replacement machine for cvs.telent.net (call me paranoid, but even chrooted I don't like running cvs pserver on any machine that's used for something else)

cvs.telent.net is unlikely to return to service. If anyone had an account on it with data in their home directory, (a) well, you probably shouldn't have done that, but (b) feel free to email me and we'll make some kind of arrangement to get it off there.

I hope this should make things run a bit more smoothly in future. More details when I've had a chance to upload the repositories somewhere accessible.


Work continues on trying to make my phone behave#

Mon, 23 May 2005 22:20:01 +0000

Work continues on trying to make my phone behave. I missed a bunch of calls on Sunday because I diodn't notice it vibrating while I was skating, so today I thought I'd sort out a nice mp3 ringtone. So that I remember for next time, and in case Google ever leads other similarly-afflicted people here (magic keywords: v220 mp3 ringtone p2k), the procedure is as follows:

  1. Create a suitable mp3. Actually, I just took one I had handy and used dd to chop the first twenty seconds; when I have a moment I'll go back and do some fancy editing and eq, and possibly recode it at a lower rate.

  2. Upload it to the phone's /a/mobile/audio/ directory.

  3. (important) Delete MyToneDB.db, which you will find in the same directory. It's probably a good idea to back that file up somewhere first.

  4. When you go to Themes -> Sounds on the phone now, it will sit there with a "please wait" dialog for longer than usual (several tens of seconds, on my phone) - I assume it's rebuilding the MyToneDB file - then show your new upload along with all the crummy default rings.

  5. Press the Menu button then 'Apply as Ring Tone'

  6. There may be a power cycle involved somewhere as well (yay, feels just like Windows). Or maybe that bit wasn't necessary.

Disclaimer: no warranty/this worked for me - it might not work for you/if it breaks your phone, you get to keep both pieces. Well, probably they really belong to your network provider or something, but I want no part of it anyway.

The darcs side called#

Fri, 27 May 2005 01:26:31 +0000

The darcs side called. It left a message. The message is

Note that (1) for reasons I don't feel much like figuring out at this time of night, at time of writing my secondary dns doesn't seem to believe verisons.telent.net exists, (2) I am not aware of any way except through the cgi that you can find out what repositories exist yet - as I write this, the answer is "clx", but tomorrow I'll add cliki-related projects and the rest.

First impression, btw, is that the cgi thing is probably not going to be available for long, as xsltproc eats machine resources like, well, like something designed by XML users.

There are many reasons to keep a blog, and most of them are in#

Wed, 01 Jun 2005 11:22:10 +0000

There are many reasons to keep a blog, and most of them are in conflict with each other. Today the conflict is between writing something so I will remember next year what I was doing this year, and writing nothing so that everyone else doesn't have to wade through my rambling. Guess who won?

I think I probably won't be at LSM after all.