Wednesday, June 30, 2004

Patriotic PC Maker: No Outsource

Personally I think this is really interesting, and for many reasons.

Wired News: Patriotic PC Maker: No Outsource - A small Idaho-based PC maker has turned the public backlash against outsourcing U.S. jobs into an unusual marketing campaign, urging customers to "Buy MPC, Support America."
  1. As a fellow Idaho resident
  2. As an advocate for domestic jobs
  3. As a former employee of MPC (FKA Micron PC)

I really like the last paragraph:

"This didn't start out as a marketing campaign," Adkins said. "There is no question the quality of service that is provided here domestically is a higher-quality level than what is done offshore."

Some things can be outsourced without a significant impact on quality. Support centers are not one of them. An in-house, native language support staff will most always provide better support for users.

Tuesday, June 29, 2004

Advice for Future Software Engineers

I have been exchanging e-mails with a recent high school graduate who is working on getting into Software Engineering. I thought I would post one of my recent messages to him here. I snipped out any personal information. If anyone else has any other advice they would like to include please feel free to add it as a comment.

That ProgrammingTutorials.com site sounds really good. Java is a good language to work with. Very flexible and in good demand as a skill today. One thing about programming with Java is it has a memory manager. While this certainly is the trend of modern languages to have built in memory managers, there are some who claim it is better to learn with a language without a memory manager so that you learn the importance of managing your memory. I personally don't think this is as big of a deal. It is more important that you get experience, and if you find your self fighting memory issues then you are less likely to do more programming. So enjoy your Java.

I've never gotten into Java programming much, always wanted too, but never had the time. I have a co-worker who is a huge Java fan. He actually ran the Java users group for a while.

I would really recommend learning about some of the programming methodologies out there. A really popular one is called Extreme Programming (XP). It is actually a combination of a number of practices. A couple sites with information on it include:

http://www.extremeprogramming.org/ http://www.xprogramming.com/

Other related concepts include UML (Unified Modeling Language), MDA (Model Driven Architecture), and TDD (Test Driven Development). TDD is actually part of XP. If you gain a basic understanding of these that will really help you in the future. As software projects become more complex it is more and more important to have a good process.

The important thing about a methodology is that it governs how you finish a programming project. With a well formed methodology you are more likely to finish your projects on time.

TDD is a good practice to start adopting right away. You may have teachers that disagree, but it doesn't hurt to have that experience now. One thing you will learn about methodologies and processes is that for some it is like a holy war. Your best bet is to know enough about them to hold your own if you are required to use them, and find one that works best for you.

JUnit is a framework for use in TDD with Java. You can get JUnit here http://www.junit.org/ While you will usually see TDD referred to with XP you CAN have TDD without XP, but you CANNOT have XP without TDD. TDD is a part of XP, but it can be used on its own. (confused yet?)

. . . . .

You can't compare yourself to others or you will always be looking for someone better or worse then yourself. You need to set realistic growth goals for yourself and then judge yourself based on how well you achieve those goals.

I doesn't take a lot of intelligence to be an engineer, but it takes a certain kind of person. I've known really, really smart people who just were not cut out to be an engineer or software developer. Nothing against them. There are a number of jobs that I am not cut out for either. We are all different.

I have been programming for years and I still get a thrill when I write a program and it works like I expect it to. It is just plain amazing. Next to having a family it is one of the most fulfilling things I know of.

Visual Studio for the Hobbyist

Microsoft just unveiled their Express Beta Products. These are lightweight, low cost versions of Visual Studio. Currently you can download the beta version for free (backup your data!), but eventually they will be available for a nominal price.

It sure would be nice if Borland provided a competitive price-point product. I'll grant that their High-end products are above and beyond Microsoft's, but they are missing the boat by not having hobby versions.

Thanks to Rich for the tip.

Monday, June 28, 2004

July 1st - CC: Final Steps (27-30) & D8: ECO / ASP.NET

This Thursday is the 1st of July, and also our July meeting.

For reading we are on the FINAL STEPS section, covering chapters 27 through 30. I don't recall if we decided who had which chapters. So hopefully those who are reading the chapters remember.

  • 27 System Integration
  • 28 Code-Tuning Strategies
  • 29 Code-Tuning Techniques
  • 30 Software Evolution

E-mail me if you will be covering one of the chapters so I know they are covered.

After the reading I will demonstrate Delphi 8 some more. Cover some ASP.NET (hopefully) and ECO. For those who are not familiar with ECO it stands for Enterprise Core Objects and is the .NET successor to Bold providing Rapid Model Driven Application (MDA) development with UML. Similar to what Rational offers, and like Microsoft is planning to offer some day with Team System.

Friday, June 25, 2004

Know Thy Enemy

21 Rules of Thumb – How Microsoft develops its Software

