Mon, 30 Jun 2014

KISSREC.py derivitive TAPETRANSFER available on github

I was looking at some older code to make available on github and noticed kissrec has already had a forked derivative named tapetransfer available there.
It's great to see some code I wrote ages ago take on a life and get more evolved thanks to open source, even with such a basic project such as this. I quite like the additions Christof Damian has made as well. If I ever make an updated version of kissrec (perhaps not locked in to 16 bit audio for starters) I'll look at this as a starting point.

Posted at: 17:52 | category: /nerdy/kissrec | # | 0 comments

Tue, 04 Jan 2011

GREENEWHEELS ELECTRIC BICYCLE

Just made a post on Minirig documenting my experiences so far with the Greenewheels electric bicycle I got a while back but have only just become well enough to ride around.

Update: greenewheels stuff no longer on minirig site, moved it over to it's own greenewheels section on the mk II zog blog

Posted at: 00:22 | category: /nerdy | # | 0 comments

Thu, 12 Jun 2008

MSY site scraper

Cute site that scrapes the content of the MSY web site.

Posted at: 11:07 | category: /nerdy | # | 0 comments

Sun, 08 Jun 2008

WORLD COMMUNITY GRID.

A few months ago I got an inexpensive quad core cpu. I then overclocked it to 3GHz.. not long ago it was a daydream for people to have such CPU power readily available. I was thinking a pity this will just sit here running screensavers most of the time, cant I get it crunching away at some weighty problem like helping cure cancer or something: after a quick google I can:

Posted at: 13:52 | category: /nerdy | # | 0 comments

Mon, 11 Feb 2008

Inside the Behringer MS20 Monitor Speaker.

link to a very nerdy audio article made with a digital camera and a screwdriver

Posted at: 22:32 | category: /nerdy | # | 0 comments

Sun, 28 Oct 2007

Inside the Behringer UCA-202

Well as I have mentioned before this works great with Linux, but I got bored and opened it up and took a few pix, which I have put online on Minirig.org.au as part of adding additional nerdy audio content there.

Posted at: 16:26 | category: /nerdy | # | 0 comments

Sat, 09 Jun 2007

this modern life

From www.wellingtongrey.net

Posted at: 18:10 | category: /nerdy | # | 0 comments

Wed, 02 May 2007

http://www.google.com.au/search?q=09-f9-11-02-9d-74-e3-5b-d8-41-56-c5-63-56-88-c0

Geek meme of the moment:
http://www.google.com.au/search?q=09-f9-11-02-9d-74-e3-5b-d8-41-56-c5-63-56-88-c0
This hex sequence sure seems popular all of a sudden.

Posted at: 22:48 | category: /nerdy | # | 0 comments

Thu, 29 Mar 2007

SORBS SUCKS

Fairly simple, but succinct. Overzealous listing, confusing procedures for getting delisted, generally a shambles.

Google results for SORBS SUCKS

Posted at: 10:45 | category: /nerdy | # | 2 comments

Thu, 15 Feb 2007

WHY LINUX SUCKS

Well.. actually it doesn't suck at all, I have been a fanatical linux user since 1992 and endless is the hassles I have avoided with licensing, viruses trojans and security bugs by having a microsoft free home network, but sometimes the problem with infinite freedom is a million ways to do things.. leading to inconsistency and chaos. Sometimes this is great, but if you are trying to (for example) set up sound on Linux and find there are 2 seperate sound driver subsystems, Alsa and OSS, that are talked to by several sound subsystems (jackd, esd, artsd?) which of course may or may not be used by whichever application you are trying to make a noise with... leads to intense frustration for someting which really should have Just Worked ages ago.

Anyway, some people I know, Linux fans all, have made a site called Why Linux Sucks to help express these frustrations.

Posted at: 22:36 | category: /nerdy | # | 0 comments

Sun, 24 Dec 2006

Hassles with DVI output on an nvidia fx5500 card at 1680x1050

Well I got myself the Proview 22 inch lcd monitor from MSY (I love their JUST THE FACTS basic web design style as well).

Nice basic cheap and cheerful flatscreen monitor that looks nice on the desktop. It has a litle bit of "backlight bleeding" from the top and bottom, but only visible when the screen is nearly all black, none of it is visible during my normal usage patterns of it so I don't care. The model number is FP2226w.

