Search Results: "cas"

31 December 2005

Antti-Juhani Kaijanaho: Christmas balance

I calmed down for Christmas on Friday. Calmed down is exactly the right verb, as I ended up sleeping through most of it. I slept though Friday, hacked during the late evening and night, then slept again most of the Christmas eve. My father came around six to drop me his (other) gift. It was a book on European history 1600–1800, nice, what I had asked for, for I have this dream of writing something in the 163x-verse some time (though I doubt it’ll ever happen). I had received (and opened) his other gift earlier, which was Star Wreck’s soundtrack (probably better than the movie, though the movie was very good too). Opened also my mother’s package which I had picked up earlier in the week from the post office’s local agent: a Heidi Hautala scarf, a long scarf made by my mother herself, and some writing material. Thank you! I slept through most of Sunday, too. Advance subscriptions to Jim Baen’s Universe opened also on Christmas eve. Picked up the Titan membership, for even the other membership classes appealed to me (extensive Tuckerization rights, yessss!), they would have posed cash flow problems. So I took the Titan one, hoping that it will help the magazine at least a little. However, I started reading one of the books that came with the advance subscription package, Empire from Ashes by David Weber, and helped me spend most of the time I wasn’t sleeping (of course, I realized later that I already had that book, since it came with the At All Costs hardcover bonus CD). Today’s minus fifteen degrees, along with the threat that it might actually go below twenty today, made me finally look for my long johns. Surprisingly, my current trousers have been warm enough without long johns even slightly below minus ten; but I knew I’d have to look for the long johns eventually, as a Finnish winter at Jyv skyl ’s longitude just isn’t complete without at least a few days of minus 25 degrees. All Celsius, naturally. All in all, it was a most relaxing Christmas :)

30 December 2005

Andrew Pollock: [life/mtb] Second stack

I had another cleat-related incident on the way home tonight. I thought I'd unclicked my left foot when I came to cross the road, but apparently hadn't, and I'd already rocked towards the left and was well and truly leaning that way before it became evident that my leg was still anchored to the pedal. I fell pretty heavily on my left wrist, and it made a nasty crunching sound. Doesn't appear to be broken though, just sprained I guess. On inspection of my left shoe when I made it home, it would seem that one of the bolts that holds the cleat to the shoe has come loose and disappeared. So when I turned my foot sideways, the cleat rotated on the other bolt, and didn't release properly, whereas I thought it had released by virtue of the fact that my foot moved sideways. Just as well it's forecast to rain tomorrow. Don't feel much like riding at the moment.

29 December 2005

Decklin Foster: An Explanation Is Requested

In case anyone only reading the tech feed is wondering why those particular bits of sarcasm (I think I should just stop doing that about holy-war topics) floated to the top of my feed this morning, it was a bunch of stupidity on my part and an occasionally annoying feature of PyBlosxom.

28 December 2005

Erich Schubert: Automagic fixing quotation marks for LyX

My mother uses LyX (and thus, LaTeX) to layout her books. She doesn't need much help, but does almost everything herself. Except she was lacking an editor which could replace the quotation marks appropriately, because they are handled somewhat special in LyX (you need an editor which can replace by multiline text, such as VIM). So every now and then, mostly when she's started layouting a new book, she'll ask me to fix the quotation marks in a lyx file for her. I decided to write a small python script for it, since she has python installed on her box anyway (also on Windows, although she also has Linux on it). Maybe someone else has the same problems, so here you go:
#!/usr/bin/python
import re, sys
 
# Use full regexp power to detect as many " properly as possible...
# Note that this is a lot more sophisticated than just \b" and "\b
# and will be able to handle all the 'something ...", said foo' cases, too!
# But yeah, you can do even more, and maybe separate it into more regexps...
qrp1 = re.compile(r'(^\s* \b[:]?\s+[.:,;?!\-\(]*)"(\b)', re.M)
qrp2 = re.compile(r'(\b[.:,;?!\-\)]* \b \.\.\.)"([.:,;?!\-\)]*(\s+\b \s*$))', re.M)
 
# These are for >>-style quotes, german bracketing. If you want other
# quotes, adjust to your style yourself (hint: look at your .lyx file)
q1 = r"""
\\begin_inset Quotes ald
\\end_inset
"""
q2 = r"""
\\begin_inset Quotes ard
\\end_inset
"""
 
# Iterate over all input files...
for name in sys.argv[1:]:
        # Load input file
        fi = file(name, "r")
        data = fi.read()
        fi.close()
        # Replace quotes
        data = qrp1.sub("\\1"+q1+"\\2", data)
        data = qrp2.sub("\\1"+q2+"\\2", data)
        # Write output file with new name
        newname = name + ".quotes.lyx"
        fi2 = file(newname, "w")
        fi2.write(data)
        fi2.close()

