Thursday, December 30, 2004

Tsunami relief fund

Amazon Honor SystemClick Here to PayLearn More Generally I try to keep my posts here specific to software developers. I actually heard about the Tsunami a few days ago, but wasn't sure what I could do about it. I finally decided this is the kind of news that is relevant to everyone who is human. If you haven't already heard, they are estimating that around 120,000 people in India, Asia and the surrounding area have lost their lives as a result of a Tsunami that was caused by a level 9.0 earthquake.

The Red Cross has setup a relief fund that they taking donations for. Amazon has put together a donation button that allows you do donate directly to Red Cross. Brian Sullivan's has adopted that code so that it can be easily posted to a blog. I am now passing the opportunity to you so that you may make a difference by donating now.

Monday, December 27, 2004

How Dedicated are You?

As software developers I believe we are all dedicated to our projects. Personally I consider any code I write as a personal artistic expression that contains a bit of me when I am done. I don't know that I have been as dedicated to a project as Ron Avitzur as described in his "The Graphing Calculator Story"

This is the story of how one programmer, originally working as a contractor, took a project that was canceled, and saw it through to a shipping project. It is a riot to read, and will really make you think about what it means to be dedicated to a project.

Diabold Continues to Run NT4 as Support Ends

Diebold, a company who should want its name to be synonymous with security and maintained technology, was pointed out to still be running the eight year old Windows NT 4 Server as Microsoft prepares to end support for the operating system effective December 31st, 2004. If you are not familiar with Diebold, they make ATM equipment for banks, and recently ventured into electronic voting equipment. With all the negative reaction from their voting equipment it really makes me think twice about using one of their ATM's again.

Update: As Jake pointed out, it is Diebold, not Diabold. I guess I had bought into the diabolical image projected on them by all the folks out on Slashdot. I can't update the post title or Blogger will move the page since that is what makes the post page name.

Charlie Calvert's Favorite Software of 2004

Charlie Calvert published his favorite software of 2004. I love lists so I thought I would pass his list on to you.

  1. Firefox 1.0
  2. Plone 2.0
  3. Mono 1.0
  4. Fedora Core 3
  5. Visual SlickEdit 9.0
  6. JEdit
  7. Delphi 2005
  8. Dreamweaver 2004
  9. OpenOffice

Read his opinion piece for the details and his reasons. He also lists some favorite hardware.

Personally I would rate Firefox 1.0 way up there as well. It is a great browser. I haven't really used many of the other items on the list, with the notable exception of Delphi 2005 and Open Office.

Delphi which is a truly amazing development tool, and this version really shines. Open Office is a great productivity package. It is a leap ahead of any other development tool I have seen. Use it for a little while and you will have a hard time using other tools.

Even when I have MS Office installed I find myself still using Open Office instead. It is too bad they made it so much like MS Office. That was the downfall of Word Perfect as well. They almost need a version for MS Office drones and a version for people who want to be productive.

Others I would add to the list:

  1. GAIM 1.0 - The open source, multi-network, instant messenger client.
  2. Blogger - The new version after Google purchased them finally came out this year.
  3. Grisoft AVG Free 7.0 - Good quality free anti-virus protection.
The tick is finding great software that I know was released this year. I'll update as I find more!

Thursday, December 23, 2004

Delphi 2005 Update 1

As if a 25% Discount wasn't enough, Borland just released Update 1 for Delphi 2005 [Readme]. I guess it mainly addresses memory consumption issues. There is another update in the future as well. Not sure if that one will include C++ support or if that will be separate.

25% off Delphi 2005

I still have a few 25% off coupons for Delphi 2005. They expire at the end of December in like 9 days! Email me if you are interested and I can give you the code and all the information you need! This an incredible product and a great opportunity to get a deal on it!

Update: I added a contact link on the side so you can send me an email. I suggest including your email address!

Here are the prices if you are interested:

ProductList Discounted
Architect New User$3,000.00 $2,250.00
Architect Upgrade$1,999.00$1,499.00
Enterprise New User$2,500.00$1,875.00
Enterprise Upgrade$1,500.00$1,250.00
Professional New User$999.00$749.25
Professional New User $399.00$299.25
(Not responsible for typos!)

Be sure to get Update 1!

Wednesday, December 22, 2004

IT Conversations

I found this site "IT Conversations". It is a collection of listener-supported audio programs, interviews and important events related to the large world of IT. If it related to a computer profession, they have an interview on it. This is great stuff you may not find elsewhere, plus it is in audio format, so you can download it to your MP3 player or burn it to a CD and listen to it in your car.

Beyond exclusive interviews they have recordings of conferences like JavaOne 2004, OSCON 2004 or Bloggercon III. Actually hearing a live interview with a famous person is so much more powerful then reading the dry text of one that was probably conducted via email. You can actually catch their personality.

Tuesday, December 21, 2004

A Fatal Blow to Shrinkwrap Licensing?

Ed Foster's Gripelog covers what he says could be a Fatal Blow to Shrinkwrap Licensing.

The Settlement Agreement provides to the General Public of California, amongst other things, the right of consumers to return applicable Symantec, Adobe and Microsoft software for full monetary refunds even if the shrink-wrap has been opened ... In addition, Symantec, Adobe, and Microsoft agreed to provide EULAs for the applicable software products on their web site and notices on their respective software packaging of the web addresses to such EULAs so consumers can review such EULAs prior to purchase of the software.' CompUSA, Best Buy and Staples 'agreed to provide such EULAS to consumers upon request prior to sale of the above software at their retail stores in California and to provide notices to consumers in such stores to effectuate the above.

I don't think this is a fatal blow. Software vendors simply need to make sure that users can read the license before they open the package.

It is ridiculous to expect people to read multi-page EULAs and consult a lawyer for every piece of software they install. What I would like to see is a condensed version of the EULA, maybe with symbols like you find on the care tags in your laundry. Something like Creative Commons offers. They should form some sort of software developers organization, who would then decide on all the various clauses you can have in your EULA. Then publishers would simply select from that predefined set, and put the associated symbols and explanation text, in their EULA. Then we as consumers could look at see exactly what we are getting into.

