Wednesday, June 29, 2005  

I discovered this great site covering the basics of Delphi, perfect for those new to Delphi or those looking for a refresher.

posted by Kirby | June 29 04:57 PM | comments (4)
 

David I posted a blog about the upcoming 24 Hour Delphi event on BDN Radio scheduled for July 13. This should be an interesting Internet radio broadcast.

posted by Kirby | June 29 03:30 PM | comments (1)
 

I sometime find cell phones a pain. For example, it's next to impossible to hold a modern cell phones up to your ear using your shoulder. Sure, you can use a headset but I can't count the number of times I have disconnected a call while trying to connect my headset and talk at the same time. Okay, so it's less than 5 times but still...

The folks at at Spark Fun Electronics have come up with what I believe is the first portable rotary phone, and this puppy can be yours for a little as $399. Not sure if the portable rotary phone is right for you? Well, here's a review that might help you decide.

posted by Kirby | June 29 03:19 PM | comments (0)
 

It's been 48 hours since I changed e-mail to email and the winner is "email". It seems the google will search for both "e-mail" and "email" when "email" is used in the search string. However, it will only search for "e-mail" when "e-mail" is used in the search string. Based on this I will stop using the dash when I write the word email.

On a related note, I found google has index the wrong page on my site when searching the phrase "Masking Addresses to Prevent Email Harvesting". It has indexed the page www.whitepeaksoftware.com/blog.aspx?xml/2005_06_01_archive.xml but I assumed it would have indexed the page http://www.whitepeaksoftware.com/archive/2005/06/25/masking_addresses_to_prevent_email_harvesting.aspx. Go figure.

Also, I wonder how google will index my blog entries given that each entry is available from thecave.com and whitepeaksoftware.com. Time will tell.

posted by Kirby | June 29 11:27 AM | comments (2)


Monday, June 27, 2005  

I had to make another change to the blog item permlinks for this site. I realized a URL like http://www.thecave.com/2005/06/23/office_pranks.aspx would cause problems in the future. I needed a way to identify the purpose of the permlink so I added archive/ before the year. The new permlink structure look like this:

http://www.thecave.com/archive/yyyy/mm/dd/blog_item_title.aspx

yyyy is the four digit year, mm is the two digit month, and dd is the two digit day. Including "archive" to the URL structure will give me more flexibility to use yyyy/mm/dd/ is other virtual URLs.

On a related note, I completed the monthly archive URL mapping. The structure is as follows:

http://www.thecave.com/archive/yyyy/mm.aspx

This makes it easy to enter the URL for any month on the blog. For example, http://www.thecave.com/archive/2005/06.aspx.

posted by Kirby | June 27 02:20 PM | comments (0)
 

I remember having a conversation with a friend of mine 10 years ago about "e-mail" versus "email". Should the dash be used or not? I don't remember how we arrived to a conclusion but I do remember we concluded that "e-mail" was the appropriate spelling. But is that correct?

I did a google search on "Masking Addresses to Prevent E-mail Harvesting", the title of a recent blog posting. I did this to see if my web site had been index based on this phrase. It was and it was fourth from the top on the first page of hits. However, google being the smart one it is asked "Did you mean: Masking Addresses to Prevent Email Harvesting". Notice there is no dash in the word "email".

My site does not appear on the first page when searching google using the phrase without the dash in the word "e-mail". As a matter of fact my site does not come up on any of the first 10 pages. I stopped looking after ten pages but I bet it is safe to assume my site doesn't show up at all on that search phrase.

Being the curious type that I am, I decided to remove the dash from the title and text of that blog item. I'll give it 24 to 48 hours before checking google to see the effect.

posted by Kirby | June 27 04:33 AM | comments (0)
 

The Federal Trade Commission published a report on e-mail harvesting. Investigators seeded 175 different locations with 250 new e-mail addresses to see what would happen. Over 3,000 spam messages were received during the first six weeks. The investigators found:Based on the findings in this report, my trick of masking e-mail addresses on my web sites should definitely help prevent future harvesting of my addresses.

