Friday, May 27, 2005  

I took the "What Video Game Charater am I?" quiz and it said I am a Light Cycle, which is cool since I really like the movie Tron. However it also said that if I am not a Light Cycle then I'm an Asteroid. This is also also cool to me. I remember staying at my cousin's house once and playing a single game of asteriods for 18 hours straight. We took shifts to keep the game going.

So which am I, a Light Cycle or an Asteroid?


What Video Game Character Are You? I am a Light Cycle.I am a Light Cycle.


I drive fast, I turn fast, I do everything fast. I even breakfast. I tend to confuse people with my sudden changes of heart. Sometimes I even confuse myself, which tends to cause problems. What Video Game Character Are You?



What Video Game Character Are You? I am an Asteroid.I am an Asteroid.


I am a drifter. I go where life leads, which makes me usually a very calm and content sort of person. That or thoroughly apathetic. Usually I keep on doing whatever I'm doing, and it takes something special to make me change my mind. What Video Game Character Are You?

posted by Kirby Turner | May 27 08:09 AM | comments (3)
 

Early this week Microsoft was granted a patent on their approach to serializing an object to XML. While I can see how XmlSerialization provided by the .NET Framework is unique, I have mixed emotions about the patent. For instance, XmlSerialization is probably my number one favorite feature in the .NET Framework. I find I use it all the time. But I now also spend a lot of development time in Delphi writing a Win32 application and I have thought about ways to implement a similar Xml serialization feature based on RTTI.

My concern with such a patent is that it might discourage other developers from inventing a form of Xml serialization for a different environment such as Delphi that is as flexible and easy-to-use as .NET XmlSerialization. Put another way, if Borland decided to implement a way to store metadata about a class structure for a Win32 target and a developer used this metadata to provide a mechanism to map the object shape into an Xml schema as defined by the metadata and serialize the object into an Xml document based on that schema, would that be a violation of Microsoft's XmlSerialization Patent?

Also, how does such a patent effect open source efforts such as Mono? If someday Mono is widely adapted will Microsoft want to charge developers for the use of XmlSerialization in applications using the Mono framework?

I don't know the answers to my questions, and as I said I have mixed emotions about the patent. On one hand, I see how it is a unique technique for serializing objects to Xml. On the other hand, I fear it will limit or completely eliminate a similar approach in other development environments.

posted by Kirby Turner | May 27 07:58 AM | comments (2)


Wednesday, May 25, 2005  

From the Microsoft site:

What's even better than reading about the latest E3 news and games? Seeing it! Here's your one-stop destination for video coverage of the biggest gaming event of the year - straight from E3 to you.

Click here to see the videos.

posted by Kirby Turner | May 25 02:33 PM | comments (2)


Tuesday, May 24, 2005  

Knowing when to use a 3rd party component is a key to developing a software product. The use of a 3rd party component can save count hours and allow your developers to focus on the core product. However, the selection of the wrong component can cause many headaches and cut into developer productivity.

At White Peak Software, we put each component under consideration through a series of tests. Among the things we do, we write sample applications using the component to make sure it does what we need. And we will combine its use with other components we use to ensure no conflict.

Part of the goal in doing this is to ensure that the component is easy to use. If it takes more than a few minutes to start using the component then it is not the component for us. For instance, I recently purchased an XML parser for Delphi called NativeXml. This component not only did what I needed but I was able to start using it minutes after reading through the documentation. [Yes, I prefer reading through documentation before using something.] Using NativeXml, I wrote a sample application that reads language translation files stored in XML, parses the XML, and builds a resource model that is used to set static text to the appropriate translated value. I bought the component as soon as I finished the sample application and I am now using it in a real application.

When looking at 3rd party components, be sure to consider the following:

posted by Kirby Turner | May 24 04:39 PM | comments (0)
 

I was asked to look at my sister-in-law's PC over the weekend. Apparently it was having problems. I typically avoid helping others with their PC problems but thought I would since she and her boyfriend were great hosts.

Somehow a nasty, little virus-like program was installed on her PC. I tracked down the source of the problem to the winik.sys, which isn't in fact a Microsoft driver. This little puppy loads other programs that appear to be tracking activity on the PC and reporting information out to somewhere.

