CenterIM; History format

My instant message client of choice is centerim (a fork of centericq). It does everything I need, send and receive messages in a very simple interface. Now this might sound like any ordinary client out there. But its special in that it runs completely in the terminal (ncurses based) -- and its good at it. I've tried some other terminal based clients and they all feel very cumbersome.

One major inconvenience with ncurses applications is the lack of clearly defined text areas. So copying text out is not trivial in fact its nearly impossible. So usually if I need to get text out of the application I just look in its log files. Unfortunately centerim has not-so-convenient history log format. It looks something like this:

IN
MSG
1212455295
1212455295
pong

OUT
MSG
1212455668
1212455668
pong

(each message entry is separated by "\f\ " not just "\ ")

So using a little awk magic I wrote a simple converter which parses history file into something more readable and something you can paste as a quote.

gawk -vto=anon -vfrom=me 'BEGIN {FS="\ ";RS="\f\ ";}{if (match($1,"IN")) a=to; else a=from; printf("%s %s:\t %s\ ", strftime("%H:%M:%S", $4), a, $5);for (i=6; i<=NF;i++) printf("\t\t%s\ ", $i);}' /PATH/TO/HISTORY/FILE

You need to modify the -vto and -vfrom values to correspond to your name and the name of the person you're talking to. You obviously need to also specify the path to the file. If you don't like the time stamp you can alter the string passed to strftime (man 3 strftime for format options).

Sample output of the above sample looks like this.

21:08:15 anon:   ping
21:14:28 me:     pong
LILUG  News  Software  2008-06-04T14:25:12-04:00
Little Color in Your Bash Prompt

I have accounts on many computer systems (around 10) which together add up to several hundred machines. And I often find myself having ssh sessions open to multiple machines doing different things simultaneously. More than once I have executed something on a wrong machine. Most of the case its not a problem, but every-now and I'll manage to reboot the wrong machine or do something else equally bad. Its really an easy mistake to make, especially when you have half a dozen shell tabs open and screen running in many of the tabs.

I had spent some time pondering about a good solution to this problem. I already had bash configured to show the machine name as part of the prompt (IE: dotCOMmie@laptop:~$) but it was not enough, its easy to overlook the name or even the path. So one great day I got the idea to color my prompt differently on my machines using ANSI color escape codes. This worked quite well, at a single glance at the prompt I had an intuitive feel for what machine I was typing on -- even without paying attention to the hostname in the prompt. But this solution was not perfect as I would have to manually pick a new color for each machine.

For the next iteration of the colored prompt I decided to write a simple program which would take a string (Hostname) as an argument, hash it down into a small number and map it to a color. I called this little app t2cc (text to color code), you can download t2cc from the project page. The source doesn't need any external libraries so you can just compile it with gcc or use my pre-compiled 32bit and 64bit binaries. Consider the code public domain.

To use t2cc just drop it into ~/.bash and edit your ~/.bashrc to set the prompt as follows:

PS1="\[\e[`~/.bash/t2cc $HOSTNAME`m\]\u@\h\[\e[0m\]:\[\e[`~/.bash/t2cc $HOSTNAME -2`m\]\w\[\e[0m\]\$ "

And if you use the same .bashrc for both 32 and 64 bit architectures you can download t2cc_32 and t2cc_64 to your ~/.bash and the following into your ~/.bashrc:

if [ `uname -m` =  "x86_64" ]; then
    t2cc=~/.bash/t2cc_64
else
    t2cc=~/.bash/t2cc_32
fi
PS1="\[\e[`$t2cc $HOSTNAME`m\]\u@\h\[\e[0m\]:\[\e[`$t2cc $HOSTNAME-2`m\]\w\[\e[0m\]\$ "

As you can see from the examples above I actually use 2 hashes of the hostname a forward hash for the hostname and a backward hash for the path (-2 flag). This enables more possible color combinations. T2cc is designed to ignore colors which don't match dark backgrounds (or with -b bright backgrounds), this ensures that the prompt is always readable.

