Monday, December 26, 2005

A Phone Call From An Old Friend

I recieved a suprising phone call a couple of days ago. A friend I've been looking for since 1992 called. It was nice catching up with her, since she was someone I was close to. Anyway, it's nice to know that she's doing fine, even if she is 2000 miles away. We've agreed to keep in touch and make certain that it's less than 13 years before the next time we talk. :D

Tuesday, November 22, 2005

GUI Builders: Data vs. Code

Some people are of the concerted opinion that GNUstep, Cocoa, and indeed GNOME are on the wrong path when it comes to building GUIs when compared to editors of the likes of NetBeans or Eclipse. The first set of technologies have chosen to generate data (even though Glade can generate code... the GNOME project recommends against this), whether they are serialized streams or XML, to represent thier GUIs whereas most Java GUI builders generate code.

This is a fundamentally mistaken position for a very important reason: Metadata is portable across different languages. In GNOME there is a Java interface as well as a C and C++ interface to libglade. This means that my program, no matter which of these languages it's written in, can load my interface without any problems. In NetBeans or Eclipse, it's not necessary for them to consider that SWT or Swing will ever be used by anyone but them, so they can generate the code. However, data is better in general, since it can also be manipulated outside of the program. For instance, it's possible to apply a stylesheet to an XML file and transform it as needed. Why not do this to an interface file? This way an XML interface file can be manipulated like data inside the program and the resulting XML can be loaded as the GUI.

So I hope this settles any arguments about which type is better. In my opinion, Data generating GUI builders are better, hands down.

Wednesday, November 09, 2005

A Father's passing

This entry is dedicated to my Father, who passed away today at 11:15AM. He was the best man I ever knew. He had his faults, but in spite of them he was a good man. My relatives and I are making the final arrangements for him and the funeral will happen next Tuesday.

There were many things I didn't tell my Father before he died. It's taught me one lesson. If there's someone you care about, tell them now, if there's something you want someone to know, don't wait. Don't leave it until tomorrow... or the next day, do it *NOW* because sometimes you may not have tomorrow.

Near the end of his life, my father went into renal failure. His renal failure was brought on by his heart attack and his aneurysm before that. It came to a point in his life where he was fighting to live, not living as he once did. My Dad always used to be active, and loved to travel in his earlier years. He would sing and dance and do all kinds of things. I hope that now he can do all of those things, because wherever he is, I know he's happier.

I love you, Dad. Until we meet again...

Monday, November 07, 2005

Slashdot finally posts Gorm Announcement

One of the people on the #gnustep channel on freenode posted the Gorm article which ran on slashdot earlier this week. A myriad of good, non-controversial articles were posted before hand, but were ultimately rejected. So when Malda does finally decide to publish a GNUstep article, it has to be this one, which was intended as a joke.

This post was approved not be one of Malda's minions, but apparently by Malda himself as it was approved by CmdrTaco according to slashdots entry. This is a shameful commentary on just how unreliable slashdot is as any measure of good news. Slashdot is yellow journalism at it's worst.

Tuesday, November 01, 2005

Slashdot's incessent rejection of Gorm 1.0 announcements

I'm sorry, but am I the only person in the world getting pissed off at slashdot for rejecting my posts? Does it seem like slashdot only worries about certain peoples posts and indeed only posts on certain subjects?

The site has increasingly become an GNOME/KDE site over the course of the past few years. It's become apparent to me that no other competing API toolkit will be able to edge it's way into that site so that it can get some attention.

It's time to make a better slashdot.

Saturday, October 29, 2005

Gorm 1.0 Released

Gorm 1.0 is finally released. It seems like it's taken forever to get here, but it's finally done. Thanks to all who helped. There's still more I'm going to add, so this is not the end, just a bright new beginning. :)

Monday, October 24, 2005

IB/Gorm vs. Java GUI Builders

This post appeared briefly on today