Axel Beckert: I changed my mind. I want a camera mobile phone.

Today I read and wrote about Semapedia, a service respective toolset to encode Wikipedia URLs (and also others) as dot-matrix barcode, print them out on leaflets together with mentioning Wikipedia and the URL. Then any visitor with a modern camera cell phone can take an image of the barcode, decode it with the right software on your phone, which passes the decoded URL directly to the phones webbrowser. This is the first useful application of camera phones I ever heard about. But I see it as so useful that I may consider buying me a camera cell phone with the next contract renewal, although until now, I focused all my search for a worthy successor to my Nokia 6310i on non-camera phones. (Update: And I’m not alone with the wish for a useful mobile phone.) The 6310i had nearly everything I needed: A big memory, long standby times (1.5 to 2 weeks), WAP incl. WAP browser for reading Symlink on the road, GPRS, GSM 900/1800, T9, Infrared, gnokii support, the same battery bay than my former mobile phones (Nokia 6210 and 6130) and the Nokia typical, very intuïtive and blindly usable user interface. (Siemens mobiles suck!). It also had some things, I didn’t need yet, but sounded useful: Voice dialing and voice recording, Java for playing with own programs, Bluetooth for a cableless headset or so and GSM-1900 because perhaps also other countries than the US use that frequency band. (I refuse to travel to the US, so I won’t need the GSM-1900 there.) It had nothing I didn’t want to have in a mobile phone: Camera, radio, MP3 player, standby time munching color display, e-mail client, MMS, MP3 ring tones or flip covers. The only thing I missed, was a more modern Java VM and even more memory when Opera Mini came out and maybe polyphone ring tones, so I could have the Monkey Island theme as ring tone. ;-) So what now? Being able to use Opera Mini and Semapedia means to have a mobile phone with camera and — and that’s the drawback — a color display. Anyone knows a Nokia camera phone on which Opera Mini runs but without color display? And with the battery bay from the 6x10 series? No? Or maybe I should just stay with the 6310i and get me a second one in better condition (no broken case) from eBay or so? There were also (yet unconfirmed) rumours that my GSM provider E-Plus will have the Linux based internet tablet Nokia 770 for a contract renewal plus 80€ to 90€… Difficult decision…

27 December 2005

Erich Schubert: Fixing planet

Today I've been fighting Planet, the well-known blog aggregator tool. After a while I had found out how/why it was scrambling Atom feeds horribly. I'm not sure if actually is a planet bug - maybe it is fine with older python versions. The SGML parser of python2.4 however fails on tags such as <br />, a very common case in blogs and thus in atom feeds. Strage additional > brackets appeared in the output. The reason is, that the SGML parser as of Python2.4 is looking for <tag/foo/ as an equivalent to <tag>foo</tag>, and thus treats <br/><br/> the same as <br>><br<br>> with the inner chars somehow magically escaped... The fix is quite simple: add
sgmllib.shorttag = re.compile('<([a-zA-Z][-.a-zA-Z0-9]*)/(/*)>')
to your feedparser.py file in the obvious place (next to sgmllib.tagfind). This will break support for these true SGML short tags, but I've never heard of a blog feed using them anyway. I told you that I'm not really sure whether this is a planet bug: It might be a bug of pythons sgmllib, too. But maybe Planet should just use a XML parser for XML files, and fallback to an SGML parser (or maybe a robust XML parser) for other files (unfortunately, many blogs - including mine - do not ensure correct XML). And Planet could use some proper XML handling, too, anyway... Right now, the code is so string-array-based, it makes me sick. You might also want some extra magic to re-fold <br/> tags to not confuse older browsers.

Mark Brown: Bugs is bugs is bugs

Ingo, I fear that you are overstating the situation m68k is now in. Non release critical bugs do tend to get fixed - if they didn’t there would scarcely be any point in having them in the BTS at all. My guess would be that any difference will be felt mainly when it comes to bodging round problems. I know I fix bugs for ports that aren’t even in the archive (and I don’t just mean AMD64 here) about as quickly as any other bug and I don’t feel that I’m alone on that. Where things don’t get looked at I would expect to see a package that could generally use some more attention. As far as I have noticed m68k doesn’t tend to have many porting issues that require fixes in individual packages beyond the toolchain and kernel - if that is the case it’s a bit of a moot issue.

26 December 2005

Matthew Palmer: Language Is Not Just Syntax

