Archive for October, 2008

Calc Board 1.6 is Out!

Wednesday, October 15th, 2008

CalcBoard.jpg

There aren't a lot of Dashboard widgets that I really use a lot - but I have to say, Calc Board is one of them, and today they released Calc Board 1.6 which includes the ability to resize the board as well as change the font and save the contents to the desktop. It's a very nice upgrade.

The interface is simple, clean, has great features. It's just a great little application.

Blender 2.48 is Out!

Wednesday, October 15th, 2008

Blender.jpg

I started playing with Blender several years ago on my SGI Indigo2 High Impact and it was impressive. Those were the days before it was bought by the community - which, to me, remains one of the great stories of the internet age: a company can't support the product any longer, doesn't want to give it away, sets a price and the community gets enough donations to actually buy it. Amazing.

Anyway, today they released Blender 2.48 and I got that for my Mac. It's an amazing app, and like Photoshop, it takes an amazing artist to create something nice on it. I am not that artist. However, I want to be, and someday I hope to have the time to work on it. Which is why I keep updating.

Updated iConquer to 2.4.6

Tuesday, October 14th, 2008

iConquer.jpg

I hadn't pulled up iConquer recently and for some reason I decided to run it and see if there had been an update. Sure enough, there had! iConquer 2.4.6 downloaded and I installed it. I had a very hard time finding the release notes, but I'm guessing it's general updates for little bugs in the code from OS X 10.5.5, or some bugs found by the users.

In all honesty, I've been way too busy to play a game, but I do like it every now and then, and maybe with the bad news from Apple today, I should have taken the time to play a game to cheer me up. Oh well... no time now.

Pretty Disappointed at The News

Tuesday, October 14th, 2008

keynote_sm.png

While I wasn't totally taken by surprise, I was really bummed out that they didn't update the 17-inch MacBook Pro today. While I can understand the merging of the notebook lines into a single, more easily managed product line, I have to say that the fear of losing the 17-inch MacBook Pro is very real to me, now. Very real.

This question made it clear that the 17-inch as it was is not long for this world:

[11:01 AM] Q: Concern about the glossy screens. Are you going to offer another option?

A: Steve: We're going all glass -- we won't offer another version. Phil: You offset the reflection by the brightness, and consumers love it. One of the great things about a notebook is you can turn it however you want!

From this, it's clear - glass all the way. I can understand why they do it, but I have to say that the line about being able to move the screen to remove glare is bunk. If that were the case, then they'd never sell a matte finished screen, which I know is not the case. So they are consolidating the line. Plain and simple.

Normally, I might not mind, but the problem is in the trade-offs. I wanted more in a laptop - quad-core CPU and 8GB RAM -- found in PC laptops should be available for the mobile desktop 17-inch MacBook Pro. The problem is, the 15-inch machine has different engineering trade-offs than a 17-inch where weight, and size, is not as big an issue. I mean face it... if you're carrying a 17-inch laptop, then you have expressed a desire for more features at the expense of size and weight. For the 15-inch, it just wouldn't be the same.

I'll admit, I like the trackpad concept. I can even probably live with the glass screen. But I am (probably) hoping against hope that they are going to update the 17-inch to have the same basic feature set and not discontinue it. Face it... the "Classic" iPod is on it's last legs as well... it's certainly understandable if they drop the 17-inch like they dropped the 12-inch Powerbook. Crud.

I'm still hoping they don't. I'd love to have a new 17-inch MacBook Pro with desktop power and a great trackpad.

UPDATE: I finally got into the Apple Store and checked on a few things. Seems the 17-inch -- even with the refresh, is not going to be around long the speeds available in the 15-inch are 2.53GHz and 2.8GHz while on the 17-inch they are 2.5GHz and 2.6GHZ - clearly a previous generation chipset. It's not going to be long before I know if it's refreshed or dead. Hope it's the former.

The Return of an Old Favorite – iTerm 0.9.6.1012

Tuesday, October 14th, 2008

iTerm.jpg

