[kw-pm] "beer money" perl/shell scripting position

Andrew Kohlsmith akohlsmith-pm at benshaw.com
Thu Aug 19 14:57:07 CDT 2004


The contract support I've been doing for the past few years is going nicely 
but I am finding myself more and more time constrained; I would like to focus 
on the higher level stuff (keeping the ideas going, keeping the customers 
happy) and find someone who is able to code and meet the following 
requirements:

- able programmer in Perl and BASH scripting (maybe Python)
- experience with web forms and basic CGI
- maybe has some experience in XMLRPC/SOAP and DB
- does not need to be babysat
- works relatively quickly

I have a number of (very) small projects which I need done up.  Certainly not 
enough to be even classified as part-time work, which is why I called it 
"beer money" -- just extra cash for someone with more time and skills than I 
have.

Examples of the kinds of things I need done up:
- Squid user/pass web based management interface
- Much smarter SquidGuard webmin module
- Squirrelmail feature enhancements (ok this is PHP but still)
- IPTables firewall configuration/logger management interface
- Webmin modules for similar things mentioned above

The rules are simple:

- Create, augment or replace existing FOSS projects, so long as you abide by 
the author's wishes regarding code reuse and contribution
- Be available via email, IRC or IM (Jabber preferred) and maybe the odd phone 
call
- Resultant scripts, apps or whatever are GPL and otherwise unencumbered
- Resultant code is neat, clean and reasonably documented

Payment terms are flexible but will generally be based on task completion (or 
milestones for large projects) and not hourly rate.  I've been burned in the 
past on straight hourly rate and won't do it again.  If you know your stuff 
you will have a good idea of how long a project will take based on the 
requirements spelled out in the contract.   Besides, as our business 
relationship grows you will have a growing base of code that you will be able 
to reuse and again, if you're good your perceived hourly rate will only go 
up.  :-)

Payment can be made via paypal, money order, mailed cheque or cash if you're 
close.  I'm easy.

I am going to stress that payment is upon my acceptance of the completed work.  
If I'm not happy with it ("happy" meaning it satisfies the goals set out in 
the project contract), I ain't paying for it.  Don't give me something that 
shines my shoes and cleans the cat's litter box but doesn't meet the 
requirements of the contract.  (Mind you, a script that shines my shoes and 
cleans my cat's litter box would be very impressive!)

Example project: the Squid user/pass web-based management system.

I perceive a generic user/pass/group manager.  Create from scratch or grab any 
FOSS project that already has something similar and make it do the following:

- Read and write a plain text file which contains the username, cleartext 
password, enable status, group membership, date created, date modified and 
plain-text note field.  One user per line, one group per line, very similar 
to /etc/passwd and /etc/group.

- Login screen just has a user/pass login and a banner that says "Proxy 
Authentication Manager" with the software version.

- If you're not part of the managers group, logging in brings you to a screen 
where only a new password and new password verification field is given, laong 
with apply and cancel buttons.

- If you're a manager you get two lists: users and groups
-- ideally I'd like this to be in two "panes", using JS or CSS to make the 
panes visible with a mouse click on the appropriate tab (see 
http://instruct1.cit.cornell.edu/courses/ee476/FinalProjects/s2004/sms95/keypaw/index.html 
for an example of the display tech I'm looking for, not specifically the 
artsy-side of it)

(BTW I consider that URL an AMAZING example of clean HTML, CSS and JS -- that 
is the kind of code I'm looking for!  On some projects I would be willing to 
pay a premium to get that kind of visual quality as well, but it depends on 
the client and specific job involved.)

- Each user and group has a radio button where you can select whether to 
enable or disable the account (or group), checkbox to delete the account or 
group and a button to edit the specific account (real name, password and 
group membership).  Each group also has buttons "toggle enable" and "toggle 
delete" for all users in this group which do what the names imply.  These 
button do not affect the status of users not in the group.

- At the bottom of the users and bottom of the groups list there would be 
"cancel changes" and "apply changes" buttons.  The apply changes button 
writes the new configuration file, creates a new squid passwd file and then 
the script restarts.  The cancel button just restarts the script.

- Basic niceties like file locking to make simultaneous use safe, HTTP headers 
which prevent caching, logging of logins and actions and clean, basic UI are 
a must.

That's it.  I don't require fancy graphics, flash or anything like that.  I do 
require the code to be clean and maintainable.  By that I mean:

- #!/usr/local/perl -wT
- use strict;   # is a must.
- "smart" use of existing modules -- Foo::WallyWorld may be undeniably cool 
but if a simple regex does the job and doesn't require that I install X11, 
GTK+ and libvorbis, I would prefer to use the regex.
- No, I am not short on hard drive space; I don't want the script on one line.
- No, I am not a Perl genius, nor do I possess any kind of ESP; I want basic 
function summaries (one or two lines is fine, explain what input is going in 
and what is coming out)
- Copyright block at the top of the file with basic summary of what the script 
does and revision history.
- I require that the script look to a set of variables at the top of the file 
for the locations of the database file, squid passwd file, logfile and so on.  
No hardcoded paths in the script proper.

For something like that I'd probably set the price at $150 or so.  Haggling is 
allowed.  If you utilize something you've already done or someone else's 
project and can make it in 30 minutes, you just got paid $300/hr.  In an 
hour?  Well that's $150/hr, still great.  If it takes you 6 hours to get 
working... well that's not my problem, now is it?  :-)  You should have 
either negotiated a higher price or not accepted it.

Anyway that's a basic idea of what I'm trying to achieve and I'm looking for 
someone who can work with that.  Anyone interested feel free to contact me.  
Feel free to pass this along to anyone you know who might be interested or 
who might know people who might be interested.

Regards,
Andrew

email: akohlsmith at mixdown.ca
jabber: akohlsmith at jabber.benshaw.com
msn: akmixdown at hotmail.com
phone: contact me via one of the mechanisms above first, please.  :-)


More information about the kw-pm mailing list