My current long-term learning project is Ruby on Rails, the ultra-hyped web application framework from David Heinemeier Hansson and friends. I like it (primarily because I can see a lot of my own abortive ideas from a web app framework for PHP I used to develop), but there is one big thing about it (or, rather, it's surrounding hype) that irritates me. Throughout the Rails literature (webpages, magazine and webzine articles, and the book Agile Web Development With Rails), there is a consistent message -- that, because everything is written in Ruby, you don't have to learn any new programming languages to write Rails applications. This is a wonderful theory -- no large XML config files to define my database schemas, and no castrated and irritating HTML template system to learn. From defining table relationships to printing a select tag, It's All Ruby, All The Time. Sweet, right? Sort of. The problem is that you won't find the language primitive to declare a one-to-many relationship in the Pickaxe (the definitive Ruby language reference book -- like "the Camel" for Perl, "the Bat" for Sendmail, or "the Turkey" for PHP). Defining a separate namespace in Rails for all of these operations is, of course, necessary, since the language didn't already define these operations. But, once you've defined a whole new set of methods to do all of these operations, you can look back on your hard work and see -- what? A new language -- one specifically designed to describe webapps. Don't get me wrong -- domain-specific languages are teh r0x0r. If everyone had to do all of their HTML manipulation by hand, programmers would be even more insane than they are. But, when you're writing your application in Rails, you're not speaking "pure Ruby". Your syntax and basic structure is Ruby, but your methods and attributes are new, different, and All Rails. It may not be a separate programming language in the usual sense, but by the time you've added a whole new pile of classes, methods, and attributes (not to mention whole new ways of structuring your application), how much importance is the use of the @ symbol to signify an instance variable, compared to the whole new set of methods to learn? Natural languages, of course, have similar issues. Most western european languages share a lot of common characteristics -- similar character sets, punctuation sets, and they read left-to-right. So I can look at a page of German or French, and identify most-to-all of the salient features (hey look, an 'a'!), and even grok the meaning of a few of the words (familiar to me, probably, because English misappropriated them from wherever they came from) but I still have no hope whatsoever of understanding the meaning of the passage as a whole. The language syntax looks familiar, but those nouns and verbs don't have any meaning to me. You can't plonk a Rails app in front of even a seasoned Ruby developer and expect them to immediately jump in and start hacking on it like they've been writing it all their life. The language syntax looks familiar, but those methods and attributes don't have any meaning to them. This is nothing peculiar to Rails, of course. If you want someone to hack on your Hibernate or Spring app, you'll get better results if you advertise for a Hibernate or Spring programmer than a Java programmer. But Rails advocates regularly say "it's all just Ruby, so there's nothing new to learn!", and that's Just Wrong, in my opinion. As an aside, if you're looking around for something a bit different, do seriously consider Rails (or just Ruby, if you don't need a webapp framework). It's different from the "usual" suspects (C, C++, and "the Ps" -- PHP, Perl, and Python), and pleasantly so. If you judge your programming languages by the old adage "a programming language that doesn't change the way you think about programming isn't worth learning", Ruby will score well. I know it's helped me think about my programming differently already, especially my Python programming (and thanks to Anthony Baxter for answering all of my esoteric python questions at OSDC a couple of weeks ago).

24 December 2005

Adam Heath: Merry ChristmasHappy Holidays

Artist: Mr. Garrison Lyrics
Song: Merry Fucking Christmas Lyrics
Mr. Garrison: I heard there is no Christmas
In the silly Middle East
No trees, no snow, no Santa Claus
They have different religious beliefs They believe in Muhammad
And not in our holiday
And so every December
I go to the Middle East and say… “Hey there Mr. Muslim
Merry fucking Christmas
Put down that book the Koran
And hear some holiday wishes. In case you haven’t noticed
It’s Jesus’s birthday.
So get off your heathen Muslim ass
and fucking celebrate. There is no holiday season in India I’ve heard
They don’t hang up their stockings
And that is just absurd! They’ve never read a Christmas story.
They don’t know what Rudolph is about
And that is why in December
I’ll go to India and shout… Hey there Mr. Hinduist
Merry fucking Christmas
Drink eggnog and eat some beef
And pass it to the missus. In case you haven’t noticed
It’s Jesus’s birthday
So get off your heathen Hindu ass
and fucking celebrate! Now I heard that in Japan
Everyone just lives in sin
They pray to several gods
And put needles in their skin. On December 25th
All they do is eat a cake
And that is why I go to Japan
And walk around and say… Hey there Mr. Shintoist
Merry fucking Christmas
God is going to kick your ass
You infidelic pagan scum. In case you haven’t noticed
There’s festive things to do
So lets all rejoice for Jesus
And Merry fucking Christmas to you. On Christmas day I travel round the world and say,
Taoists, Krishnas, Buddhists, and all you atheists too,
Merry Fucking Christmas, To You! (Clapping) Thank you Mr. hat

