Search Results: "xam"

21 July 2006

Mike Hommey: Firefox 2.0b1 in experimental

After quite some work on packaging it, Firefox 2.0b1 is finally being uploaded to experimental. It is linked to the system libmyspell instead of the bundled one, and can use system dictionaries like Thunderbird already does. I’m also working on using the system libsqlite3, but it first requires some build changes in the debian sqlite3 package and some more work to see if it’s really feasible… you see, they like to take external libraries and modify them so much as adding symbols, changing some internals… and these changes only exist in the mozilla codebase… (the 2 main examples of that being expat and sqlite3) It also includes a working DOM Inspector which upstream didn’t include in their release because they are in the process of moving the component in the core. I also had to fix some more the build system so that some things would be installed by make install (they tend to forget it), others would just be installed (mistakenly removed rules…) or make clean would do its work: cleaning (they tend to forget to flag files for removal when they create it in a Makefile). All that makes me wonder what their review/super-review thing is worth. Anyways, please give it a try, especially if you reported a bug on earlier versions, it would be helpful if you closed bugs that are fixed by this release (don’t forget the ‘Version:’ in the closing message so that the BTS version tracking would do its work). Update: Upstream Firefox 2.0b1 has a working DOM Inspector. It only appears it just doesn’t build correctly the way we build Firefox… might be some missing changes to the Makefiles. Again. *sigh* Update 2: It was trickier: missing something to make the inspector symbols public instead of having a hidden visibility… Update 3: It was actually my fault. /me goes hiding under a rock. And I managed to remove a comment to this post when removing spam… *sigh*. I think I need to take a break.

20 July 2006

Evan Prodromou: 2 Thermidor CCXIV

I talked with Raymond King and Mark Dilley at RecentChangesCamp in February (uh... I mean Pluvi se) about their plans to develop Mark's excellent SwitchWiki wiki directory into something... more. I'm glad to see that WikiIndex is really picking up steam. It's becoming my first-stop for getting information on what's wiki, what's not, and who's doing what. The site uses MediaWiki, but the principles and community are very much rooted in the traditions of Ward's Wiki, MeatballWiki and CommunityWiki. I really hope this site keeps up it's momentum and growth. tags:

CC Salon in Montreal Tonight is the first Creative Commons Salon in Montreal. The get-together is at Caf l tranger, 680 Sainte-Catherine Ouest (at Alymer) at 19h30. More details on the Creative Commons Canada blog: http://creativecommons.ca/blog/?p=185 . Maj and I are trying to get a sitter for the event -- Amita June is starting to get grumpier and grumpier about going to sleep after 8PM. But I'll be there regardless. tags:

Great camping Website So, maybe I just haven't been camping a lot in other places outside Quebec in a while, but I'm extremely impressed with the quality of the S paq Web site. You can search the entire network for available campsites based on various criteria (size of tent vs. RV, for example), and then use a map-based interface to browse possible sites. The maps go down to the individual site level, and have popup descriptions of each and every site -- how much sun, how close to water, how private, etc. It's really nice. I have my quibbles -- we tend to do road-trip camping, where we'll stay in a different campground each night for a few days. It'd be nice to do all those reservations at once, but the site doesn't support that. And there are some search criteria I'd like to be able to specify (number of neighbors, access by car) that aren't possible. But as far as it goes, this is a real good site. tags:

Wikispam lockdown I've been having a real problem with Wikispam on my site lately -- several of my pages have nothing-to-sniff-at wp:PageRank values of 6 or 7, and I think that attracts a certain spammity crowd. I think that dealing with Wikispam is something most wiki sites do very well-- an active community is the best counter-measure against spam. And there are lots of good tools, like regexp filters, per-page locking, email and IM notification, and ip blocking that make it easier to maintain a site. But I don't have an active community working on this site -- it's pretty much just me. And WiLiKi, as beautiful and Scheme-y as it is, doesn't have many of the anti-spam tools that users of other wiki engines take for granted. I plan on building more anti-spam tools into the site, but for now I've just been locking the site up when I'm not writing something. It's not as wiki-ish, but it does keep my writing up more often. I'd feel pretty bad about it, but it looks like Alex locks up CommunityWiki for days at a time. tags:

Amazon man at the door Just got an order from Amazon in... full of CDs and books. When I used to live in my car (long story, there), I had my 100 favorite CDs in a box in the back. It was safe there in tons of cities -- wt:Chicago, wt:Saint Louis, wt:New York City, even wt:Monterrey and wt:Guanajuato. But I parked it about a block from It's Tops in San Francisco one night while visiting home, and one of my windows was smashed and the discs were taken. Devastating. Slowly but surely I've been re-stocking my music collection, but it's painful to buy the same album twice (and, yes, I know... I shoulda made backups! I do that now). Today's shipment contained a lot of stuff I re-bought: ''wp:The Last Waltz'', a bunch of wp:Neil Young (including the DVD of wp:Greendale), and one of my favorite albums ever, the eponymous first album from Lamb. Also in the box were a bunch of Lost paperbacks ("inspired by the hit series") and the hardback copy of Bad Twin, the mystery novel supposedly written by one of the people who died in the crash of Flight 815. Yeah, I know -- but I like the show, dangit. tags:

Best thing ever Vaguely reminiscent of the very fine Good or Bad? feature from Brunching Shuttlecocks, bestthing.info, by the enigmatic but talented xkcd, is a good way to waste a few minutes. tags:

19 July 2006

Erich Schubert: Google and the semantic web