posted by Kirby | June 27 04:23 AM | comments (0)


Saturday, June 25, 2005  

Email harvesting is a technique used by spammers to find email addresses published on web sites. Spiders crawl the net looking for text that looks like email addresses (ex: somename@somedomain.com).

For years I have published my email address on my web sites to make it easier for people to contact me. And as expected, over the years the amount of spam mail I receive has grown. I received around 600 to 700 spam mails a day. Luckily I have several layers of spam filtering enabled so less than 5% of spam makes it to my Inbox. But today I decided I would attempt to reduce the amount of spam I receive by masking my email address.

As I mentioned spammers harvest email addresses by searching the Internet for text that matches an email pattern. By masking an email address the spammer will have a tougher time determining if the content is in fact an email address. So how do you mask an email address?

You can use JavaScript to mask an email address. For example, instead of including your email address as plain text in the HTML convert each character of your email address into the appropriate ASCII value and display the ASCII value string using document.write as shown below.

<script language='JavaScript' type='text/javascript'> <!--
document.write('&#107&#105&#114&#98&#121&#64&#116&#104&#101&#99&#97&#118&#101&#46&#99&#111&#109');
// --> </script>
Of course doing this each time can be a pain. A better approach is to use server-side scripting that will mask the email address for you. That's exactly what I did for my web site using the following C# code:

public string MaskedEmail( string email )
{
string masked = MaskedStringFromString(email);
string javascript = @"
<script language='JavaScript' type='text/javascript'> <!--
document.write('{0}');
// --> </script>";

return String.Format( javascript, masked );
}

public string MaskedMailToLink( string email, string text )
{
return MaskedMailToLink( email, text, String.Empty );
}

public string MaskedMailToLink( string email, string text, string additionalAttributes )
{
string maskedEmail = MaskedStringFromString("mailto:" + email);
string maskedText = MaskedStringFromString(text);
string encodedAttr = additionalAttributes.Replace("'",@"\'");
string javascript = @"
<script language='JavaScript' type='text/javascript'> <!--
document.write('<a href=\'{0}\' {1}>{2}</a>');
// --> </script>";

return String.Format( javascript, maskedEmail, encodedAttr, maskedText );
}

public string MaskedStringFromString(string value)
{
string masked = string.Empty;
for( int i=0; i < value.Length; i++)
{
masked += String.Format( "&#{0}", Convert.ToByte(value[i]) );
}
return masked;
}
When I display an email address I mask it by calling the MaskedEmail method. And I use MaskedMailToLink for those times when I want to include a mailto link. You can see this in action on the contact us page for White Peak Software.

posted by Kirby | June 25 10:53 AM | comments (3)


Friday, June 24, 2005  

I decided last night to make some enhancements to blog engine I wrote for this web site. That was around 7:30 pm. At 5:30 am I decided it was time to go to bed. I did roll out the changes but there's more work to be done. And I know there are some problems too. For example melanieandkirby.com is displaying the wrong blog.

The most notable change is the new permlink for my blog entries. The old permlink, which are still valid, used a blog item ID as part of the query string. While functional it wasn't very descriptive and not well liked by search engines like Goggle.

The new permlink uses a better structure consisting of the posting date and title. For example, the permlink for my last posting is http://www.thecave.com/archive/2005/06/23/office_pranks.aspx. As you can see the link includes the publish date followed by the title of the post. For older blog items that do not have a title the blog item id is used.

The other notable change is the blog item page itself, which is a new feature. Before you could only see the blog item on a page listing other items from that month. Now the blog item displays on its own page with the comments below. At last you can see both the post and its comments from the same page. This is a feature I have wanted implemented for a long time.

I still need to migrate the archives to the new permlink structure. For example, http://www.thecave.com/archive/2005/06/ should display all the blog items for the month of June 2005. Also I discovered that the links in the rss file are invalid, which will be fixed soon.