23 December 2005

Wouter Verhelst: Aptitude's killer feature

I didn't like aptitude. Its user interface wasn't much better (IMO) than that of dselect (for the full-screen interface) and apt-get (for the command-line one); and it did not offer any features that I absolutely needed and couldn't get with (e.g.), debfoster. But it did require quite a bit more time to do stuff, since it maintains its own package databases, on top . When installing rock again, I accidentally used aptitude one time, and found out about it's new feature (that only exists since 0.4.0, IIUC) which allows one to more detailedly specify what to do in case of an upgrade conflict. This is really great. I've since completely switched to using aptitude, on all my systems—even the stable ones, which do not have that feature yet; the latter is mainly because it allows me to have a similar interface on all my machines, rather than having to remember how something is done on this box again. Thanks, Daniel!

22 December 2005

Andrew Pollock: [tech] Google Reader saves my sanity

I've been relying on just Planet for reading blogs. I mainly read just Planet Debian and Linux Linux Australia, with a shortlist of other friends' blogs that used to be read via my own Planet instance, which is currently in a shipping container somewhere. This of course sucks in two ways: if you don't keep up, articles fall off the bottom and are gone forever, and you have to mentally keep track of what you've already read. So the next choice is a feed-reader like Liferea, but this then sucks in different ways: it's tied to the computer you run it on, and posts that have been previously read often seem to come back as new. I get this every time I refresh Planet Linux Australia. Drives me mad. So what I really want is a way of being able to centrally store what I've read, regardless of where I am, and what computer I'm using. Enter Google Reader. It has a nice clean interface, it's Ajaxed up the wazoo, and Just Workstm. My only (minor) beefs are that it doesn't seem to allow you to mark posts as read or unread, and that it always wants to have the current article second from the top in the list. Other than that, the UI is very clean and simple (and even uses vi keys). Added bonus is that if any other user is already subscribed to the feed, you get all the historical articles for free, which in the case of the Planets, goes back a lot further than the feed currently provides. Ideally I'd like something like this, that I can run on my own server, because I like keeping everything in the family. In the meantime, this is a suitable alternative. Getting all the back-articles is a bonus well worth it. Full disclosure: I work for Google, but that's what's making me look for a more efficient method to read blogs.

Steve Kemp: Perl Mail Filters?

Procmail Sucks
OK sucks is a bit strong: It is both insanely extensible and utterly horrid to work with. I wish there were a decent perl replacement for Procmail. Seems to me that regexps and piping through external programs covers 99% of the average procmail use cases. Perl has a lot of modules already existing for working with mbox files, maildirs, and even messages. It seems that parp should be that project but it hasn’t been touched since 2002. PMS is another dead project. Does anything exist already? Or am I stuck in procmail hell? I’d be tempted to start my own project … "down that path lies madness"

Enrico Zini: Custom signals with Ruby-GTK2

How to create a custom signal in Ruby-GTK2 I'm playing with the GTK2 bindings for Ruby. When coding GUI things, I usually like to build my own higher level widgets by subclassing containers and populating them with other widgets. For example, I'm creating an image browser and I like to make an ImageList class that subclasses a Gtk::ScrolledWindow and builds the TreeView inside it:
class ImageList < Gtk::ScrolledWindow
      def initialize
              super
              @files = Gtk::ListStore.new(String, String, Gdk::Pixbuf)
              @fileList = Gtk::TreeView.new(@files)
              renderer = Gtk::CellRendererPixbuf.new
              col = Gtk::TreeViewColumn.new("Thumb", renderer, :pixbuf => 2)
              @fileList.append_column(col)
              renderer = Gtk::CellRendererText.new
              col = Gtk::TreeViewColumn.new("File name", renderer, :text => 1)
              @fileList.append_column(col)
              self.add @fileList
      end
      
      def readDir (root)
              Dir.foreach root do  dir 
                      file = root+'/'+dir
                      if !FileTest.directory?(file) && dir =~ /\.jpe?g$/ && FileTest.readable?(file)
                              thumb = getThumbnail(file)
                              iter = @files.append
                              iter[0] = file
                              iter[1] = dir
                              iter[2] = Gdk::Pixbuf.new thumb
                              File.delete(thumb)
                      end
              end
      end
end
When working like this, I find myself very soon in need of creating custom signals: in this case I want to make a signal that ImageList emits when the user select an image from the TreeView, like this:
fileList.signal_connect("selected") do  filename 
      imageDetails.load(filename)