It's basically a "pointer piece" about an article on informit in which the author has reached an ephiphany about how much better InterfaceBuilder is that almost any java code generation GUI builder out there. From the article "It's lightyears ahead of anything we've got in the java world."

I'm really not sure why this is such a revelation to Java folks. I also do a lot of Java programming as a consultant and I've found that there is no inherent value to code generating gui builders. They are, in most circumstances, unweildy. Many of these GUI builders don't have the concept of palettes, which allow the expansion of the basic set of widgets available to the developer, which leaves the programmer using other widget sets from another jar library on his/her own when using those.

Have we made so little progress in the last decade that programmers STILL have to trudge around making GUIs by hand? This is efficient?

Intuitive vs. Counterintuitive

In the Java gui builder world the predominant paradigm when it comes to associating widgets with methods is the event/handler paradigm, even though Java has a wonderful thing called reflection, it's not used when building GUIs in any of the gui builders I can think of. InterfaceBuilder and Gorm use the target/action paradigm. The target/action paradigm, takes advantage of Objective-C's dynamic nature to allow the direct invocation of the method against the target class. This is what I think gets most Java developers tripped up when they try to use Interface Builder, since they may not be used to this way of viewing the world.

Saturday, September 17, 2005

Why Gorm could never be done in C++

I recently had a discussion with a friend of mine whom I work with regarding C++ vs. Objective-C. I told him about GNUstep and also showed him Gorm. I explained the dynamic features of Objective-C and compared it to smalltalk and Java.

When I showed him some images of Gorm from the GS website I told him that Gorm could not be done in C++. He took some offense to this and immediately asked me "May I ask why you believe this couldn't be done?"

I explained that, it's because Gorm uses does several things which depend on the dynamic nature of Objective-C in order to do it's job. Here is a quick summary of the features of Objective-C which Gorm uses:

1) Categories - many categories, these are used in Gorm to do the following things
a) add the name of the inspector class for each type of inspector to the class itself so that it can be looked up easily. Mainly adding the extensions from the IBObjectAdditions.h protocol.
b) Also used for editors inspectors.
2) Loadable bundles - The palettes, which actually make up a large percentage of the code in Gorm are actually loadable bundles. These can be loaded when the application starts or during runtime.
3) Protocols - Many many protocols in Gorm. :)
4) Dynamic binding - As such, per #3, it's important to be able to call objects without knowing thier true class.

So far as I know C++ is incapable of doing #1, and is also incapable of #3 and #4. He went on to explain that it could be done in C++ if the modeller was a "code generator" to which I responded, but mine doesn't generate any code at all. :)

Thursday, September 01, 2005

The infamous "Burn-In Period"

Getting a new machine is really fun sometimes, but it can also be a royal pain in the butt. I despise the "burn-in" period (as I call it). This is the period where you need to adjust and tweek and frob every knob and adjustable piece of the machine until you get it just right.

Ironically, however, I find that this burn-in time really only happens with PCs. Particularly desktop machines. Especially expensive PCs. It seems as though the more a machine costs me, the more I have to frob with it. :/ Why is this? :) There's got to be some law of nature which makes it this way. :) Whatever the cause, there's nothing like the day when you can finally declare yourself done with all of the frobbing.

This of course, all begs the question: Why didn't I need to frob with my Mac?

Thursday, August 25, 2005

Potential for GNUstep

Many things are happening right now with respect to GNUstep, that it's almost scary. There are opportunities that have been brought to my attention that I cannot talk about at the moment, but I can simply say that they could be very good for GNUstep's future.

It's hard not to be nervous at times like these.

Friday, August 19, 2005

Got the new machine

After some hassles with Comp-USA's check writing service, I've got the new box!!

It's really sweet:

P4 630 w/ EM64T and Hyperthreading @ 3.0GHz.
2GB of RAM
120GB of HD

The challenge now will be getting GNUstep to run on the 64bit processor. Please see for more.

Friday, August 12, 2005

