Archive for September, 2009

Upgrading to PostgreSQL 8.4.1 from KyngChaos

Wednesday, September 30th, 2009

PostgreSQL.jpg

Today I wanted to upgrade my PostgreSQL install to 8.4.1 (from 8.3.x) based on the KyngChaos package I'd just started using. It's as much a test of the upgrade process as it is about any 8.4.x feature in PostgreSQL. It's really not all that hard, just a few steps in the right order.

First, open up a Terminal.app window and become the user postgres:

  su - postgres

then, dump the database. Assuming you're in the postgres user's home directory - /Users/postgres, you can do something like:

  /usr/local/pgsql/bin/pg_dumpall > postgresql_20090930.dump

and the dump will be tagged with the date. Easy.

Next, turn off the existing PostgreSQL engine, and set set the old install aside:

  sudo launchctl unload /Library/LaunchDaemons/org.postgresql.postgres.plist
  cd /usr/local
  sudo mv pgsql pgsql_old

Next, install the new package. If things are going well, the new engine will be started by the installer. As long as the launchd file exists, you should be OK.

Next, load the databases. Back in the postgres user's Terminal window:

  /usr/local/pgsql/bin/psql -d template1 -f postgresql_20090930.dump

Check that the databases are back and functioning. Then it's just a matter of a little cleanup:

  sudo rm -rf /usr/local/pgsql_old

Finally, A Breath of Air

Wednesday, September 30th, 2009

cubeLifeView.gif

For the last several days I haven't written any posts because I've been deep into this codebase that I inherited and don't really like much. OK, that's being polite. But a few interesting things happened in these last few days that make me step back and try to see the forest for the trees. Maybe it's just because I think I'm done, and I'm in one of those euphoric states of mind that occurs when incredible pain is removed, and it appears that you're in incredible happiness... and then again, maybe it is honest happiness.

The Code

I'm not going to apologize for my take on the code. It is really horrible. Yeah, it's really that bad. It's not the worst code I've ever seen, but had it been even a little worse than it is, I would have said that it never would have worked for the purposes at hand, and a re-write would have been required. It was passible, but only barely.

So what's the upshot of this? Well... I'm stuck with it. I've been in this spot several times before with other projects. The code is so convoluted that only a very few (typically only one) person can go in and make changes. The process is hard, painful to do, and error-prone. It's a disaster waiting to happen. Consequently, it's something that has to be done very carefully.

But it can be done.

I'm trying to take away that last point: It can be done. It's not impossible, just very, very difficult. In that sense, I'm not really upset about the code, or having to work with it. It's something else entirely that I'm upset with.

The Timescale

I'm all for deadlines. I don't mind them as long as everyone knows them. If it's an unreasonable deadline, then when it's made, the statement of it's unreasonable-ness will be made, and expectations can be set. It's never an all-or-nothing proposition, but as long as everyone knows where they stand, it's fair. Something that's been happening in the last few weeks is that I'm getting the very real sense that there's a deadline, or timescale that I'm not being made aware of. There is a very real pressure to complete things as fast as possible - without regards to duplicating work and carefully removing bugs in the code.

Such might be the case, if there were a deadline that I weren't aware of. Something like "Mean Guy over there is saying our group doesn't work hard, and I told him we'd be done with this by the end of the month." I'm all for sprinting for a goal, but I need to know the goal, and that we're sprinting. Otherwise, I get the feeling that I'm being horse-whipped with things that make no sense.

  • Sending the app to testing with users when we know some of the numbers are bad -- why not just wait until the numbers are right and then show it to them?
  • Changing the Test configuration in the middle of testing for an hour so someone can see the numbers -- again, you're making this a wasted hour because I'll have to revert back to the consistent testing configuration to really be sure I have everything.

I don't say that there's not a reason for this - only that I'm totally unaware of what that reason is, and being in the dark, working as hard as I do, is not a comfortable feeling. I get to feeling very manipulated.

I'm not such a prima donna that I don't think all decisions have to come to (or through) me, I just want to be told what the decisions are when they effect me. It's about feeling that you know where you stand.

The Support System

This week I've had a real shock to my traditional support system. I have a few friends that I've worked with for years, who now work different places, and I chat to them pretty much every single day. It's not like we're texting teenagers, it's more like an informal way to communicate if we happened to be further apart than a shout.

I had been having problems with this project and was venting to these guys, and basically got slapped back down by both of them. One, said he had problems as bad with his, and didn't think it warranted the grumbling noises that I was taken to task for by management. The other is now a manager, and he said he wouldn't stand for that.

Interesting.

While I understand their points of view, and probably even agree with them (now), at the time, they were "keepin' it real" by smacking me down. Needed? Maybe. Helpful? Not in the least.

The problem was, as I realize now in retrospect, that I was mad at more than those asking me to do this, I was mad at myself for not putting my foot down and requiring some sense of timeframe, or setting a schedule, or at least not letting them push me to answer deliverables every hour (no joke). Asserting myself at work is something that I have a hard time with, especially when I'm new to a position. I don't feel comfortable saying "No" to even unreasonable requests. The word "possible" kills me.

