Search Results: "ana"

22 November 2005

Ian Murdock: The writable web

Who says a web-based office suite doesn’t make sense? I’m writing this post in Writely, a web-based word processor that supports posting to weblogs (complete with preview mode) as well as real-time collaboration, basic document management, and several other very nice features. It even does auto-save, and there’s a spell checker too, complete with squiggly lines underneath misspelled words. I decided to give Writely a try after Steve Rubel explained how he uses it to draft blog posts, thinking it might make a nice alternative to the antiquated TEXTAREA widget that is, remarkably enough, still the primary interface for editing the web after all these years. Now that I’m using it, though, I’m beginning to see how it could grow into more than that, at least for me. Sure, it’s fairly simplistic, but it does all the basics reasonably well, so that’s actually a feature (Steve says: “Think of it as Microsoft Word for the Web - except with just the parts you need!”). Combine that with the ability to access my documents from any computer, as well as the collaboration facilities (which look interesting and appear to go above and beyond the heavyweight email-based collaboration features found in more traditional office suites, though I haven’t tried them yet), and I’m intrigued. Now, if there were only a Writely component I could include in other web applications, or maybe even graft in as a substitute for the TEXTAREAs on arbitrary webpages using some sort of Firefox extension or Greasemonkey script. I’d love to see support for the Open Document Format too, so I could use Writely as a sort of document store and pass documents between thin client and fat client seamlessly. Then we’d be getting into really intriguing territory. (While I’m at it, a way to pull down the templates and style sheets from my weblog for a true WYSIWYG editing experience would be very nice too. Heck, as long as we’re thinking outside the box, why not just allow me to edit the page directly?) (As I’m writing this, I can’t help but think of the Innovator’s Dilemma, i.e., market leaders continuing to stuff more and more features into products that fewer and fewer people actually need to fuel the relentless drive upmarket, opening themselves up to attacks from below by providers of “good enough” products..) Update: I couldn’t get the blog posting feature of Writely to work, so I ended up copying-and-pasting the HTML into Wordpress. Oh, well. On a brighter note, while I was fiddling with the blog posting feature, CNET News.com reported that Writely is adding support for the Open Document Format and intends to add support for PDF too. Suite!

Antti-Juhani Kaijanaho: Driving While Intoxicated – A Glimpse of Finnish Criminal Justice, Part One