Initially I wanted to write this all in bash but I couldn't quite figure out how to convert ASCII character to numbers. If you know how to do this in pure bash please let me know.

So you might be wondering what does all of this look like?
 dotCOMmie@laptop:~/.bash

LILUG  News  Software  2008-04-16T23:06:36-04:00
dnsmasq -- buy 1 get 2 free!

I mentioned earlier that we netboot (PXE) our cluster. Before NFS-root begins, some things have to take place. Namely, the kernel needs to be served, IP assigned, DNS look-ups need to be made to figure out where servers are and so on. Primarily 3 protocols are in the mix at this time, TFTP, DHCP, DNS. We used to run 3 individual applications to handle all of this, they're all in their own right quite fine applications atftpd, Bind9, DHCP (from ISC). But it just becomes too much to look after, you have a config file for each of the daemons as well as databases with node information. Our configuration used MySQL and PHP to generate all the databases for these daemons. This way you would only have to maintain one central configuration. Which means you need to look after yet another daemon to make it all work. You add all of this together and it becomes one major headache.

Several months ago I had installed openWRT onto a router at home. While configuring openWRT I came across something called dnsmasq. By default, on openWRT, dnsmasq handles DNS and DHCP. I thought it was spiffy to merge the 2 services .. after all they are so often run together (on internal networks). The name stuck in my head as something to pay bit more attention to. Somewhere along the line I got some more experience with dnsmasq, and had discovered it also had TFTP support. Could it be possible what we use 4 daemons could be accomplished with just one?

So when the opportunity arose I dumped all node address information out of the MySQL database into a simple awk-parsable flat file. I wrote a short parsing script which took the central database and spit out a file dnsmasq.hosts (with name/IP pairs) and another dnsmasq.nodes (with MAC-address/name pairs). Finally I configured the master (static) dnsmasq.conf file to start all the services I needed (DNS, DHCP, TFTP), include the dnsmasq.hosts and dnsmasq.nodes files. Since the dnsmasq.nodes includes a category flag it is trivial to tell which group of nodes should use what TFTP images and what kind of DHCP leases they should be served.

Dnsmasq couldn't offer a more simple and intuitive configuration with 1/2 days work I was able to greatly improve upon on old system and make a lot more manageable. There is only one gripe I have with dnsmasq, I wish it would be possible to just have one configuration line per node that is have the name, IP, and mac address all in one line. If this was the case I wouldn't even need an awk script to make the config file (although it turned out to be handy because I also use the same file to generate a nodes list for torque). But its understandable since there are instances where you only want to run a DHCP server or just DNS server and so having DHCP and DNS information on one line wouldn't make much sense.

Scalability for dnsmasq is something to consider. Their website claims that it has been tested with installation of up to 1000 nodes, which might or might not be a problem. Depending on what type of configuration your building. I kind of wonder what happens at the 1000s of machines level. How will its performance degrade, and how does that compare to say the other TFTP/DHCP servers (BIND9 is know to work quite well with a lot of data).

Here are some configuration examples:

Master Flat file node database

#NODES file it needs to be processed by nodesFileGen
#nodeType nodeIndex nic# MACAddr

nfsServer 01 1
nfsServer 02 1

headNode 00 1 00:00:00:00:00:00

#Servers based on the supermicro p2400 hardware (white 1u supermicro

box) server_sm2400 miscServ 1 00:00:00:00:00:00 server_sm2400 miscServ 2 00:00:00:00:00:00 #dual 2.4ghz supermicro nodes node2ghz 01 1 00:00:00:00:00:00 node2ghz 02 1 00:00:00:00:00:00 node2ghz 03 1 00:00:00:00:00:00 ...[snip]...

#dual 3.4ghz dell nodes
node3ghz 01 1 00:00:00:00:00:00
node3ghz 02 1 00:00:00:00:00:00
node3ghz 03 1 00:00:00:00:00:00
...[snip]...

Flat File DB Parser script

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/bash

#intput sample
#type number nic# mac addr
#nodeName 07 1 00:00:00:00:00:00