end
Now, how do I implement that extra 'selected' signal in my ImageList? Ruby documentation is usually very good and easy to find, but this time Google had little to say to me. When the going gets tough, the tough gets to IRC:
enrico> Hi.  http://ruby-gnome2.sourceforge.jp/?News_20031116_1 says that it is
        possible to create custom signals, however I could not find any
        documentation on how to do it.  Anyone has a link or a short explanation?
pterjan> glib/sample in the source IIRC
pterjan>   # define new signal "hoge"
pterjan>   signal_new("hoge",                  # name
pterjan>              GLib::Signal::RUN_FIRST, # flags
pterjan>              nil,                     # accumulator (XXX: not supported yet)
pterjan>              nil,                     # return type (void == nil)
pterjan>              Integer, Integer         # parameter types
pterjan>              )
pterjan> in glib/sample/type-register.rb
enrico> ooh!
enrico> pterjan: thanks!
enrico> I'll blog about it, it might make it easier for others to google this answer
Thanks pterjan, and oh, coolness! So there are nice examples that I was silly enough to miss. Are they included in the Debian packages? Oh, yes! Right in /usr/share/doc/libglib2-ruby/examples/type-register.rb. Here's the ImageList class with the new signal:
class ImageList < Gtk::ScrolledWindow
      type_register
      signal_new("selected",              # name
                 GLib::Signal::RUN_FIRST, # flags
                 nil,                     # accumulator (XXX: not supported yet)
                 nil,                     # return type (void == nil)
                 String                   # parameter types
                 )
      def initialize
              super
              @files = Gtk::ListStore.new(String, String, Gdk::Pixbuf)
              @fileList = Gtk::TreeView.new(@files)
              renderer = Gtk::CellRendererPixbuf.new
              col = Gtk::TreeViewColumn.new("Thumb", renderer, :pixbuf => 2)
              @fileList.append_column(col)
              renderer = Gtk::CellRendererText.new
              col = Gtk::TreeViewColumn.new("File name", renderer, :text => 1)
              @fileList.append_column(col)
              self.add @fileList
              sel = @fileList.selection
              sel.signal_connect("changed") do  sel 
                      if iter = sel.selected
                              puts "Double-clicked row contains name # iter[0] !"
                              self.signal_emit("selected", iter[0])
                      end
              end
      end
      def signal_do_selected(file)
            puts "Selected " + file
            #p caller
      end
      
      def readDir (root)
              Dir.foreach root do  dir 
                      file = root+'/'+dir
                      if !FileTest.directory?(file) && dir =~ /\.jpe?g$/ && FileTest.readable?(file)
                              thumb = getThumbnail(file)
                              iter = @files.append
                              iter[0] = file
                              iter[1] = dir
                              iter[2] = Gdk::Pixbuf.new thumb
                              File.delete(thumb)
                      end
              end
      end
end
And here's the controller code that binds the signal to some effect:
imageList.signal_connect("selected") do  imagelist, filename 
      puts "File # filename  was clicked!"
      image.load(filename)
end
It's quite easy, and (finally!) it does what I want without needing to write thousands of lines of code. YAY! And I finally fulfull my dream of connecting closures instead of callbacks to GTK signals. Yes, I could have done it in Perl. Yes I could have done it in Python. But Ruby is soo cute!

Daniel Stone: [tech/x] x11r7

A big word up to X11R7 being released. The benefits of modularisation are pretty well-documented: distributors can do security updates much more easily, as well as keep better track of upstream sources, users can build drivers easily if need be (and the drivers can get released promptly upon releases of new cards), etc, etc. But for me, the biggest win is that it's finally over: I've been working on it since Jan 2004, and the xlibs and xserver projects basically began in October 2003. I'm really glad that the release didn't, as suggested, get dragged into 2006.

People who deserve a great deal of thanks for this release include, but are absolutely not limited to, Kevin E. Martin, Adam Jackson and Alan Coopersmith as the release cabal, S ren Sandmann Pedersen as a modular partner in crime, Keith Packard and Jim Gettys who basically got modularisation moving, LinuxFund for funding Xizzle and Debrix (the genesis of the modularised X server), Jakub Stachowski and Kristian H gsberg for work on Debrix when I got busy with other commitments (and krh for ongoing modularisation work). I'm sure there are others who I've forgotten here; if you feel you should be on this list, then sorry. The code contributions are too many to mention: Eric Anholt, Ben Herrenschmidt, Billy Biggs, Alan Hourihane, Zack Rusin, Dave Airlie, Aaron Platner, and a cast of thousands.

I've heard the other release parties are rocking along nicely; I plan to make Melbourne's pretty damn good. Cheers!