This posting is part of my Finnish criminal court series. See the introductory essay for more information and an overview of the Finnish criminal court system. The following is a fictional account of a criminal case, one of the most frequent ones, written in the form of a play script. A PDF is also available. There is also an OpenOffice-generated XHTML renderition, which may be more pleasant to read than the version below (but lacks most of its logical markup). DRIVING WHILE INTOXICATED
A glimpse of Finnish criminal justice
Part One Dramatis personae
Presiding judge
Prosecutor
Defendant Extras
Three lay judges
Court reporter Sets
Courtroom
Courthouse lobby DISCLAIMER This is a work of fiction. Although this play is based in general terms on real life, all the specific characters and events portrayed or described in this play are fictitious, and any resemblance to real people or events is purely coincidental. The verdict presented is fictitious, and while it is based on the author's understanding of the law, it may be erroneus. No legal advice should be inferred from this work of fiction. Scene One: And so it begins The courtroom is about the size of a large school classroom, and shaped as a rectangle in terms of floor layout. The judges' bench, a long wooden table, lays near one of the short walls; the space between the bench and the wall is enough to give the judges and the court clerks comfortable room to sit and to move behind the sitting judges. At the center of the bench is the seat of the presiding judge, who has easy access to a telephone, a public address system and a panel for controlling the LED display visible in the lobby above the courtroom door. To his or her right is the court reporter's seat in front of a PC and in control of recording equipment. To the reporter's right there is room for one additional individual. To the presiding judge's left, there are three chairs for the lay judges. If one were to stand directly opposite the presiding judge, on the other side of the bench, one would find an open Bible. In front of the bench, disregarding the Bible, there is some room, approximately two meters or so. Along each long wall there is a small table, and those two tables face each other, and are therefore turned sideways from the bench's point of view. By the desk on the bench's right is the seat of the prosecutor, and the other, facing desk is reserved for the witness being examined. Facing the bench, separated from it by that empty space, are two rows of tables with chairs. Beyond them there are two rows of seats for the audience without tables; the farther row is right at the other short wall. The long wall to the judges' right contains one double door leading to the court building lobby, and the other long wall contains two sets of double doors at each end of the wall, leading to a part of the building not accessible to the public. We'll call the door closer to the bench the judges' door. The PRESIDING JUDGE is a 50-something man dressed formally in black and blue. The three LAY JUDGES are more casually but still essentially formally clothed. LAY JUDGE ONE is a sixty-something male, LAY JUDGE TWO is a female in her fourties and LAY JUDGE THREE is a female just under thirty. The COURT REPORTER is a female in her fifties, also dressed formally. It is 9:00. The four JUDGES and the COURT REPORTER are sitting on the bench. Each JUDGE has papers in front of him or her, the PRESIDING JUDGE's stack being by far the thickest. The PROSECUTOR, fourty-something man, enters through the judges' door, carrying law books and a large stack of paper. He sits down at his desk. PRESIDING JUDGE (Nodding to the prosecutor.) Okay. Let's start. (Enters codes on the LED machine. Then picks up the public address microphone.) The criminal case 'prosecutor against Matti Meik l inen' begins in room three. Parties to room three. Scene Two: Main hearing The DEFENDANT enters through the double door from the lobby. He feels a little lost. PRESIDING JUDGE (To the defendant:) Matti Vihtori Meik l inen? (DEFENDANT nods.) Please, take a seat in the front row. (He waits for the defendant to comply.) This case will be tried as follows. First, the prosecutor will read the charge. You will then respond by telling us if the charge is correct or not, that is, if you in fact did commit the acts specified in the charges, and if you did not, or the charge is only partially correct, you should state briefly why the charge is in error. The prosecutor will then present the case, he will describe us his understanding of the events in question. When he is finished, you will again have opportunity to state if the prosecutor is correct or not, and if not, in what way is he wrong. If there is disagreement between you and the prosecutor, we will hear the evidence. After that, the prosecutor will state his or her concluding opinion of the case as presented here. Again, you will have the opportunity to respond. We will conclude with discussion of what punishment, if any, would be appropriate. The court will then discuss the case alone, and will finally announce the verdict. Is this understood? (DEFENDANT nods.) Okay. Prosecutor? PROSECUTOR (Reads the charge from a paper everyone has in front of his or her.) I demand punishment to Matti Vihtori Meik l inen for driving while intoxicated. Matti Vihtori Meik l inen had on the first of May this year operated his car while his exhaled air contained 0,597 milligrams of alcohol per liter. Matti Vihtori Meik l inen's driving license must be suspended. PRESIDING JUDGE (To the defendant.) Is the charge correct? DEFENDANT Yes, it is. PRESIDING JUDGE Okay. The prosecutor will now tell us the circumstances and events in detail. PROSECUTOR Thank you. It was to my understanding late evening on May day, and the defendant had come from a bar and was apparently trying to move his car to a cost-free parking space. A police patrol happened to observe this and the defendant had apparently been a little shaky in his walking, so the officers gave him a breathalyzer test, which showed significant alcohol content. The defendant was brought in the station where a precision test was performed. The first reading was 0,597 and the second reading was 0,617; the mean of these two is 0,607, and after performing the confidence subtraction, the reading 0,597 milligrams per liter was obtained. PRESIDING JUDGE (To DEFENDANT) Well then, is what the prosecutor just said true? DEFENDANT (Speaking in a colloquial manner and very somberly. He is ashamed and wishes this would be over soon.) Yeah, it is. PRESIDING JUDGE All right. It seems to me that there are no points of disagreement, so we don't need to hear witnesses. (The PROSECUTOR nods.) Okay, it's time for the concluding statements. I think we will hear consequence opinions at the same time. Prosecutor? PROSECUTOR Thank you. I don't think there is much to say. The case has been shown beyond reasonable doubt, in my opinion. We have the precision test readings and the defendant's admission. As to the penalty... the amount of alcohol we are talking about is just below the limit for serious intoxication, so this is no small deal. On the other hand, the circumstances were not very dangerous. I think suspended imprisonment could well be considered, though a stiff fine would probably be more appropriate. The driving ban must be fairly long, obviously. PRESIDING JUDGE All right. (To the defendant.) Do you have anything to say before we adjourn to consider the case? DEFENDANT Well, I suppose it's clear that something is going to be given to me. I prefer a fine, naturally. PRESIDING JUDGE Naturally. The court will consider all options. Do you have any special requests concerning a driving ban? DEFENDANT As short as possible, of course. PRESIDING JUDGE Do you have a particular need for a car, do you need it for work, for example? DEFENDANT No. PRESIDING JUDGE Okay. Now, your income. We have here the last completed tax report for you, it says you earned 500 euros a month and had no children. Has this changed? DEFENDANT No change. PRESIDING JUDGE Okay, thank you. If you will then go outside to wait while we consider this case, thank you. The DEFENDANT exits to the lobby, the PROSECUTOR exits through the judges' door. Scene Three: Deliberation We are now in the lobby outside the courtroom. There are many doors that lead to many courtrooms. Above each door, attached to the wall, is a display showing the current case number; there is also a light saying do not enter, which is lit for most of the rooms, including Three. Also there is a numeric display which is out at the moment for most of the rooms. For some rooms, they indicate when the session will resume. Each courtroom door also has a paper pasted to the door frame listing the cases for the day. The door leading outside is separated from the lobby by a routine security check area, and one of the courthouse police guards stands there waiting for people to enter. Some other guards and janitors sit in their glass booth. There are many people sitting on the chairs, waiting for their turn to enter one of the courtrooms. DEFENDANT enters from the Courtroom Three door and sits down, waiting. It takes about fifteen minutes. During this time, announcements from other courtrooms could be occasionally heard, and people would enter or exit other courtrooms. Then... PRESIDING JUDGE (Over the PA) Verdict in the case 'prosecutor against Matti Meik l inen' in Courtroom 3. DEFENDANT exits through the Courtroom Three door. Scene Four: The Verdict The DEFENDANT enters from the lobby and sits down. After a minute, the PROSECUTOR rushes through the judges' door. PRESIDING JUDGE (Announcing to all people present.) The District Court has examined this case and has decided that Matti Vihtori Meik l inen did in fact commit the crime he was accused of in the way specified in the charge. The justification is the combination of the measured alcohol content in Meik l inen's breath and his own admission of guilt. Matti Vihtori Meik l inen is therefore sentenced to pay sixty-five day-fines, that is three hundred and ninety euros. Penal code, Chapter 23, Section 3. His driving license is suspended until the first of November this year. Road Traffic Act Section 75 Paragraph 1. One who is dissatisfied with this verdict can appeal it to the Vaasa Apellate Court within thirty days. Dissatisfaction must be declared, however, either right now to me or within a week to the Office of this District Court. (To DEFENDANT) Come and take the fine ticket and written appeal instructions (DEFENDANT takes those from the COURT REPORTER.) This hearing is concluded. The DEFENDANT leaves, as the court and the prosecutor prepare for the next case. TO BE CONTINUED
(with the next case)