#output sample
#ip hostname
#10.0.103.10 nodeName10
awk '
  /^headNode.*/ {printf("10.0.0.3 %s\
", $1)};                          \
  /^server_sm2400.*/ {printf("10.0.3.%d %s\
", $3, $2)};                      \
  /^nfsServer.*/ {printf("10.0.1.%d %s%02d\
", $2, $1, $2)};          \
  /^node2ghz.*/ {printf("10.0.100.%d %s%02d\
", $2, $1, $2)};          \
  /^node3ghz.*/ {printf("10.0.101.%d %s%02d\
", $2, $1, $2)};          \
  '

\ ~/data/nodes.db > /etc/dnsmasq.hosts

#output sample
#mac,netType,hostname,hostname
#00:00:00:00:00:00,net:nodeName,nodeName10,nodeName10
awk '
  /^headNode.*/ {printf("%s,net:%s,%s,%s\
", $4, $1, $1, $1)};                      \
  /^server_sm2400.*/ {printf("%s,net:%s,%s,%s\
", $4, $1, $2, $2)};              \
  /^node2ghz.*/ {printf("%s,net:%s,%s%02d,%s%02d\
", $4, $1, $1, $2, $1, $2)};      \
  /^node3ghz.*/ {printf("%s,net:%s,%s%02d,%s%02d\
", $4, $1, $1, $2, $1, $2)};      \
  '

\ ~/data/nodes.db > /etc/dnsmasq.nodes

#output sample
#hostname np=$CPUS type
#nodeName10 np=8 nodeName
awk '
  /^node2ghz.*/ {printf("%s%02d np=2 node2ghz\
", $1, $2)};              \
  /^node3ghz.*/ {printf("%s%02d np=2 node3ghz\
", $1, $2)};              \
  '

\ ~/data/nodes.db > /var/spool/torque/server_priv/nodes

#Lets reload dnsmasq now
killall -HUP dnsmasq

dnsmasq.conf

interface=eth0
dhcp-lease-max=500
domain=myCluster
enable-tftp
tftp-root=/srv/tftp
dhcp-option=3,10.0.0.1
addn-hosts=/etc/dnsmasq.hosts
dhcp-hostsfile=/etc/dnsmasq.nodes

dhcp-boot=net:misc,misc/pxelinux.0,nodeServer,10.0.0.2
dhcp-range=net:misc,10.0.200.0,10.0.200.255,12h

dhcp-boot=net:headNode,headNode/pxelinux.0,nodeServer,10.0.0.2
dhcp-range=net:headNode,10.0.0.3,10.0.0.3,12h

dhcp-boot=net:server_sm2400,server_sm2400/pxelinux.0,nodeServer,10.0.0.2
dhcp-range=net:server_sm2400,10.0.0.3,10.0.0.3,12h

dhcp-boot=net:node2ghz,node2ghz.cfg,nodeServer,10.0.0.2
dhcp-range=net:node2ghz,10.0.100.0,10.0.100.255,12h

dhcp-boot=net:node3ghz,node3ghz.cfg,nodeServer,10.0.0.2
dhcp-range=net:node3ghz,10.0.101.0,10.0.101.255,12h
Debian  LILUG  News  Software  Super Computers  2008-03-13T00:30:40-04:00
MOTD

You all probably know that the most important thing on any multi user system is a pretty MOTD. Between some other things in the past couple of weeks I decided to refresh the MOTDs for the galaxy and Seawulf clusters. I discovered 2 awesome applications while compiling the MOTD.

First is a jp2a, it takes a JPG and converts it to ASCII and it even supports color. I used this to render the milky way as part of the galaxy MOTD. While this tool is handy it needs some assistance, you should clean up and simplify the JPGs before you try to convert them.

The second tool is a must for any form of ASCII-art editing. Its called aewan (ace editor without a name). It makes editing a lot easier, it supports coloring, multiple layers, cut/paste/move, and more. Unfortunately it uses a weird format and does not have an import feature, so its PITA to import an already existing ASCII snippet -- cut and paste does work but it looses some information -- like color.