So why did I make the change? Simple, I want to make the site more appealing to search engines and hopefully increase my Google ranking. The blog item is now optimized by the title, which will make it easier to find specific blog items through Google and other search engines. There still many more things that need to happen to make the pages more appealing to search engines but this is a start.

One side note, all previous permlinks are still valid. As a matter of fact, the data store containing the blog items remains unchanged. I wrote an HttpHandler to map the permlinks to the correct page content. This mapping allows the site to support both the old and new permlinks.

posted by Kirby | June 24 11:31 AM | comments (2)


Thursday, June 23, 2005  

Channel 9 has a video of Larry Osterman talking about some great pranks that have occurred over the years at Microsoft. My favorites include erasing an office and laying turf in an office.

posted by Kirby | June 23 04:12 PM | comments (0)
 

Microsoft's Michael Howard and others have started a wiki on Least-privileged User Account (LUA) security. Last year I tried running under LUA but found I needed administration privilege for many things, from installing software to writing code. Needless to say I gave up on my quest to use LUA daily. But with more information available today such as the nonadmin wiki I think it time for me to try again. Besides, I want to guarantee that my software installs and runs without a problem under least-privileged user accounts.

posted by Kirby | June 23 02:19 PM | comments (0)


Monday, June 20, 2005  

Last week I asked a few friends to send me feedback on SMTP Diagnostics. I've made good progress on the program since that time and I hope to have the first release available to the public within the next few of weeks.

Today my focus was improving the user interface. I was able to eliminate the tab control across the top, which I never really liked. The new interface also has a web look to it that I think improves the overall look. Take a look at the improvements made and let me know what you think.

Old user interface versus new user interface.

posted by Kirby | June 20 11:00 PM | comments (4)


Wednesday, June 15, 2005  

I'm putting the finishing touches on White Peak's first product called SMTP Diagnostics. The product does exactly what the name implies. It helps diagnose problems that can occur when sending e-mail through an SMTP server. But this last bit of work is proving to be time consuming.

I need to setup the product web page. I need to draft the EULA. I need to install and setup forum software, which will be used to offer community support for SMTP Diagnostics. I have to create the installer and publish a PAD file. Then there's marketing.

I need sign up with a reseller. I need to include marketing techniques in the application, and I need to setup an online store where people will hopefully buy licenses. Whew, the list goes on.

Good news is that once I have finished I'll be able to reuse much of the infrastructure for new products.

posted by Kirby | June 15 12:27 PM | comments (0)


Tuesday, June 14, 2005  

I'm back in New York City where the temperature is higher then in Atlanta. It feels like it is going to be a long, hot summer in the city. Anyway...

My return flight gave me time to reflect on the ICCA National Conference I attended over the weekend. I realized how important professional development in the area of business is for a computer geek like me.

When I started my company I believed I knew enough to run a successful company. After all, I have been in the industry for 20 years and I know software development. I've been told repeatedly by my peers that I'm in the top percentage of software developers, and I feel I have some unique qualities that allow me to exceed client expectations.

This was the confidence I needed to get my company going. I thought, "I know and understand software development and therefore the clients will come." However, I missed some very important points such as having a focus, knowing how to sell and market, and how to grow a business.

Events, like the one this past weekend, prove to be invaluable to me. Like many other computer geeks I spent the majority of my career learning technology while ignoring the business side of the industry, but understanding the business side is so important especially to a computer geek wishing to go independent, whether you are building a consulting practice or going to be an ISV.

To be successful in the software industry requires more skills than slinging high quality code. An ISV can produce the best application in the world but that application will not make a dime if it is not marketed correctly. A consultant may know how to solve the most complex problems in a given industry but that individual will never find the right gigs without knowing how to sell his or her services or how to find and engage the right clients.

Point is a computer geek owning a business must understand the principals of running a business and how to succeed in that business. This is equally as important if not more important as the quality of the work produced.

I made a conscious decision last year to study more on business related topics. My book case, which was once full of technology books, is now packed with books covering marketing, accounting, selling, and other small business topics. I have replaced attending technology events like TechEd and PDC with business related events like the ICCA National Conference.