Seems like I remember reading something about this somewhere a while ago. If you remember the link please let me know!

Monday, December 20, 2004

Google Suggest . . . Dissected

Have you seen Google Suggest yet? It is just like normal Google, but it offers suggestions to complete your search query. It is really cool, especially for a web interface. They offer a similar feature from the address book in Gmail. Just in case you were wondering how they did that, Chris "Server Side Guy" Justus has dissected it for us!

I agree with Joel that this is the kind of thing that raises the bar for web applications!

Update: Another Preliminary Analysis of Google Suggest.

Why C# will fail!

Tamir Khason has some interesting research on why C# will fail! This news may also be detrimental to the razor industry, at least among software developers (not that they were a big market to begin with.

We can trust David IBased on this information we can expect great things from David I. I think he may have been born with a beard. Not only has he had one the entire 19 years he has been with Borland, he had a good one already in 1976. Allen Bauer is another of the bearded greats who proves the rule. Some of the other Borland R & D's, past and present, have had beards. Thanks to Dr. Bob (beardless, but great non-the less) for the pictures.

Some of you may like to point out that Anders Hejlsberg was also one of the chief architects behind Delphi. This is true, but he has left it, and it is now in great hands!

Saturday, December 18, 2004

C++ Builder in Delphi

Not one to just sit around after making an annoucement, Borland has an episode of BDNtv where Troy Kitch shows C++Builder integration into Borland Developer Studio 3, also known as Delphi 2005. So while this isn't a shipping product yet, it is very cool to see they have something working in the lab. I noticed the IDE looked a lot more like Delphi 8 then Delphi 2005, but they are very similar so it is hard to tell. Delphi 2005 is based on Delphi 8's IDE.

Friday, December 17, 2004

"Hello World" programs

Programmer humor! We programmers are a funny lot. Usually our humor is only funny to ourselves. Most people just don't understand the humor in the way we name our variables or obfuscate code. This compilation of Hello World programs designed by various categories of developers is a little more mainstream! Although I think only someone who can find themselves in the joke will laugh the hardest.

InfoWorld on C++Builder

So I get an instant message from Paul Krill of Infoworld magazine wanting to talk to me about the C++Builder open letter. After a short email interview and a few instant messages he published my comments in an article on InfoWorld.com.

Thursday, December 16, 2004

Essential Skills for Agile Development

An online copy of the book Essential Skills for Agile Development is available. If you want a print copy you need to buy it though. The book is based on actual training material used to successfully teach the concepts of OO design, Test Driven Development (TDD), team development, planning, communication and pair programming.

Wednesday, December 15, 2004

C++Builder Rebirth

Like a phoenix from the ashes. Or I guess you could say the reports of C++Builder's demise have been greatly exaggerated. Either way this is great news for C++ developers.

Borland just published an Open Letter to the C++Builder Community where they announced "The next version of C++Builder will be part of the Delphi IDE family." Allen Bauer has an addendum to this as well. This continuation of the C++Builder product line should make a lot of people happy, especially for all those developers who signed the community letter to Borland [PDF] back in October.

So we will have a single IDE that does Delphi.Win32, Delphi.net, C++, C# and any other .net language. I wonder if there are plans to add Java into the mix. It would be nice if Borland added specific support for other languages, maybe Python.

Don't know if anyone else remembers Charlotte, but it was a language Borland started developing back in 2002 specifically for web services. Someone asked about the status of the language a while back, turns out it has been shelved in favor of the .net work (I think that was the reason.) I would suspect with this trend if they bring it back it will be in the same IDE too. Probably be called Charlotte.net. Iin the immortal words of the Wombat "All is one!"

Wednesday, December 08, 2004

Useless components

I am sure most of you have used components you thought were useless, but what about a component that goal was to be truly useless?

David I is looking for useless componet ideas. He sites a few examples of past useless comonents, and offers some suggestions for new ones.

My idea for a useless component would be one that demonstrated the Heisenberg uncertainty principle.Well at least that demonstrates the common understanding of it that the activity of observing changes the observed(link to very funny comic on the subject). So every time you read a property it changes what it is by an amount.

That in and of itself doesn’t really describe any functionality of a component. If you just had a component with propery that's value changed everytime you read it then it would esentially be a random number generator, which would be usefull.

Maybe you might make some sort of DataSet component that does that.So just reading the values out of the DataSet changes the values stored in the table. I guess we could call it the Heisenberg uncertainty dataset™.

I think that would be truly useless, or at least very anoying!

Delphi 2005 Tour Wrap-Up

We had a pretty good turn out. There were 22 people who confirmed via RSVP, plus some people showed up who didn't RSVP. In the end we only had about 20 people there. There were some people from NETDUG as well as from BSDG, plus a few new faces and once we hadn't seen in a long time.

Since we didn't want to run out of pizza we ended up with plenty of pizza for everyone. I hope everyone got full.

Ander's presentation consisted of a PowerPoint which covered the main points, then he would jump into Delphi 2005 for actual demonstrations. Lots of neat features! It was obvious that most everyone in the room was impressed with what they saw. After each feature was introduced everyone would lean to the person next to them and excitedly talk about it.

Ander's ended up giving away two copies of Delphi 2005. One Professional and one Architect. The Professional edition went to Anthony Fuller - I think this was his first time attending. Maybe he will come back after a door prize like that. The Architect edition went to Kelly Simper from the .NET group. Congratulations guys! I herd a few people offer them cash for their prizes. I picked up a couple extra T-shirts and 25%-off coupons. The coupons are good through the END OF THE MONTH, so get with me before then to get one. I will be out of town tomorrow evening through the end of the week.

If you couldn't make it, or want more information on the features, then you can check the following sources online:

And since I know both Kelly and Anthony are fairly new to Delphi programming, or for anyone else who has Delphi 2005 (or downloaded the free trial), here are some links for learning Delphi.

That should be enough to get you over the initial learning curve.

Tuesday, December 07, 2004

Delphi for .NET: The Book