Main problems aoccured trying to get the FX5500 to drive the monitor via DVI.. the nvidia drivers refused to go higher than 1440x900 when I can easily go to the max mode using the VGA mode, but it looked terrible. After some reading up and trial and error, the problem appears to be the line in the Xorg.0.log saying:

135.0 MHz maximum pixel clock
Which appears to be a driver enforced limit. Adding the option "NoMaxPClkCheck" to the driver section like:
Section "Device"
    Identifier     "nVidia Corporation NV34 [GeForce FX 5500]"
    Driver         "nvidia"
    Option         "ModeValidation" "NoMaxPClkCheck"
    Option         "NvAGP" "3"
EndSection
Stopped this arbitrary limit being enforced for enumerating video moded and now I have the monitor running perfectly at best resolution.

One problem with the Leadtek Winfast A340 PRO T card is that it has a really crap heat sink and no fan and was overheating when playing True Combat Elite or Enemy Territory.. another visit to MSY to get a $3 80mm case fan to bolt on to the heat sink and heat problems mostly resolved, I can play at 1024x768 or 1280x800 without any heating problems kicking in.. still hangs at 1440x900 for those games, but then again the game isn't playable on an FX5500 at that resolution anyway. Other OPenGL games play fine at full resolution so it must be the Quake3 derived games that really work the card hard or something.

Posted at: 15:11 | category: /nerdy | # | 6 comments

Thu, 07 Dec 2006

Outgoing Google PageRank

here is a natty little web toy from php drupal wizz dgtmlmoon:

Posted at: 00:38 | category: /nerdy | # | 0 comments

Tue, 14 Nov 2006

Mitsubishi Diamond R100 with OpenWRT

Though I have not actively partaken in melb wireless I have remained on their mail list for the occasional interesting nerd discussion - from there I heard of a cheap deal wireless routers capable of running OpenWRT, so I snarfed one.

Installing the Asus wl500g version of OpenWRT White Russian RC6 via tftp I was able to get this excellent little distro up an running quickly, even booting with root on a USB key.. running it in bridged client mode so I can plug PCs in down the other end of the house, but fun having a well put together old school minimal Linux distro to play with as well.

Lets see how long I last with swap running on a USB memory stick..

Here is the output of dmesg, for the curious:

CPU revision is: 00024000
Enabling BCM4710A0 cache workarounds.
Primary instruction cache 8kB, physically tagged, 2-way, linesize 16 bytes.
Primary data cache 4kB, 2-way, linesize 16 bytes.
Linux version 2.4.30 (mbm@reboot) (gcc version 3.4.4 (OpenWrt-1.0)) #1 Mon Nov 6 17:35:21 PST 2006
Setting the PFC value as 0x15
Determined physical RAM map:
 memory: 01000000 @ 00000000 (usable)
On node 0 totalpages: 4096
zone(0): 4096 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line: root=/dev/mtdblock2 rootfstype=squashfs,jffs2 init=/etc/preinit noinitrd console=ttyS0,115200
CPU: BCM4710 rev 0 at 125 MHz
Using 62.400 MHz high precision timer.
!unable to setup serial console!
Calibrating delay loop... 82.94 BogoMIPS
Memory: 14212k/16384k available (1464k kernel code, 2172k reserved, 104k data, 84k init, 0k highmem)
Dentry cache hash table entries: 2048 (order: 2, 16384 bytes)
Inode cache hash table entries: 1024 (order: 1, 8192 bytes)
Mount cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 4096 (order: 2, 16384 bytes)
Checking for 'wait' instruction...  unavailable.
POSIX conformance testing by UNIFIX
PCI: Fixing up bus 0
PCI: Fixing up bridge
PCI: Setting latency timer of device 01:00.0 to 64
PCI: Fixing up bus 1
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
Starting kswapd
Registering mini_fo version $Id$
devfs: v1.12c (20020818) Richard Gooch (rgooch@atnf.csiro.au)
devfs: boot_options: 0x1
JFFS2 version 2.1. (C) 2001 Red Hat, Inc., designed by Axis Communications AB.
Squashfs 2.1-r2 (released 2004/12/15) (C) 2002-2004 Phillip Lougher
pty: 256 Unix98 ptys configured
Serial driver version 5.05c (2001-07-08) with MANY_PORTS SHARE_IRQ SERIAL_PCI enabled
b44.c:v0.93 (Mar, 2004)
PCI: Setting latency timer of device 00:02.0 to 64
eth0: Broadcom 47xx 10/100BaseT Ethernet 00:11:2f:e1:00:4a
PCI: Setting latency timer of device 00:08.0 to 64
eth1: Broadcom 47xx 10/100BaseT Ethernet 00:11:2f:e1:00:4a
 Amd/Fujitsu Extended Query Table v1.1 at 0x0040