21 December 2005

Jonathan McDowell: Socks

When I had a real job I used to hate having to iron shirts every week. While I'll occasionally wear one when I go out it's not something I'd choose to wear to code in, so it grated that I had to expend effort in order to be able to wear something I didn't really want to. These days I'm a lazy layabout who largely works from home and I can wear what I like. However I still have to deal with socks. Now, at least I like wearing socks, but they're still a PITA. Pairing them up in particular. I think the problem is that almost all my socks are plain black and while you think that would make things easy it really doesn't. They're different shades of black for starters. Or different shapes. Or feel different. Or are lost for months and then suddenly turn up and the other half of the pair that kept annoying you out of the corner of your eye has suddenly disappeared. Gah.

Andrew Pollock: [opinion] On orthokeratology

Rob Thomson writes that he's going to give ortho-k a shot. I used it for a number of years, and recommend it to anyone who wants to try it as an alternative to laser surgery. My experience of it was that there was a bit of trial-and-error getting the parameters for the contact lenses right, but after that, it was all good. The feeling of independence was enormous. I took up outdoor rock climbing. The ophthalmologist said that for some people they could get away with sleeping in them for one night in three, but I found I needed to sleep with them in every night to get good results. Towards the end, I started to become dissatisfied with my vision quality, and I'd moved to Canberra, and so was seeing a different optometrist to the one in Brisbane (who incidentally seemed to be a bit of a pioneer in the field). I couldn't decide whether to get a new set of lenses made with the same parameters as the old ones, or go through the expense and trial-and-error nature of getting refitted again. Then one of my lenses broke at the 2004 linux.conf.au so I went back to wearing spectacles for a while. I was going through my phase of wanting to get into the Queensland Police, so I decided to get laser surgery, discovering later that day that they won't accept candidates until 12 months afterwards in case their eyeballs spontaneously vaporise or something. In summary, I can recommend ortho-k as a non-invasive alternative to laser surgery, but its downsides are pretty much those of wearing contact lenses. Camping was one thing that was a bit trickier and more inconvenient. Having really goopy eyes in the morning was another.

Adam Rosi-Kessel: Doing It Right: BabyOp, Perl, and OOP?

I’m coding a new CGI application, tentatively entitled BabyOp. It is software to run a babysitting coop; I suppose it is a species of “social software.” The idea is to be able to track hours credits, schedule babysitting times, centralize contact information and other details about babysitting requirements. I considered using something like Zope or Drupal for the application, but I’ve never liked developing exclusively through a web-interface and found myself having to do a fair bit of “actual” coding to get the results I wanted. I realize there is a command-line interface for Zope, but it’s really pretty limited. I had some plans a couple of years ago when I designed my wedding site in Zope to extend it to be more useful, but sadly never got around to it. So I’m back in my comfort zone, perl. I’ve written a fair amount of unmanageable perl code, however, CoopOrder probably being a shining example (it was also my first perl program). I’ve certainly improved since then, and the fact that I’ve received several patches from others for randomplay suggests that my coding style is getting to a half-decent point. I’d really like to get it right this time, though. One thing I’ve learned over the years is always to look for a module to do what you want before setting out to do it yourself, since chances are the module writer is a better coder than you (or at least, than me!). To that end, I’m using CGI::Application, HTML::Template, and DBIx::Abstract, among others. I’m also trying to keep things really granular and avoiding long subroutines. Certainly taking the HTML out of the perl code helps with that. I’m amazed at how often my code now just “works” on the first try, similar to esr’s story about his first look at Python (“Brace yourself: this code only took me about ninety minutes to write—and it worked correctly the first time I ran it.”) I’m trying to figure out if it would be sensible to make this application more fully object oriented. Growing up in the ’70s and ’80s and having done a lot of database programming, I’ve always been unfortunately pathologically declarative. (My first major package was in Clipper—I was 13 years old). I find it a lot easier to modify a pre-existing object oriented package than to design my own. But then again, does it really make sense to attempt an object-oriented design where there is really only one important “object” — in this case, the babysitting unit?

Joey Hess: trainwrecks