Got an email from Kim Spilker who is a Product Marketing Manager for Sams and Que Publishing. I will be getting a copy of Delphi for .NET by Xavier Pacheco to review for the group. This looks to be a good book and I generally like Xavier Pacheco's work. I got to meet him at BorCon 2004 as well (at lunch with him and a bunch of other luminaries). If you don't want to wait for the review you might want to pick up a copy today.

If you are really interested in reviewing this book, and can get me one quickly, then I will let you read it first. I'll bring it to a future meeting and you can let me know.

Microsoft PDC 2005

I just got an email from Steve Cellini. He runs the Microsoft Professional Developers Conference or PDC. (Not to be confused with Primary Domain Controller, a very common misconception!)

They just announced that they will be holding PDC 2005 at the Los Angeles Convention Center in Los Angeles, CA from September 13 to the 16 (Pre-conferences September 11 and 12). You can sign up for updates and more details from the PDC site.

I generally hear good things about PDC, although I have never been.

This is in follow up to my original post.

Are you Mocking me?

I previously mentioned NMock for .net mock objects, both as part of my top .net tools and when I was introduced to them back in August. David I just posted to his blog about mock objects, specifically EasyMock for Java and JUnit.

He has some good information about mock objects as well as a number of good links on the subject. Most of the information refers to Java, but we all know that C# and .net is just like Java, only by Microsoft. In other words, the information is easy to adapt. Links of particular interest include the c2.com Wiki and the Mock Objects Wiki.

In the comments David Hervieux pointed out the commercial package POCMock for .NET (also in French).

Monday, December 06, 2004

Meeting Location

Our meeting location is in the Washington Group International headquarters location in the Washington Group Plaza (formally known as MK Plaza) at 720 Park Blvd. in Boise, Idaho. Here is a map:

The red star represents about where the fountain is that marks the main entrance on Park Blvd. Myrtle St. turns into Park Blvd when it crosses Broadway Ave.

Here is an aerial photo of the immediate area with some landmarks marked.

The north-south street to the west is Broadway Ave., and to the south-west (over the river) is The BSU stadium. Park Blvd. runs in front of the MK Plaza, while Front St. runs behind it. The yellow circle is around the fountain at the main entrance. Park just east of the fountain, or most anywhere else in that general area where there is space.

Here is a photo of the sign on Park Blvd. indicating the main entrance. It says Washington Group Plaza now, instead of MK.

Here is a photo of the fountain. Although it runs year round, it will be covered with ice during the winter months.

To the left of the fountain above you can see the large glass entrance behind the flags. This is where to enter the building. Someone will meet you at the security desk and escort you to the meeting room.

Friday, December 03, 2004

Top .NET Developer Tools

James Avery from MSDN magazine published his list of Ten Must-Have Tools Every Developer Should Download Now. It looks like some useful ones for .NET developers. Most of them would work with Delphi as well, in fact NUnit is included with Delphi 2005. Although I doubt Snippit Compiler will compile Delphi code. I'll need to try that. The switchers are decidedly specific for VS.NET. You don't need anything like that to switch versions of Delphi.

His list:

  1. NUnit to write unit tests
  2. NDoc to create code documentation
  3. NAnt to build your solutions
  4. CodeSmith to generate code
  5. FxCop to police your code
  6. Snippet Compiler to compile small bits of code
  7. Two different switcher tools, the ASP.NET Version Switcher
  8. and the Visual Studio .NET Project Converter
  9. Regulator to build regular expressions
  10. Lutz Roeder's .NET Reflector to examine assemblies

I would add the following tools:

  1. Delphi 2005 - if you are not already planning to get it. . .
  2. SharpDevelop for a lightwight IDE (with added features over Visual Studio)
  3. Reflector.FileDisassembler to dump the disassembled code from Reflector
  4. Borland Together Designer Community Edition (free) - Go from requirements to code faster.
  5. Borland Optimizeit Profiler for the Microsoft .NET Framework
  6. NProf the .NET profiler
  7. NMock the dynamic mock-object library

Notice I don't see Visual Studio.NET or Source Safe anywhere on this list? That is because they are the tools you use when you really don't have a choice.

What would you add to this list?

December 2004 Meeting Wrap Up and News

Chris covered SharpDevelop, the open source .NET IDE.

While the demo was great, and there were a number of features and advantages over Visual Studio.NET the overall conclusion was that you are better off using a commercial IDE for most of your projects. Might be a nice additional tool to have in your toolbox.

Randy talked about job descriptions, skills and pay rates. We discussed ways to increase our earning capacity. Pretty interesting discussion.

We finally covered chapters 5 though 8 in Design Pattern's Explained. The book is really easy reading so we are stepping up the pace. Next month (January) we are covering 9 through 17. We will devote more time to it at the meetings.

Didn't get a chance to get to news, so here is what I had left to cover:

Delphi Popularity
Delphi 2005 Launch Tour in Boise
Top 10 Persistent Design Bugs
I would add failure to trim trailing white space from a programming IDE to the list.
Firefox 1 released
Just in case you were living under a rock. In related news IE's popularity has begun a steady decline. Mozilla seems to control between 10% and 20% (or more) of the traffic depending on the site. In other related news, AOL announced the next Netscape to support both IE and Gecko (Mozilla's) engines. If you are interested in using the Gecko engine in your browser you can use the Mozilla ActiveX control that was designed to mimic the IE ActiveX control.
Delphi 2005 without .NET
Want to use Delphi 2005, but could care less about .NET?
Exploring MDD and the future of Development
IBM explores MDD and the future of software development. Might be a good idea to keep your eyes on this trend.
OOPSLA 2004 MDA Panel
More on MDA from the OOPSLA panel, as posted in David I's blog.
User-Centric UI
More information on improving your user interface.
Joel On Software: The Book
Take one popular Blog on software development (and related areas), edit, add some content and you have the new Joel On Software book. If nothing else it is more effective to hit people with when they just don't get it.
US, India, Russia and Ukraine - largest programmer populations
Interestingly Ukraine has the 4th largest programmer population.
EA faces Class Action lawsuit for programmer conditions
Electronic Arts requires seven 13 hour days from their developers. Aren't you glad you don't work in the gaming industry? My question is are you really more productive after about 60 hours a week?
Make Love Not Spam - Lycos.uk's DDoS screen saver against spam
Lycos.uk's launches a screen saver that launches a DDoS attack against spam sites. More effective then expected.
2004 IOCCC Winners Source Code Released
And you thought that code you were supporting was bad. Take a look at this code from the "Winners" of the 17th International Obfuscated C Code Contest. Some of it is actually pretty, but not if you were to try and maintain it.
The Lessons of Software Monoculture
Commentary about a homogenous software culture. It makes it easier for programmers, but also easier for cracker and script kiddies.
Programmers Hold Funerals for Old Code
I guess it can't be that bad of an idea if it gets programmers to get rid of their old code. Some of them just never let it go! (I am guilty of that)
Standards-Based CSS/XHTML Slide Show
A competitor to PowerPoint designed for web deployment. Pretty cool.
Grid Computing: Conceptual Flyover For Developers
What is this "Grid Computing" you speak of, and what does it mean to me as a software developer?
Google Scholar
Google scholarly papers and citations.
JBuilder 2005 Update 1 is available for download
Seems like everyone always waits for the first patch.
Delphi 2005 update 1 comming
Because of yet another last minute "fix" from Microsoft for Internet Explorer Delphi 2005 has some odd behavior on a fully patched machine. This update will address that as well as a few other issues. Should be any day now.