As a software Developer on the MS Windows platform we are both cohorts and competitors with Microsoft. Rather you agree with the Microsoft development philosophy or not, this is useful information.

David Gristwood's WebLog contains 21 Rules of Thumb for Shipping Great Software on Time by Jim McCarthy of Microsoft Corporation. Here are the bullet points:

  1. Don’t know what you don’t know.
  2. Get to a known state and stay there
  3. Remember the triangle.
  4. Don’t go dark.
  5. Use zero defect (ZD) milestones.
  6. Beware of a guy in a room.
  7. Never trade a bad date for an equally bad date.
  8. When slipping, don't fall.
  9. Low tech is good.
  10. Design time at design time.
  11. If you build it, it will ship.
  12. Portability is for canoes
  13. Enrapture the customers.
  14. Remember one thing: Unity.
  15. State your theme.
  16. Vary it.
  17. Balance it.
  18. Evolve it.
  19. Your product should be a hierarchy.
  20. Establish a shared vision.
  21. Get the team into ship mode.

But you will need to read the article to know what these rules mean.

Thursday, June 24, 2004

Free Gmail Invite

Since people have been selling Gmail invites on eBay and trading them on other sites I thought I would offer free Gmail invites for the readers of my Blog. Post a comment with your contact information: Instant Messenger ID's (any network) or obfuscated e-mail addresses. I have a few, first come first serve.

In related news, Nick Hodges introduced me to GTray. I probably won't be using it because I am so picky about my software. It doesn't support choosing which browser it opens in. Guess I will have to write my own. I need to blog about the programmers curse.

UPDATE: All my invites are gone. If GMail gives me some more again then I will update the site, so check back later. Thank you to everyone who posted comments! It is nice to know someone reads my blog. No more comments.

Tiers of a Clown & Delphi/Borland Longevity

In response to Michael Pence's message to TDAG (The Delphi Advocacy Group, I responded with the following. It is mostly about the longevity of Delphi.

I think you hit the nail on the head when you questioned the need for all the abstraction in a *single* language environment. You only need the abstractions when you are going across language and platform barriers.

As far as the longevity of Delphi, I think it will be around for a long time. And let me tell you why (I knew you wanted to know). For those of you who read Joel's article on How Microsoft Lost the API War you may have noticed the paragraph that mentions Borland. It not then read it again.

In a nutshell it said that Microsoft needs to keep Borland around. As I am sure you know Microsoft invested a large amount on money in Borland a few years back, right after Dale took over, and shortly before they fixed their name (I think I have that timing right). Borland was not doing to hot, and Microsoft bailed them out (figuratively speaking). Now why would Microsoft support Borland? Call it coopetition (cooperative competition). While they are competitors at one level (both make Development tools for MS Windows), Borland still is one of the largest suppliers of development tools for MS Windows. So not only does Borland directly support MS Windows development, they also provide lots of field research for Microsoft Visual Studio. The other side of the coin is that Borland helps prevent Microsoft from looking like a monopoly of development tools for their environment.

Look at Sam Goodie and Musicland. For those who don't know, they sell music. At our local mall they have both store. Some people don't realize that the same company owns both stores. It creates the illusion of competition. People are more likely to come to the mall to buy music because there are not one, but two stores that sell music.

For MS Windows, the more companies that provide development tools for Windows the more appealing it is for developers to support that platform. This is one of the reasons that you don't see much support for the Mac since there are very few (comparatively speaking) companies that provide development tools for the Mac.

The amount of revenue in sales of development tools that Microsoft looses to Borland is less then the value of these other benefits that Microsoft reaps from Borland's existence. As long as that is the case Borland will be around.

Frequently I talk to project managers who are currently using Delphi and fretting how difficult it is to find experienced Delphi developers. They are considering jumping ship. I think that now is the worst time to do that. With Delphi for .NET the language is becoming both less and more significant.

Look at the VCL. If you are a C++ Builder developer and you are looking at an application written in Delphi with the VCL you can tell exactly what is going on. The FCL (Foundation Class Library) provides the same glue for .NET. The language, for the most part, provides syntactical sugar. What is your favorite flavor? This, and the fact that assemblies written in different languages can interact seamlessly is what makes the language less significant.

What makes the language more significant is the developer’s productivity within that language, and the suitability of the language for specific tasks. For example, Perl.NET would be a great choice for writing a text parser because it includes regular expressions in the syntax without requiring an object reference like C# does. As far as individual developer productivity, Delphi can’t be beat. Beyond the language itself, many developers today took a Pascal class back in school, and it sure does look familiar. I am always surprised how quickly someone can "pick it up".

So don’t drop Delphi now.