I still have much more to learn. Heck, it took me 20 years to get where I am at with regard to software development and it will probably take me another 20 years to reach that same level of confidence in business.

If you are considering breaking away from the traditional software development job to pursue independence, I highly recommend reading the following business books:

The E-Myth Revisited

Guerrilla Marketing in 30 Days

Good to Great: Why Some Companies Make the Leap...and Others Don't

And many of the books written by Alan Weiss including Getting Started in Consulting, Second Edition.

I also recommend joining a trade organization like ICCA and ASP.

posted by Kirby | June 14 03:03 PM | comments (0)


Saturday, June 11, 2005  

More Baby Noah pictures are available in the gallery.

posted by Kirby | June 11 06:36 PM | comments (0)
 

Earlier today I joked about the lack of jeans and t-shirts at a business related conference. But the ICCA National Conference does have something unique about it. Although everyone here works with computers and many are programmers, the conversations and event topics center around business. There are discussions on improving your marketing strategy, determining the price point, and tricks to grow your business. But today's talk on creating a strategic plan for your business really hit home with me.

The speaker provider great information on creating a strategic plan and he provided a nice template to follow.

Define your goals - What do you want to achieve? What is the big picture outcome?

For each goal, define the objectives - What are 3 to 5 major measurable accomplishments that need to happen during the planning period?

Define the strategies - What core strategies are needed to attain the objective?

And lastly, define the actions - What could we/should we do to deliver on the strategies?

This got me thinking about my current goal for White Peak Software, and after some dialog with a fellow attendee I came up with the start of my strategic plan.

Goal:
Establish White Peak Software as a Micro-ISV

Objectives:
Release one new product by the end of 2005
Setup e-commerce and support infrastructure
Attract interest in White Peak Software

Strategies:
Product Release Strategy
Marketing Strategy

Actions:
To be determined

Obliviously I am not going to spend all day blogging my strategic plan. After all, the conference is still going on and the next session is about to start. My point, however, is that this conference provides a unique opportunity for computer geeks like to me to expand my mind and learn more about running a business.

posted by Kirby | June 11 06:27 PM | comments (0)
 

I'm spending the weekend in Atlanta at my first business related conference. Conferences I have attended in the past were technology related such as the Borland Developer Conference and Microsoft PDC so I wasn't sure what to expect.

I definitely see a difference beyond the topics at this conference compared to the developer conferences I've attended in the past. For one, attendees at a business conference tend to dress better than the t-shirt and jeans geek crowd of dev cons. Another difference is the ease of networking. It is very easy to approach people at the event. I have already met a number of people, which makes the event more enjoyable. It's comforting feeling like you are surrounded by friends.

posted by Kirby | June 11 09:56 AM | comments (0)


Friday, June 10, 2005  

I purchased a pricy set of components today, or at least I tried. The browser window timed out during the final processing of the order. The problem is I do not know if the order went through or not.

I sent an email to the company's support and sales addresses but I haven't heard anything back yet. I find this very annoying. At a minimum I would expect an auto-responder that sends a return email saying something like "We value you business. We will respond to your request as soon as possible." It's been 40 minutes now with no response. Obviously the vendor does not use an auto-responder.

An auto-responder is a simple use of technology that I believe all companies selling products on the Internet should use. Heck my own company, White Peak Software, has the capability enabled to provide immediate response to client requests. It amazes me that a successful component vendor who has been in business for years does provide the simplest of services to its customers.

All is not lost though. I have learned a valuable lesson from the experience.

1) Auto-responders can be very powerful and provide assurance to customers.
2) Vendors should provide detailed information about what to expect from an online ordering experience.

This second point is very important to me as I prepare to start selling products. I definitely plan to publish a web page that explains the order process to customers. This will tell my customers what to expect and what to do should something go wrong.

posted by Kirby | June 10 06:53 PM | comments (1)


Thursday, June 09, 2005  