More on Inline in Delphi

Turns out Remco is the person I have been exchanging with about the inline warnings. He isn't too thrilled that he needs to use the {$IFDEF WINDOWS} directive. That is understandable. Most developers dislike the dreaded IfDef compiler directive.

What else can he do? Especially with his "do not use not used units" policy?

You have two other options to get rid of this warning without adding Windows to the uses clause (even though it is already included in your compiled application because you use SysUtils that uses Windows). What the warning is telling you is that although you (or another developer) specified that the function should be inlined, but because of your uses clause it cannot.

You can just tell the compiler to turn of inlining all together with the {$INLINE OFF} compiler directive. This ignores all those Inline directives on your functions. Remove all benefit and annoyance of this new feature.

The other option is the {$INLINE AUTO} compiler directive. This tells the compiler that you trust it to inline functions based completely on its judgment. This also ignores the Inline directives on your functions, but instead of disabling Inlining the compiler just makes all the decisions on its own. Interestingly, if I don't have a carriage return between $INLINE and AUTO then the error insight and Structure panel flags it as an Invalid compiler directive, but it compiles fine. Adding a carriage return fixes it.

Either directive removes the hint about not having the correct unit in your uses clause. {$INLINE ON}is the default compiler directive. This compiler directive is site specific. In other words you would need to added it to the top of each unit you want to change the behavior in. Alternatively you could just surround the procedure that makes the inline call in question with OFF and ON directives. Don't know if that is better then IfDef though.

Wednesday, December 01, 2004

Delphi Inline functions and your Uses clause

Back on More Coding Peeves someone asked me about the warning:

'AnsiSameText' has not been expanded because unit 'Windows' is not specified in USES list
I looked in SysUtils and AnsiSameText is declared as:
function AnsiSameText(const S1, S2: string): Boolean; inline;

So it is in fact an Inline function. The help for the warning explains:

This situation may occur if an inline function refers to a type in a unit that is not explicitly used by the function's unit. For example, this may happen if the function uses inherited to refer to methods inherited from a distant ancestor, and that ancestor's unit is not explicitly specified in the uses list of the function's unit.

If the inline function's code is to be expanded, then the unit that calls the function must explicitly use the unit where the ancestor type is exposed.

Lets take a look at what exactly function inlining is. When you call an inline function what happens at the compiler level is that the actual code of function is expanded at the location of the call instead of a call being made to a function. A call translates into variables being pushed onto the stack, a jump being made, variables being popped off the stack, etc. So if there isn't a lot of code in a function then it makes sense to inline it.

AnsiSameText calls AnsiCompareText which is also Inline. If your are running under Windows then AnsiCompareText calls CompareString which is in Windows.pas. When these inline functions are expanded your call to AnsiSameText is actually becomes a call to CompareString from your unit.

Julian Bucknall has a rant about how the fact that Inline is only a hint to the compiler that your function is inlined. This is why inlining is only a hint. Your unit may not be able to have the expanded code in it because of a type or call that is declared in another unit that your unit does not use.

What does all this mean to you and your "No Hints or Warnings Policy"? Since Windows is used in the SysUtils unit you do not gain anything by excluding it from your uses clause. So put Windows back at the beginning of your uses clause and the warning will go away, and your program should not be any different. If you want to be cross platform compatible then do something like:

{$IFDEF MSWINDOWS}
Windows,
{$ENDIF}
{$IFDEF LINUX}
Types,
Libc,
{$ENDIF}

Excluding the Windows unit from your uses clause is important if you are going for cross platform compatibility, but if you are trying to reduce code bloat then you aren't accomplishing anything since SysUtils calls it directly, in fact that uses clause is directly from its uses clause.

Tuesday, November 30, 2004

Getting Rid of Delphi Warnings

Someone asked how to get rid of the Delphi warning:

"Unsafe typecast of 'Pointer' to 'TObject'"

The purpose of the "Unsafe" warnings is to let you know your code will not be easily compatible with .NET (or other safe platforms). If your target platform is only going to be Win32 then you can use the compiler directives:

{$WARN UNSAFE_TYPE OFF}
{$WARN UNSAFE_CODE OFF}
{$WARN UNSAFE_CAST OFF}
Also worth noting are the platform warnings. These were originally to let you know if your code was going to be compatible with Linux. So if you are only targeting Win32 (or any specific platform) you can disable these warnings with:
{$WARN SYMBOL_PLATFORM OFF}

These are also accessible via the Project / Options / Compiler Messages screen. Generally you should only disable a warning if you know it does not apply to your specific program. I should hope no-one ever disables all hits and warnings.

If you want to know the compiler directive version of the warning then just look in the project .cfg file for the -w lines added when you enable or disable a warning. Then just append {$WARN in front of it and OFF|ON} after it for most of the warnings.