The simple solution to the problem: delete the winik.sys file along with the directory of other programs it launches and clean up the registry. Unfortunately the winik.sys loads as a driver and cannot be deleted while Windows is running. No big deal I thought. I would just boot up into a different OS and manually delete the files. This turned out to be harder than I thought. And harder then it should have been.

Not having any "tools" with me, I decided I would boot up in safe mode with a command prompt. Unfortunately this still loads the winik.sys driver. Note that my sister-in-law is running an OEM version of Windows XP Home without any updates on it...no service packs, etc. When this attempt failed, I created a DOS bootable disk from Windows. I booted up the computer from the disk and to my surprised learned that the version of DOS I was running did not recognize NTFS.

I tried using the OEM recovery disc, but that didn't help either.

My next thought was to use Linux. I found a list of floppy based distributions, but to my surprise none of the distributions I tried supported NTFS. After spending hours trying to find ways to read an NTFS volume from another OS, I finally had to give up. After all, I needed to get on the road and head back to NYC.

I did learn a lot from the exercise even though I wasn't able to remove the file from the PC. For instance,

1) Sysinternals has a NTFSDOS utility that will mount NTFS volumes and provide read/write access from DOS. Unfortunately the freeware version is read access only so it didn't help me solve the problem. And I didn't want to buy the Administration Pack just for this one problem.

2) While the idea of a Linux distribution on a floppy is cool, there are limits to what you can do. I realized I need to know more about Linux and possibly make my own distribution that would allow me to help family and friends clean up infected machines. But I'll never take the time to make a floppy distribution.

3) I should buy this t-shirt.

posted by Kirby Turner | May 24 09:48 AM | comments (7)


Wednesday, May 18, 2005  

Looking to change the label caption in the DevExpress ExpressScheduler? It is as simple as setting the resource string for the label caption. Here's the code snippet and a screen shot of the changed label.


// Delphi
uses
cxClasses,
cxSchedulerStrs;

procedure TForm1.FormCreate(Sender: TObject);
begin
cxSetResourceString(sEventLabelCaptions[3],'Money Maker');
end;


Click image to enlarge.

posted by Kirby Turner | May 18 11:35 AM | comments (0)
 

I had no idea that Nintendo opened a store in Manhattan called Nintendo World. I've been thinking about buying a couple of new Gameboy titles. Maybe it's time for a visit.

posted by Kirby Turner | May 18 10:37 AM | comments (0)


Tuesday, May 17, 2005  

Something I didn't realize until today is that ASP.NET does not generate proper HTML 4.0-compliant code for certain modern, non-Microsoft browsers such as FireFox and Safari. For instance setting the width property of an will not render the style attribute needed to set the control width in FireFox. The problem is easily fixed by including the section in your web.config or machine.config with the appropriate user agent pattern for the particular browser or browsers.

The guys at 4GuysFromRolla.com have a nice article explaining this in more details. The article also includes a sample section that you can copy|paste into your .config file that supports GECKO (Netscape 6.0+, Mozilla/Firefox, ...) and AppleWebKit (Safari, ...) based browsers.

posted by Kirby Turner | May 17 11:40 AM | comments (1)
 

If you haven't heard, NewsGator acquires FeedDemon, TopStyle, and Nick Bradbury. I have been a huge fan of Nick's products dating back to the first release of HomeSite many, many years ago. And I now use FeedDemon on a daily basis.

Nick has been some what of a role model for many developers and micro-ISVs including me. As I take steps towards producing my own product I am borrowing from tips I have learned from watching Nick grow a successful micro-ISV. While I am a long way away from reaching the level of success Nick has achieved, I can't help but wonder if I could allow myself to be acquired.

When I say this, I'm not saying I would not consider selling rights to my product to a larger company. Actually that might be the only way I can fulfill the full vision I have for my product. What I'm saying, though, is I wonder if I would go to work for a company that acquires my product. This is exactly what Nick has done with the acquisition of FeedDemon and TopStyle. He will be the Architect of Client Products for NewsGator.

My problem with this is I believe you give up certain freedoms when you work for a larger company as compared to running your own shop. A hint of this can be seen in the Q&A between Nick Bradbury and NewsGator found Greg Reinacker.


Q: Is Nick going to work for NewsGator? Is he moving to Denver? What will his role be?