In the days of Mac OS X 10.4 - when the Terminal.app didn't have tabs, I was a big fan of iTerm. But when OS X 10.5 arrived and Terminal.app had tabs and workspaces and seemed to be just as nice, then I stopped using iTerm and went back to strictly using Terminal.app. But it hasn't been perfect. iTerm has much better control of the rendering of the window than Terminal.app does, and while speed is no longer an issue, the ability for iTerm to remove the scroll bar from the window is still a big plus to me.

I've tried several hints off the internet to remove the scroll bars on the Terminal.app windows - even going into Interface Builder and seeing if I can remove them there. Unfortunately, no. It's not something that's supported any more. I can see the reason - the resize handle. If you want to have a resizable window then you need to have the resize widget. If you have that, then it's going to have to exist in the left border or the bottom. So you might as well have it in the left and not make problems for yourself.

Of course, iTerm solves this by simply removing the resize handle with the scollbar. If you're going to be looking at an undecorated window then chances are you're a guy that's going to set the size of the window and leave it. I can see the trade-off. I just wish Apple agreed and put something into Terminal.app to remove the scroll bar and resize widget.

Until then, when I really want to have a terminal window without the scrollbar and resize widget, I'll pull up iTerm. With the new version, it's better than it was, and maybe worth another serious look. After all, for all of 10.3 and 10.4, I used it instead of Terminal.app.

UPDATE: I started playing with it again and I have to say I'm a little disappointed in iTerm - it's memory usage with one window open is more than Terminal.app with nine windows open. While I'd really like to skip the scrollbars, and I will still keep it on my box, it's not worth the memory footprint. Shucks.

I Can Only Hope the Rumors are Wrong

Tuesday, October 14th, 2008

product-15in.jpg

The latest rumors I've heard about today's Apple notebook event is that the new MacBook Pro is only coming out in the 15-inch display - and that's no longer available in matte finish - gotta be glossy. The 17-inch model will see only modest memory/disk increases and the speculation is that this model is being phased out.

If so, it would be a tragic turn of events.

For the serious professional wanting a portable machine the Air is nice and light - great for the CEO or someone not needing a ton of power or options. Perfect market. The 15-inch Pro is great for the mid-range developer or a developer with an external monitor at work, and only needs to use the machine as a laptop a fraction of the time.

But the 17-inch Pro was for people like me - no desktop machine, no external monitor - it was the "desktop replacement" and that was all I would need. I don't need the rumored fancy trackpad - but it would be nice... I don't need to have this thing be 2.2 lbs - it's OK at it's current weight. What I wanted was more machine. I wanted the quad-core chip with 8GB RAM and a nice big, bright display. This is my only machine, after all.

So if these rumors are true I'm really disappointed. It means that it's going to have to be a 15-inch Pro for me, and that means that I'll probably never get the quad-core chip as it's just not in the market segment of the 15-inch Pro. They wouldn't trade the power consumption for the processing power because most folks would already have a desktop that is where they do all their really intensive computing anyway.

So I'll have to wait and see what comes of the announcement today. Since they don't stream them anymore, I'll have to wait until it's over and then check the Apple web site and see what they have to say.

Getting Folks to see Their Work Objectively isn’t Easy

Monday, October 13th, 2008

cubeLifeView.gif

Today I had to clean up a mess of code that another developer made. He started with a xmlrpc python server/script that a co-worker wrote, and modified it so that it wasn't really working anymore. I then fixed that up to work, but didn't work on optimizing it for speed. I just needed to get it working first. Then, as I worked on a simpler case to get the speed up, he worked on adding a few features.

I finally got an sub-set implementation that promised to have a solid improvement in the speed and put the changed code into my version of the server. He tried it, but the changes he'd made on his end had been too much to work as-is, and he asked me if I could retrofit my changes into his current code base. I had a look at it and the code was a horrible mess.

This guy is not a trained developer. In fact, his development experience is really scripting for the last several years and that's it. No real significant formal training. He's typical of those developers that hack, print variables, hack some more... copy/paste... never really trying to see what he's doing and try to have a cohesive body of code. But in the end, more times than not, they hack something together that technically works.

I spent over two hours this morning cleaning up his code to get it into a maintainable state. Not adding new features, mind you - just cleaning up the crud. When I told him this was a mess, he got quite defensive, as I expected he would. It's something I've run into time and time again. People know the truth, but they want to deny it because "it works".