Monday, November 29, 2004

Delphi Popularity

There has been a lot of fuss about the latest TIOBE Programming Community Index for November 2004. The first I noticed was David I's post, then Steve pointed out a post on Slashdot titled "Delphi Renaissance". Both commenting that Delphi has four green arrows (indicating a lot of growth). In fact the TIOBE site has a blurb about it as well. They actually asked Dr. Bob what his take on the growth was. One point everyone is missing is that these stats have shown that Delphi has been growing for a few months now, and all this growth is from before the Delphi 2005 release!

Here are the November numbers:

PositionDelta 1 YearProgramming LanguageRatingsDelta 1 YearStatus
1C17.992%+0.99%A
2Java14.804%-8.28%A
3C++13.865%-2.45%A
4(Visual) Basic10.529%+3.12%A
5Perl9.726%+2.04%A
6PHP7.586%+4.02%A
7Delphi/Kylix5.310%+3.77%A
8Python5.200%+3.43%A
9SQL3.003%-0.69%A
10C#1.504%-0.40%A
11JavaScript1.195%-0.72%A
(The top 11 since I don't consider SQL a programming language)

Delphi 2005 was released just at the beginning of November, so this data that was collected based on data before November will not show any activity from the release. So we should see Delphi really take off next month when these numbers include activity after the Delphi 2005 release.

If I were to attribute anything to these high Delphi growth numbers I would attribute BorCon 2004 and all the blogging. There were blogs created just for covering BorCon. So I guess since Delphi 2005 ( aka Diamondback ) was the central theme of BorCon I guess it could be the source of this growth.

It is worth noting that the author of this report removed Pascal from the Delphi / Kylix data for the first time this month. This means that the numbers are actually reduced from what they would have been had Pascal not been seperated out.

I did a write up on these numbers, in combination with some performance data, back in August. Then I pointed out that Delphi and Python were both growing like gangbusters, while C# was declining in popularity. I think Delphi only had a two or three green arrows then, while Python had four.

Wednesday, November 24, 2004

Some Answers to TDD

Test Driven Development (or TDD) is a programming methodology where you write a test for a feature, then write code that passes that test. Julian Bucknall shares some of his answers on TDD in his Blog.

TDD is something I am really interested in and am advocating. I think methodology is a lot more important then language, framework or platform when it comes to programming. I am reading Pragmatic Unit Testing in C# with NUnit By Andy Hunt, Dave Thomas. It provides a lot of good information on the subject. I'll have a book review here soon. I am also looking at picking up the new Unit Test Frameworks by Paul Hamill next.

David I on Software as a "Living Entity"...

David I. has another interesting post on Software as a "Living Entity".... It reminded me of the book The Little Black Book of Computer Viruses by Mark Ludwig. It talked about viruses as artificial life. You can really have fun with viruses since you need to consider this life cycle and self replication or it will really bite you!

Please note I don't advocate the use of viruses for distractive activities.

I guess that book was replaced with the The Giant Black Book of Computer Viruses which is also by Mark Ludwig. He has other works on viruses if you are really interested.

More Coding Peeves. . .

David I has a post about Coding Peeves. I agree with most of the ones he posted. Here are a few of mine he missed. If you see yourself here don't take it personally. I know I am opinionated. It is part of what makes me interesting! I imagine that some of my coding habits may annoy others, but they will learn to appreciate them.

1) try except blocks with nothing in the exception handler (or just a comment saying "ignore all exceptions"). For really small blocks (like one or two lines) this is can be tolerated, but is really undesirable. Too many times I see a whole screen full of code and an empty exception block. If they want to ignore a specific class of exceptions then they should only trap and ignore that class, but they should be as specific as possible. It is arrogant of the developer to assume they know of every possible exception that could be raised, and that none of them are important. I don't know how often I am tasked with tracking down some odd behavior only to discover the original programmer ignored the exception because they didn't expect this particular one. That is the thing about exceptions, they aren't always expected!

2) Failure to use classes, functions and procedures. Some programmers believe "code reuse" means copy, paste, modify. Maybe the still think their performance is measured on lines of code.

3) Ignoring compiler hints and warnings. Sure, it still compiles, but they are there for a reason. It is really bad when it has gotten out of hand on a really large project, then even if you want to eliminate the ones in the code you are working on you will have a hard time finding them. I personally have a no hints or warnings policy. If there is one I don't know how to clear then I comment it as such, although I have always discovered how to clear them later.

4) Overly strict adoption of Hungarian or reverse Polish notations. When you have complex objects you are working with these notations just turn your variables into alphabet soup! A name variable is a comment about what it contains. Using a notation that denotes the type is like a comment of "set I to 1" - it is redundant. The compiler knows the type and the IDE will tell you.

For example:

Lets say you have a OracleDataReader that is reading sales data. Now what makes more sense: oraDtaRdrSls or SalesData, let alone which is easier to type or refer to in conversation! Although I will allow that some people do like alphabet soup. Maybe that is what we should call the notation.

Another things to consider is if you later change the types of your variables then you need to rename all your variables. Good thing Delphi 2005 has built in refactoring! Time to give those variables in that code you inherited a meaningful name!

5)The use of single line comment characters over multiple lines. I think this is a favorite of the alphabet soup types who like typing extra meaningless characters. Plus if I need to go edit or add to the comment later then I have to worry about where the line breaks and adding new comment marks on each line.

For example:

// We take the integer variable I
// and set it to the value of 1
// oh, and Hi Mom!

vs.

(* We take the integer variable I and set it to the value of 1 oh, and Hi Mom! *)

That should do it for now. Hopefully no one gets me started again.

Tuesday, November 23, 2004

Delphi 2005 Launch Tour in Boise

Anders Ohlsson is coming to Boise as part of the Delphi 2005 US Launch Tour.

He will be here December 7th at 7 PM. This is in addition to our normal December meeting on December 2nd. This visit is jointly sponsored between BSDG and NetDUG.

Anders will be giving away a copy of Delphi 2005 to one lucky attendee, and there will be a discount and T-Shirts available for everyone else. We are getting our Christmas a couple weeks early this year! I expect this to be an incredible demo of a great product. Anders is a great presenter and always a lot of fun.