Physically mapped flash: Swapping erase regions for broken CFI table.
number of CFI chips: 1
cfi_cmdset_0002: Disabling fast programming due to code brokenness.
Flash device: 0x400000 at 0x1fc00000
bootloader size: 262144
Physically mapped flash: Filesystem type: squashfs, size=0xda5f3
Creating 5 MTD partitions on "Physically mapped flash":
0x00000000-0x00040000 : "cfe"
0x00040000-0x003f0000 : "linux"
0x000bf400-0x001a0000 : "rootfs"
mtd: partition "rootfs" doesn't start on an erase block boundary -- force read-only
0x003f0000-0x00400000 : "nvram"
0x001a0000-0x003f0000 : "OpenWrt"
Initializing Cryptographic API
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 1024 bind 2048)
ip_conntrack version 2.1 (5953 buckets, 5953 max) - 332 bytes per conntrack
ip_tables: (C) 2000-2002 Netfilter core team
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
NET4: Ethernet Bridge 008 for NET4.0
802.1Q VLAN Support v1.8 Ben Greear 
All bugs added by David S. Miller 
VFS: Mounted root (squashfs filesystem) readonly.
Mounted devfs on /dev
Freeing unused kernel memory: 84k freed
Warning: unable to open an initial console.
Algorithmics/MIPS FPU Emulator v1.5
diag: Detected 'ASUS WL-500g'
Probing device eth0: No Robo switch in managed mode found
Probing device eth1: No Robo switch in managed mode found
Probing device eth2: No such device
Probing device eth3: No such device
BFL_ENETADM not set in boardflags. Use force=1 to ignore.
b44: eth0: Link is up at 100 Mbps, full duplex.
b44: eth0: Flow control is off for TX and off for RX.
mini_fo: using base directory: /
mini_fo: using storage directory: /jffs
usb.c: registered new driver usbdevfs
usb.c: registered new driver hub
PCI: Setting latency timer of device 00:04.0 to 64
usb-ohci.c: USB OHCI at membase 0xb8004000, IRQ 2
usb-ohci.c: usb-00:04.0, PCI device 14e4:4715
usb.c: new USB bus registered, assigned bus number 1
hub.c: USB hub found
hub.c: 2 ports detected
SCSI subsystem driver Revision: 1.00
Initializing USB Mass Storage driver...
usb.c: registered new driver usb-storage
USB Mass Storage support registered.
hub.c: new USB device 00:04.0-1, assigned address 2
Journalled Block Device driver loaded
scsi0 : SCSI emulation for USB Mass Storage devices
  Vendor:           Model: USB DISK Pro      Rev: 1.00
  Type:   Direct-Access                      ANSI SCSI revision: 02
  Vendor:           Model: USB DISK Pro      Rev: 1.00
  Type:   Direct-Access                      ANSI SCSI revision: 02
Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0
Attached scsi removable disk sdb at scsi0, channel 0, id 0, lun 1
SCSI device sda: 971776 512-byte hdwr sectors (498 MB)
sda: Write Protect is off
Partition check:
 /dev/scsi/host0/bus0/target0/lun0: p1
SCSI device sdb: 2880 512-byte hdwr sectors (1 MB)
sdb: Write Protect is off
 /dev/scsi/host0/bus0/target0/lun1: unknown partition table