Greg: Nick is indeed coming to work for NewsGator, as Architect of Client Products. I'm personally very excited to add Nick's vision and expertise to our company. He'll continue to work on FeedDemon, but will also add his considerable expertise to our product and platform strategy moving forward. Some of his focuses, other than FeedDemon, will be on user interface and interaction design across the platform, and some of the rich media development we're working on. And I think he's moving to Denver.

Nick: Umm, no, I'm not actually moving.

Greg: Oh. There I go again - heh. Ok, Nick's not moving...but he'll be spending a lot of time with our team in Denver moving forward, and as I said, we're all looking forward to working closely with him.

But this process if nothing new for Nick. When HomeSite was acquired so was Nick, and I'm sure he learned a lot from that experience. In the same Q&A mentioned above, Nick says:

Look, I can't predict the future, and I certainly couldn't have predicted that HomeSite would be acquired by companies that weren't sure what to do with it. But I don't sell my products just to see them wither and die. If anything, this acquisition breathes new life into my software - let's face it, there's a limit to what a one-man company can do, and I reached that limit a long time ago!

For at least the past year, I've spent far more time doing support, marketing and sales than I have doing actual design and development. Joining forces with NewsGator enables me to focus more on development again, and I'm really excited by that.

I hope he is able to stay in Tennessee and focus on development again. I hope a repeat of HomeSite does not happen. But regardless of what will happen I have to offer a big congratulations to Nick. He continues to achieve what most others only dream about.

posted by Kirby Turner | May 17 10:20 AM | comments (0)


Monday, May 16, 2005  

Recently I downloaded Trillian Basic 3.1 and noticed it was interfering with hotkeys I commonly use in other applications. Settings for Trillian hotkeys can be found in Trillian Preferences | Advanced Preferences | Automation. Note you may need to scroll down to see the hotkeys.

Even though I un-checked the Trillian hotkeys, they were still interfering with my other application. I found the only way to stop the interference was to delete the hotkeys from Trillian. After doing so I had to exit Trillian and re-launch it for the changes to take effect. And now I am able to happily use specific hotkeys in other applications.
Disable Trillian Hotkeys
Recently I downloaded Trillian Basic 3.1 and noticed it was interfering with hotkeys I commonly use in other applications. Settings for Trillian hotkeys can be found in Trillian Preferences | Advanced Preferences | Automation. Note you may need to scroll down to see the hotkeys.

Even though I un-checked the Trillian hotkeys, they were still interfering with my other application. I found the only way to stop the interference was to delete the hotkeys from Trillian. After doing so I had to exit Trillian and re-launch it for the changes to take effect. And now I am able to happily use specific hotkeys in other applications.

posted by Kirby Turner | May 16 06:59 AM | comments (0)


Saturday, May 14, 2005  

The new Xbox 360 looks sweet. I can't wait until it is release. I believe it will be available by the end of the year in time for the holiday season.

posted by Kirby Turner | May 14 01:30 PM | comments (2)


Friday, May 13, 2005  

Share your feedback on Delphi with Borland's latest Delphi Poll.

posted by Kirby Turner | May 13 01:13 PM | comments (1)


Wednesday, May 04, 2005  

After taking a break from the laptop I was able to get a much better handle on interfaces in Delphi. And I was able to implement the design I wanted. It's not as slick as in C# but it works. And the code is readable, which is important to me.

I was returning a TObject when I should have been returning IInterface. After seeing the code it makes sense to me why my use of TObject was causing problems, and why I was trying to cast an interface from an object, which now I see was not needed.

posted by Kirby Turner | May 4 08:18 PM | comments (1)
 

I recently posted a list of Delphi key bindings. I discovered most of the bindings through trial and error or by inspecting the various menus. I had originally I searched the help file and browsed the help file index but I couldn't find the list of key binding. I never thought to look under the contents. I figure if I can't find it in the index or search it must not exist. But it does. I think I need to spend more time browsing the help file through the content tab and not rely so much on index and search.

posted by Kirby Turner | May 4 07:40 PM | comments (2)
 

The way interfaces work in Delphi for Win32 stinks. From what I have read it seems that interfaces were forced in to work with COM. But even if you are not using COM, interfaces imposes COM like behaviors such as ref counts and interfaces must have a GUID. But what really ticks me off is that you cannot cast an interface to an object.

For years I have abstracted framework and application features through interfaces. Now I can't use them and it means I have to change the way I think. This limitation, which I wish I knew about 2 months ago, makes me think I should have used C# for my app.