The meeting location is at our normal Washington Group International location, but we will be meeting in the large training room. It holds 120 people, so bring your friends! If you know any other devlopers get the word out and invite them too!

Delphi 2005 does Delphi for .NET, Delphi for Win32 and C# development. One of the really cool features it includes is Enterprise Core Objects II (ECO II). ECO allows you to build your .NET programs using a model driven approach. It both forward and backwards engineers existing databases and applications. You may recall that Rational said the next version of their product will support OCL (Object Constraint Language). Well, the last version, and this version of ECO both support OCL. This is the future of software development, and you can see it here on December 7th.

There will be updated directions with photos but I wanted you to mark your calendar now.

Factorials, Combinations and Permutations

A while back on the TDAG list Bob Murdoch was trying to figure out Combinations in Delphi. I wrote this code for him and anyone else who is interested. Combination needs Factorial, and I decided to through Permutation (which also needs Factorial) in for good measure. I added an optimization in on Combination that requires an additional parameter (AStop) on Factorial. (Thanks to Brian Mayland for pointing out a bug in my optimization.) If you are calling factorial directly then just leave AStop as 0 [Zero]. If you wanted to you could have an overloaded version of Factorial instead of using a default parameter.

The code is available under MPL or LGPL.

[.html] [.pas] [.zip]

Friday, November 12, 2004

Free Programming and Computer Science Books

Free Programming and Computer Science Books has quite a collection of books to choose from. Everything from the 1971 "How it works: The Computer" to "The .NET Developer's Guide to Windows Security" (All electronic books unless you print them out yourself.)

It is worth checking out!

UPDATE: There seems to some dispute on the copyright of the "How it works: The Computer" book, so it may be taken off-line. I guess it was printed in England and their copyrights work differently. Maybe the 1979 edition will be taken off line and we will just have the 1971 edition. So be warned that these links may die.

Tuesday, November 09, 2004

Delphi 2005 White Papers

Cary Jensen of Jensen Data Systems, Inc. has created a Borland® Delphi™ 2005 Reviewer's Guide (PDF) that covers pretty much everything you want to know about Delphi 2005 (FKA Diamondback). There are 121 pages full of screen shots and details.

There is also a Borland Delphi 2005 overview (PDF) by Jeremy McGee of Bassett Data Systems. It is a little lighter weight at 28 pages.

Update: Dr. Bob has a What’s New in Delphi 2005 article on BDN. This one is in good old HTML instead of PDF. It also looks like it is written with the released version of Delphi 2005 and not the preview version.

Friday, November 05, 2004

Peer-to-Peer: Harnessing the Power of Disruptive Technologies

Peer-to-Peer

Harnessing the Power of Disruptive Technologies

Edited by Andy Oram
ISBN: 0-596-00110-X
448 pages

http://www.oreilly.com/catalog/peertopeer/

Review by Jim McKeeth

Last year I spoke at BorCon 2003 on the topic of Peer-to-Peer networks.  This book was invaluable in gaining a greater understanding of the history, culture and technology of Peer-to-Peer.  Just like Open Source, Peer-to-Peer is more then a technology or a network- it is a culture.

This book is a collection of essays by luminaries who are changing the shape of peer-to-peer.  Each essay talks about both the why and how of the network they are familiar with. 

The book is split into three parts.  Part one is Context and Overview and it covers exactly that.  Provides a history of Peer-to-Peer and defines the term.   Then it looks at where Peer-to-Peer is going in the future.  It does an excellent job of putting it all into context and setting the reader up for the other two parts.

Part two is about Projects and covers 8 different and distinct projects, some of you have heard of and some you may not even consider Peer-to-Peer.  Each project is explained and how it fits into the concept.  Projects covered: SETI@home (it is P2P because the excitement is at the edges!), Jabber, Mixmaster Remailers, Gnutella, Freenet, Red Rover, Publius and Free Haven.

Part three is the real meat of Technical Topics.  It is important to understand the context of P2P and current projects before getting into this chapter.  Each chapter deals with an element that is common to most networks and where applicable gives examples from common networks. 

You will find that a lot of what is covered can be used in other projects as well.  Peer-to-Peer is a revolutionary way of thinking about communication and networks.  Applying these new methods and techniques has benefit outside the traditional realm of "file sharing".  Topics covered: Metadata, Performance, Trust, Accountability, Reputation, Security and Interoperability Through Gateways.

While it is technical don't expect code samples.  If you already know how to program then it will provide you with the information you need to adapt those skills for P2P projects.  As a programmer I was expecting more technical details and more of the hard topics to be addressed.  Although that is not what I found I still enjoyed the book immensely. 

Overall this book does a great job of combining the culture and technology of Peer-to-Peer in a book that is accessible to anyone who is interested in the subject - programmer and layman alike.  Andy Oram did an excellent job choosing articles and arranging them in a very compelling manor. 

Google Hacks

Google Hacks

100 Industrial-Strength Tips & Tricks

By Tara Calishain, Rael Dornfest
ISBN: 0-596-00447-8
352 pages

http://www.oreilly.com/catalog/googlehks/ (with sample hacks!)

Review by Jim McKeeth

Google is the Kleenex or Xerox of Internet search engines.  No one says to use a search engine anymore, they just tell you to Google it.  I am almost afraid to count how many times I use Google in a given day.  How wonderful it is to have a collection of powerful tips and tricks for the mainstay of internet searching. 

This book goes beyond hacking Google though.  The goal of the book is enable the reader to find what they are looking for on the internet.  Google just happens to be the best way to do that most of the time, but when there are situations where you are better using other means the book will tell you when and how.

Since Google is so ubiquitous with everything to do with the internet this book could also be called Internet Hacks.  In all honesty, if you want to get the most out of the internet everyone already knows you need Google.  But if you want to get the most out of Google you also need this book.  Commit it to memory (or get the Google Pocket Guide).  There will be a test.