David Moreno Garza: Tomorrow

 
 

Ana and me. Last month. On the Venezuelan embassy in Mexico. I can't wait for tomorrow.

(3gp mobile phone videos suck too much, at least the quality of this, shoot by my Sony Ericsson k700i)

 

Sam Hocevar: Suspicious Activity? Indeed

The Bad Plus I spent the whole weekend looking for a DRM-encumbered Sony CD so that I could check for myself whether my code was really being redistributed without permission. I eventually found one: Suspicious Activity?, by The Bad Plus. A rather enjoyable post-modern jazz album. I am rather lucky, it could have been C line Dion. As expected, installing the CD s custom player also installed a stealth aries.sys driver along with a few other interesting files such as $sys$DRMServer.exe, all hidden in a $sys$filesystem directory. I rapidly got rid of this cruft and started studying the really important file, ECDPlayerControl.ocx. It is the file Sebastian Porst and Matti Nikki found to be containing parts of mpglib, LAME, faad2, VLC... Suspicious Installer? Evidence that the DRMS code comes from VLC There are of course obvious similarities between some functions and structures of ECDPlayerControl.ocx and the ones in VLC s source. However, given how precise the implementation of a cryptographic protocol needs to be, the possibility that two separate implementations show many similarities must not be dismissed. The data structures and constant tables especially are likely to be identical. I think however that I found strong enough evidence that this is not the case here. The original drms.c was written by Jon on 01/05/04. I then hacked on that file on 01/18/04 and reorganised it, also replacing the reverse-engineered MD5 and AES functions with clean implementations, then Jon added DRMSv2 support on 05/05/04 and I reorganised the code again on 05/08/04. Some of these changes were specific to VLC (not in that they made the code unusable outside of VLC, but rather that they made it possible to use an external MD5 hash provider, for instance), so they were the bits I was looking for in ECDPlayerControl.ocx. For instance, Jon s original code had the following instruction:
p_acei[ 4 ] = 0x5476212A;
Since all bytes of this long word are comprised between 0x20 and 0x7f, it was later rewritten like this:
char p_secret1[] = "Tv!*";
This change makes the code more human-readable because many other secrets in the Apple DRMS protocol are ASCII strings. Also, I know how to look for binaries that use the string "Tv!*", but it takes me some more time to think of a way to find binaries that use 0x5476212A. And the Sony rootkit uses the following (only relevant lines shown):
 .text:100883B8   mov   cl, byte ptr ds:xxxxx+4 ; 0
 .text:100883C2   mov   eax, dword ptr ds:xxxxx ; "Tv!*"
 .text:100883C8   mov   [esp+70h+yyyyy], eax
 .text:100883DC   mov   [esp+7Ch+zzzzz], cl
The use of xxxxx+4 shows that ECDPlayerControl.ocx uses a string instead of a 32 bits integer to store the secret, disregarding the fact that the 5th character of the string (a null char) is never used. Another example: in this commit I reorganised the DoExtShuffle() function, merging FourthPass() and FifthPass() and discarding a structure allocated on the stack. What is important here is that DoExtShuffle() was built by a complex combination of choices, the main purpose of which being to reduce the size of the C functions:
 static void DoExtShuffle( uint32_t * p_bordel )
  
     uint32_t i_ret;
     i_ret = FirstPass( p_bordel );
     SecondPass( p_bordel, i_ret );
     ThirdPass( p_bordel );
     FourthPass( p_bordel );
  
Note how i_ret is not reused and could be merged into the p_bordel array, or maybe SecondPass() merged into FirstPass(). This choice is definitely a legacy of how the code evolved. And the Sony equivalent: a perfect match.
 .text:10089F3C xxxxx:
 .text:10089F3C   mov   ecx, esi
 .text:10089F3E   call  yyyyy
 .text:10089F43   push  eax
 .text:10089F44   mov   eax, esi
 .text:10089F46   call  zzzzz
 .text:10089F4B   add   esp, 4
 .text:10089F4E   call  ttttt
 .text:10089F53   call  uuuuu
After having studied the Sony code for a while, I have of course gathered dozens of such examples. But I also discovered a few new things. Where does the DRMS code come from? The code undoubtedly comes originally from VLC, but it has traveled a lot. I would be surpried if it came directly from VLC, as no other part of VLC is included with the rootkit. And although there are parts of FAAC in the Sony code and FAAC includes VLC s drms.c, the version currently in the FAAC CVS is horribly outdated. Sebastian Porst also noticed a few obvious differences between the Sony code and the version of drms.c present in VLC. The most obvious being this one:
 if( p_shuffle->i_version == 0x01000300 )
  
     DoExtShuffle( p_bordel );
  
Which became:
 .text:10089F2E   cmp   eax, 1000300h
 .text:10089F33   jz    short DoExtShuffle
 .text:10089F35   cmp   eax, 1000400h
 .text:10089F3A   jnz   short skip
 .text:10089F3C DoExtShuffle:
 .text:10089F3C   ...
 .text:10089F58 skip:
 .text:10089F58   ...
