[Phoenix-pm] Thanks for the AJAX Demo; Who Was That Unshaven Hippie?
Benjamin R. Ginter
bginter at ndevtech.net
Thu Jan 26 00:46:08 PST 2006
Hello,
I just wanted to thank you for the ajax demo and brief runthough of a few
modules. I'm the guy who arrived really late (as usual) and this was my
first ever Perl Mongers meeting. For some background on my Perl and
technical experience in the Phoenix area, read below. It's long winded
and full of hubris, so don't say I didn't warn you.
Beginnings and Golden Age of ISP Roots
Let's see, I've been using Perl for about 9-10 years now. I became
interested in it while working in an apprenctice-like Junior Admin role
(promoted from Tech Support) at AbilityNet, an ISP in Tempe that later
swallowed NetValue, CyberVault, and FirstInter.net.
The senior admin there was a guy named Darrin Chandler who allowed me to
watch over his shoulder as he wrote a couple of programs in Perl and I
was fascinated at the flexibility of the language. In time, he eventually
went to work somewhere else (wonder what he's up to these days, hrm) and
I moved into a senior network and system administration role. I ended up
replacing all but a couple of the NT machines with this neat little
free operating system I had been running at home called Linux, replacing
the NT RAS and multiport serial card/modem banks with computones, ascend
max tnts, as5200s, mc3810s, 3com hiperarcs, etc..
Anyway, I wrote some Perl modules to automate account provisioning for
all the services we offered (a big improvement over doing it by hand) and
created a network daemon using that module that a client command-line app
could communicate with to create, modify, suspend, and delete users,
virtual hosts, domains, etc.. When we bought NetValue, I tied this
system along with additional service accounting features into their
billing database and techsupport/sales web-based environment for
immediate account setup, usage billing, etc.. Sounds all routine now but
at the time it was fairly sophisticated. I did a bunch of other perl
stuff, bought and used the excellent all perl radius server called
Radiator, and basically got real world use of Perl to solve problems
with nasty kludges all over the place.. you get the idea.
POOP at e1040.com
Worked there until late 2000, then landed a job at e1040.com over on
Broadway and the 101. There, I worked as a lead programmer on a web-based
tax preparation service and was exposed to hardcore poop (aka perl object
oriented programming).
They had taken a dos app called Orrtax and written Perl programs to
extract the screen formatting and tax calculation logic to autogenerate
something on the order of 1000-2000 modules for all the tax rules for the
Federal government and each state. I worked on the resulting modules and
control logic for these modules somewhat and learned mod_perl inside out,
maintained servers, wrote some daemons to communicate with the IRS
(e-file, woot), and so on. Learned about the group of four and design
patterns, Perl's reference counting garbage collection (had some memory
leaks), and so much more. An incredibly intelligent guy named Ben
Humphries was the Chief Technical Officer and while we eventually had some
personality conflicts, I remain indebted to him for exposing me to some
previously unexplored paths. He had macular degeneration (was losing
his eyesight) which has to be so much more painful when you are a computer
whiz and can no longer program like you know you could otherwise.
At any rate, worked there until the beginning of the dot com crash around
the 1Q2001.. Did some, uhm, consulting while sending resumes out like a
spammer. The consulting work was just getting pretty regular when I got
a bite and went for a steady, salaried income at nDev Technologies, Inc.
where I continue to work today.
PHP Developer
They hired me as a PHP programmer (even though I had applied for a network
admin/consultant job) to develop a web-based debt collections system. I
tried to convince them of the merits of Perl over PHP at the time but PHP
has way better marketing and gets a lot more writeups in the magazines
that PHBs read. So I developed this product they named Lariat.
After a couple of deployments, we started having serious problems with
PHP's memory management and flexibility. It's core bloat and the fact
that it wasn't really a general purpose programming language at the time
really hamstrung us. Opened some bugs with the php guys with test cases,
got some feedback that some of them could reproduce the bug, provided them
with backtraces, tried cvs builds they thought fixed things but didn't,
etc.
They eventually just stopped acknowledging the bugs existed. I stressed
I would follow up on it because our product depended on it and do anything
they needed, including buying things, paying for core developer support,
whatever it took. I explained we were using PHP in a real world, complex
application and had already purchased and intended to continue purchasing
their rather expensive "optimizers" and commercial tools. We continued
to be ignored. This bug was eventually fixed in PHP version 4.4.0, 25
months after I initially reported it.
Perl to the Rescue
So I rewrote it all in some extreme programming over the course of
about two weeks using Perl, Template Toolkit, mod_perl, PostgreSQL
(had already switched from MySQL due to it's limitations while using PHP)
and it continues to use these things. Today we have 15 agencies using the
software handling a combined $193,140,833 in active debt belonging to
128,328 debtors and are setting up new agencies at an increasing pace with
the addition of an ASP solution hosted from our colocated servers at
LimeLight in Tempe.
Name Dropping
A guy named Scott Lillibridge was instrumental in the design and
implementation of the software. He recommended Andy Johnson, who joined
us for a short time when we still wanted database independence (I think he
did a port to Oracle). Andy and I drove almost identical third-gen
Firebirds, though I don't wreck mine every month, ehe. Anyway, both have
since departed and it's a one man show now, though I've been getting an
old Clipper/Delphi DoD programmer involved in development and he has
picked up some rather complex Perl incredibly fast and seems to be
enjoying it thoroughly.
About Lariat
We have 267 Perl modules in the latest release version -- 77 packages
and 190 classes. The sloccount program reports 85,663 source lines of
code, 21.41 person years of effort, schedule estimate of 1.72 years,
estimated avg number of developers (effort/schedule) of 12.48, and cost to
develop at $56,286/year (Hah, i wish) of $2,892,417 with 2.40 overhead.
Sloccount ignores the 14731 lines in 240 tt2 templates. The database is
13,240 SLOC with values of 3.01 person years effort, 9.77 month
development estimate with 3.70 developers at a cost of $407,028 to develop
at the same salary and overhead. It has 129 tables, 271 plpgsql stored
procs (looking forward to trying pl/perl), and 51 views.
I use CVS, maintain seperate environments (which include a postgresql
database and seperate apache and apache-perl server instance since we
utilize a reverse proxy set) for two developers, testing for our
standalone (called IP) and ASP versions (in both pgsql 7.4.11 and 8.1.2),
a release version for distribution and one for testing bugs reported by
end users in their release version, demonstration in both IP and ASP
flavors, and a training version. I use bugzilla for enhancements, end
user requests and bugs, and internal bugs and development and dotproject
for a higher level development track (though it remains underutilized by
mgmt).
You can check out the website at http://www.lariatcentral.com/ though it
is in dire need of an update with new features and screenshots. This year
should be very good and most of the kinks have been ironed out, the
development environment and process has matured, and our marketing and
pricing plans have stabilized. Might make for a good Perl success story
later in the year.
I would never have imagined myself developing a Debt Collections package
but it has proven to offer lots of interesting challenges and will never
be complete. I've also done a lot of consulting for GCR Tires, a division
of Bridgestone-Firestone while at nDev, developing GCR's intranet and
business intelligence software, payroll system, inventory and credit
management, and so much more.
Other Dabblings
Lots of other consulting over the years, various side projects
(myNewsPorn, a usenet binary decoder subscription site that predated
guba.com and probably inspired them), Perl Modules I haven't touched in
ages including Video::Info, MPEG::Info, MPEG::LibMPEG3, NetPacket 0.02
(temporary maintainer fixing critical bug in TCP header option parsing
before original author took over), and wrote the key polling daemon in the
now defunct Bronc RRDTool poller that Chris Snell (of TicketMaster)
maintained.
I also was included as a friend of the company, the company being VA
Linux Systems, back in.. what was it, December of 1999(?) when they had
the IPO and bought 140 shares at the IPO price of $30 and sold them a few
hours later at $273.50/share, though I didn't have the full stake and
offered 70 shares to my roommate (doh). I was the first one to submit it
to slashdot when I got the e-mail so was listed as the author (synaptic).
They included me because of some silly little freeware POP before SMTP
perl utility I wrote and put on Freshmeat to keep a berkeley db hash of
IP addresses and timestamps from pop3 auth log entries that sendmail
could read as a map accessed from local_check (with some Claus Abmann
hacks) to permit SMTP access from foreign networks.
Hopefully I've not bored everyone and have dropped some name or company
one of you may recognize. If not, well you know my background and what I
might be able to share with the rest of the Phoenix perl mongers. Hope to
see you all next month.
Best Regards,
Benjamin R. Ginter
"Beware the fury of a patient man"
More information about the Phoenix-pm
mailing list