The book starts out with some basics, but you will be surprised how much of the basics you don't know.  The basic tips can be some of the best ones since they are the ones you will use all the time.  Take for example Hack #5 - Getting Around the 10 Word Limit.  Did you know Google was limited to 10 words in your search?  Did you know there were ways around it? Or Hack #6 - Word Order Matters.  Just the simple act of placing your words in the right order can improve your search results. 

While there are only 100 "Hacks" you will find that each hack is filled with many tips and tricks.  It is surprising how much detail the hacks go into.  When a code sample is applicable they provide one (or more).  And there are hacks for everything.  Starting with searching, covering the Google Web API, and ending with everything you wanted to know about Page Rank for the web master in all of us.

There are 8 chapters:

  1. Searching Google (28 hacks))
  2. Google Special Services and Collections  (7 hacks)
  3. Third-Party Google Services  (5 hacks)
  4. Non-API Google Applications (9 hacks)
  5. Introducing the Google Web API (10 hacks)
  6. Google Web API Applications (25 hacks)
  7. Google Pranks and Games (7 hacks)
  8. The Webmaster Side of Google (8 hacks)

If you live, work or play online then this book is truly indispensable.  I can't wait to read Google: The Missing Manual since I cannot think of anything this book didn't cover.

Book Reviews

This page provides a link to book reviews by members of the group. It will be updated as new reviews are posted.

Programming .NET Components By Juval Lowy

Programming .NET Components

Programming .NET Components

By Juval Lowy

O’Reilly
April 2003
0-596-00347-1, Order Number: 3471
480 pages

Review by Christopher Brandsma

When I was reading the first three chapters of this book I could have sworn that it was miss-titled; it should have been called Component Oriented Programming in .NET. Just so we get this straight, this is not a book about the wonderful components in the .NET Framework that Microsoft has provided -- this is a book about CREATING components in the .NET Framework.

The next item that needs to be clarified: What is a component? If you are from the Delphi/VCL world, a component is a non-visual object that can be manipulated in design-time with the mouse and the property browser, while usually being dragged onto a form (TTimer, TDatabase, TSession, TTable, etc). But in this book a component is a class -- the simpler the class, the better. No inheritance unless absolutely necessary, no class hierarchies, but interfaces are cool.

Now, once you get beyond the philosophy lessons of the first three chapters, you are left with one outstanding book on practical .NET development. The chapter on Events is worth the price of admission alone. The chapter on Versioning is excellent as well, but the rest of the sections are every bit as good.

Many of the topics covered in the book are not things you will find in the help files, or if they are, they are too scattered to be useful. What is covered: a large number of best practices, defensive coding techniques (again the chapter on Events is gold), and general you-really-need-to-know-this topics.

One note, some of the topics covered are very large (Remoting and Security are two examples), and if you are interested in those topics, there are other books that deal with them individually.

Summary: if you are into creating top-quality .NET software you should own this book.

Open Sources: Voices from the Open Source Revolution

Open Sources

Voices from the Open Source Revolution

Edited by Chris DiBona, Sam Ockman, Mark Stone

280 pages

http://www.oreilly.com/catalog/opensources/

Review by Jim McKeeth

Like The Cathedral & the Bazaar and Free as in Freedom, this is one of the definitive books for the Open Source revolution that is made up of essays by industry and cultural luminaries. Much likeopen source software this book also comes with greater freedom for the consumer. From the copyright page of Open Sources:

Verbatim copying and duplication is permitted in any medium provided this notice is preserved.

So feel free to read or reference the complete online text of the book. Although if you are much like me you will see the great value in actually holding the book physically in your hand as you read it cover to cover. I actually started reading the electronic version of this book first, but when I fell in love with it I ran out to get the print version so I could read it while I was away from my keyboard. As much as I love free eTexts and online magazines I many times still prefer having the physical book or magazine in my hand when I am reading it.