You also questioned how long DevExpress and ASTA would be around. My biggest worry about DevExpress is they will go after .NET at the expense of VCL. I see that they have Code Rush for .NET, but not for Delphi 8. As long as they support both .NET and Delphi I would expect them to be around for a long time, it is the big component developers that don’t support .NET that I expect to have a rocky future. ASTA already has support for .NET with ASTA Safari and ASTA IO, but you should talk to Steve Garland for more information about that.

Love it or not, .NET is where a lot of money is to be made.

I could go on for hours, but I’d better not.

Wednesday, June 23, 2004

Software Patents

Or "Everything you wanted to know about Software Patents, but couldn't afford to ask."

I assembled these resources with software patents in mind, but the information certainly applies to most any kind of patents.

If there is enough interest I should be able to have a patent attorney in attendance at the next meeting for a question and answer session.

For anyone interested, you can see a list of the patents I have been awarded (and assigned to my former employer). Working there was very interesting. They tried to patent everything, and when I had something I thought was very unique and patentable, they wouldn’t even apply for a patent, but things that seemed less interesting they were very aggressive in filing patents for.

Guess I am not going to Comdex

I was actually planning to go to Comdex this year. I found a place to stay and even had a couple of friends who were going to go down with me. We were going to split the expenses. Well, looks like I won't be going since Comdex 2004 was canceled.

Usually I don't like real big events, with lots of lines and crowds. I figured with the technology and economy downturn that now would be the ideal time to go. Less people in attendance means shorter lines. I guess there were going to be too few people in attendance. So if I did still go then there would be no lines at all. And the Olympic committee was worried the Olympics would be canceled.

Hopefully Comdex doesn't loose its steam and have this be the first in a series of cancellations eventually leading to its demise. I would hate to think that I've missed my opportunity to attend the geek Mecca.

Tuesday, June 22, 2004

Fuzzier Systems

We are all familiar with Binary, or at least I hope we are. Binary is consisting of two parts or states- True or False, On or Off, 1 or 0. This is the basic unit of computers - bits and Boolean logic. All computer data breaks down into bits (see table) and all Boolean evaluations result in either true or false.

Unit   Number of Bits
bit   1 bit
crumb   2 bits
nybble   4 bits
nickle   5 bits
byte   8 bits
deckle   10 bits
word   16, 32 or 64 bits
Italics for really obscure.

In the real world things are not always black and white (binary).  This is where fuzzy logic comes in.  In fuzzy logic could be simply described as giving things a possibility of being a certain state (now a fuzzy logic expert might disagree with me on that, so do some research of your own if you are stickler for the truth).  So it has a 75% chance of being true, and a 53.7% chance of being false.  This makes more sense in more complicated examples.  Take color fuchsia.  I might say it has a 75% chance of being red, a 50% chance of being blue and 0% chance of being green.  The interesting thing is someone else might give it a different rating. 

Now these variable ratings are nice, but what if I don't want something so complicated, but more flexible then true and false? 

I got to thinking, what would you call three states? At first I thought Trinary, which is in fact a word, that means "Consisting of three parts", but it appears that Ternary is preferred.  I personally prefer Trinary, but I guess I will use Ternary since it appears preferred.  For those of you who do much database development this concept should be pretty straight forward since you have to deal with null values, where the value is unknown.  So you have true, false and unknown.

How about four states? I guessed Quadranary, which Google finds hits for but no definition.  It suggests Quaternary, which has the definition of "Consisting of four; in fours."  That sounds like what I am looking for.  So what would these four states be?  How about Unknown, True, False and Maybe.  You could argue that Unknown should be Unlikely since that would be opposite of Maybe, but I like Unknown better.

So if you want to include Unlikely then you need five states.  First I tried Pentanary which returned 84 hits, but no definition.  Looking at some of the hits it is used to mean five parts or elements.  It is even used in conjunction with Ternary and Quaternary, which looks promising!  Then I tried Quintenary which returned 126 hits and no definition.  It is used with Tertiary and Quaternary to mean fifth level and there is also a reference to base-5.  I like Pentanary better since it is less likely to be confused with Quaternary.  I think 5 states is a very useful base system since you have Unknown, Likely, True, False and Unlikely.  Any more levels then this and you would be very fuzy.

To summarize:

System   States
Binary/Boolean   True & False
Ternary   Unknown, True, False
Quaternary   Unknown, True, False, Maybe
Pentanary   Unknown, Likely, True, False, Unlikely

Would you suggest a system for six or more states?  What would those states be?  I think odd numbered systems would be better then even numbered systems since you would have an Unknown state, but maybe you might argue against that.  I am interested in your comments on this!  If you know Latin and would like to extend this system feel free to do so.

Monday, June 14, 2004

IBM Software Development Platform Technical Briefing