So while I needed support, and didn't get it, I needed perspective more.

Lessons Learned

So after all this, what have I learned? I think there are a few things that I should work hard on:

  • Expressing my beliefs about the cost of certain decisions - heck, maybe if I'd told them exactly what the cost was going to be, they'd have said "Nah, it was just an idea".
  • Sticking to my beliefs and not being a doormat - there's nothing professional about being walked over by peers or management. If you are a professional, and in your professional opinion the plan has mistakes or omissions, then you should feel that it's possible to express them professionally.
  • Know when to shut up - obvious, but necessary.

I'm sure there's more, but for now, this will get me a long way towards not getting into a situation like this again.

Camino 1.6.10 is Out

Wednesday, September 30th, 2009

This morning I saw that Camino 1.6.10 was released. It's not my favorite browser, it's Mac-like, sure, but it's not as Mac-like as Safari. Also, it's going to be hard to beat the Safari experience on Snow Leopard, and they need to build it for multiple Mac OS versions. Still, I use it probably once a week, and when I do, it's nice to know I'm up to date and have the latest security fixes, etc.

Not quite the best browser, but it's nice to have around when I need it.

Acorn 2.0.3 is Out

Wednesday, September 30th, 2009

This morning I saw that Acorn 2.0.3 is out with a nice list of bug fixes. I like the ability for Acorn to take a "dragged" image from Safari and automatically open it up. It's not like it was hard to right-click, copy the image, and then in Acorn create a new from the clipboard, but it's cleaner and more intuitive for the new Mac user.

Great app, getting even better. Super.

What’s the Freakin’ Rush?

Tuesday, September 29th, 2009

cubeLifeView.gif

Today I realized something that's been bothering me for weeks. It's all about management's perceived need to rush something through the process, and what actually the business need is. Specifically, when you're not building a fix, or a critical feature that's time-dependent, then what's the bloody rush? Why should I find 30 mins right now to show something to a group of users when I'm in the middle of fixing something in the code and tomorrow will do?

This is all about management's need to set it's own, self-imposed goals, and has nothing to do with reality or the development process. In fact, it's counter to that process as a whole. I've been told to show something that I know is wrong in spots because management doesn't want to wait until it's fixed in an hour or so, worrying that we'll loose an entire day. So what?

This isn't business critical. This isn't time-critical. This isn't something they have been clamoring for. This is something that is an enhancement to the existing functionality and because the QA process is very lengthy, management doesn't want to wait an hour it doesn't have to.

Can you say Crack Monkey? Yes, I knew you could.

This makes me exceptionally angry about some management decisions, such as these. If you think I'm the one that can get the job done, and if you trust me to do it right, and quickly, why on earth are you so "ants in the pants" about a release? This is in-house development, folks. This isn't releasing the next version of the OS, or meeting a hard deadline. This is a simple matter of a manager losing touch with what's the best way to manage people.

I've got to remember that I'm angry at the decision, not the person. It's been happening for several weeks, and it's only just now that I've realized it. I need to say "No" more. Just plain "No".

I'm as angry at myself as I am at him.

iWork ’09 Update 3 on Software Updates

Tuesday, September 29th, 2009

This morning Apple released updates to iWork '09 on Software Updates. There were several things fixed and updates to iWork.com as well. I still think this is my alternative to Microsoft Office, as it's much better for all that I do. While I know it's not a complete replacement for all the macros and scripting, it's more than good enough for me.

Growl 1.2 is Finally Done

Tuesday, September 29th, 2009

This morning I noticed that Growl 1.2 is finally released, and had to update. This is one of the big things that didn't work well with Snow Leopard, and I'm glad the developers stuck with it to get everything fixed up as soon as they could. Things take time.

GitX 0.7.1 is Out

Tuesday, September 29th, 2009

GitX.jpg

I was looking at a few git-related things this morning and noticed that the open source Mac OS X git GUI client, GitX, was now at version 0.7.1 which was a nice jump from the last version I'd gotten. In this version, it's picking up the user's images from Address Book, like Mail.app, which is really neat - nothing fancy, but neat.

Also, there are a lot of fixes and features in this new version. Very nice indeed.

iPhone MMS is Working

Friday, September 25th, 2009

iPhone3GS.jpg

Yeah, it was a little bit of work, but as promised, AT&T delivered a new carrier file for it's US customers today and I just needed to "update" the software on my iPhone and it picked it up. Then, a simple restart of the phone and it was sending and receiving pictures and video messages on the SMS stream. Quite nice.

Now all I need is legal tethering!

UPDATE: the AT&T cell towers are all having a lot of trouble with this upgrade. It seems from about 3pm to 6pm it's nearly impossible to send and receive TXTs. I'm sure this is a surge of the MMS usage, but still. They could have planned for it. They have been collecting money for the capability, so they should get it going. Well... hopefully, it'll settle out soon.

Growl 1.2b5 is Out – It’s Getting a Lot Closer

Friday, September 25th, 2009

Once again, the Growl team has published another beta, this time 1.2b5. The list of remaining issues is shrinking rapidly, and I've got to believe in a few more weeks they'll have them all worked out. But for now, it's nice to see that progress is being made.