Many people try to evaluate the Open Source movement on a technical level. They compare the features of Linux vs. Windows XP, MS SQL Server vs. MySQL, or Apache vs. Microsoft Internet Information Server (ever notice how uncreative Microsoft's product names are?) This movement is more then a sum of the products created, irregardless of how great these products may be.

This is also more then just a movement. It is greater then all the individuals involved. It is truly a revolution. The true benefits will not be known until much further in the future. One day we will realize that the revolution is over and the world is a place changed for the better. At that time we can start to asses the true impact of this revolution.

So what does this book have to do with all that? This book is a collection of essays from the "founding fathers" of open source. Looking through the table of contents is like a who's who in Open Source, including representatives from many of the larger open source projects.

This book is more then a history lesson of open source. It offers the reader the opportunity to actually get into the heads of the individuals who are on the front lines of this revolution. As you read each of their stories you see how their contributions are a representation of themselves, the greatest gift they can give. No wonder they want their work licensed in a way to be available to as many people as possible.

To contribute to an open source project is to selflessly give of oneself. A gift of this magnitude is not something you ever want someone else to own, control or restrict. It is a gift to be shared, just like this book.

I enjoyed every chapter except "Diligence, Patience, and Humility" by Larry Wall. That chapter was interesting at first, but then I just felt like it repeated the same point over and over again. Maybe that was Larry's point: there is more then one way to do (or say) things. I am sure that other people will find this chapter to be their favorite.

If you are curious to know more about why someone would contribute to open source, or are excited about open source and just want to learn more, then this is the book for you. I am sure it is required reading at some levels at Microsoft, if not then it should be. Know your enemy.

CodeSmith

CodeSmith is a FREEWARE template-based code generator that can generate code for any ASCII-based language. CodeSmith templates use a syntax nearly identical to ASP.NET syntax so that creating templates should feel immediately familiar to ASP.NET developers.

It sounds like a useful tool, and you gotta love the name.

November 2004 Meeting Wrap-up

We had a great turn out last night and a great presentation from IBM/Rational. Thanks to Clark, Ingrid and Pete for their time. From those of you who didn't make it we got an overview of the Rational Unified Process (which is really cool) and got a preview of the Atlantic release of Rational's suite that is due out later this month. Some really cool stuff.

Since we didn't have time to get to our reading we will cover chapters 5 - 8 next month.

Also on tap next month we have Chris with a presentation on SharpDevelop, the open source C# IDE. He will give us an overview and then provide some contrasts with other C# tools.

Time permitting I have a few other product demos to share. Should be a great meeting. We will see you all there.

Since we didn't get time to cover news I thought I would give you a few links to check into. If you have other news to share with the group then please email me, the group or make a list for next month.

Delphi 2005 Released
You can pre-order. It has been released to manufacturing. This version is an update to both .NET and Win32 development, and includes full C# support, as well as limited support for other .NET languages. This is the biggest improvement since the release of Delphi 1.

S5: A Simple Standards-Based Slide Show System
Uses XHTML, CSS and JavaScript to replace PowerPoint. Works in Opera, Mozilla, Firefox, Netscape and Internet Explorer. Designed to be easy to setup and even easier to view, all while being completely standards compliant.

ASM to IL compiler
Now you can write ASP.NET (or other .NET applications) in i386 ASM! Now you can put those assembly language skills to use on the new .NET platform.

Google Desktop released (beta)
Allows you to search your computer using Google. Only supports Internet Explorer for some odd reason.

Borland Conference 2004 Blogs
Erwien Saputra compiled an impressive list of blog entries that were created during BorCon, about BorCon proceedings. It's not as good as being there, but it's still pretty good! Includes posts and photos by yours truly.

30th Anniversary of Pascal symposium (Oct 22nd)
Hard to believe it has been that long!

The FAQs on FAQs
Tools and techniques for building and maintaining FAQs

Delphi Informant Complete Works CD-ROM
All 10 years, plus some unpublished works.

Delphi Algorythems and Data Structures to be re-released
One of the better Delphi books is being re-released by the author via print on demand.

C# is going to get Edit and Continue -- just like VB 6.
In all honesty this is pretty cool. Can't wait for Delphi to have it in 2006.

Check your HTTP traffic with Fiddler
Fiddler is a HTTP Debugging Proxy which logs all HTTP traffic between your computer and the Internet. Fiddler allows you to inspect all HTTP Traffic, set breakpoints, and "fiddle" with incoming or outgoing data. Fiddler is designed to be much simpler than using NetMon or Achilles, and includes a simple but powerful JScript.NET event-based scripting subsystem.
(Thanks Rich!)

Tuesday, November 02, 2004

November 4th - Design Patterns Explained

In our Design Patterns Explained book we are reading we will be covering chapters 5 - 8 at the November 4th meeting. See everyone at 7 PM.

5 An Introduction to Design Patterns

  • The concept of design patterns, their origins in architecture, and how they apply in the discipline of software design.
  • The motivations for studying design patterns.

6 The Facade Pattern

  • What it is, where it is used, and how it is implemented.
  • How the Facade pattern relates to the CAD/CAM problem.

7 The Adapter Pattern

  • What it is, where it is used, and how it is implemented.
  • Comparison between the Adapter pattern and the Facade pattern.
  • How the Adapter pattern relates to the CAD/CAM problem.

8 Expanding Our Horizons

  • Some important concepts in object-oriented programming: polymorphism, abstraction, classes, and encapsulation. It uses what has been learned in Chapters 5–7.

2004 Delphi Informant Complete Works CD-ROM

2004 Delphi Informant Complete Works CD-ROM
Featuring:
10 years of great Delphi Informant expert content.
Every article appearing in Delphi Informant from 1995 through 2004!
All source code and sample files that you can use in your applications immediately.
Easily searchable CD-ROM makes it easy to find what you need.
FREE shipping!*
Bonus articles never published.

* Free shipping to US and Canada only. All other countries add US$10 for shipping and handling. Applicable sales tax applies to California residents.

Your subscription may be tax deductible if used for business purposes. Please check with your tax advisor.

Delphi is a trademark of Borland Software Corporation in the United States and/or other countries. Informant is a registered trademark of Informant Communications Group, Inc.

2004 Delphi Informant Complete Works CD-ROM

Now Only US$49.99!*

Pre-Order Now!
Informant Communications Group, Inc. 5105 Florin Perkins Road Sacramento, CA 95826

Saturday, October 02, 2004

October 14th, 2004 Meeting

Just so everyone knows for sure, we will be meeting Thursday October 14th instead of October 7th. Steve and I will both be out of town all the week of the 7th. Naturally everyone could have a meeting without us, but the location is dependent on us being there since we are still meeting at 7PM at the MK Plaza.

Rational cannot make it in October, so they will be here November. At the next meeting I have a number of product demonstrations for everyone, including Delphi 2005 Studio, AKA Diamondback. Plus there is a grab bag of BorCon swag. A few door prizes too (not swag). More details about the demos during the week of the 11th.

We are still reading the 2nd Edition of the Design Patterns Explained book. Let us plan on covering Part 3, Chapters 5 - 8 and anything previous to that we have yet to discuss adequately.

Friday, October 01, 2004

Conditional Defines, etc.

Brian Long has a great post over at Falafel Software that covers everything you need to know about Conditional Defines for the Delphi family of products when it comes to compiler version and features.

Software That Lasts 200 Years

The structure and culture of a typical prepackaged software company is not attuned to the long-term needs of society for software that is part of its infrastructure. This essay discusses the ecosystem needed for development that better meets those needs.

Thursday, September 30, 2004

BorCon Jacket Winners

Dale gave away some nice leather jackets to some lucky BorCon attendees. The only person who's name I know is Robert Love. If you know any of these people post a comment with the image file name and their name, maybe a link to their blog / home page too. I also have much larger versions of these pictures if you want a picture of yourself.

RobertsJacket.JPG
Robert Love
IMAG0043.JPG
IMAG0043
IMAG0033.JPG
IMAG0033
IMAG0034.JPG
IMAG0034
IMAG0035.JPG
IMAG0035
IMAG0036.JPG
IMAG0036
IMAG0037.JPG
IMAG0037
IMAG0038.JPG
IMAG0038
IMAG0039.JPG
IMAG0039
IMAG0040.JPG
IMAG0040
IMAG0041.JPG
IMAG0041
IMAG0042.JPG
IMAG0042