Broken computer

Well... my computer broke because of a power surge. It seems as though the MB was fried, so I simply replaced it with the old motherboard and put in a sound card I had lying around. I realized however that, this machine is on it's last legs. I uses Socket 423, which no one makes anymore and it also uses RAMBUS memory which was fast back in the day, but is not relatively slow when compared to more recent technologies and is also hideously expensive. I've decided to get a new machine.

Saturday, July 30, 2005

Preparing for Gorm 1.0

It's been a real task preparing for Gorm's 1.0 release. I've been hunting down and correcting bugs for a week straight. I've also been adding documentation. Fabien Vallon has volunteered to help me with both pre and post 1.0 work, and it's working out great!

Monday, July 04, 2005

Many a new feature added this week

I've been quite busy lately. I added the following features to Gorm over the past few days:

1) Added the ability to dynamically modify the pulldown using the addInspectorModeWithIdentifier:... method.
2) Also added the ability for Gorm to call delegates to help it handle different pasteboard types using the IBViewResourceDraggingDelegates protocol.
3) Added a new layout menu which allows the developer to automatically layout the set of currently selected views. The user can other bring a view to the front, push it to the back, align it to the center, left, right, top or bottom relative to the other views.

Saturday, June 18, 2005

Nicolas Roard's amazing StepTalk palette

As the author/maintainer of Gorm this was actually something I had meant to do myself, but Nicolas has done it!! It's amazing. To be able to edit and modify StepTalk scripts and virtually create the entire application within Gorm itself is quite something.

Please see the "Random Thoughts of a Camaelon" link.

Friday, June 17, 2005

The Book of Rules

Here's my book of rules. Occasionally I quote this. It's a collection of personal facts/rules that I have been compiling for some time.

Here it is:

Greg's Rules

0. In any situation involving people, there will always be politics.

1. 99% of the general public ( including technical people ) are not willing to learn anything new unless they absolutely must.

2. Most people are out for their own interests only and do not care about the big picture.

3. The mainstream media is both fickle and stupid.

4. Given a set of technologies, the worst one of the group will almost always prevail since it is
understandable to the lowest common denominator of people (see rule #1).

5. The general public will crucify that which doesn't follow the norm (again see rule #1).

6. Being a realist about how software development works is essential, idealists tend to always loose.

7. The next guy who stands up and says "look at me i've got all of the answers", usually doesn't.

8. Most things which start with Open* usually aren't. Examples OpenLook (proprietary), OpenVMS (proprietary)... etc.

9. There is such a thing as an arrogant, conceited, idiot.

10. Bugs happen.

11. Any technology which doesn't make it in the first year, won't.

12. Rule for technological success:
For a product to beat out an encumbent product in the same space, it must not violate any of the following rules:

1) It must be at least 3 times better than it's competition
2) It must be easily understandable
3) It must be affordable

Violation of any one of these rules will spell disaster for a new technology no matter how cool.

13. People tend to immediately blame that which they do not understand, usually due to their own ignorance.

14. Most people will continue to use that which they are used to despite the presence of a superiour product.

15. Rules you must know in order to appear as a genius to your co-workers:

1) Never admit that you don't know something, there's always plenty of time to look it up.
2) Never, under any circumstances, document anything. This impacts job security.
3) Always hang out with the other so called "geniuses" on the project, so that you,
by association, will be considered a genius.
4) Always eschew the opinions of others as nothing, meaningless and beneath notice.

16. People will use your software in the most obtuse, indirect and unexpected way imaginable.

17. "Why specifications survive" -- Inspired by something I once read, but can no longer find... Ever wondered why bad specifications survive? Here's a good example. Take a look at the standard railroad track. It's about three feet across. Well, the reason it's about three feet across is because the people who were employed to make the railroads were wagon makers. These wagon makers were usually immigrants from different parts of Europe who, of course, made wagons there. Well, the wagons in Europe needed to be a certain width, to fit the ruts in the road which exist due to hundreds of years of wear and tear. These ruts were caused by Roman chariots from when significant portions of Europe were under the control of the Roman Empire. As it turns out, a chariot is about as wide as the hind quarters of a horse. So the next time you wonder what horse's ass came up this this design, you'll have something to reflect on.