WARNING: USB Mass Storage data integrity not assured
USB Mass Storage device found at 2
jffs2: attempt to mount non-MTD device 08:01
SQUASHFS error: Can't find a SQUASHFS superblock on sd(8,1)
kjournald starting.  Commit interval 5 seconds
EXT3 FS 2.4-0.9.19, 19 August 2002 on sd(8,1), internal journal
EXT3-fs: mounted filesystem with ordered data mode.
jffs2.bbc: SIZE compression mode activated.
PCI: Setting latency timer of device 01:02.0 to 64
PCI: Enabling device 01:02.0 (0004 -> 0006)
eth2: Broadcom BCM4320 802.11 Wireless Controller 3.90.37.0
Probing device eth0: No Robo switch in managed mode found
Probing device eth1: No Robo switch in managed mode found
Probing device eth2: [switch-robo.c:90] SIOCGETCPHYRD failed!
[switch-robo.c:90] SIOCGETCPHYRD failed!
No Robo switch in managed mode found
Probing device eth3: No such device
BFL_ENETADM not set in boardflags. Use force=1 to ignore.
device eth0 entered promiscuous mode
b44: eth0: Link is up at 100 Mbps, full duplex.
b44: eth0: Flow control is off for TX and off for RX.
device eth2 entered promiscuous mode
eth2: attempt to add interface with same source address.
br0: port 2(eth2) entering listening state
br0: port 1(eth0) entering listening state
br0: port 2(eth2) entering learning state
br0: port 1(eth0) entering learning state
br0: port 2(eth2) entering forwarding state
br0: topology change detected, propagating
br0: port 1(eth0) entering forwarding state
br0: topology change detected, propagating
b44: eth1: Link is up at 100 Mbps, full duplex.
b44: eth1: Flow control is off for TX and off for RX.
Adding Swap: 32760k swap-space (priority -1)
device prism0 left promiscuous mode

Posted at: 08:11 | category: /nerdy | # | 1 comments

Sun, 05 Nov 2006

googlestats plugin added

since I am nerding out a bit on the blog I also added the google stats plugin.

Not sure if it will work, but we will see...

Posted at: 14:31 | category: /nerdy | # | 14 comments

blog comments turned back on

After upgrading to the backports.org newer version of pybloxsom, and installing the tweaked CAPTCHA plugin from Benjamin Mako Hill's pyblosxom plugin page

Now to go through and eliminate all the spam comments that accumulated in the short time I did have captcha-less comments enabled.

Posted at: 12:43 | category: /nerdy | # | 4 comments

Sat, 04 Nov 2006

nerd gear lust - nice monitors and power supplies

My good mate Rig picked these up for a friend, didn't really get to check them out but liked them muchly:

All purchased fairly cheaply from MSY. I didn't get to fully evaluate these, just they looked nice on first impression.

Posted at: 13:10 | category: /nerdy | # | 0 comments

Mon, 23 Oct 2006

An example of xhtml web templates using python and meld3

In the past I have used spambaye's pymeldlite but recently have been trying out meld3 which has a slightly different approach, and hopefully better performance. Here is a quick chunk of example code showing it in action, the type of thing I wish could have disected when I was starting to figure out how it all fits together. I have converted a simple html example form to work as an xhtml template with a python cgi backend:

.. and of course the source code to the cgi

#!/usr/bin/python
#
# simple example of using meld3 and python cgi module to process a html form using an
# xhtml template.
#

from meld3 import parse_xmlstring
from meld3 import parse_htmlstring
from StringIO import StringIO

import sys, cgi, os

colours = ["chartreuse",
   "azure",
   "puce",
   "cornflower",
   "olive draub",
   "gunmetal",
   "indigo2",
   "blanched almond",
   "flesh",
   "ochre",
   "opal",
   "amber"]


debugenabled = False

template = "template.xhtml"

# log to a file so we can see whats going on without interfering with cgi output, if debugenabled turned on
def debug(debugoutput):
   if debugenabled:
      f = open(DEBUGDIR+"/debug.out",'a')
      f.write(debugoutput)
      f.close()