As you read this fascinating but edited-for-brevity irc log from #debian-boot, imagine yourself as a contributor to either the larger Debian project or the Debian-Installer sub-project. At what point do you begin to feel insulted?
<Chepre> can i talk to the chief of debian please. the whole project could earn some money
<minghua> Chepre: if you are serious, write email to leader@debian.org
<Chepre> thanks minghua. is there a way to get a "official" release created with all up-to-date modules, like for Intel ICH7 sATA-Controller...as long as i pay for it?
<minghua> Chepre: chances are small. the official release is a long process
<minghua> and it doesn't happen often
<minghua> the earliest date you can expect for next release is probably end of 2006
<minghua> so you would have a better chance to hire some people/company who knows debian and provide you an updated kernel
<Chepre> OMG? does debian have not enough coders or don't they have "fun" to keep it up-to-date? e.g. the intel ich7 is already very old
<Chepre> well, can i hire the debian-team?
<minghua> Chepre: well, there is no official "team", but sure, you can hire debian developers
<gravity> Chepre: The stock kernel doesn't support your device? Why not? Is the driver not in the mainline kernel tree?
<Chepre> no
<gravity> Why not?
<Chepre> its just a default Dell PowerEdge 850 with Intel ICH7 and it isn't supported
<gravity> Chepre: Well, did you send an installation report?
<Chepre> gravity: no
<gravity> Chepre: That'd be a good first step to getting your problem fixed for future releases
<minghua> Chepre: ah, then it's supported by stock kernel after all, did you say it only works for kernel > 2.6.12?
<Chepre> minghua: 2.6.8-2 doesnt support it
<minghua> Chepre: okay, so as gravity said, write an installation report so that people know your problem
<Chepre> well, we cant wait month or years for a fix
<gravity> Chepre: You can create a custom installer image with the updated kernel for your work
<Chepre> we have to install many server in the next weeks :(
<munghua> Chepre: then I'm sure if you offer enough money, some d-i people can provide an installer with a newer kernel for you
<Chepre> well, i already got an custom installer but its a bit buggy...i need a whole netinst with the same "quality" like the official releases got
<gravity> sounds you were at the right track at the beginning... though "chief of debian" is probably the wrong person to contact :-P
<gravity> You could send a mail to debian-boot I suppose, offering the work for what you need
<Chepre> well, i also need up-to-date software, not just only the installer :( so the "whole" debian-team has to stop current work and has to start creating a stable version which is newer than the current unstable
<Chepre> minghua: do you think 50k are enough to get a 3.3 as stable?
<minghua> Chepre: by "up-to-date software" you mean all the software, including desktop, web servers, and stuff?
<gravity> Chepre: You may want to check out an alternative source. HP, as I understand it, provides the kind of support you want. Progeny does as well. And Ubuntu has their own full derivative with this sort of thing
<Chepre> minghua: right, as long the software is not a beta :)
<gravity> Chepre: The whole Debian team is not the kind of project that'll do this for you
<Chepre> so the debian-team dont want to earn money?
<Chepre> gravity: i know, open source :) ... but i think the guys making a new "official" release for me whould be very happy getting up to 20.000 us$ for one month of work
<gravity> Chepre: It would violate a lot of principles and the stable release policy to do an official debian release. You could get what you need with a name other than debian though, with some of the companies I listed above
<Chepre> where is the problem? i give you the money and you give me an up-to-date release which is only for my company, not for public
<gravity> I know I'd quit the project if there was an official Debian release for cash
<minghua> and there are like what, 10,000 packages in sarge now?
<gravity> Chepre: That's what those companies are for. Debian doesn't work like that
<gravity> Chepre: If you want to talk to individual debian developers for that, you can do that too
<Chepre> hmm, ok....now i know why the d-i doesn't recognize smp or 64bit systems

Now imagine yourself as someone who is trying to install Debian on twenty thousand stock machines for work and it's not working. At what point above did you begin to feel alienated? (Assuming that "Chepre" is not trolling,) Neither side in this exchange is particularly meaning to insult the other, both are doing what is right and obvious from their perspective. Two ships passing in the night, two trains speeding down a track, I don't know. It's a shame we can't deal better with this sort of thing. I would be truely interested to see how other free software projects deal with it differently. The rest of this is my attempt at some analysis and is probably not very useful.. A few mistakes Chepre made: A few mistakes the channel (irr-)regulars made:

Uwe Hermann: My new toy: the Canon PowerShot A610, and how to use it with Linux

My new Canon PowerShot A610 So, I finally got myself a new digital camera — the Canon PowerShot A610. Judging from some, good reviews I read, it looks like the best option for my purposes and for the price I'm willing to pay. It's a 5 megapixel camera, it has a 4x optical zoom, it's pretty fast, can do videos (640x480 at 30 fps) etc. etc. Of course, it only comes with a 16 MB SD-card which is a joke, so I'll need to get something like a 1 GB card soonish. It seems to be pretty well-suited for macro photography (1cm minimum distance), see the samples on the right. Scrissors
Pen Linux usage: Using this camera with Linux is not as simple as mounting it as an USB mass storage device. Instead, the camera uses the Picture Transfer Protocol (PTP) for file transfers. Fortunately, the wonderful gphoto2 (apt-get install gphoto2) supports that, so I can easily get all images and videos off the camera with a simple