Well... it may work, but it's a mess. It's not maintainable. It's going to get worse and worse until at some point it'll be impossible to make a change to it. It's brittle, overly verbose, and lacking any real design. In short, it's a disaster waiting to happen.

I don't enjoy saying it's a mess to people doing the best they can do. But in the end, if they don't see it themselves, someone has to tell them or the overall product will suffer. And suffer badly. It took about twenty minutes but I talked him back from his anger/defensive position, so that he realized that I wasn't commenting about him, only the work. He needed to call in help earlier to minimize the work in this kind of merge. I'm not sure he got it all, but I'm hoping he did... at least enough so that he asks earlier next time.

Interesting Bugs in Implementation of Customer Bits

Monday, October 13th, 2008

SwissJupiter.jpg

I'm working with a vendor's product where they have kindly created the possibility of adding customer-specific fields to each object in the database. It's a nice touch, and if done correctly, it makes the system very flexible and expandable, but if it's done wrong, it can make the system horribly slow and difficult to deal with.

Yes... I know... it's easy to see which this one is.

But to the point at hand. Each of these Customer Bits is tagged with a datatype and what object (both type and instance) it belongs to, etc. The interesting thing is how to add a lot of data to the system very fast. If we need to add in the base object and then, say, a dozen of these bits, then we need to do it all very fast - if it's going to be on something like tick processing, or trade processing. You get the picture.

So today I learned through the School of Hard Knocks, that when adding these bits to an object, you can add them one of two ways: individually, or in bulk. If you add them in individually, you're basically adding the base object, committing it, and then one by one, adding the bits, and committing each as you go. If you add them in bulk, you're creating the base object and all the bits and then committing just once.

What I learned was that if you take the individual approach, the data you place in the bits doesn't matter - specifically, you can place an empty string in a bit and it's all OK. But if you try to do it in bulk, you get a very cryptic error message that it's clearly tied to the bit you're setting to an empty string.

So it's an easy fix - once you know the problem. Simply don't allow setting bits to empty strings. But you'd think that this shouldn't be a problem in the first place. But there you go thinking again.

UPDATE: I heard from a developer deep in the Vendor's shop and he said that there was a bug report about this already and the answer was to disallow all empty string usage in the bits. That's certainly one way to handle it.

Made Sure I’m on Latest Twitterrific 3.2b3

Friday, October 10th, 2008

Twitterrific.jpg

I got a tweet from Twitterrific itself about using it with Present.ly, and in that posting, it mentioned that 3.2b3 was available. I wasn't sure if I had the latest beta - which uses https:// for transfers as opposed to the previous http:// protocol. Not that I think anyone is really trying to snoop my tweets, but there are other improvements, and if security is free, why not take advantage of it?

Nothing spectacular, but it's nice to be up to date (for certain). It'd be great if they incorporated Sparkle, but that's up to them.

Sometimes Weak but Intelligent Feedback is Just What’s Needed

Friday, October 10th, 2008

SwissJupiter.jpg

I was monitoring one of my price injectors this morning and several weeks ago I had worked up an interesting little addition to monitor the app that's processing the prices I'm injecting. I worked up the log-based monitoring, and at the time I was a little concerned that it was too loosely coupled, and that we'd get into trouble because of this. Because of this, I worked very hard to try and anticipate a lot of the conditions that might occur, and as of this morning, I'm very glad to say the efforts have certainly paid off.

Sometimes, it's good to be loosely coupled. I had no real choice, but even if I had, this was a vendor's closed package and what was I really going to do? I have done pretty much all I can. In this case, it was really thinking about what might happen that did the trick. I can see that my app detects that their app is frozen and simply stops sending. I can see it detect that the app has been restarted and starts sending again. Little things, I know, but it's going to make it possible to have my app proactively restart theirs.

That would be a great kick in the pants, wouldn't it? "Hey guys... your app freezes on me -- a lot, so I put in code to detect it and restart it. You might want to work on that stability someday." Man, that would be s...w...e...e...t.

It's just what the doctor ordered.