Worth reading: article on Googles Peter Norvig and Tim Berners-Lee over the Semantic Web. While Google is obviously right about "millions of web masters" who will have trouble adopting to these new standards - thats why we're writing software. The days when you were hand-writing HTML code will be over some day. Already now - as Google acknowledged - many people fail to write proper HTML. But HTML isn't becoming easier to write. In fact, it gets much more complex with different character encodings, new CSS versions, raised bars for layouting, more dynamic web pages, Ajax, ... More and more people won't write HTML themselves anymore, but use some software. People used to write bad HTML; now people use tools such as Wordpress which are at least expected to produce valid markup. They start using visual editors, which will eventually stop using tags such as <i /> and use the "more semantic" <em /> instead. Without actually being aware of that. And their blog software also does generate RSS for them. How many people have ever written RSS by hand? So it's mostly a matter of the tools we offer them; with better tools we can push the use of better ("semantic") formats which then make data reuseable for others as well. For example, tons of people hope that friendster, openbc, linkedin and all these will help them in one way or another to keep contact with some people, sell some products, find new jobs. What these web pages basically collect is FOAF data. (And, btw, if any of these web sites were true Web 2.0, they would actually export FOAF files via some API!) They have a UI people understand; now all they would need to do is share their data, and we'd have a large body of "semantic web ready" FOAF data. Similar things apply to other "semantic" formats. Think calendards. Ical is pretty much the standard and widely used. Almost noone uses web pages which are only readable by humans. The semantic web isn't dead or anything. It just takes some time to be widely adopted, but that was to be expected. And having tools to generate semantic data that are maybe even easier to use than non-semantic tools - after all, the computer should be able to assist you more with semantic data - is the key thing to success. I'm also looking forward to Semantic wikis such as IkeWiki, that try hard to make entering semantic data as easy as editing a non-semantic wiki page. In large wikis such as Wikipedia, making useful links is not as easy as typing [MagicWord], because you first have to look up the magic word. A semantic wiki can assist you by suggesting appropriate links based on the information you've already entered. (e.g. if you mark a page as biology, it won't suggest you it might be a computer part).

Steve Kemp: So hot, so cold, so far so out of control

The cron patch I posted previously attempted to discard any crontab file which contained non-ASCII characters was a flawed approach. Lots of people told me that this would break scripts with foreign character sets, and that was something I’d not considered. A real solution would be to read each line and test for : Looking at the code for cron is hard because it is written in a “strange” style, so I’m not even going to attempt it this level of validation. However I have produced an updated patch which should work on ASCII + foreign character sets equally well. Instead of testing for the presense of non-ASCII characts it looks for NULL characters (’\0′). Binary files should contain at least one NULL character - as a string terminator, for example - and text-files should never contain them. So I think this simple test will work for 99% of cases.
Regardless of whether this patch, or another like it, is accepted and applied I do believe strongly that whilst being liberal in what you accept is a good thing being too liberal is asking for trouble.

18 July 2006

Enrico Zini: Fifth day in Addis

Setting up a mail server
Background Some terminology:
MTA
Mail Transport Agent
MUA
Mail User Agent
MDA
Mail Delivery Agent
SMTP
Simple Mail Transfer Protocol
MX
Mail eXchange
POP
Post Office Protocol
IMAP
Internet Message Access Protocol
With SMTP you connect to a server and send two things: envelope and message. The envelope looks like this:
MAIL FROM: <enrico@enricozini.org>
RCPT TO: <rms@fsf.org>
RCPT TO: <linus@linux.org>
The message looks like this:
From: <enrico@enricozini.org>
To: <rms@fsf.org>
Cc: <linus@linux.org>
Message-ID: <1234567@enricozini.org>
Subject: Test mail
Hi Richard,
this is a test mail.  I'm also writing
Linus to show how to send to more people.
Cheers,
Enrico
There is no authentication. There is no encryption. Two usual types of access control:
  1. Outbound e-mail is normally only accepted from an internal network
  2. Inbound e-mail is normally accepted from anywhere
The DNS is used to find the SMTP server to use to send a message:
$ host -t MX yahoo.com
yahoo.com MX 10 smtp1.yahoo.com
yahoo.com MX 20 smtp2.yahoo.com
yahoo.com MX 20 smtp3.yahoo.com
The process of sending an E-Mail:
  1. Enrico writes an E-Mail:

    From: Enrico Zini <enrico@enricozini.org>
    To: Richard Stallman <rms@fsf.org>
    Subject: Hello from Addis
    Hi Richard,
    Addis is a wonderful city, even if
    it rains a lot.
    Bye,  Enrico
    
  2. Enrico's MUA connects to the SMTP server (for example, port 25 of smtp.aau.edu.et):

    HELO enricozini.org
    200 OK Hello enricozini.org
    MAIL FROM: <enrico@enricozini.org>
    200 OK Mail from enrico@enricozini.org
    RCPT TO: <rms@fsf.org>
    
    Here, the SMTP server performs relay control: "do we relay mail to rms@fsf.org?":
    • Outbound e-mail is normally only accepted from an internal network
    • Inbound e-mail is normally accepted from anywhere
    A target address could be refused:
    413 ERR I don't relay for rms@fsf.org
    
    In this case, the destination is not local but the recipient is accepted because I'm inside the local network:
    200 OK Destination rms@fsf.org
    DATA
    200 OK Please send message body
    From: Enrico Zini <enrico@enricozini.org>
    To: Richard Stallman <rms@fsf.org>
    Subject: Hello from Addis
    Date: Mon, 17 Jul 2006 09:49:45 +0300
    Message-ID: <124372643@enricozini.org>
    Hi Richard,
    Addis is a wonderful city, even if
    it rains a lot.
    Bye,  Enrico
    .
    200 OK Message accepted
    QUIT
    200 OK Bye.
    
  3. The SMTP server needs to find out where to send the message, using the DNS:

    $ host -t MX fsf.org
    fsf.org MX 10 mail.fsf.org
    fsf.org MX 20 mail.gnu.org
    
  4. So the SMTP server tries the first one and connects to port 25 of mail.fsf.org:

    HELO smtp.aau.edu.et
    200 OK Hello smtp.aau.edu.et
    MAIL FROM: <enrico@enricozini.org>
    200 OK Mail from enrico@enricozini.org
    RCPT TO: <rms@fsf.org>
    
    The destination is accepted because it's for a local user:
    200 OK Destination rms@fsf.org
    DATA
    200 OK Please send message body
    From: Enrico Zini <enrico@enricozini.org>
    To: Richard Stallman <rms@fsf.org>
    Subject: Hello from Addis
    Date: Mon, 17 Jul 2006 09:49:45 +0300
    Message-ID: <124372643@enricozini.org>
    Received: by mail.aau.edu.et
      on Mon, 17 Jul 2006 09:55:53 +0300
      from 10.4.15.158
    Hi Richard,
    Addis is a wonderful city, even if
    it rains a lot.
    Bye,  Enrico
    .
    200 OK Message accepted
    QUIT
    200 OK Bye.
    
  5. Now, mail.fsf.org will invoke a MDA to write the mail in Richard Stallman's mailbox.

Example of problems with mail handling:
  • Accepting inbound connections:
    • Malicious input:
      • logic errors
      • buffer overflows
      • DoS (Denial Of Service) attacks
      • Connection floods
  • Performing outbound connections:
    • Programming errors:
      • Flooding of connections
  • Performing routing:
    • Unauthorised relays
    • Mail loops
  • Writing to the local hard drive:
    • Filling up the hard drive
    • Writing to the wrong files
  • Writing to the local hard drive as root:
    • In case of error or attack, any file in the system can potentially be compromised
RFC-822 is the original standard for E-mail. RFCs are standard Internet documents. Have a look at RFC documents released the 1st of April.
postfix Common setup: "Internet site with smarthost". More difficult to maintain: "Internet site". A smarthost is a machine that will relay e-mail for you. Questions asked with "Internet site with smarthost":
  • Mail name: aau.edu.et (name used to publicly identify the mail server)
  • Smarthost name: smtp.telecom.net.et (SMTP server that will relay our e-mail)
To test a mail server:
$ telnet localhost 25
HELO me
MAIL FROM: <a@b.c>
RCPT TO: <mail@of.a.local.user>
DATA
hi
.
QUIT
By default, you find locally delivered mail in /var/mail/username. Postfix configuration files:
/etc/postfix/master.cf
configures how all the postfix components run together (man 5 master)
/etc/postfix/main.cf
Main postfix configuration (man 5 postconf)
To rewrite addresses:
  1. In /etc/postfix/main.cf:

    canonical_maps = hash:/etc/postfix/canonical
    
  2. Then in /etc/postfix/canonical you can add the rewrite rules, like:

    enrico   enrico@enricozini.org
    
  3. When /etc/postfix/canonical is modified you need to regenerate the index:

    sudo postmap canonical
    
    (same is when you change the alias file: sudo postalias /etc/aliases)
(see file:///usr/share/doc/postfix/html/ADDRESS_REWRITING_README.html) Manipulating the message queue:
mailq - List the mail queue.
Example:
mailq
postqueue - Postfix queue control
Examples:
# Like mailq
postqueue -p
# Tries to send every message in the queue
postqueue -f
# Tries to send every message in the queue for that site
postqueue -s site
postsuper - Postfix superintendent
Examples:
# Deletes one message
sudo postsuper -d 7C4D2EC0F5D
# Deletes all messages held in the queue for later delivery
sudo postsuper -d ALL deferred
Different mail queues in postfix:
incoming
mail who just entered the system
active
mail to be delivered
deferred
mail to be delivered later because there were problems
hold
mail that should not be delivered until released from hold
Mail logs are in:
/var/log/mail.log
/var/log/mail.err
/var/log/mail.info
/var/log/mail.warn
Mail delivery Mailbox formats:
  • mbox: single file, mail separated by "From " lines
  • maildir: one directory per folder, one file per mail
  • mh: similar to maildir, but not really used
Alternate MDA: procmail: allows to filter mail automatically into different folders. Mail forwarding with ~/.forward: allows to redirect mail to a different address: just put the address you want to send to in the file ~/.forward.
POP or IMAP server Installation:
apt-get install dovecot
Configuration is in:
/etc/dovecot/dovecot.conf
The main thing that is needed is to enable the mail protocols you want:
protocols = imaps
Server monitoring To make all sorts of graphs:
apt-get install munin munin-node
Example: http://munin.ping.uio.no To compute more statistics:
  • anteater
  • isoqlog
  • mailgraph
Monitor system logs: logcheck:
  • sends you mail with abnormal log lines
  • It's important to customize what is normal and you do it with regular expressions
Filtering viruses and spam clamav - Virus scanner Virus scanning:
  • Postfix gives the mail to clamav that scans it and gives it back if it's clean.
  • Strategies for infected mail:
    • silently delete it
    • refuse the mail and send a notification to the sender
    • refuse the mail and send a notification to the receiver
    • quarantine the e-mail
    • refuse delivery with a SMTP error
    • deliver with an extra header that says that it's a virus
spamassassin - Spam filter Spam scanning:
  • Postfix gives the mail to spamd that scans it and gives it back with some spam information.
  • Strategies for spam mail:
    • silently delete it
    • refuse the mail and send a notification to the sender
    • refuse the mail and send a notification to the receiver
    • quarantine the e-mail
    • refuse delivery with a SMTP error
    • deliver with an extra header that says that it's spam
  • New techniques:
    • greylisting: when you receive a mail from a host you've never seen before, refuse it with a temporary error, and accept it the second time (after some time delay). Spammers normally don't retry, and implementing retry would increase their cost of sending e-mail.
    • crossassassin: if more than some amount of your users receive a mail with the same message ID, throw it away. Sending mails with different headers would increase the cost of sending e-mail.
Man pages and sections Man pages are divided in sections:
  • man man shows all the sections of the manpages
  • man 5 postconf shows the postconf manpage in the "configuration file" section
  • Normally manpages are referred as manpage(section) (e.g. postconf(5) )

Enrico Zini: Fifth day in Addis

Samba To get samba:
apt-get install samba samba-doc smbclient
To get the Samba Web Administration Tool:
apt-get install swat netkit-inetd
The configuration is in /etc/samba:
  • One [global] section with the general settings
  • One section per share
One could use swat at http://localhost:901/ but it does not work easily on Ubuntu. To see what is shared:
smbclient -L localhost
To access a share:
smbclient //localhost/name-of-the-share
To add a new user:
sudo smbpasswd -a username
To change the password of a user:
sudo smbpasswd username
To test accessing a share as a user:
smbclient //localhost/web -U yared
Documentation:
man smb.conf
To force the user or group used to access a share:
force user = enrico
force group = www-data
To set the unix permissions for every created file:
# For files
create mask = 0664
# For directories
directory mask = 0775
Example share configuration for a webspace:
mkdir /var/www/public
chgrp www-data /var/www/public
chmod 0775 /var/www/public
Then, in /etc/samba/smb.conf:
[web]
   comment = Webspace
   path = /var/www
   writable = yes
   public = no
   force group = www-data
   create mask = 0664
   directory mask = 0775
Example share configuration for a read only directory where only a limited group of people can write:
[documents]
   comment = Documents
   path = /home/enrico/Desktop/documents
   force user = enrico
   public = yes
   writable = no
   write list = enrico, yared
Print server (CUPS) Installation:
apt-get install cupsys
Configuration:
  • On the web (not enabled in Ubuntu):

    http://localhost:631/
    
  • On the desktop:

    System/Administration/Printing
    
Example IPP URIs:
ipp://server[:port]/printers/queue
http://server:631/printers/queue
ipp://server[:port]/...
For example:
ipp://server/printers/laserjet
"This printer uri scheme can be used to contact local or remote print services to address a particular queue on the named host in the uri. The "ipp" uri scheme is specified in the Internet Print Protocol specifications and is actually much more free form that listed above. All Solaris and CUPS based print queues will be accessed using the formats listed above. Access to print queues on other IPP based print servers requires use of the server supported ipp uri format. Generally, it will be one of the formats listed above."
GRUB The configuration file is in /boot/grub/menu.lst. The documentation can be accessed as info grub after installing the package grub-doc. Quick list of keys for info:
arrows
move around
enter
enters a section
l
goes back
u
goes up one node
q
quit
/
search
Grub trick to have a memory checker:
  1. apt-get install memtest86+

  2. Add this to /boot/grub/menu.lst:

    title Memory test
        root (hd0,5)
        kernel /boot/memtest86+.bin
    
Firewall With iptables:
man iptables
# Only allow in input the network packets
# that are going to the web server
iptables -P INPUT DROP
iptables -A INPUT --protocol tcp --destination port 80 -j ACCEPT
# To reset the input chain as the default
iptables -F INPUT
iptables -P INPUT ACCEPT
Some links:
Squid Installation:
apt-get install squid
The configuration is in /etc/squid/squid.conf. To allow the local network to use the proxy:
# Add this before "http_access deny all"
acl our_networks src 10.4.15.0/24
http_access allow our_networks
To use a parent proxy:
cache_peer proxy.aau.edu.et     parent    8080  0  proxy-only no-query
Pay attention because /var/spool/squid will grow as the cache is used. The maximum cache size is set in the directive cache_dir. Information about squid access control is at http://www.squid-cache.org/Doc/FAQ/FAQ-10.html To check that the configuration has no syntactic errors: squid -k parse. To match urls:
acl forbiddensites url_regex [-i] regexp
For info about regular expressions:
man regex
Example filtering by regular expression:
acl skype url_regex -i [^A-Za-z]skype[^A-Za-z]
http_access deny skype
Transparent proxy setup: http://www.tldp.org/HOWTO/TransparentProxy.html
Problems found today Hiccups of the day:
  • swat does not run on Ubuntu because Ubuntu does not have inetd
  • swat does not allow root login on Ubuntu because root does not have a password
  • smbpasswd -a does not seem to update the timestamp of /var/lib/samba/passwd.tdb
  • cups web admin does not work on Ubuntu
  • LDAP is still not so intuitive to set up

Enrico Zini: Fourth day in Addis

Unix file permissions:
drwxr-xr-x   2 root root    38 2006-07-14
 
+- Is a directory
drwxr-xr-x   2 root root    38 2006-07-14
 ---
   
  +- User permissions (u)
drwxr-xr-x   2 root root    38 2006-07-14
    ---
      
     +- Group permissions (g)
drwxr-xr-x   2 root root    38 2006-07-14
       ---
         
        +- Permissions for others (o)
drwxr-xr-x   2 root root    38 2006-07-14
               ----
                 
                +- Owner user
drwxr-xr-x   2 root root    38 2006-07-14
                    ----
                      
        Owner group -+
Other bits:
  • 4000 Set user ID:
    • For executable files: run as the user who owns the file, instead of the user who runs the file
    • For directories: I think it's not used
  • 2000 Set group ID:
    • For executable files: run as the group who owns the file, instead of the group of the user who runs the file
    • For directories: when a file is created inside the directory, it belongs to the group of the directory instead of the default group of the user who created the file
  • 1000 Sticky bit:
    • For files: I think it's not used anymore
    • For directories: only the owner of a file can delete or rename the file
The executable bit for directories means "can access the files in the directory". If a directory is readable but not executable, then I can see the list of files (with ls) but I cannot access the files. To access a file, all the directories of its path up to / need to be executable. Commands to manipulate permissions:
  • chown - change file owner and group
  • chgrp - change group ownership
  • chmod - change file access permissions
  • sudo adduser enrico www-data adds the user enrico to the group www-data.
Example setup for a website for students:
# Create the group 'students'
mkdir /var/www/students
chgrp students /var/www/students
chmod 2775 /var/www/students
# If you don't want other users to read the files of the students:
chmod 2770 /var/www/students
adduser www-data students
 (this way the web server can read the
  pages)
# when you add a user to a group, it does not affect running processes:
 - users need to log out and in again
 - servers need to be restarted
Apache:
  • To install apache2 without a graphical interface:

    apt-cache search apache2   less
    sudo apt-get install apache2
    
  • By default, /var/www is where is the static website.

  • By default, ~/public_html is the personal webspace for every user, accessible as: http://localhost/~user

  • By default, /usr/lib/cgi-bin contains scripts that are executed when someone browses http://website/cgi-bin/script

  • By default, apache reads the server name from the DNS. If we don't have a name in the DNS and we want to use the IP, we need to set:

    ServerName 10.4.15.158
    
    in /etc/apache/apache2.conf (set it to your IP address)
  • To access the Apache manual: http://localhost/doc/apache2-doc/manual/

  • http://localhost/doc/apache2-doc/manual/mod/mod_access.html The access control module

  • http://localhost/doc/apache2-doc/manual/mod/mod_auth.html The user authentication module

  • To edit a user password file, use:

    htpasswd - Manage user files for basic authentication
    
  • Example .htaccess file to password protect a directory:

    AuthUserFile /etc/apache2/students
    AuthType Basic
    AuthName "Students"
    Require valid-user
    
  • Information about .htaccess is in http://localhost/doc/apache2-doc/manual/howto/htaccess.html

  • If you need to tell apache to listen on different ports, add a Listen directive to /etc/apache2/ports.conf. Then you can use:

    <VirtualHost www.training.aau.edu.et:9000>
    [...]
    </VirtualHost>
    
  • To setup an HTTPS website:

    • Documentation is in http://localhost/doc/apache2-doc/manual/ssl/

    • How to create a certificate: http://www.tc.umn.edu/~brams006/selfsign.html

    • Create a certificate:

      /usr/sbin/apache2-ssl-certificate -days 365
      
    • Create a virtual host on port 443:

      <VirtualHost www.training.aau.edu.et:443>
      [...]
      </VirtualHost>
      
    • Enable SSL in the VirtualHost:

      SSLEngine On
      SSLCertificateFile /etc/apache2/ssl/apache.pem
      
    • Enable listening on the HTTPS port (/etc/apache2/ports.conf):

      Listen 443
      
Apache troubleshooting:
  • check that there are no errors in the configuration file:

    apache2ctl configtest
    
    This it is always a good thing to do before restarting or reloading apache.
  • read logs in /var/log/apache2/

  • if you made a change but you don't see it on the web, it can be that you have the old page in the cache of the browser: try reloading a few times.

To install PHP
  • apt-get install libapache2-module-php5

  • then by default, every file .php is executed as php code

  • Small but useful test php file:

    <? phpinfo() ?>
    
To install MySQL
  • apt-get install mysql-client mysql-server

  • for administration run mysql as root:

    • Create a database with:

      create database students
      
  • Give a user access to the database:

    # Without password
    grant all on students.* to enrico;
    # With password
    grant all on students.* to enrico identified by "SECRET";
    
  • More information can be found at http://www-css.fnal.gov/dsg/external/freeware/mysqlAdmin.html

To use MySQL from PHP:
apt-get install php5-mysqli php5-mysql
Problems found today:
  • the apache2 manual in /usr/share/doc/manual can only be viewed using apache because it uses MultiView. So you need to have a working apache to read how to have a working apache.
  • chmod does not have examples in the manpage.

Enrico Zini: Third day in Addis

Believe it or not, a network that fails often is the best thing to have when you are teaching network troubleshooting. Various tools useful for networking:
  • ifconfig - configure a network interface

  • dnsmasq - Simple DNS and DHCP server

  • host - DNS lookup utility

  • route - show / manipulate the IP routing table

  • arping - send ARP REQUEST to a neighbour host

  • mii-tool - view, manipulate media-independent interface status (IOW, see if the cable works)

  • nmap - Network exploration tool and security / port scanner Examples:

    # Look at what machines are active in the local network:
    nmap -sP 10.5.15.0/24
    # Look at what ports are open in a machine:
    nmap 10.5.15.26
    
  • tcpdump - dump traffic on a network It can be used to see if there is traffic, and to detect traffic that shouldn't be there.

Useful tip:
# Convert a unix timestamp to a readable date
date -d @1152841341
What happens when you browse a web page:
  1. type the address www.google.com in the browser
  2. the browser needs the IP address of the web server:
  1. look for the DNS address in /etc/resolv.conf (/etc/resolv.conf is created automatically by the DHCP client)
  2. try all the DNS servers in /etc/resolv.conf until one gives you the IP address of www.google.com
  3. take the first address that comes from the DNS (in our case was 64.233.167.104)
  1. figure out how to connect to 64.233.167.104:
  1. consult the routing table to see if it's in the local network:
  1. if it's in the local network, then look for the MAC address (using ARP - Address Resolution Protocol)
  2. if it'd not in the local network, then send through the gateway (again using ARP to find the MAC address of the gateway)
  1. Send out the HTTP request to the local web server or through the gateway, using the Ethernet physical protocol, and the MAC address to refer to the other machine.
Troubleshooting network problems:
  1. See if the network driver works:
  1. With ifconfig, see if you see the HWaddr:. If you do not see it, then the linux driver for the network card is not working. Unfortunately there's no exact way to say that it works perfectly
  1. See if you have an IP address with ifconfig. If you find out that you need to rerun DHCP (for example, if the network cable was disconnected when the system started), then you can do it either by deactivating/reactivating the Ethernet interface using System/Administration/Networking or, on a terminal, running:

    # ifdown eth0
    # ifup eth0
    
    If you don't get an IP, try to see if the DHCP server is reachable by running:
    $ arping -D [address of DHCP server]
    
  2. See if the local physical network works:

  1. With sudo mii-tool, see if the cable link is ok. If it's not, then it's a problem in the cable or the plugs, or simply the device at the other end of the cable is turned off.
  2. Try arping or ping -n on a machine in the local network (like the gateway) to see if the local network works.
  1. See if the DNS works:
  1. Find out the DNS address:

    cat /etc/resolv.conf
    
  2. If it's local, arping it

  3. If it's not local, ping -n it

  4. Try to resolve a famous name using that DNS:

    $ host [name] [IP address of the DNS]
    
  5. Try to resolve the name of the machine you're trying to connect. If you can resolve a famous name but not the name you need, then it's likely a problem with their DNS.

  1. If you use a proxy, see if the proxy is reachable: check if the proxy name resolves to an IP, if you can ping it, if you can telnet to the proxy address and port:

    $ telnet [proxy address] [proxy port]
    
    you quit telnet with ^]quit.
  2. If you can connect directly to the web server, try to see if it answers:

    $ telnet [address] 80
    
    If you are connected, you can confirm that it's a web server:
    GET / HTTP/1.0 (then Enter twice)
    
    If it's a web server, it should give you something like a webpage or an HTTP redirect.
When you try to setup a service and it doesn't work:
  1. check that it's running:

    $ ps aux   grep dnsmasq
    
  2. check that it's listening on the right port:

    $ sudo netstat -lp
    
  3. check that it's listening from the outside:

    $ nmap [hostname]
    
  4. check for messages in /var/log/daemon.log or /var/log/syslog

  5. check that the configuration is correct and reload or restart the server to make sure it's running with the right configuration:

    # /etc/init.d/dnsmasq restart
    
dnsmasq:
By default: works as a DNS server that serves the data in /etc/hosts. By default: uses /etc/resolv.conf to find addresses of other DNS to use when a name is not found in /etc/hosts. To enable the DHCP server, uncomment:
dhcp-range=192.168.0.50,192.168.0.150,12h
in /etc/dnsmasq.conf and set it to the range of addresses you want to serve. Pay attention to never put two DHCP servers on the same local network, or they will interfere with each others. To test if the DHCP server is working, use dhcping (not installed by default on Ubuntu). To communicate other information like DNS, gateway and netmask to the clients, use this piece of dnsmasq.conf:
# For reference, the common options are:
# subnet mask - 1
# default router - 3
# DNS server - 6
# broadcast address - 28
dhcp-option=1,255.255.255.0
dhcp-option=3,192.168.0.1
dhcp-option=6,192.168.0.1
dhcp-option=28,192.168.0.255
Problems found today:
  • changing the name of the local machine in /etc/hosts breaks sudo, and without sudo it's impossible to edit the file. The only way to fix this is a reboot in recovery mode.
  • dhclient -n -w is different than dhclient -nw
Quick start examples with tar:
# Create an archive
tar zcvf nmap.tar.gz *.deb
# Extract an archive
tar zxvf nmap.tar.gz
# Look at the contents of an archive
tar ztvf nmap.tar.gz
Quick & dirty way to send a file between two computers without web server, e-mail, shared disk space or any other infrastructure:
# To send
nc -l -p 12345 -q 1 < nmap.tar.gz
# To receive
nc 10.5.15.123 12345 > nmap.tar.gz
# To repeat the send command 20 times
for i in  seq 1 20 ; do nc -l -p 12345 -q 1 < nmap.tar.gz ; done

Erich Schubert: Flow oriented programming?

I've been preparing on my exam on programming and modeling languages. The usual classification of imperative, functional, oop and logic programming is kind of inconsequent, since there are e.g. functional oop languages. To me, oop is more of a software engineering thing, usually applied to imperative programming with a load of syntactic sugar. The usual OOP examples suck. They're so basic that all the OOP and modeling stuff is just a complete waste of time. So I was considering more complex examples, and ended up at common design patterns. A couple of design patterns in OOP seem like workarounds to me; a new language (well, maybe C# has addressed some of these, I don't know) could probably add some more syntactic sugar to ease their use. I hate UML diagrams. To me they just emphasize all the obvious stuff, while they quickly get too complex to be of use for "seeing" the important things. Even UML activity diagrams in my opinion don't properly depict the flow of information/data in the program, which is what I really care about. Activity diagrams basically show you a sequence of methods are being called. But often you'll have a method being called thousands of times, with the actual relevant information being in the parameters passed. And some stuff might be done asynchronously, too. For certain problems (well, not for stuff like e.g. the train door used in OOP examples), it could be much more useful to abstract away from the involved classes - which are often just wrappers for data, "records", "datagrams", tcp packets - and instead model flows of data. Think of drawing conveyor belts transporting data, filtering it, duplicating it, ... The gstreamer framework seems to employ such a model for audio and video processing. You build pipelines by placing e.g. sources and sinks there. But you can interpret dozens of code examples with this model. SAX transform a stream of charaters into a stream of XML nodes. UI mainloops are basically a stream of UI events. Network data obviously is easy to model as a data flow; the "obvious" mapping into "packet objects" however often useless. Even when doing a select on a database, the result has an obvious representation as a data flow (a flow of records in this case). You probably only need a couple of "primitives". Sources and sinks, obviously. Filters, Y and Tee modules. Queues and Caches could be interesting, too. Note that data flows can work in two ways: push and pull. Maybe sometimes the same code could be used for pull and push operations, too. When push and pull driven flows meet you often need threads to connect. For example, a SAX parser usually will pull character data from a stream and push a stream of XML nodes as output. One way to get a pull-able output stream out of this (I'm ignoring e.g. the existing XMLpull API for this example) is to use a cache (which will eventuall contain the whole document as Nodes), another is to use two threads and just block the SAX thread until the other pulling thread has requested another node. Of course you can do all this in existing languages (you know, this doesn't give you anything new beyond turing completeness) - just like you could do OOP in assembler. You can, but it would be nice if the compilers offer you an easier syntax. Also it would be nice if I wouldn't have to write different code for pull-driven and push-driven operation. Also note that push type operation is rather typical for imperative programming languages - for i in range(0,10): print i - whereas pull type operations are typical for "lazy" functional languages - take 3 (repeat 'a').

17 July 2006

Julien Danjou: My fingers' pleasure

Today I started hacking the us keymap of xorg to define my own custom keys. That's so funny. For people interested, here is how to do it:
% cd /usr/share/X11/xkb/symbols
% cp us mykeymap
% vi mykeymap
So far it's simple. Delete everything but keep the xkb_symbols "basic" part. The format is quite simple, so I won't explain it. I decided to use the right alt key to map several characters I want to use. For this, you have to add include "level3(ralt_switch)" after just before the last bracket. You can now add other characteres, for example I changed:
key <AB03>          [         c,    C         ]        ;
to
key <AB03>          [         c,    C,    copyright,   registered      ]        ;
So I can type the copyright symbole ( ) by pressing Alt right and c, and the registered symbol ( ) by pressing Alt right, shift and c. The characters name are located in the /usr/include/X11/keysymdef.h file. You can change your keymap with setxkbmap mykeymap and to change it definitely, just edit your /etc/X11/xorg.conf.

Evan Prodromou: 29 Messidor CCXIV

We had a great trip to wt:Mauricie this weekend. It was quite an adventure -- we took off from Montreal on Saturday in the middle of a downpour, with no idea if it was going to clear before we got to the R serve faunique de St.-Maurice. But the rain slowed as we passed through wt:Yamachiche and by the time we were in wt:Shawinigan it was clear. Driving up the beautiful St.-Maurice River is real pleasure, especially when it's freshly-rained-on. The river is wide and slow (I think because of the hydro plant at Shawinigan) and sailboats and houseboats run up and down it. We got to the welcome center for the park too late -- it was closed -- so we had to go across the $12 (!) toll bridge into the reserve on faith alone. Which took a lot, since it's all dirt roads on the other side. It was a beautiful ride, but about 30 bone-jarring kilometers to our final campsite. We entertained the baby by making long aaaaaaaaaah sounds over the grading bumps -- by the end of the ride she was doing it herself. We saw a huge black bear on the way up -- maybe twice my size, long and lanky, loping across the road like it owned the place. Maj's face dropped when she saw it -- she'd never seen a bear before. It was an impressive animal, and it looked like Amita straight-leg crawling. We had a little hassle at the front gate of the Lac Normand campground, but we got settled down OK, put the baby in an insect-proof playpen, and Maj made a great pasta dinner while I put up the tent. I finished up the dishes and Maj and Amita walked down to the beach ("one of the best in Quebec", gushes S paq, and I'm inclined to believe them), and I was just starting a campfire when another storm hit. So we played in the tent for a while and went to sleep. Sunday we had a quick breakfast and headed down to la plage. The lake was beautiful, with a 4-5km sand beach ringing it on the north side. All three of us went for a swim in the water; Amita held onto Maj's back and made motorboat noises. On the drive out we tried to cut across the Parc de la Mauricie and the R serve faunique de Mastigouche to get to wt:Saint-Michel-des-Saints, which is a town in wt:Lanaudi re that I've wanted to visit for a while. But we took a wrong turn at poorly-marked crossroads, and ended up at the safe and sane exit instead. How often does that happen? Drive home was nice, and we had sushi from the Sushi Shop on Mont Royal. The cats were mad, but they always are. tags:

Kerblog Norsola Johnson passed along a link to Mazen Kerbaj's difficult Kerblog. Kerbaj is a expatriate Lebanese musician and comics artist caught in Beirut by the blockade and the destruction of the airport there. Stuck in the city under bombardment, he took the opportunity to start a comics blog. tags:

S3 I wrote about Amazon's crazy S3 (Simple Storage Service), which provides a Web interface for data storage. I was interested to see that Om Malik had an entry about it: StartUps Embracing Amazon S3. I guess it's a cheap and easy way to get a lot of storage when you don't have a lot of time to work on things like getting storage. Does it mean I've gone bad if I read Om Malik? He was a speaker at the Mesh Conference a couple of months ago, and I didn't like his talk. Now, I read his blog daily. Gar. tags:

Oh No Robot I just caught up with the latest Spamusement comic, and saw a "Transcribe This Comic!" link at the bottom. It goes to the fine Oh No Robot comics search and transcription service. I guess the idea is that readers transcribe comics into searchable text. A great idea, and a nice example of user-generated metadata. tags:

MicroID So, when ClaimID asked me to embed a MicroID into my home page to verify it, I thought they were nuts. But I did it anyways. Now, I'm trying to wrap my head around MicroID, and I'm starting to think it's very clever. I dunno... maybe a MediaWiki extension is in order... tags:

A couple of hours later... I dicked around a bit more with MicroID, and made my own MicroID verifier in Python. You're welcome to use it; see Software/Python/MicroID. tags:

Moon language From sneakums on #tron: I cannot speak your crazy moon language from Maciej Ceglowski a nice story about language and life in Montreal. tags:

16 July 2006

Erich Schubert: On programming contests (ACM ICPC etc.)

Bart Massey and Mike Vanier talk about programming contests such as the ACM International Collegiate Programming Competition. Well, since I'm being told that I love ranting, I have to join this one. ;-) I never participated in a contest except the Bundeswettbewerb Informatik back in (pre-university) school. In my opinion that contest was quite different for a number of reasons: most of the participants didn't have any IT classes at school. And noone "trained" for that contest. Also the contest isn't a speed contest, but you have a couple of months to solve a number of problems that most of us would find rather easy - for pupils aged 15-18 with no real CS classes they aren't that easy. Even in the later rounds, time isn't the main constriction - you have several weeks - and the programs are also judged by their code quality, documentation and design. I think you were allowed to participate in teams during the first and maybe second round. A friend of mine pointed out the ACM chellege to me; but we never really managed to form a team since everybody was too busy. We never actually did a training session (though I myself solved a couple of the valladoloid online judge problems), and we didn't submit our participitation. Though we would have automatically won our local contest, since I'm not aware of any teams by our universities here (despite them being top-ranked universities). In general, Germany isn't very much involved in this contest, despite being an "international" contest. This has various reasons. On one hand, CS teaching in germany is not much about just writing code. You'll of course learn the basics, but even when they've finished their degree, most will be really slow in writing code. Instead, the focus is on modeling and the theoretical background. In my opinion, that is very good. You'll always be able to improve your "basic" code writing skills later; that is mostly experience and routine. But you won't be learning much theoretical background in your job later on. Having worked on a number of the old, archived, training problem sets, I'm not convinced that this contest makes much sense. To succeed with the problem sets you need to be able to I agree with the others that I don't think team-play is of much value in this contest; nor will you be doing much creative work. In my opinion it's all about reducing the given problem to one of the known problems (e.g. longest common subsequence, shortest path, maximum flow), then adopting an algorithm to it. I'd call that reproductive work. In my opinion, they're rather boring. Basically you're expected to solve them using a certain algorithm. You aren't judged by good or smart solutions either. Just by speed. The (high-school) programming contest mentioned earlier was more interesting. For example there was the task of navigating a robot on a factory floor without any state information, and only a limited view. The robot was not allowed to keep any information. Such as "I need to go out of this dead end" or "that is a dead end". It would easily walk into a path just to notice after a few steps (it had a limited view!) that this is a dead end, then try to walk out - just to walk in again, having forgotten that it's a dead end. You of course can't judge solutions without inspecting the code. Smart programmers found a few ways to "cheat" here - and got extra credit here. For example one robot, when noticing that it's in a dead end it might forget, would step up to the wall. And whenever it was close to a wall, it would follow it, and thus walk out of the dead end. Some heuristics making it step away from the wall again made it much more successful than others. Another "cheat" involved calculating "remaining steps allowed - distance to destination mod 2". It then could be programmed with two alternating behaviours and switch between them by just not moving for one turn. I don't think there is any room for such great ideas in the ACM contest.

15 July 2006

Erich Schubert: Extra exploit protection - SELinux

Apparently (as analyzed by Joshua Brindle), SELinux with the commonly used policies prevents the latest exploit (the one using a race condition on /proc/self/environ). Another way of preventing this would have been to mount /proc with "noexec, nosuid". I wonder why that isn't the default anyway? It would be good to have more people work on Debian SELinux. Currently, I'm not aware of anyone working actively on Debian SELinux. So although it was called a "pet release goal" earlier, this seems very utopic to me right now. The SELinux toolchain has received some important fixes/features (modular policy linking should finally be working!) but these are not yet in unstable, nor has the reference policy package been updated recently. Running SELinux on the main Debian servers probably is some work... there will be custom policy that needs to be written. It would however increase our security a lot, especially for boxes such as gluck that probably are our weakest point (because all developers need to be able to log in). Sometimes I have the impression that I'm the only one running a Debian system with SELinux and the reference policy... and I'm still busy with my exams, and I don't know yet if I'll have more time afterwards (a 6-month thesis is next after the exams, and I'm actually thinking about some business opportunities, too...)

Julien Danjou: The new DeDuBu contest

Dumb bugHey, I'm sure you're wondering what DeDeBu is, aren't you? That's the Debian Dumbest Bug contest! This is a new monthly contest which consists to choose the more stupid, silly, obvious and fun bug. How to win? Simply drop me an email with the bug number. I will maintain a list of candidats. Then, a selected and feed jury will choose the best of them.
If the bug you reported win, you and the reporter will win something like your weight in Ubuntu CD or the right to write my new book, Debian for dummies. For example, I give you a bug reported by Florent Bayle, #355455, which the first candidate for July. (Please note that I do this for fun, not for raising personnal attacks ;-))

Lars Wirzenius: Random thought: Understanding, accepting, agreeing

"I can understand why he said it." "Why do you defend him? How can you of all people agree with him?" In everyday language, to "understand something" is often interpreted as "agree with something" or "accept something". Usually, that is also what is meant, but it would be better if it weren't. There is a subtle difference between these meanings, and it is annoying when this is lost in the communication and misunderstandings happen. For example, I can definitely understand the urge of breaking into computers without permission. It is an intellectual, technical challenge, and there's the intense thrill of doing something you're not supposed to be doing. However, I do not, emphatically do not, agree, accept, condone, or otherwise suggest that it should be allowed. On the contrary, crackers should be taken out and spanked. Let's agree to understand and accept this subtlety. On the other hand, if making a point, it's good to know that not everyone understands subtlety, especially not all the time. Making the distinction clearer can prevent unnecessary disagreements.

Erich Schubert: JSP-like C++ webpages

TNTnet, just uploaded to Debian, looks interesting. Basically it offers JSP-/PHP-like embedding of C++ code into web pages (or the other way round). Well, if you want to be precise, the syntax is actually much closer to HTML::Mason, a perl-based web application framework I've used some years ago. You can bet that these pages, compiled into native code, are hard to beat speed-wise... Think of compiling your website into your webserver. It's obviously not suited for wide audiences - you can have your users upload PHP files, but you probably won't allow them to upload C++ code - but more for high-performance sites with specialized applications. I have, however, one major gripe with it: The syntax is not XML. I wish they would have picked true XML as data format, instead on basically using string processing. I hate how many people treat webpages as mere character strings with some special characters instead of structured data serialized in some way or another. I don't want to be stuck using a line-based editor for structured data forever. I'm still using vim, and I'll probably continue for a while, but for XML I'm actually just waiting for an editor with a true understanding of XML and the power and speed-of-use of vim... KID remains my favourite way of generating web pages. It's templating transparently embedded in a XHTML file using a separate XML namespace. And it's actually compiling the templates into python modules. P.S. if your ever need the Dummy 16 and Dummy17 functions, get them from microsoft (excel) now! No need to write them yourself anymore! (Dummy 1-15 are apparently discontinued.) P.P.S. I just wanted to point out, that I'm convinced that embedding much code into a layout file is a bad idea (one of the reasons why I despise PHP). Keep logics and layout separate. KID for example is quite good at that. In my DNSoupdate tool for example, all the template contains is loop constructs and simple case disinctions. This also brings me to my biggest gripe with KID: it depends on python. I don't see a way of using the same template with a different language. So maybe I'll actually go back to some TAL solution or so that is a bit more portable templating-wise (and still perfectly reuseable XML).

14 July 2006

Erich Schubert: Apropos english words in the german language...

Martin F. Krafft mentions the trend of (ab-) using english words in german product names, and even constructions like "downgeloadet" (i.e. using english words with german grammar). What I'm most annoyed by is that many people (especially techs...) think that these words are actually the proper terms. That this is actually "more correct" than "heruntergeladen". Just because that is the only way we've been using the term doesn't make it the proper word. To a native speaker, many of these words might sound rather odd, and they are just being used because there is no better match in the english language. So if there is one in the german language, we should be using them... for example "to indent". I guess for many people here this will solely apply to text formatting in editors. But I assume that for native speakers, this always will bring up "dents", too. Something negative, some slight damage. The german word, "einrücken" however doesn't have such a meaning. I still believe that to regular native speakers, terms such as "bump mapping" have a very funny sound. And that it's just us techs that probably learned the "bump mapping" term first, and "speed bumps" second, that this sounds "good".

Kenshi Muto: For those who care about the backported debian-installer -- kernel 2.6.16 version is released

Today I built the backported d-i image with kernel 2.6.16. I updated many codes also. You can download the image from backported d-i images portal. Note: Although I'd tried 2.6.17 version once, finally I gave up. I succeeded to build kernel image from unstable source on Sarge. But linux-kbuild package, for linux-kernel-headers helper, was failed to build with gcc-3.3. Gcc-4.0 or above works, but they don't exist on Sarge. (Don't nag me about CUPS... Most problems are upstream's matter and upstream is preparing 1.2.2 release at this time. I'll run again after it's released.)

13 July 2006

MJ Ray: HOWTO not melt 9 - Don't use air-con

Air conditioners are doing huge harm to our environment by sucking electricity, which is often generated by releasing carbon into the atmosphere. Even worse, many people are using them stupidly. For example, I used to use one shop with a one-piece air conditioner sat almost in the middle of one wall, with its air hose running along the floor to just outside the front door. [...] The best air conditioners seem to be the two-part type with an insulated coolant hose between. [...] After following the other tips in this series, I hope you won't need air-con any more, but if you do, please use it sensibly. [permalink to longer grumble, comments and other parts]

12 July 2006

Adam Rosi-Kessel: Homophobic Airplanes in Boston

Airplanes pulling anti-gay marriage banners have been circling my building much of today, apparently in an attempt to sway public (or legislative) opinion during today’s constitutional convention (liveblog here). The banners don’t cast the organizers as the brightest bulbs. Two of the banners are opaque references to the Chief Justice of the Massachusetts Supreme Judicial Court, Margaret Marshall — the messages were “Marshall’s Courts Are A Disaster” and “Marshall Incompetent Says Judge Sosman.” Unless you are already a rabid member of the anti-Goodridge crowd, these aren’t going to mean a whole lot to you. The other one is printed too small to read, although after twelve or thirteen time circling past my window, I could make out that it said something like “let the people vote on marriage,” which at least is a little clearer on the message (if not the font). All three had a URL that was too small to read, at least from my vantage point. I finally pieced together that the banners were referring to massnews.com (I hesitate to link to the site and boost its PageRank, but ultimately I think the contents are so poorly written and reasoned that it probably advances the cause of gay marriage more than anything). The articles on that site really make these guys look like loonies. A great example is this article. Although apparently written by an attorney, the article demonstrates near total ignorance of how legal reasoning and constitutional principles. E.g.:
When Justice Sosman discussed who else could be applying for marriage after May if the decision is allowed to stand, she had to include the “buzz” words that Marshall and other judges and lawyers use to intimidate everyone else — even including most lawyers who know nothing about this arcane language.
The “arcane” language the article refers to are the standard terms of art in equal protection law: suspect classification, scrict scrutiny, rational basis, etc.. (See this wikipedia article). Any first year law student should be quite familiar with this sort of discourse. (See my class notes from my first year constitutional law course and search for strict scrutiny or suspect classification). “Most lawyers” know nothing about this “arcane” language? Similarly — the following apparently forms the basis of the writer’s claim that Justice Marshall does not have the intelligence necessary to be the Chief Justice of the state’s Supreme Judicial Court:
Justice Marshall was incapable of answering Justice Sosman. She felt it necessary to insert an unusual footnote to say she was unable to understand or to answer Sosman’s erudite critique. “In any event, we fail to understand why the separate opinion [of Justice Sosman] chastises us for adopting the constitutional test (rational basis) …”
“Failing to understand” in a court opinion (or brief) does not mean “we’re just not smart enough to get it.” It is a standard idiom used to criticize another position as lacking support. It is far from unusual to make that sort of statement in a footnote. It is generally a sign that the point being criticized is so weak that it does not merit full treatment in the main text of the decision. In any event, I’m happy to see the anti-gay marriage movement leadership so totally marginalized. In a few years, I expect we will wonder what all the fuss was about.

Next.

Previous.