gphoto2 --get-all-files

(actually, the camera is only "supported" in the current gphoto2 CVS version, the latest stable release, 2.1.6, doesn't really recognize it — but it still works ;-) As I now have a pretty solid digital camera (compared to my last one), and I've also been gifted a good book on digital photography, I hope to be able to improve the quality of the photos in my photoblog quite a lot in the nearer future. In any case, I'll sure have some fun with this new toy...

20 December 2005

Anthony Towns: dak dsa

So the final implementation detail in the embargoing scheme is providing a tool to move stuff from the embargoed and unembargoed queues into the archive. The existing tool the security team use is called “amber” (after the inimitable Amber Benson). amber’s pretty simple: it takes a DSA number, and the .changes files you’re looking at; then asks for confirmation, accepts the packages into the archive, regenerates Packages and Release files, fills out a template advisory with details from the deb and mails that off, and uploads the files to ftp-master for inclusion in the next stable release. There are a few problems with that. One is it doesn’t allow for rejections. Another is it doesn’t provide the security team with the opportunity to edit advisories while the packages are being prepared. Another issue is that the entire program has to run under sudo with full archive priveleges. Enter “dak dsa” aka “newamber”. The new tool aims to do more or less the same thing, but with a little more style. First, it provides a small interactive interface, so that processing an advisory now looks like:

$ newamber DTSA-25-1 smb4k_*.changes
Create new advisory DTSA-25-1? y
Advisory: DTSA-25-1
Changes:
 smb4k_0.6.4-0.0etch1_alpha.changes
 smb4k_0.6.4-0.0etch1_hppa.changes
 smb4k_0.6.4-0.0etch1_i386.changes
 smb4k_0.6.4-0.0etch1_m68k.changes
 smb4k_0.6.4-0.0etch1_mips.changes
 smb4k_0.6.4-0.0etch1_mipsel.changes
 smb4k_0.6.4-0.0etch1_s390.changes
 smb4k_0.6.4-0.0etch1_sparc.changes
Packages:
 smb4k 0.6.4-0.0etch1 (alpha, hppa, i386, m68k, mips, mipsel, s390, source, sparc)
Approve, [E]dit advisory, Show advisory, Reject, Quit? 
Choosing edit will grab a copy of the template and run vi – the template will only be filled out when you approve the upload though, since the values might change before then. Accept will do more or less what old amber did; though instead of mailing the filled in advisory draft it’ll just leave it in the filesystem instead. Of course, running vi (well, $EDITOR) generally means you can get a shell too, so running the command with full archive priveleges is a bit much – at least if you’re trying to have any sort of granularity to your security regime, which was, after all, the whole point of this exercise. So instead of running the entire command as the katie user, “dak dsa” instead has to escalate its own priveleges, in this case using sudo and specific options, such as sudo dak dsa -A -- foo.changes to approve foo.changes. Fortunately sudo and the apt argument parser are cooperative enough to allow “dak dsa” users to invoke “dak dsa -A – *” as katie, and thus have only the very limited access we’re trying for. Obviously the above is taken from the testing-security team – it’s the same source and i386 packages, recompiled on other architectures by the security.debian.org testing autobuilders. It’s shown up a few flaws in the autobuilding for etch: (a) the amd64 autobuilder isn’t active; (b) the arm buildd can’t seem to find its chroot in between running apt-get install and apt-get remove; (c) the s390 buildd only works if the source is on ftp-master; (d) of the five m68k buildds that will take packages for security.debian.org updates to testing, only two will succeed (a400t and poseidon). There’s also the notable problem that the chroots for the functional buildds have gotten out of date and that builds break somewhat obscurely as a consequenece. One of the test updates is also failing on hppa due to space restrictions. And of course, the above list is after a chunk of other problems have already been fixed. It’s worth noting that even if the above isn’t fixed for testing now; we’ll still need etch chroots for security.debian.org when we release, so those problems have to be dealt with at some point. And that the brokenness is the result of six months’ divergence from sarge; after a year and a half when etch releases – or the three years between woody and sarge’s release – it’s probably fair to expect worse breakage. Anyway, that’s just about it from me on this topic. Micah Anderson from the testing-security group is currently checking out the unembargoed facility, and has redone a couple of DTSAs on security.d.o. So presumably those guys will start working out whether security.d.o is something they want to make use of, and if so, working out what changes/tweaks are necessary for that. Though, unsurprisingly, I also still have to do some committing to CVS…

Next.

Previous.