18. Untested code never works the way you think it will, so please test.

Tuesday, June 14, 2005

Love/Hate with IBM

Okay... ever since I heard that IBM is more or less responsible for the current Apple PowerPC->Intel switch, I'm a little pissed off at IBM. IBM doesn't see any profit in making thier processor faster for Apple unless Apple invests heavily in the PowerPC's development. That is to say that Apple needs to pay handsomely AND IBM will own the result, that wreaks.

It seems, from all accounts, that Apple was pretty much painted into a corner. They couldn't make the profits they wanted without the 3GHz PowerPC desktops and G5 laptops, but they would have to give up that profit to IBM. That sucks.

Okay.. so now I hate IBM because of Apple, but I love IBM because they are defending the OS community against people like SCO. My heart is torn to pieces.

Saturday, June 11, 2005

Comcast calls right on que

Sometimes you have to wonder. They called me on Thursday, right after Verizon fixed their problem. I really think they must have known or something.

Anyway, the guy is supposed to come today to set things up, so I'm here waiting for him.

My Disappointment with Apple

Although Apple moving to Intel is good news, it's terrible news that Mac OS X will not run on plain vanilla Intel machines. Steve and Co. really need to get their act together and let this fly.

If people could buy OS X for their PC I bet you would get a lot of people switching to OS X who would never have thought about getting a Mac before. If the "essence of the Mac" is truly the operating system, as Steve himself said in the keynote speech, then why should Apple be afraid of this prospect?

Wednesday, June 08, 2005

Apple goes Intel -- Implications and predictions

Wow. In a stunning move Apple has decided to go to Intel processors. Being an ex-NeXT guy I can tell you that I've always known that OS X was leading a double life on intel processors. This might actually be some very exciting news.

A few questions come out of this event:

Q1) What does this mean for Linux?
Q2) How will this effect Windows?
Q3) What does this mean for GNUstep?

A1: Basically nothing. Mac OS X cannot compete with the price of Linux or the *BSDs. It's $129. FLOSS will always be very cheap or freely available.
A2: It will likely have a good deal of impact on Windows. There is already a project called MacWINE whose purpose is to allow the Mac to run Windows programs. Once OS X is running on Intel, I predict that this project or something very much like it will become a centerpiece of OS X's collection of standard programs. This would remove the common excuse most people give for not using a Mac: "There's no software for it."
A3: This could be an opportunity for GNUstep to shine. If GNUstep can become the equivalent of Wine for OSX, then it bodes well for GNUstep. Additionally, Apple is unlikely to port its APIs elsewhere (i.e. to other environments) so GNUstep will be necessary to fill this gap.

Busy week

Verizon really needs to care more about it's customers. My DSL went down on Sunday morning at 1:30AM and stayed down until yesterday. It has been intermittent since then. While it seems solid now, the experience has shaken my confidence on Verizon greatly.

I'm wondering if it might not be time to switch to a cable modem.

Monday, May 30, 2005

The Trip To Massanutten

It wasn't all that bad. I really need to go down there more often. I take back some of the things in my previous posting. The kids had a great deal of fun playing with both my brother's kids and David's kids. We should get them together more often.

Friday, May 27, 2005

Family Dilemma

We found out a month ago that my Uncle has stage four cancer. Bummer. He's my favorite uncle. I have yet to really deal with the fact that he's sick because he looks okay to me.

Also, I need to work from home today to finish some things, so it makes packing a pain.

Foundation is now close to Catalina compatibility

I have worked hard to get it to this point, but all of the classes in Catalina are now present in GNUstep's base implementation. Soon, ...