Aewan comes with a sister tool called aecat which 'cats' the native aewan format into either text (ANSI ASCII) or HTML. Below is some of my handy work. Because getting browsers to render text is PITA I decided to post the art-work as an image.
Galaxy MOTD:
galaxy motd
Seawulf MOTD:
seawulf motd
I also wrote a short cronjob which changes the MOTD every 5 min to reflect how many nodes are queued/free/down

One more resource I forgot to mention is the ascii generator. You give it a text string and it returns in a fancy looking logo.

Finally when making any MOTDs try to stick to the max width of 80 and heigh of 24. This way your art work won't be chopped even on ridiculously small terminals.

Debian  LILUG  News  Software  2008-03-02T23:41:22-05:00
NFS-root

I haven't posted many clustering articles here but I've been doing a lot of work on them recently, building a cluster for SC07 Cluster Challenge as well as rebuilding 2 clusters (Seawulf & Galaxy) from the ground up at Stony Brook University. I'll try to post some more info about this experience as time goes on.

We have about 235 nodes in Seawulf and 150 in Galaxy. To boot all the nodes we use PXE (netboot), this allows for great flexibility and ease of administration -- really its the only sane way to bootstrap a cluster. Our bootstrapping system used to have a configuration where the machine would do a plain PXE boot and then, using a linuxrc script the kernel would download a compressed system image over TFTP, decompress it to a ram-disk and do a pivot root. This system works quite well but it does have some deficiencies. It relies on many custom scripts to maintain the boot images in working order, and many of these scripts are quite sloppily written so that if anything doesn't work as expected you have to spend some time try to coax it back up. Anything but the most trivial system upgrade requires a reboot of the whole cluster (which purges the job queue and annoys users). On almost every upgrade something would go wrong and I'd have to spend a long day to figure it out. Finally, using this configuration you always have to be conscious to not install anything that would bloat the system image -- after all its all kept in ram, larger image means more waste of ram.

During a recent migration from a mixed 32/64bit cluster to a pure 64bit system. I decided to re-architect the whole configuration to use NFS-root instead of linuxrc/pivot-root. I had experience with this style of configuration from a machine we built for the SC07 cluster challenge, how-ever it was a small cluster (13 nodes, 100cores) so I was worried if NFS-root would be feasible in a cluster 20 times larger. After some pondering over the topic I decided to go for it. I figured that linux does a good job of caching disk IO in ram so any applications which are used regularly on each node would be cached on nodes themselves (and also on the NFS server), furthermore if the NFS server got overloaded some other techniques could be applied to reduce the load (staggered boot, NFS tuning, server distribution, local caching for Network File systems). And so I put together the whole system on a test cluster installed the most important software mpi, PBS(torque+Maui+gold), all the bizarre configurations.

Finally, one particularly interesting day this whole configuration got put to the test. I installed the server machines migrated over all my configurations and scripts halted all nodes. Started everything back up -- while monitoring the stress the NFS-root server was enduring, as 235 nodes started to ask it for 100s of files each. The NFS-root server behaved quite well using only 8 NFS-server threads the system never went over 75% CPU utilization. Although the cluster took a little longer to boot. I assume with just 8 NFS threads most of the time the nodes were just standing in line waiting for their files to get served. Starting more NFS threads (64-128) should alleviate this issue but it might put more stress on the NFS-server and since the same machine does a lot of other things I'm not sure its a good idea. Really a non-issue since the cluster rarely gets rebooted, especially now that most of the system can be upgraded live without a reboot.

There are a couple of things to consider if you want to NFS-root a whole cluster. You most likely want to export your NFS share as read-only to all machines but one. You don't want all machines hammering each others files. This does require some trickery. You have to address the following paths:

  • /var
    You cannot mount this to a local partition as most package management systems will make changes to /var and you'll have to go far out of your way to keep them in sync. We utilize a init script which takes /varImage and copies it to a tmpfs /var (ram file system) on boot.

  • /etc/mtab
    This is a pain in the ass I don't know who's great idea was to have this file. It maintains a list of all currently mounted file systems (information is not unlike to that of /proc/mounts). In fact the mount man page says that "It is possible to replace /etc/mtab by a symbolic link to /proc/mounts, and especially when you have very large numbers of mounts things will be much faster with that symlink, but some information is lost that way, and in particular working with the loop device will be less convenient, and using the 'user' option will fail." And it is exactly what we do. NOTE autofs does not support the symlink hack, I have a filed bug in the debian.

  • /etc/network/run (this might be a debianism)
    We use a tmpfs for this also

  • /tmp
    We mount this to a local disk partition

