May this thread live as long as Name Space.

TL;DR

Perl prevented me from being a bad architect (or an architectural slave in some office) and made me into a lousy programmer instead. I have no formal CS education.

Long version

Back in the late 80's as I studied architecture/urbanism, a CAD system consisting of workstation and software, peripherals and plotter easily cost about 75k$-100k$, which wasn't anything a student or architecture freshman could afford; we were designing on drawing boards. So a bunch of students, at the incentive of the unforgotten (for me, at least) Horst Rittel took on the task to develop a CAD system for architecture on the Atari ST. It was programmed in GFA Basic and was a 3d wireframe program. After playing around some time, I noticed some bugs and got the sources. Had no idea of programming, but ever since being a toddler I wanted to know how things work. Fixed some; got the idea of extending the wireframe model with surfaces defined by their edges, and there I went, reading "Computer Graphics" and spending days at the Atari, implementing a lousy hidden line algorithm (yeah, normal vector to an arbitrary perforation point onto a surface whose edges aren't aligned on a plane and such).

Task completed, I submitted the work to Rittels institute at the faculty. Got some points and was hired: document and administer the CAD lab of the institute, some Suns (1,2,IPC,IPX, later SparcStations 10).

First time at a UNIX system, had no idea. Spent days and nights reading manual pages, following SEE ALSO. After some time, things fell into place.

At the institute, we spent a lot of time handling complaints of angry students which walked up to the office telling us over and over again that they had worked hours on their project, only to find out that they couldn't save their work, even without being over quota hard limit. We had a SPARCserver 300 with 16MB RAM sitting in a dark corner, which held the NIS/NFS tables, but too little disk space. So, the workstation disks also were used to hold user's home directories, which were transparently automounted to any other workstation as needed.

Disk space was terribly expensive at that time, and so the disks were over-commited (wrt to quota hard limit). We needed some monitoring, and a cleanup tool to free abandoned scratch areas, which could be huge (for some value of huge of that time).

Sweating over data collection and fiddling with sed, awk, cut, tr and whatnot (all in the dratted C-shell) a coworker noticed, walked up to me and asked me "did you hear of perl? that could be something for you."

Gophered the stuff, compiled it and had it working. Wow. This was perl4, patchlevel 36 (patchlevel 19 on the Atari).

Once I got a grasp on it, gathering and munging data was easy enough. But what about cleanup? The proactive part of the task... I wrote a perl script which mimicked a tcsh, complete with tab completion (was the GNU readline library out yet? Can't remember, since I didn't know at that time) and whatnot, which had a restricted set of commands: ls, cd, tar, gzip, mv, rm, and some. Running per cron as root, it would install itself as the infringing user's shell and persist, until the user had cleaned up his crap. Cleanup had to be done by the user themself, since we had no way to tell what of the users crap could be deleted, except the obvious stuff.

Since then I'm hooked on perl.

Later, one of the instructors of the institute walked up to me. He had a small startup, and looked for people helping at a contract: reorganize a workshop of architects, replacing a Siemens Quattro against a HP-UX workstation network and porting software from the former to UNIX/X11, converting all databases. "Why not?" I asked myself, instead of not negating and just asking "Why?".

The office software was applix, and since there was no database decision (that was dependant of the decision of their CAD/AVA supplier), I wrote the database engine in perl, using Berkeley DB and interfacing applix. Being at holidays in Ireland, an emergency call came in: a bug! Wrote the patch by hand, submitted via fax. They typed it in, issue fixed.

And then more things happened. Perl didn't teach me programming, but it enabled me to teach me programming.

Yes, I learned more languages since then, but none which gives me more leverage.

perl -le'print map{pack c,($-++?1:13)+ord}split//,ESEL'

In reply to Re: How has Perl affected you? by shmem
in thread How has Perl affected you? by stevieb

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.