In the end, I will be happy with my selection of Delphi. But I'm a bit ticked off at it for the moment.

For those using Delphi for .NET, this will not be a problem. Interfaces work the way you would expect, and you can cast objects to interfaces and interfaces to objects.

posted by Kirby Turner | May 4 06:45 PM | comments (2)


Tuesday, May 03, 2005  

For over a year I have been running my primary development environment in a guest OS using VMWare Workstation 4.x. I run in full screen mode and I don't even notice that I am running under a guest OS.

Tonight I installed the new VMWare Workstation 5.0. I haven't run it through the ringer yet but I like what I see so far. Guest OS seem to run faster and network communication is definitely much faster. The old virtual NIC was only a 10mbps. The new one is 1gbps, which is noticeably faster. Although I haven't played with it, I'm excited about the multiple snapshots feature. There's also a new clone feature that I need to read up on. In my opinion existing 4.x users will want to upgrade to 5.0.

posted by Kirby Turner | May 3 09:24 PM | comments (0)
 

I was wondering how does Trillian select words and phrases for Wikipedia look ups?

posted by Kirby Turner | May 3 01:17 PM | comments (0)
 

After being off of IM for the last few weeks, I finally got around to re-installing Trillian. (I still had not installed it after my last hard drive crash.) I was happy to see a new version since I had been running my registered copy of Trillian Pro 2.x for the last few years.

The new version includes a Wikipedia feature. It will display the Wikipedia description when you mouse over certain works and phrases. But it's not perfect.

I mentioned a buddy of name Shawn Murphy. To my surprise there was a Wikipedia desription for have name. "Shawn Murphy (born July 27, 1951 in Charlottetown, Prince Edward Island) is a Canadian politician. Murphy is a current member of the Liberal Party of Canada in the Canadian House of Commons,..." I'm not sure way but I found this to be funny.

The Wikipedia feature is a neat idea, but I'm not sure how useful it will be for me.

posted by Kirby Turner | May 3 11:44 AM | comments (0)
 

Going back to a programming language that you have not touched in years is hard. Syntax is easy, it comes back quickly. But trying to remember all the details, runtime library calls, and so on can be a real brain buster. And add to that that Delphi has had many improvements since 2000 in its VCL and runtime library.

It's funny how knowledge will leak from your brain when the knowledge hasn't been referenced in years. It's like opening a jar of whatever that hasn't been opened in years only to find that much of the content has evaporated.

posted by Kirby Turner | May 3 09:09 AM | comments (0)


Monday, May 02, 2005  

I have started work on the application framework for Vertigo. Well sort of. [Vertigo is the code name for the product I have mentioned a couple of times over the last week.] I have a very nice framework implemented in C# that has evolved over the years, but Vertigo is being written in Delphi. And now I face the hardest part...starting with an empty palette.

The last time I did any real work in Delphi was 2000. At that time starting work on a new project was second nature to me. In 2001 I decided that C# would be my development language of choice. I started with an empty palette at that time too and felt much like I do today.

Today it's not Delphi that is second nature to me but C#. When I start a new project in C# I know exactly how I want to structure the solution file. I setup my NAnt templates for automated builds, partition the code across multiple projects, typically by tiers, create my NUnit test project, and reference my existing code library already compiled as an assembly. But today I feel like I don't know where to begin.

Should I start setting up custom VCLs for reusable code? Should I create a project group with just 2 projects, one for Vertigo and the other for DUnit unit tests? And how do I structure the Vertigo project? Should I place interface declarations in one directory and implementations in other directory? And what part should I start writing first, the translation manager, message stores, pieces of the low-level framework, or the application framework for the presentation?

I have completed the design of certain areas of the application. I have captured product requirements which have been logged to FogBugz. I just need to get over this programmer's block.

Update: The blog entry did the trick for me. Programmer's block is over.

posted by Kirby Turner | May 2 06:56 PM | comments (0)


Sunday, May 01, 2005  

Robert Scoble and Steve Rubel are organizing an NYC Geek Dinner Night for Monday, May 2. Details can be found here. I'm thinking about going.

Update: I'm not going to make the geek dinner tonight. I'm working on an application framework for Vertigo.

posted by Kirby Turner | May 1 02:42 PM | comments (0)
Copyright © 1999-2009 Kirby Turner.
Site software written by White Peak Software Inc, a provider of custom software and software development coaching.