All in all the NFS-root system works quite well I bet that with some tweaking and slightly more powerful NFS-root server (we're using dual socket 3.4Ghz Xeon 2MB cache and 2GB of ram) the NFS-root way of boot strapping a cluster can be pushed to serve over 1000 nodes. More than that would probably require some distribution of the servers. By changing the exports on the NFS server any one node can become read-write node and software can be installed/upgraded on it like any regular machine, changes will propagate to all other nodes (minus daemon restarts). Later the node can again be changed to read-only -- all without a reboot.

Debian  LILUG  News  Software  Super Computers  2008-03-02T13:25:11-05:00
MythTV Lives On

Many of the LILUGgers will remember that I talked about uncertain times coming up in the future of MythTV. One of the companies (Zap2it) that provided all the channel information was pulling the plug on the service. Well I just heard great news.

A bit over a month ago I sent an email to Zap2it thanking them for their great service and support of the MythTV community.

From: dotCOMmie [mailto:####@#####.###]
Sent: Monday, June 25, 2007 9:44 PM
To: Zap2It-Labs
Subject: Thanks for the great service.

Hello

I'm relatively new to the mythTV community, and it is how I got to know zap2it. Non-the less I think you were a crucial part to the tremendous growth of this community, and I'm saddened by your recent decision to stop providing the channel listing service.

The reason I'm emailing you is to convey my deepest thanks to your company for providing such an excellent service to the hobbyist community. I often wish we had more companies like you.

Best Regards
--dotCOMmie

And here is the reply I received today:

From: "Roberge, Andy" ########@#######.###
To: "dotCOMmie" ####@#######.####
Date: Tue, 7 Aug 2007 21:17:44 -0500
Subject: RE: Thanks for the great service.

August 8, 2007

Zap2it Labs received many emails inquiring if television listings could be provided on a paid for basis once the current service is discontinued. Today we are pleased to announce an agreement that will allow for many of you to continue to have access to your personal television listings data.

In collaboration with Schedules Direct, a non-profit organization created by founding members of MythTV and XMLTV, an agreement has been reached that will continue to support the open source and "freeware" communities. As of September 1, 2007, there WILL BE an alternative television listings source for certain Zap2it Labs users who become members of Schedules Direct, which includes a membership fee.

While Schedules Direct will continue to support the open source community and the users of "freeware", it will not support users of "commercial" products, such as DVRs, that were purchased from either a retail outlet or a company that used Zap2it Labs as its television listings source.

For those of you who lived by the original spirit and intent of Zap2it Labs and wish to continue to have access to listings, we encourage you to visit Schedules Direct at http://www.schedulesdirect.org to set up your personal Schedules Direct membership today!

Labs Admin.

I honestly have to say I wasn't expecting a reply let alone such good news. Thank you once again, Zap2it.

Lilug  MythTV  News  Software  2007-08-07T22:37:12-04:00
LIRC

LIRC is a software package under linux which allows you interface with remote control/controlled devices. LIRC is pretty much a must for any 1/2 decent MythTV configuration.

For my Myth setup I use LIRC both to change the channels on the cable-set-top- box and as a way to control the mythtv interface from the couch. Although this is a quite common configuration its annoying to get working.

The first thing you have to decide when setting up LIRC is what hardware you want to use. You can build your own receivers/transmitters but the simple plans make for quite crappy and unreliable devices; for something more sophisticated the cost of parts adds up to exceed the cost of kits/ready-to- use devices.

I had a (X10 based) RF serial receiver and remote (that I got a while back with my Nvidia PC cinema card). It worked with better LIRC than it ever did under windows. To control the set-top-box I first got an iguanaworks USB transceiver but it would not work since it only transmits at 36khz (It can be flashed to transmit at 58khz with a non-existing utility) and all the devices I needed to control only worked at 58khz. Money down the drain. So I decided to try again, this time I got the Serial Iguanaworks transceiver this one interfaces with LIRC more like the home-made transceivers except it has greater range (thanks to a .3f capacitor (think battery) which stores energy for transmissions).

Alright so I'm thinking I have the hardware configuring should be a breeze. I already had the controlling software installed, all I needed was to compile the drivers. I downloaded the debian driver source package it looked all very nice and neat, it allowed me to select the drivers I want and even attempted to compile the drivers automagically.. except it failed. The sources it provides are too old and were no longer compatible with my kernel. No big deal, I'll compile the vanilla drivers from LIRC -- wrong.

LIRC can't be compiled with just any combination of drivers you want, the configuration scripts compile either any ONE driver or all of them. No big deal, I thought, I'll compile all and install only the onces I need.. except all the drivers don't compile. Compilation broke on some driver that I didn't need. So I decided to hack the config scripts a bit. I downloaded the CVS version of LIRC opened the configure.in file and around line 1207

if test "$lirc_driver" = "all"; then lirc_driver="lirc_dev \ lirc_atiusb \ lirc_serial"

Trimmed down the list of drivers to only the ones that I needed. I then ran autoconf to generate all the needed Makefiles and ran ./configure --with- driver=all --with-port=0x3f8 --with-irq=4 --with-timer=65536 --with-x --with- transmitter && make && make install and things built correctly with only the drivers I wanted.

From then on configuring LIRC was a breeze, I modified the debian /etc/init.d/lirc script to use start 2 lirc daemons, one for each driver and configured them to talk to each other.

Finally I made my lircd.conf and lircmd.conf using irecord and configured MythTV, xorg and channel changing script. YAY, working mythbox.

Brief overview of all the programs and devices that make up my mythbox
A/V Hardware: Nvidia MX440 (vga/svideo out), Happauge150 (rca audio/svideo in), CHAINTECH AV-710 (optical audio out), RCA dvd/audio system
Remote controlled devices: RCA TV, Scientific Atlanta Explorer 4200 (cable box), Nvidia branded X10 RF remote

The last problem I had was the cable box being off while mythtv was trying to record, Its a nasty one. But it turns out the cable box has this nice feature where it will turn on when any numerical key is pressed on the remote (can be enabled in the settings menu). So when mythtv changes channels the cable box is either already on or is turned on auto-magically.

More of my config files.

Debian  LILUG  MythTV  Software  2007-06-29T00:04:25-04:00
Chimei 22" Nvidia

I thought the days of modelines in xorg (and linux in general) were over but I guess I'm wrong. The last 2 monitors I configured I had really difficult time with. One needed needed just a modeline but the other needed nasty config hacks. The first configuration was a Dell 21" monitor with a i945 graphics card and the other a 22" Chimei CMV-221D/A with an nvida GeForce FX 5200 card.

The Chimei monitor autodected just fine over VGA but was fuzzy and wavy, and hooking it up over DVI, the nvidia card did not want to drive it over 800x600 (instead of native 1680x1050). So I had to get down and dirty with the X configs.

Anyway here are the appropriate sections from my xorg.conf file for the Chimei (I'll post the Dell ones later)

Section "Monitor"

   Identifier      "Generic Monitor"
   HorizSync       30-83
   VertRefresh     60
   Option          "DPMS"
   UseModes        "16:10"

EndSection

Section "Device"

   Identifier      "nVidia Corporation NV34 [GeForce FX 5200]"
   Driver          "nvidia"
   Option          "NoLogo"    "true"
   #NOTE this is probably dangerous only use this line with appropriate Modeline
   Option          "UseEdidFreqs"  "false"
   Option          "ModeValidation"    "NoMaxPClkCheck,AllowNon60HzDFPModes,NoVesaModes,NoXServerModes,NoPredefinedModes"

EndSection

Section "Screen"

   Identifier      "Default Screen"
   Device          "nVidia Corporation NV34 [GeForce FX 5200]"
   Monitor         "Generic Monitor"
   DefaultDepth    24
   SubSection      "Display"
       Depth       16
       Modes       "1680x1050" "1024x768" "800x600" "640x480"
   EndSubSection
   SubSection      "Display"
       Depth       24
       Modes       "1680x1050" "1024x768" "800x600" "640x480"
   EndSubSection

EndSection

Section "Modes"

   Identifier  "16:10"
   Modeline    "1680x1050 (GTF)" 154.20 1680 1712 2296 2328 1050 1071 1081 1103

EndSection

Enjoy

Debian  LILUG  Software  2007-06-27T23:18:46-04:00
Browsers -- I hate them

I hate browsers every single one that I've used. Every browser out there is a pathetic failure when it comes to user interface. Right now my favourite browser is iceweasel/firefox but in my book it doesn't have much going for it.

Dialogues

The browsers have a love for pop-up-dialogues. It's getting a little better but not good enough. I remember when in firefox if you mistyped a URL it would pop a dialog box "Server not found." So you'd have to take your hands of the keyboard and hit OK and then put the cursor back to the address bar and try again. Why does the browser need to confirm with me that I mistyped something? Now this is no longer a problem; when you go to non-existing page you'll get a message insider your browser pane saying that server cannot be found. This is great but I believe that NOTHING should pop-up without the users intent

Say, for example to search for something on google and you get a link to a mailing list. I've seen a few mail-list archives where they use self-sign signatures (https) so you get a pop-up dialogue saying that the page is not kosher. WHY?! Its not a page I care about for security; in fact most pages I visit I don't care much if the anyone spies in on what I read. I think this warning should be brought up where it can be ignored without any user interaction. For example a drop down bar with a message (like those pop-up blocked notice). Heck you can even turn the whole browser panels and things RED so even the most senile users will notice something strange is up. And maybe the first time the user comes across this error it should pop a dialogue explaining why the browser miraculously turned red.

Users hate dialogues if it has more than 200 or so characters in the message a majority of the users won't even read it, they will in a robotic-type fashion click on some button until the dialogue will disappear. So, just stop with the pop-up dialogue boxes they are annoying and not useful. If your program needs to constantly pop things up for user to select then you have failed user interface design.

Fonts

Iceweasel/Firefox has this awesome feature where you can scale the page fonts. Its incredibly handy when you come across a web 2.0 website with 2 point font (fucking web designers, readability first style second!! STOP IT!!). Now this is all fine but I am tired of always manually adjusting the fonts per website. Fortunately there is other great feature (Edit>preferences>content>font&color>advanced>minimum font size) where you can set the minimum font size. Well you'd think this is the best thing since sliced bread (figure of speech, I hate sliced bread too but thats for another day) but there is a tremendous flaw with this feature. When you select a minimum for of size, say, 8 every font thats less than size 8 will be turned to 8 all larger fonts will not be affected. This sounds great in theory but horrible in practice, if you got to some heavily stylized graphics your setting will send a lot of fonts out of boundaries. So you'll get overflowing menus, notices and all that other jazz. Its so annoying its that its not usable. What the browser should do instead is scale all the fonts on the page. Say the smallest font on the page is of size 5 then 8-5=3 so increase EVERY font on the page by 3 points, kind of like what happens when you use manually adjust font size (view>text size>increase).

Menu bars

Stupid menu-bars. Every browser is full of them. You have the status bar on the bottom the menu bar, search bar, tab bar and bookmark bar on the top, WTF?! When I use the browser I want to see the webpage not the static content of the browser. STOP stealing my real estate. So I suggest you disable the bookmark and the status bar. And you'll scream BUT I want the functionality of my status bar; "I want to know where the link points that I am about to visit." Well so do I, I hate the bar but like the functionality it provies, but there is nothing to say that the functionality can't be moved. Say when you move your mouse over a link your address bar displays the address of the link, and as soon as you move away from the link the address bar goes back to displaying the address. As for the load status, I've found this great plugin called fision which takes from a safari feature, shows the progress of the loading in the background of the status bar.

The great menu bar, its immune from any customization. I just sits there, does nothing most of the time, face it how often do you use it? While its very useful its not needed all that often (maybe once a week) so why is there not a feature where it can collapse into a expandable menu (kind of like the start button on windows or kmenu in kde) And when you click this monster it would just appear. Now allow this menu button to be place into any other panel and forget about. What a real estate saver.

Cookies

I love cookies just not the internet kind. I think cookies are a sign of a lazy developer. Yes in some instances cookies are the only way to go (such as persistent user tracking) but they are often misused and where plain in-URL session tracking would suffice developers still use cookies (SHAME SHAME SHAME ON YOU). Now I have cookies disabled by default and use a cool plugin called cookie button which allows me with one click to enable cookies for a particular page, such as my banking web page or a forum which I regularly visit. Its a great approach to cookie management, with one exception. I wish firefox had a feature where you could accept any cookies for some length of time, for those truly stupid websites like ebay. When you login to ebay you get forwarded through a lot of pages each with their own third level domain name. The cookie management in firefox does not have any features to help you deal with this dilemma. This is where "accept all cookies for next 30 seconds.. and add pages to white-list" would come in extremely handy, for the more advanced users there should be a way to add cookie exceptions with wildcards for example *.ebay.com. If the cookie management features are properly implemented then the firefox developers should consider disabling cookies by default and thus weaning web developers from using cookies as much.

LILUG  Software  WWTS  2007-06-03T11:58:03-04:00
Who Wrote This Shit

Portmap by default listens to all IP addresses. However, if you are not providing network RPC services to remote clients (you are if you are setting up a NFS or NIS server) you can safely bind it to the loopback IP address (127.0.0.1)
<Yes> OR <No>

Maybe I'm slow or something but I really hate this prompt in debian. Which is accompanied by the installation of portmap. Seems like you need a degree in english logic to figure out what you need to select. If you run NFS and NIS and are Confused the hell out by this prompt just select NO.

UPDATE: Just because you select NO doesn't mean that debian will actually not bind RPC to portmap. You might want to run dpkg-reconfigure portmap again and make sure it did the right thing.. I got a nasty surprise the day after .. when 2 of the NFS servers stopped mounting. Filed bug report

Debian  LILUG  Software  WWTS  2007-05-25T21:21:52-04:00
qmail, a love - hate relationship

After years of procratination I finally got around to whipping my mail system back into shape. Its quite common qmail+vpopmail+courier-imap+courier setup. What I really wanted was spamassassin and some more features in the web based front end (ilohamail).

I've tried to setup spamassassin a couple time already but each time as I started reading howtos all the vigor would dwindle away. The whole qmail configuration and philosophy is great, take all the pieces you need arrange them together (with some help from duct tape and wd-40) -- and voila a full- fledged mail server! Except one day you'll pass a point where you can barely keep track of all the pieces that keep your mail together.

So as I was reading how to get spamassassin integrated into qmail I thought, "Qmail sucks I hate qmail.. its way too complicated." A little later (think HOURS) I had broken the delicate chain of apps and inserted qmail-scanner and spammassassin (spamd and spac) into the mix. Amazing things still worked and now my email had special X-Spam-Status tag (YAY!).

Qmail and me have a true love-hate relationship. When it works and you don't need anything extra from it, then, its great. But as soon as you get this nagging feeling "I wish I had feature X" you start slowly hating qmail -- untill you fix it up and make it all pretty again.

As a sidenote -- pay no attention to the fact that ilohamail 9.X is a beta version. It works great and the new features are way worth the migration from 8.X. Email filters, imap over SSL, gpg, public calendar... the list goes on and on.

So once again -- with the help of bind9 (SPF), spamassasin, qmail scanner, ilohamail 9.X -- my mail system is modern!

LILUG  Software  2007-05-15T23:08:31-04:00

« Page 2 / 2