def process_form(root, form):

   # do a pile of stuff, to the encoded template, according to values from the form.

   # set the action to submit this cgi script
   root.findmeld('form1').attributes(action=os.environ.get('SCRIPT_NAME'))

   if form.has_key('name'):
      root.findmeld('name').content("name entered was "+form.getvalue('name'))
      root.findmeld('nameprompt').attributes(value=form.getvalue('name'))

   if form.has_key('quest'):
      root.findmeld('quest').content("name entered was "+form.getvalue('quest'))
      root.findmeld('questprompt').attributes(value=form.getvalue('quest'))

   if form.has_key('text'):
      root.findmeld('comment').content("name entered was "+form.getvalue('text'))
      root.findmeld('commentbox').content(form.getvalue('text'))

   if form.has_key('swallow'):
      root.findmeld('swallowtype').content("The swallow chosen was "+form.getvalue('swallow'))
      if form.getvalue('swallow') == 'african':
         root.findmeld('africanswallow').attributes(checked="")
      if form.getvalue('swallow') == 'continental':
         root.findmeld('continentalswallow').attributes(checked="")

   if form.has_key('color'):
      colourselected = form.getvalue('color')
      root.findmeld('colour').content(colourselected+" was the colour chosen")
   else:
      colourselected = ''

   iterator = root.findmeld('colouroption').repeat(colours)
   for element, item in iterator:
      element.attributes(value=item)
      element.content(item)
      if item == colourselected:
         element.attributes(selected="")

   return root

try:
   xml = open(template).read()

except:
   sys.stdout.write("Content-Type: text/html\n\n")
   sys.stdout.write("<html><b>Error reading temple file "+template+"</b></html>\n")
   sys.exit(0)

try:
   root = parse_xmlstring(xml)
except:
   t, v, tb = sys.exc_info()
   sys.stdout.write("Content-Type: text/html\n\n")
   sys.stdout.write("<html><b>XML Parse Error in template "+template+" :"+str(v)+" </b></html>")
   sys.exit(0)

form = cgi.FieldStorage()

root = process_form(root, form)

sys.stdout.write("Content-Type: text/html\n\n")
root.write_xhtml(sys.stdout)

# print cgi.print_environ()
# print cgi.print_form(form)

Posted at: 22:17 | category: /nerdy | # | 1 comments

Sun, 02 Jul 2006

goodbye gnome2, hello xfce4

After evaluating XFCE4 as a leightweight desktop environment for an old laptop with not a lot of RAM, I decided there isn't really anything on GNOME that it can't do as well that I use. So I installed xfce4 on every machine I use regularly. I was mainly using gnome on inertia as I am used to it, but still frustrated it by its fatness, wierd quicks and gradual loss of usefull features. I tried KDE and it was frustrating as well.

As its gtk2 based XFCE lets me use all the gnome applications I like without all the hassles of actually running gnome.

Only minor problem I ran into was one of my machines had the font very swmall with no apparent way to change it, the secret turned out to be tweaking the XPI setting in the .Xresources file.

Posted at: 20:45 | category: /nerdy | # | 0 comments

Tue, 27 Jun 2006

kissrec.py: Keep It Simple Stupid audio recording for linux.

Well I decided to update the nrecord program from wavnorm to work with ALSA. I ran into a barrier with using the newt library with the Alsa C API, and as I am lazy, re-implented it all in python. This allowed me to let the excellent pyalsaaudio and progressbar python modules do all the heavy lifting, while the kissrec.py program really just ties them together to make a simple audio recorder.

Features

Command line options

./kissrec.py --help
usage: kissrec.py [options] outputfile.wav

options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit
  -dDEVICE, --device=DEVICE
                        ALSA device to use, e.g. default for default device, or
                        hw:1 for second sound card
  -v, --verbose

Download

The python code is here: kissrec.py

The prerequisites are:

Why did I make it?

It is a trivial program, but on a low resource laptop all the more featureful Linux recording programs would produce glitchy recordings due to their overhead, while all the simple ones dont have the features to monitor what is going on adequately. This software allows simple recording to occur, but with monitoring of the input levels and if any clipping has occured.

Wishlist

Posted at: 00:35 | category: /nerdy/kissrec | # | 0 comments

Sat, 13 May 2006

last.fm player for debian fixed.

Here is a tweaked .deb of the last.fm player with the annoying bug where it doesn't work with extra soundcards fixed.

forum post that details the bug, and the fix

