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:
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