That 0x01000400 is a version check for 4th generation iPods firmwares. I also discovered at least 40 KB of new lookup tables that seem to be used for more buffer shuffling. At first I thought it was simply F4I s DRM implementation, but the shuffling calls are nested with iPod hardware information retrieval from our DRMS code, so they re really part of drms.c. Sony distributing a DRMSv3 descrambler? The only explanation I can think of is that someone took the VLC code, added support for an upcoming Apple DRMS format version and redistributed the software without letting the VLC authors know, probably violating the GPL (I only say that because I have not found the software yet, but I feel pretty safe in saying it). Since it is based on GPL software, I was already entitled to ask Sony for the source code of ECDPlayerControl.ocx. But as the copyright holder of a significant part of the software they counterfeited, maybe I have a greater chance of being heard. Not that it would be difficult to reverse-engineer it yet another time, but it would be awesome if the next opensource iTunes Music Store file player was contributed by Sony!

Erich Schubert: What SSH scanners try to do

I've been recently investigating a poorly maintained box (granted, it was just a workstation used for surfing the web) which was behaving oddly. In fact you could not longer login via SSH. I quickly noticed that there was a non-working sshd on it, in /usr/local/bin. So I thought - why would a badly maintained box have a non-standard SSH on it? This made me very suspicious, so I immedeately ran chkrootkit. It didn't find anything except it told me that someone had tampered with the wtmp file. The "tampering dates" aligned with the creation times of the ssh. A quick "find" run came up with the tool to do so, too. A quick check in the logfiles - which were fine, since they were not standard syslog, probably - showed that a SSH scanner had managed to login into an unprivileged account with a weak password, then used a kernel exploit from january to gain root privileges. Apparently he was unsatisfied with the sshd on the box, so he tried to put a different version on it, which, well, didn't work and he could no longer logon to the box himself. A rootkit was apparently not yet installed (verified after a clean boot), he was just about to setup his own sshd... maybe he had noticed that the box was just a stupid surfing box and then didn't care enough to cover his tracks (or just shoot himself in the foot by breaking the sshd) So if you are running boxes on the internet: (PHP guys: yes, I know that there are some good PHP scripts. But there are tons of badly written ones, too... and PHP is a major intrusion vector, and the privilege escalation I've seen here would have worked just fine with a PHP installation not using safe mode and safe_mode_exec_dir) A firewall I maintain at our university has been tracking ssh connections using the recent match for quite some time, and a nice side effect is that it reduces all their "spam" in your logs, too (in case you bother to read them. Do at least read the logcheck results!)

21 November 2005

Robert McQueen: When exactly is week 1 of 2006?

According to Jeff, I’ve become a smelly Nokia contractor (the reason he stayed with Luis instead of at Mako’s place in Boston, although I’m sure he was referring to Rob Taylor causing the smell). Part of this entails exchanging project schedules with various managers, where time is often talked about in terms of numbered weeks of the year, like: Foo task will be completed by week 42 of 2005. We ran into some problems with varying definitions of these numbers when exchanging schedules with people running on different platforms. Then we realised that even the software we’re using seems to have different ideas about what’s going on too… The result is a whole world of pain, and at best causes extreme confusion when we provide documents referring to both dates and week numbers which are inconsistent with each other in their minds, and at worst makes our managers think we’ll have things done a week sooner than we do. I’m not using Evolution at the moment for calendaring stuff, so I can manage if I remember to add one to all my 2006 week numbers when interacting with managers based on GtkCalendar and Planner, but this all seems to be horribly broken. I really don’t want to have to do this for the whole year.

20 November 2005

Matthew Palmer: The Fun Never Stops With Ruby

Well, there's nothing like posting a really rubbish program to your blog to find out the right way to do it. Firstly, Philipp Kern has come up with another, even shorter version than his version I posted in the update to my original Ruby post, this time blowing me away with the strangeness of explicit casts in Ruby. Apparently, casting an input stream to an array produces an array with one-line-per-element, as in this example:
 STDIN.to_a.sort_by rand .each l puts l 
As Philipp warns, however: "Ruby is full of fun and power; one must watch out that the scripts remain readable". For a fairly toy example, this solution is still fairly readable, however I can see hair growing on this thing if your program grows large. Next, Pierre-Charles David showed his qualifications for becoming a co-author of the next edition of the Pickaxe (AKA "Programming Ruby: The Pragmatic Programmers' Guide"), with his example and explanation. He's kindly given permission for me to reproduce his e-mail in it's entireity, since it's too good to chop up:
Here is the shortest and most readable version of your "randomize stdin" script I can think of:
  #!/usr/bin/env ruby
  print ARGF.readlines.sort_by   rand  
 
ARGF is a special variable representing either stdin or, in the case where file names are passed on the command line, the content of these files (think of Perl's <>). ARGF behaves like an IO object (although I think it is not one). In particular, it responds to the #readlines method which splits the receiver's content into lines and returns an array. In other words,
  lines = ARGF.readlines
 
is the idiomatic way of doing
  lines = []
  while line = gets() do
    lines << line
  end
 
in your example. The next part (sort_by) uses a new form of the sort method, which I think is not documented in the Pickaxe. It implements the Schwartzian transform technique. In essence, a random number is associated to each element of the array, which are then sorted based on this index. As a general style remark, note that although Ruby supports "while" and "for x in y" loops, they are rarely used, in favor of iterators and/or higher order methods. For example, to gather all the input lines in an array without using readlines, one might write
  lines = Array.new
  ARGF.each_line    l  lines << l  
 
or
  lines = ARGF.inject([])    lines, l  lines << l  
 
Hope it helps, and welcome to Ruby!
Pierre, your explanation definitely helped, and I hope it helps others too. The third person to help me out is Decklin Foster, through a post in his blog. What particularly caught me about his solution was the neat demonstration of another feature of Ruby which I think I will really learn to love: the ability to dynamically add methods to an existing class. "Aiee!" I hear all the purists scream -- and I can see the potential for severe misuse, too. But, since every good idea seems to get deeply perverted, we may as well have some real useful features to pervert while we're at it. Decklin has the clever idea of adding methods to the Array class that shuffle the elements of the array in a random fashion. His code is beautiful in it's simplicity:
 class Array
    def swap!(a, b)
        self[a], self[b] = self[b], self[a]
        self
    end
    def shuffle!
        each_index do  i 
            j = i + rand(length - i)
            swap!(i, j)
        end
        self
    end
 end
He then goes on to rewrite my bumbling example in probably the most comprehensible manner I've yet seen:
 STDIN.readlines.shuffle!.each    line  puts line  
Decklin writes, "Now that is cool.". I couldn't have put it better myself. My thanks to Philipp, Pierre-Charles, and Decklin, for helping me along the Ruby path. So, two new Ruby Rules for me to live by: Hmm, is it possible that Ruby is nothing more than Functional Programming by Stealth? Aiee!

Andreas Metzler: things I did not know...

I have just learned that Linux imposes a limit not only on the lenght of the commandline (ARG_MAX) but also on the number of arguments. xargs in findutils 4.2.26 features a fix to respect this limit. I do hope this was the source of bug 313028 which I never managed to reproduce.

Jose Carlos Garcia Sogo: 20 years of MS Windows. 20 years of computers in my life.

One day like today, 20th November, 1985, Microsoft released its shiny new Windows 1.0 which was the first attempt to implement a graphical multi-task OS in a PC. Do you know how much it cost then? $100 for a license, more or less the same than a Windows XP license costs nowadays.

Microsoft logos. Old and new It is funny to see how things have evolved since then. Being 6 at that time, and PCs not being very common those days at home, I started using a computer at an age of 8 or so. It was an Amstrad PCW 8512, a TV box sized computer which integrated a green screen monitor, two "3" floppy bays and a 9-pin dot matrix printer. It was powered by a 8bit Z80 processor, running at 4MHz and had 512KB of RAM and no ROM at all. Main software was LocoScript, a powerful word processor. It could be controlled by drop down menus at a top toolbar, and initial screen was a file manager, in which you could manage those text files in the floppy you booted from or a floppy in the other bay. It had even support for some kind of multiuser support, as you could declare in each floppy up to 7 user areas, with area 0 being a common root. Also, it had support for limbo a place for deleted files. Although LocoScript didn't need a separate OS to work, CPW 8512 could also run CP/M OS, which added programming capabilities (Maillard BASIC) and support for spreadsheets and databases, along with some games as Batman. After using this system for a long time, my first PC was a 486, running the new Windows 3.1 and later 3.11 for Workgroups version. I even installed there a Windows 95 when it was released, and managed to create a partition in the only 170MB HDD it had to install a test copy of IBM's OS/2 Warp that came in a CD bundled with PC World magazine. Some time later my parents bought a Pentium 166MMX running Windows 95. I was 18 by then, it was 1997, Internet was starting to be widely spread and used, and after a couple of months at University I was installing my first Linux copy, which was a RedHat based version. During next three years I installed different distributions, as they were released with newer software and you could get them in a CD with a magazine. Installing Debian Slink and having an Internet connection available at my Student's Residence at the same time made me be able to participate in mailing lists, send bug reports and download upgrades. I discovered a new dimension in using Linux: collaboration.

Andres Salomon: obey your master

I missed a bus to Boston by about 5 minutes on thursday (I seem to be doing that a lot lately), so I went up to 8th Ave to find some internet access. The coffee shop I entered was packed, so I sat down at an already occupied table. The guy sitting across from me was in a wheelchair, reading the newspaper. After a few minutes of me typing away at my computer, and him reading his newspaper, he started up a conversation with me. “So, I was just reading that they’re going to have a feature in DVRs that has a video camera that watches over your home.” I have no idea why he thought I might know what a DVR is, or why he chose that topic. Maybe I just exude geek pheromones or something. “Oh?” “Yeah, they want to be able to have you be able to see watch it over your cell phone. How’s that for security? Being able to monitor your home through your cell phone?” “Ok, I guess…” “I’d want that, it seems like an excellent idea.” “Sure, but who else might be able to look into your home?” “What do you mean?” He seemed genuinely confused by my remark. I thought maybe he hadn’t heard me; I tend to mumble. “Who else might have access to see your home?” “Oh, I see. So if someone else gets access to your cell phone, they can watch?” At this point he went off about cell phone IDs and PIN numbers. I cut in, “Well, yea, there’s that. But what about people with direct access to the video feed? People who work for the DVR company, and people who work for the cell phone companies. They’ll be able to watch the video. Not to mention people who manage to access the networks of these companies. If it’s in a DVR, is there a way to turn it off, or is it a video of your living room, 24 hours a day, 7 days a week?” He pondered that for a minute, and responded with, “Yeah, I guess it’s a double edged-sword..” He made a few more comments about the DVR and how he had never thought about it that way, but I had already started tuning him out. My work there was done; another happy citizen infected with my special brand of distrust and cynicism. Big Brother is unnecessary in a world where all the high-tech consumer garbage you buy comes equipped with built-in security flaws. I’m hoping the next time I go there, I see him wearing a tin foil hat.

Andrew Pollock: [life] Hello America!

Where do I start? It's been an eventful couple of days... The flight to LA was uneventful. Qantas is certainly orders of magnitude more pleasant to fly with than United, even though we were seated in a bulkhead area. I had a 13-month old baby seated next to me (no, Mikal was on the other side), and he was about as well behaved as you could possibly ask a 13-month old baby to behave. Mikal also behaved himself. I had the intention of trying to get something approximating 8 hours sleep, as we arrived at LAX at 7am local time, but I only managed about 4 hours. I did spend about 8 hours with a mask on and my brain in idle, so I arrived at LAX being mostly coherent. Entering the US via LAX was a much less traumatic experience than I was expecting. The E-3 visa was accepted fine, and I now have an I-94 stapled into my passport. Quarantine involved getting looked up and down by a guy in a booth, who waved me through. We had 3 hours to spare (or about 2 by the time we cleared all the immigration/customs queues) and then hopped on a 50 minute American Airlines flight to San Francisco, hired a car and drove to Santa Clara. The accommodation we're staying in for a month is very spiffy indeed. It's a largish gated community of units. Mine's got a ground floor entry, but everything else (except the garage) is upstairs. When Sarah gets here, we'll put up some photos. The weather is lovely as well. Our first outing was to the Social Security office to attempt to get social security numbers. This wasn't as successful as I'd hoped, as we were too freshly in the country to show up on their systems, so we left with letters saying we'd get one within four weeks, when our details had been verified. Yesterday evening, we went for a general recce of the surrounding area, and checked out a supermarket. That was less disconcerting than I expected, although I don't think it was a terribly huge supermarket. Having a GPS certainly raises one's confidence when navigating significantly. Last night I discovered that all the keys in my apartment were not created equal, and that the two loose in the lock box on the front door were the only two that opened the unit, and the two sets on key rings on the coffee table only opened the amenities and my mailbox. So I got to spend a bit of time sitting on my front doorstep until the nice man from Synergy Relocations came out to let me in (except his key didn't work either, so he got to make conversation with a legal alien while we waited for someone else to come out with a key). Today, we drove around to see a shopping mall, and the first set of shops we found happened to be around the corner from an enormous (by my standards) apartment complex, which had some signage implying that it had vacancies, so we decided to get the low down on how renting worked before we did our rental tours. Casey drove us around in a golf buggy and gave a tour of what two different floor plans looked liked. It seems that in this part, it's standard for an apartment to include the refrigerator, dishwasher, microwave, washing machine and clothes dryer, which is good to know. Let me just say that if this is what living in an apartment complex is like, it's more like living in a resort. The place had pools everywhere, tennis courts, two gyms, a community centre, it was just unreal. It was also cheaper than I was expecting. We then went to a massive shopping mall to do some window shopping. Discovered Wetzel's Pretzels. Hope they're not too fattening... Tomorrow, I'm going to avail myself to the complex's gym, and generally get ready for the week ahead. Future posts will be in a new category, which I won't be feeding to Planet Debian as not to bore people. I will inflict Planet Linux Australia readers with them until someone asks me to stop. If you'd like a custom feed that excludes my American adventures, please let me know. I wonder if adjusting Blosxom's idea of timezone buggers up existing posts and aggregators like Planet in general?

19 November 2005

Edd Dumbill: The Web as it was meant to be used

Since giving XTech 2006 the tagline "Building Web 2.0", I've received a few questions as to how wise this was. The Web 2.0 label has been accused in some quarters of being a vague, marketing-oriented, term. Perhaps an attempt to kickstart a new bubble. I was going to write further, defending my choice: that, practically speaking, Web 2.0 encapsulates a combination of technologies and practices driving the web forward. Yes, it's a label of convenience, but the implementation trends are real. The maturation of XML, a revival in browser technology, a willingness to share data openly and new web development frameworks. Just as I embarked on distilling these thoughts into a fuller form, Paul Graham published an excellent essay on Web 2.0. In it he analyses the Web 2.0 term:
Does "Web 2.0" mean anything? Till recently I thought it didn't, but the truth turns out to be more complicated. Originally, yes, it was meaningless. Now it seems to have acquired a meaning. And yet those who dislike the term are probably right, because if it means what I think it does, we don't need it.
So what's the reasoning that means we don't need the term? Graham writes: "Web 2.0 means using the web the way it's meant to be used." There's nothing fundamentally new, but there is a groundswell of understanding of what's been there all along. For me, that's a wonderful encapsulation of both current web trends and my aspirations for XTech. "Web 2.0" is a just a handy label for this. "The Web as it was meant to be used" will strike a chord with many web practitioners today--whether it's sensible use of web services with REST, improving user interaction in web design, or open semantics and data interchange. If you're involved in using the web as it's meant to be used, consider submitting an XTech proposal.

Dirk Eddelbuettel: Cringely on what Google may be up to

In another installation of my pointing to Cringely's columns, let me mention yesterday's column speculating about Google. Choice quotes:
[...]
Google hired a pair of very bright industrial designers to figure out how to cram the greatest number of CPUs, the most storage, memory and power support into a 20- or 40-foot box. We're talking about 5000 Opteron processors and 3.5 petabytes of disk storage that can be dropped-off overnight by a tractor-trailer rig. The idea is to plant one of these puppies anywhere Google owns access to fiber, basically turning the entire Internet into a giant processing and storage grid.
While Google could put these containers anywhere, it makes the most sense to place them at Internet peering points, of which there are about 300 worldwide.
Two years ago Google had one data center. Today they are reported to have 64. Two years from now, they will have 300-plus.
[...] There will be the Internet, and then there will be the Google Internet, superimposed on top. We'll use it without even knowing.
[...] All this is based, of course, on Google's proven network and hardware expertise. Have you seen Google's Search Appliance? They ship you a 1U prebuilt server. You connect it to your network, fill out a simple configuration screen, and it scans and indexes your web site (or sites) for you. Google monitors and manages it remotely, and sucks up the data and adds it to theirs. You just plug the thing in and turn it on. It just works. You need do nothing else to keep it running. Google understands how to do this stuff. Microsoft definitely does not.
[...] Microsoft can't compete. Yahoo probably can't compete. Sun and IBM are like remora, along for the ride. And what does it all cost, maybe $1 billion? That's less than Microsoft spends on legal settlements each year.
Game over. And yet next week I'll take it one more step.
Fact? Fiction? Feasible? As they say, read the whole thing.

Erich Schubert: Memory management issues

Dear Lazyweb,
,
Nothing is perfect, but on Linux you can at least improve it and tune it. I just ran into memory problems on my development box - I had tons of applications open, and since this is a laptop I prefer to have swap disabled. I then started to build bind9 for a sarge backport, which meant that a long sequence of C compiler processes were launched, each allocating some memory, working with it, terminating, next. Being really at the limit of the available memory, the system became unresponsive - and that behavious is really bad... I thought that sooner or later it will really run out of memory, and decided to watch some TV in the meantime. One hour later when I returned, it was still torturing my HD and still unresponsive. Apparently the compile process has been all the time just below the memory limit, causing the kernel to remove pages from memory and load them back from the disk later, which slowed everything down just horribly. So now I'm searching for a way to prevent such situations. The traditional ulimit approach won't help - no single process was responsible for using all the memory, but each one had its reasonable share. So dear lazyweb, is there a way to tell the kernel to reserve a share of the memory (lets say, 64 MB) for buffers and caches only? I can live with out-of-memory errors a bit early (and the just enable swap), but a massive slowdown as described above (where the kernel is apparently reading some data from the HD, then forgetting it again and replacing it with the next) must not happen that easily... Right now I fear that you could bring down any Linux system easily with a "slow" forkbomb where each forked process allocates 100 MB and starts writing some random data to its memory, forking a new child every 50 MB or so. Neither the OOM killer, ulimit nor traditional forkbomb detectors will be able to counter that, since already a couple of processes will cause the system to become completely IO-bound. Oh, and I have no idea how Windows would react on that either. So don't assume any OS is better, just because I say Linux isn't doing perfectly well here. If you have any tips for me, send me an email.

18 November 2005

Aigars Mahinovs: Real fotoday


Creepy windows
Today was the Independence day of Latvia. I spent most of it walking around the city of Riga with a camera and taking pictures. The weather was fantastic (except it was cold and icy) the colors that spread across the sky and people were truly amazing. I took lots and lots of pictures and managed to select 10 of them to upload to flickr for others to enjoy. Unfortunately none of 150 pictures I took during the fireworks are good enough for me to dare showing them around - the fireworks were kind of weak this year. Maybe next time.
So - I hope you'll enjoy looking at those pictures at least as much as I enjoyed taking them.

Bdale Garbee: A True Story

Flying home from Frankfurt yesterday via Chicago, as usual I randomly selected a shortish looking line in the immigration and customs hall. When it was my turn, the agent behind the counter saw the "business" box checked on my form and asked who I work for, which is pretty standard. He then asked me what I do for HP, but before I could answer, he said "No, wait. You've been through here before. I recognize your passport." I managed to retain my composure just enough to agree that he certainly could have seen my passport before. He smiled, stamped my form, and waved me through. My wife wonders why I was so surprised.

Clint Adams: Must... scrobble... branes

Let's say you have a bunch of Ogg Vorbis files that you've tagged with tp_tagger, and you want to extract the relevant information so you can somehow submit it to last.fm via Audioscrobbler 1.1. ogginfo has lousy output for machine parsing, but that's okay.
#!/bin/zsh
setopt extendedglob
zmodload -i zsh/datetime   exit 1
parse_ogginfo()  
  local output album artist mbid title len tstamp
  output=($ (f)"$(ogginfo $1)" )
  album=$ $ (M)output:#*ALBUM=* #*ALBUM= 
  artist=$ $ (M)output:#*ARTIST=* #*ARTIST= 
  mbid=$ $ (M)output:#*MUSICBRAINZ_TRACKID=* #*MUSICBRAINZ_TRACKID= 
  title=$ $ (M)output:#*TITLE=* #*TITLE= 
  len=$ $ (M)output:#*Playback length:* #*Playback length:  
  if [[ "$len" == (#b)([0-9]##)m:([0-9.]##)s ]]
  then
    (( len = $match[1] * 60 + $match[2] + 1 ))
  else
    (( len = 0 ))
  fi
  typeset -i len
  tstamp=$(export TZ=UTC; strftime "%Y-%m-%d %H:%M:%S" $ EPOCHSECONDS )
  print "$ (qqq)artist  $ (qqq)title  $ (qqq)album  $ (qqq)mbid  $ (qqq)len  $ (qqq)tstamp "
 
for i in "$@"
do
  parse_ogginfo $i
done
There's an off-by-one error if you should happen to have a track whose length is an exact number of seconds, and obviously the timestamps are useless if you don't run it on exactly one file at the correct time. Sample output:
"Too Much Joy" "Making Fun of Bums" "Son of Sam I Am" "0077f5e2-ffe8-4f5c-83c5-d2a7bdc79776" "172" "2005-11-18 17:00:10"
"Too Much Joy" "Song for a Girl Who Has One" "Son of Sam I Am" "af48111b-27e3-4c2b-8c42-927864b0e1f4" "209" "2005-11-18 17:00:10"
"Too Much Joy" "Clowns" "Son of Sam I Am" "5cc2cf9c-2c68-48d4-be2c-ff0cbbae17e6" "219" "2005-11-18 17:00:10"
"Too Much Joy" "My Past Lives" "Son of Sam I Am" "abd67bc7-1813-421b-9145-d072e58e62e5" "241" "2005-11-18 17:00:10"
"Too Much Joy" "That's a Lie (remix)" "Son of Sam I Am" "dc22b8b2-7965-4c27-9cbc-9e529b2b1c87" "143" "2005-11-18 17:00:10"
"Too Much Joy" "Hugo!" "Son of Sam I Am" "e0bba321-f654-4512-b052-66d605f96194" "144" "2005-11-18 17:00:10"
"Too Much Joy" "Kicking (That Gone Fishing Song)" "Son of Sam I Am" "f9a3deb2-1b99-4fab-a32f-d594606bc1df" "244" "2005-11-18 17:00:10"
"Too Much Joy" "Life is Flowers" "Son of Sam I Am" "053c11b7-577d-48d0-94cd-182af0b0cc84" "218" "2005-11-18 17:00:10"
"Too Much Joy" "Connecticut" "Son of Sam I Am" "ad34c9c0-08bb-482b-aa75-41f7422e8fc7" "196" "2005-11-18 17:00:10"
"Too Much Joy" "Bad Dog" "Son of Sam I Am" "c0641c0f-6357-47ae-a967-f39c57546236" "196" "2005-11-18 17:00:10"
"Too Much Joy" "1964" "Son of Sam I Am" "0e56e785-75ec-4fa6-adb6-5fc2e58ffb7f" "223" "2005-11-18 17:00:10"
"Too Much Joy" "Worse" "Son of Sam I Am" "2e4ccf4c-ba42-4206-8e38-758105475f06" "147" "2005-11-18 17:00:10"
"Too Much Joy" "Seasons in the Sun" "Son of Sam I Am" "61d7f977-ef05-4648-b913-c4826c12e425" "212" "2005-11-18 17:00:10"
"Too Much Joy" "If I Was a Mekon" "Son of Sam I Am" "7ca27d50-bc12-43c8-83b7-e28cd3a3be1d" "172" "2005-11-18 17:00:10"
"Too Much Joy" "Train in Vain" "Son of Sam I Am" "14b48a3e-e448-47e5-850c-b9e3e01a1d10" "108" "2005-11-18 17:00:10"

Sam Hocevar: Monsterz, free games

Monsterz I managed to do a minor release of Monsterz that fixes compatibility issues with recent versions of Pygame and NumPy. Unfortunately, despite my recent ITP, Monsterz cannot yet enter Debian due to license issues. I really tried my best to create and use completely free content, releasing the game and the graphics under the WTFPL and using a public domain module for the background music, but I still have problems with the sound samples. Two samples are under the CC-by 2.0 (which according to us is non-free, although very close to being free, which gives me good expectations for the next versions) and 8 other samples are free and royalty free for commercial and non-commercial use , which sadly does not explicitly allow modification. I already asked for clarification last year when I started gathering media for Monsterz, but got no answer. And I did not just google for free mp3s , I really spent whole evenings hunting for the most freely licensed samples I could use. This shows exactly how difficult it is to find DFSG-free music and sound effects (as well as 2D and 3D graphics, but to a lesser extent from my personal experience). Though one possible reason may be that it is extremely easy to embed precise licensing terms within a program file, it makes me feel like coders are years ahead in terms of sharing their digital work for everyone to use and improve. Of course, not being a professional sound engineer or creator, I am most certainly missing huge parts of the whole business equation, and I may underestimate the artistic bond they share with their work (and thus their reluctancy to give it away for minor to no retribution). But I do not believe that sound samples of a grunting alien or a bouncing ball may have a high artistic or pecuniary value. And though many people outside Debian will consider our license analyses mere nitpicking, a game designer would probably never use a sound sample that cannot be modified. But instead of just ranting and waiting for new versions of licences that never come in time (GFDL anyone?), I will just try to create my own replacement sound samples and give them away for free when done.

17 November 2005

Andreas Metzler: meme time

Hmm, I cannot resist following up Clint's and Jaldhar's "have you read geeky books"-meme. I "score" 10/20 on the first list, but only 4,5 on the second one (Stephenson _again_, Pynchon, Tolkien, Lem and "Through The Looking Glass.) BTW reading now: Chronicles of Narnia, next in queue Jasper Fforde's Something Rotten.

Ross Burton: Express Tosh

If I had known that the Daily Express front page yesterday was just so damn good I'd have bought a copy myself. With a paper bag on my head, obviously. Instead I have to make do with a small image. Diana Fund Pays Out To Gypsies And Asylum Seekers I'm still not sure that this isn't some great spoof or prank. Maybe someone broke in and changed the front page just as it went to press? What do we have here: Marvellous stuff. I can only imagine the Express has taken to being a parody of itself... NP: Individuality, Rachelle Ferrell

Next.

Previous.