In an economy that requires us to do more with less, this FREE educational overview will look at industry best practices in software development.

  • Iterative development
  • Use of component architectures
  • Requirements management
  • Visual modeling
  • Pervasive quality controls
  • Unified change management
Attendees will:
  • Learn how to implement software using the practical application of industry best practices
  • Understand how tool automation can ease the adoption of new processes
  • Get the most out of your current tools and processes
Attendees will also be exposed to an easy to follow full lifecycle demonstration from inception through transition.

This technical briefing will include:

  • Rational Unified Process
  • RequisitePro
  • ClearQuest
  • ClearCase
  • WebSphere Studio Application Developer
  • XDE Developer Plus
  • XDE Functional Tester for Java and Web
  • Test Manager
  • PurifyPlus

Whether you are using your own tools, tools from IBM, or no tools at all, see how integration can help deliver software projects on time, within budget and that meets your customer's real needs.

When
Thursday, June 24, 9:00 am to 12:00 pm
(registration starts at 8:15)
Where
The Grove Hotel
245 South Capital Blvd.
Boise, ID 83702
(208) 333-8000

To register for this event, please contact Clark Ritchie at clarkritchie [at] us.ibm.com or by calling (503) 578-2575.

Please include your name, organization, your contact information and the number of attendees.

Please register by Monday June 21, 2004.

Ed Retuta
Senior Software Sales Specialist
Rational Software
IBM Software Group
18880 Homestead Rd
Cupertino, CA 95014
Phone:(800) 728-1212 x39158
Fax#: 845-491-7552
Email: etretuta [at] us.ibm.com
Web: www.rational.com

Tuesday, June 08, 2004

Measure Twice

Dave referred to this article during the June meeting:

Magazine:
eWeek
Date:
May 17 Issue
Author:
Peter Coffee
Title:
Measure Twice
Subtitle:
Setting the Programmer-Error Record Straight

Connection Strings

Every database has a slightly different way to format the connection string, and then there can be variations based on the driver used. www.ConnectionStrings.com provides a great reference for looking this information up quickly. Looks like most every database I can think of, with the addition of Microsoft Access. A great reference. Thanks Dave!

Can software replace a programmer?

Bad news for Visual Basic 6, Java/EJB, JSP, Cold Fusion and .NET developers. Spain-based Care Technologies (site is really slow today) says it has a program that can replace you, or at least 12 to 47 of your fellow programmers. Tom's Hard news covers their press release [PDF] and results of Gartners study.

The system is called OlivaNova Model Execution. The idea is a human designs the system using modeling. That model is then converted to software quicker and with less errors then if a human were writing the code. The idea is that no coding is required and you can go from model to finished application. Is this a true Fifth-generation programming language?

Too many times I have been working on programming projects that as I am developing I add some of my creative input to improve on the original design. Also, I rarely implement things the same way twice (excluding code re-use). I am always improving the process and methods.

Personally I am not too worried about my career. Sure, it may eliminate a lot of business application development needs, but that is hardly the most exciting type of software to be developed anyway.

It might not be a bad idea to brush up on our software modeling skills though.

Thursday, June 03, 2004

BabelCode C# to Delphi code converter

Borland has a beta research project called BabelCode available. It is an experimental code conversion utility which uses their CodeDOM's to convert C# to Delphi code.

Also check out John Kaster's article on how it works, how it was created, and creating clients for the web service.

Quantum Cryptography Network

Interesting cryptography / security news, "BBN Tech Unveils World's First Quantum Cryptography Network" For those that don't know the security is obtained in a quantum network because the keys are transmitted as single photons of light. If anyone attempts to measure or observe these photons then their actions will change the photons, and their attempts will be detected. (See also the Heisenberg uncertainty principle)

Quantum Cryptography has been the "Holy Grail" of cryptography for some time now. The flip side is quantum computing, which in theory will render all other existing cryptography inadequate because of it the computing power it will unleash. It is good that an alternative to existing cryptography was developed before the Achilles Heel. Feel free to insert your own conspiracy theories here.

The article does point out that their protocols are patented. That will be interesting to see how that pans out in permitting adoption of their protocols as standards. It also notes that they were working with DARPA. Working with government agencies can have ramifications on intellectual property, especially patents, that result for the collaboration.

BBM Technologies (FKA Bolt, Beranek and Newman) originally developed ARPANET and the first router. They are pioneers in networking infrastructure.

See also:

Free subscription to Software Test & Performance


You can get a free subscription to the new Software Test & Performance magazine. You can use the offer code S45251, but I don't know if that is necessary.

Glancing through my issue I see articles on Java, Unit Testing, .NET and Use Cases. Looks interesting. Hope to dive into it more later.

Wednesday, June 02, 2004

Now with Google Groups

The group mailing list will now be hosted with Google Groups.

Subscribe to BSDG
Email:
Browse Archives at groups-beta.google.com