Posted at: 00:23 | category: /nerdy | # | 0 comments

Sun, 07 May 2006

free software plus lastfm equals goodness

Last.fm is great. My new USB soundcard is great. Whats not great is one didnt want to play on the other.
Lucky due to the wonders of free software.. and me wanting to tinker with sound cards on a rainy Saturday night.. I was able to find and fix the problem and get them all playing nicely together.

Posted at: 00:00 | category: /nerdy | # | 0 comments

Mon, 01 May 2006

moving from TPG to Optus

the cheap cheap $50/month plan is gone, thanks to Tesltra being dodgy. As my land line is optus as well the Optus plan works out slightly better than the equivalent TPG plan. Been with TPG for years and they have been OK. Not fabulous, but at least dirt cheap, which is why I have accepted their terrible tech support with amusement.

Posted at: 02:38 | category: /nerdy | # | 0 comments

Sun, 16 Apr 2006

vcf to ezmlm

Just a real simple script for subscribing "Electronic Business Card attachment" vcard (.vcf) files into an ezmlm mailing list. Might save someone a bit of scripting. Doesn't like email addresses that have bash shell special characters.. fixing that is a excercise for the reader. No error checking.

#!/usr/bin/python
#
#  really really simple script for dumping stuff from a vcf file into an ezmlm mailing list
#

import fileinput, sys, os

# split lines have format ['EMAIL', 'type=INTERNET', 'type=WORK', 'type=pref:xxx@hotmail.com\n']
# where they have the info we want

# takes VCF file and dir where the mailing list lives as the args

vcffile = sys.argv[1]
listdir = sys.argv[2]

command = "/usr/bin/ezmlm-sub %s %s"

for line in fileinput.input(vcffile):
    words = line.split(";")
    if len(words) == 4 and words[0] == 'EMAIL':
       email =  words[3].replace('type=pref:','',1).strip('\n')
       print "adding %s to list at %s " % (email,listdir)
       os.system(command % (listdir, email))

Posted at: 20:31 | category: /nerdy | # | 0 comments

Sun, 26 Mar 2006

Open Source Linux Driver for Traverse Pulsar ADSL card

I have been a very satisfied user of Traverse Technology's Pulsar PCI ADSL card for quite some time now. very stable and reliable. The one thing is that getting the drivers up and running needs a bit of technical knowledge.

Recently I have been using the OpenADSL drivers for this card, which are now absolutely rock solid, just follow the Debian howto in the docs and away you go, if you are using Debian Linux. Kudos to Guy and all the developers working on this project.

Just upgraded to the Linux 2.6.15 kernel in Debian/Testing, which needs the CVS version of the driver as it is compiled with gcc 4, but following the hints on the mailing list and I got it all running.

Posted at: 14:20 | category: /nerdy | # | 0 comments

Sun, 26 Feb 2006

Got a cheapo UPS

Got a cheap UPS from Dick Smith Electronics, after having some brownouts during yesterdays storms. Interestingly the UPS was priced at $128 in the store and $98 on the web site. They dropped the price to the web site price as soon as I mentioned this.

Posted at: 22:44 | category: /nerdy | # | 0 comments

Fri, 30 Dec 2005

RPC in Python - a comparison of Pyro and xmlrpc

I have been dabbling in rpc on python, after removing a home brew rpc system using pickle and unix domain sockets and replacing it with something more network aware. xmlrpc is cool, but seemed to be a bit slow. Poking around I found Pyro, which looked good and also passed my test of a server taking just a few lines of code to create.
So I made some test code using some ultra simplified versions of my rpc class methods that can work with either RPC scheme depending on the command line args. The results of timing the below code is that for this test, Pyro is 18 times faster. There are of course the various caveats about Pyro's security, and the standards compliance and interoperability of xmlrpc, so its also a case of different horses for different courses.

Also maybe handy as a simple example of xmlrpc and Pyro rpc under Python:

server code

import Pyro.core
import SimpleXMLRPCServer
import os, sys

class rpctest(Pyro.core.ObjBase):

   def __init__(self):
      Pyro.core.ObjBase.__init__(self)

   # get a file.. simple version
   def getfile(self,file):
      filedata = open(file,"r").read()
      return filedata

   def listdir(self,dirname):
      listdirresults = os.listdir(dirname)
      return listdirresults