I am preparing the first beta release of a new application that is used for diagnosing problems with SMTP. The program allows the user to test account settings against an SMTP server by sending a test message.

I have been testing the program from various locations including the hotel here in Atlanta. I was surprised to see that the network here redirects SMTP requests to its own SMTP server which relays the message to the appropriate destination. No wonder laptop users have problems with email. The experience behind the scenes can be different based on the network and the user may never know.


Click image to enlarge.

posted by Kirby | June 9 10:19 PM | comments (5)
 

I will be out of the office for the next few days. I'm heading to Atlanta today, where the temperature is actually cooler right now then in NYC, to attend the ICCA National Conference. I'm looking forward to a number of the keynotes and sessions including Guerrilla Marketing in 30 Days and Building Sales by Showing Up on Top in Google.

posted by Kirby | June 9 08:40 AM | comments (2)


Tuesday, June 07, 2005  

Here's an interesting look at the time line of Delphi and Pascal for that matter. For the two readers out there who I know are wondering, I wrote my first line of Pascal code in the fall of 1984.

posted by Kirby | June 7 04:10 PM | comments (4)
 

Over the past few months I have come across various blog posting where a developer will say something like "I can't see myself as a developer in 20 years" or "I can't see myself writing code until I retire." I on the other hand can't imagine a time when I will not want to write code and develop software. I've done this for 20+ years and I'm hoping for another 20+ years.

Don't get me wrong. I'm not saying I want to sit behind the keyboard every day for the rest of my life. After all, I still enjoy my time riding snow covered slopes. But I do see myself writing code well into my retirement years. For me the trick is keeping the work exciting and fresh.

When I start getting bored I find new ways to liven things up. For instance, over the years I have switched languages a number of times. I was a BASIC/PASCAL developer in the 80's then I switched to C/C++. A few years later I switched to VB followed by Delphi followed by Java. ASP and a return to VB followed which was later replaced with C# and the .NET Framework. And today I am writing Win32 code using Delphi.

Other ways to make software development fresh again is to pursue new areas of interest. Instead of writing yet another web-based application, find a project that allows you to write a desktop application. If you have been doing in-house development for years consider a move to an ISV. I personally find commercial software development is a different experience and worlds apart from enterprise, in-house development.

Other ways to keep software development fresh that have worked for me:

posted by Kirby | June 7 03:34 PM | comments (2)


Sunday, June 05, 2005  

On Friday I was working remotely in the Philadelphia area. This is one of the freedoms of my job that I enjoy...working from anywhere in the world. However, working from another office or even someone else's home is not quite the same as working from my office.

While many people these days have broadband Internet access through cable modems and DSL, not everyone has a wireless access point. So I tend to be confined to a single room when I need Internet access. Friday was one of those days.

I worked in one room which has more comfortable seating but was disconnected from the Internet. When I needed an Internet connection, I would move to the room with the cable modem and hub. By the end of the day I was becoming frustrated moving between rooms. But I solved the problem by the end of the day.


I headed to BestBuy and bought an AirPort Express. Designed to allow users to play music wirelessly from iTunes to their stereos, it also acts as a wireless USB print server and a wireless access point. But what really makes this a great device is the size. The device is very small and has no bulky power supply or cables. All you need to setup the wireless access point is a patch cable, which I already carry for me on road trip.

Whether I am in a hotel that only offers wired Internet access or a friend's house with a broadband connection, I can now be guaranteed wireless access.

posted by Kirby | June 5 10:29 AM | comments (3)


Thursday, June 02, 2005  

Regrettably I need to take a sick day today. I have been feeling under the weather all week and I have been running a high fever since yesterday afternoon. I'm going to spend the day resting to get over this bug.

I will try to return all calls and e-mails by the end of the day or by tomorrow morning at the latest.

posted by Kirby | June 2 06:18 AM | comments (0)
Copyright © 1999-2008 Kirby Turner.
Site software written by White Peak Software Inc, a provider of custom software and software development coaching.