Perl and IDEs

From about 1987 to about 4 or 5 years ago, I did all my software development using vi (and later gvim), ctags, and all the Unix command line tools. But towards the end of my time at Kodak, I got the Eclipse religion, at least as far as doing Java. Sure, I dislike having to move my hands away from the keys to move the cursor around all the time, but the code completion, integrated debugging and all that other good stuff won me over. The ability to click on an existing method call and see the javadoc for the method and to hit F3 and be taken to the actual code was a game changer for me. So much better than ctags. But for non-Java, whether shell scripts at work or perl at home, I still relied on gvim and the other command line tools.

But I’m about to start a huge and long term perl project, a large part of which is trying to learn all I can about an existing open source code base. So I wanted to see if an IDE would give me an advantage in terms of moving around the code I’m trying to learn. I installed the EPIC plugin for Eclipse, and also a dedicated perl IDE called “Padre”, and noodled around on both, and so far I’m forced to conclude that neither of them are as useful in perl as Eclipse is in Java. The biggest missing feature seems to be that F3 gets me the wrong function or method declaration most of the time. I don’t know why, possibly the typing system in perl is too weak for the sort of analysis and introspection that Eclipse does in Java.

So I think I’m going to be back to doing gvim and ctags and find and grep and perldoc and all the other fun stuff.

Moving on, moving up…

I was a little bit annoyed at work this week – they had me rush rush rush to finish something, and when I did they didn’t seem to have anything more for me to do. Ok, if I’m honest with myself, this new subproject they put me on has annoyed me because nobody seemed to want to communicate, and so maybe I wasn’t making the effort I should have to go find something to work on when they didn’t give me something. But still, I was mildly annoyed.

And then out of the blue, an on-line friend popped up on Facebook and said “hey, do you know any perl programmers looking for a job?” Well, I’ve done a fair amount of perl coding for my navaid.com site as well as scripts here and there at Global Crossing and Kodak, although I’m not one what you’d call a “perlmonger” or “perl monk”. As a matter of fact, I’ve been seriously telling people on StackOverflow that if I weren’t so proficient in perl already and didn’t have so much working code written in perl, I would seriously be trying to forget everything I knew about it and learning python instead. So I asked him for more details. But he quoted me an hourly rate that was more than double what I’m currently making. I suddenly remembered that I’m a perl God.

The contract involves learning all there is to know about their business process, and all there is to know about an open source project called “Request Tracker” (aka RT), and seeing how much of their business process I can shoe-horn into RT (using its built in customization hooks and APIs) and how much would require custom coding of separate apps that maybe talk to RT for some parts, and doing the customizing of RT and the custom app coding.

In some ways this job looks like enormous fun and quite a growth experience, but “growth experience” also means “opportunity to fail” so I’m also somewhat scared of this. Not only do I have to become proficient in RT and in corners of the perl world that I’ve never touched before (Mason, anybody), but I’ve got to do my own requirements gathering, project plan, and every other aspect. I’ve got nobody else to blame if things don’t go right. But looking at the sunny side, if I do this right, I’ve got a major successful project on my resume and a happy customer to vouch for me for the next thing that comes along. It’s going to be great!

Anyway, long story short, I just turned in my notice at my current job. No more 3.5 hour return drives to Ithaca every week or two. (I just spent over $1000 on flights, hotels and rental car for a week down at their site for the project kick-off one week info dump, though.)

No good news on the medical front

I had a talk with my shoulder surgeon yesterday. He said my MRI didn’t show any “smoking gun”. There was a little damage where the acromium meets the collar bone. There is also evidence of bone bruising, but I’m not sure how that could have happened or how it could be causing a problem that started 3 months ago. He said that might be the problem, or there might even be referred pain from the neck. He basically said that we need to try a few things to help diagnose the problem, so he injected some cortisone into the AC joint. A few hours later, when the numbing agent wore off, I was treated to some of the worst pain of my life.

I slept on a chair last night because I knew that if I slept on a bed, I’d roll onto that side and make it even worse. It’s still pretty bad this morning, but I’m trying to keep it propped on my chair arm and not move it much. I’m back to using my old Bamboo trackpad instead of a mouse because I use that with my other hand, but it registers things as clicks when I don’t mean to click and doesn’t register when I do want to click, so I don’t like it much.

Anyway, if this cortisone shot is anything like the one I got last summer, I’m hoping to start feeling some relief tomorrow or the next day.

Meanwhile I spent half the night wondering what I’m going to do for fun when I can’t paddle any more.

Phil Gustafson, diode re-arranger

Back around 1991-2 era, I joined an on-line community. Or rather, I started participating in a Usenet newsgroup called alt.folklore.urban, the core membership of which was turning into an on-line community, pretty much before the idea of “on-line community” had been invented. We cognoscenti called the newsgroup “AFU”, and the core of the core were known as “the hats” or “old hats” (or later “Best Mates”). One of the first “old hats” was a guy named Phil Gustafson. He was funny, he was smart, he made wicked puns, and he was part of the memes of the group (one of which was that Phil would “rearrange your diodes” if you didn’t behave). He travelled to all the real life meet-ups (which at the time were almost always on the west coast) and it was frequently his descriptions of these meet-ups that had the rest of us rolling in the aisles and wishing they’d have some out this way.
Continue reading “Phil Gustafson, diode re-arranger”

This time I think it was the cache…

As I wrote about in 2007 in articles and , back in 2004 I wrote a cache for part of the product I was working on at Kodak. In the first release to QA, I made sure that area of the code got tested thoroughly, and they found a bug, and fortunately I got it fixed before it went out to the customers. But to my chagrin, my boss and other people on the project got it in their heads that somehow any problem anywhere near that part of the product must be the fault of my cache, even though time and time again it was proven that there were no further bugs in that code for the following 3+ years.

Now flash forward to the product I’m working on now. We have a “go live to the very important customer” happening in just a few days, and we’re supposed to be in code semi-freeze. But the “Performance Project” just put their performance cache into the product, evidently without giving the local QA much chance to test it before it went to the customer’s QA. That seems just a little bit dangerous to me. But no matter, they assure me they’ve written tons of unit tests. So what could possibly go wrong?

Today the customer called up saying that they’re setting up a new client on the admin site, but every time they go to the “branding setup” for that new client, they see some other client’s branding setup. This branding consists of things like the client logo and some “terms and conditions” text and the like. Since they’ve got literally hundreds of QA people hitting this site, I naturally wondered if they weren’t seeing some interaction between multiple people messing with the setup. But after hours of poking around on their site, one of my peers and I (neither of us members of the “Performance Product”, I might add) are convinced it’s the performance cache. Evidently if you use one browser to look at one client’s branding, and then use a different browser to look at the branding of the client who hasn’t been setup yet, you see the branding from the client that you’d looked at in the first browser. Somehow the cache is reacting to the absence of information in the database for a client by pulling up information from some other client out of the cache. That’s not good.

Hopefully that will get fixed, and hopefully somebody will set up a test plan that actually tests what the cache does not just on a cache miss, but also on a database miss as well. And hopefully the important customer won’t think we’re all a bunch of idiots for not testing this properly.