if sys.argv[1] == "xmlrpc":
   server = SimpleXMLRPCServer.SimpleXMLRPCServer(("",
8000),logRequests=False)
   server.register_instance(rpctest())
   print "running in xmlrpc mode"
   server.serve_forever()
else:
   Pyro.core.initServer()
   daemon=Pyro.core.Daemon()
   uri=daemon.connect(rpctest(),"rpctest")

   print "The daemon runs on port:",daemon.port
   print "The object's uri is:",uri
   daemon.requestLoop()

client benchmark code

import Pyro.core
import xmlrpclib, os, sys


if sys.argv[1] == "xmlrpc":
   rpctest = xmlrpclib.Server("http://192.168.1.1:8000")
else:
   rpctest =
Pyro.core.getProxyForURI("PYROLOC://192.168.1.1:7766/rpctest")

for i in range(1000):
   print len(rpctest.getfile("/etc/passwd"))
   print len(rpctest.getfile("/etc/group"))
   print len(rpctest.listdir("/usr/bin"))

Posted at: 23:22 | category: /nerdy | # | 0 comments

Wed, 30 Nov 2005

Signed this blog up at technorati.com. Comment spammed heavily shortly after. Comments now disabled.

After playing with the cute How Much Is You Blog worth" toy - (mine is worth zilch, but JB's is worth a pile. I signed up to TECHNORATI.COM to see what (if anything) it does.. and shortly after got a torrent of blog comment spam. This is nothing against technorati per se, just spammers must be targetting sites linked from there, but I jave disabled blog comments until I suss out one of those blog spam "type the number in the picture" type spam preventers.

Posted at: 11:11 | category: /nerdy | # | 0 comments

Sun, 07 Aug 2005

SPAMTICIPATION

A new tern coined by myself, to describe that strange period just after you install new antispam measures or otherwise alter your spamtraps, when you actually want to get some spam, to see if if is working or not..

Posted at: 16:15 | category: /nerdy | # | 0 comments

Sat, 09 Jul 2005

pyblosxom comments added

Got bored and installed the pyblosxom comments plugin. Now to get it to work. Still pondering moving to the very impressive Wordpress, but I like the pythonicness and simplicity of pyblosxom as well.

Posted at: 13:10 | category: /nerdy | # | 3 comments

Thu, 09 Jun 2005

greylisting could be THE solution to spam.

I have just added greylisting for postfix and for qmail recently and it does an excellent job.. this, combined with already deployed RBL blacklisting and spambayes seems to have nearly eliminated spam, a pity it takes three overlapping techniques to truly nail it. But people not as spam exposed as me would probably get on fine with just the RBLs and greylisting.

Posted at: 23:31 | category: /nerdy | # | 0 comments

Sat, 15 Jan 2005

trivial but useful hack for redirecting rsync through a firewall

rsync is an excellent tool for replicating directory trees on a drive or across a network. You can specify the transport layer for network copies, it defaulting to use ssh. The below script just pipelines two sshs together cleanly to use as a the transport, to replicate a directory tree to/from a server inside a firewall:

example command line from outside the firewall:

ENDHOST=192.168.1.20 rsync --delete  -vzaP --rsh ./dssh.sh firewall.example.org:/backups/ /backup/fubar/
In this case ENDHOST is set to the IP address of the endpoint host inside the firewall, while firewall.example.org is the hostname of the firewall we have ssh access to to get to the firewall.

dssh.sh consists of the following

#!/bin/bash
# simple ssh wrapper so we can treat 2 sshs pipelining as one..
MIDHOST=$1
shift 1
exec ssh $MIDHOST ssh $ENDHOST $*
Nice and simple, and saves a lot of messing about with port forwarding, escaping of command line args etc.

Posted at: 21:59 | category: /nerdy | # | 0 comments

Wed, 15 Dec 2004

free local internet access - if you can find it

If you are in my local neighborhoodand can find my access point I'll let you use some of my internet bandwidth - just be nice!

No I'm not going to tell you where it is.

Posted at: 18:02 | category: /nerdy | # | 0 comments