Donald On Software

Just my thoughts, my interests, my opinions!

C#.net or VB.net

Starting from the Beginning

I have been a Visual Basic developer for over ten years now. It was not my first language that got me excited about programming. No, that would have been Clipper. I accidentally fell into Clipper much the same way that Visual Basic started as an experiment for me.

It was sometime around 1987 or 1988 when I was working as the accountant and network administrator for my family’s car dealership. I was running into limitations in the current accounting software we were using and I knew that a change would be needed. However, I had great difficulty in finding software that had the functionality and flexibility that was required. I started looking into some source code solutions and found one that was originally written in dBase III and was Clipper ready. This was my start to serious programming as this source code did not work and it took me two months to work through the code learning to work with Clipper as I went along.

Clipper 4 worked well for me, which was a very process level language. There were no surprises. The user could only process data in the exact steps designed in the software. When Clipper 5 was released I upgraded, which exposed me to some new and unfamiliar aspects of programming. Clipper introduced three “built in objects” and soon several “third party vendors” started coming out with add-ons for Clipper that allowed the creation of your own objects and classes. You should realize that by this time I was becoming quite the Clipper programmer. I was designing new features to our accounting software and building complementary add-ons. I was experimenting with Windows but was never able to implement it into the dealership until Windows 3.1 was released. However, we were running our Accounting software in a DOS box through Windows. Nothing special here, but it worked. Nantucket, the company that owned Clipper, made a lot of promises that there would be a Windows version of Clipper coming out soon.

In the mean time, I read an article by a fellow Clipper guru that suggested looking into Visual Basic to get a better handle on working with objects. So I got a copy of Visual Basic 1.0 for exactly that purpose; to get a better understanding about how objects worked and be able to actually write a Window application. I was still thinking that Clipper was going to be my main programming language with Visual Basic as a tool to learn about objects. This was similar to the original purpose of Pascal, which was to learn structured programming. Anyway, I was having a great time with Visual Basic, reading a book or two on it and building some really simple programs.

On a flight to Comdex one year, I was sitting next to two guys from Sequiter Software. They noticed that I was reading one of my Visual Basic books and asked me how I liked Visual Basic? I told them I was enjoying it very much but I was really a Clipper programmer and it would be great if Visual Basic could access a database. Well what followed was some very interesting information that they shared with me: Sequiter makes a product called CodeBase which is a very fast engine that reads and writes to dBase, Fox, and Clipper data. I could use it in Visual Basic by declaring the procedures to the API from within Visual Basic. Well that was it: from then on Visual Basic became a very important tool in what would later become my programming career. Remember I was an accountant that couldn’t find good software that worked the way I needed it to work for me.

So I guess you could say that I have been building database applications in Visual Basic since version 1.0. Just so that you are clear on who I really am, I did not take any short cuts to change careers. I did take a number of correspondence courses where I studied Assembler, Basic, Pascal, C, and COBOL and then went to College where I graduated with distinction. I am constantly learning and doing the best I can to keep up on the latest technology and am always interested in creating better software products.

My Take on C#.net vs. VB.net

C# (sharp) is the language that was designed for Dot Net and was used to build much of the Framework. It shares the same first name as its big brother C++, but it doesn’t really feel like any C++ that I have ever taken out for a spin. C# really is a cross between the best of Visual Basic, the best of C++, and some elements of Java which make it the perfect language for Dot Net.

Microsoft made an announcement that the new version of Visual Basic would finally be corrected to match the standards of other languages. There have always been inconsistencies between VB and other languages when it came to the number of elements that were created in an array and the value of true. Hey, somewhere along the way, this now very powerful language got itself all screwed up, but then VB.net is the first version where the forms are not being handled by the Ruby Engine. The operating system will actually be in charge of what we see on the screen. Anyway, at the time of this announcement I was all excited about the future of VB and what the heck was C# anyway, it did not even seem too important to me.

Then sometime in the early part of 2002, Microsoft made the announcement that I think surprised almost every serious VB programmer. They were going to re-tool Visual Basic.net to make it more compatible to Visual Basic 6. Well this was enough for me to consider looking into C# more seriously.

Before we go on I thought I would take a moment to talk about the bad rap that VB (as a language) has been given. VB has been attacked over the years by the programming community for not being a very serious language. The language started off as a very simple tool to build desktop applications for Windows. Over the years VB has become a very powerful programming language and probably its curse has been the ease in which you can build Windows applications. I say a curse, because anyone who has worked with this language has been able to build a working program quickly and easily. On the other hand you would not typically take a language like C++ straight out of the box and start writing a program without at least taking a number of courses and reading a few books on the subject. You might give up and leave that sort of programming to the professionals. But none of that is involved when programming in VB since it is such a forgiving language. However, even with VB’s simplicity there is a lot more to writing a good solid VB program then just a piece of code that works. There is choosing good programming practices and constantly refining your skill so that you write the most efficient and easily maintainable code that you can possibly write. The bad rap really belongs to the VB programmers that have picked up some very bad habits along the way and have failed to refine their skill to build elegant and well managed code. There are bad C++ programmers out there too just not as many.

I have spent a fair amount of time in a variety of C and C++ environments and have found that it was just too much work to build a Windows desktop application. Visual Basic makes a lot of sense since that was how it was designed. C on the other hand has it roots in building drivers and operating systems and I do not typically engage in those kinds of projects.

Making the Change

I am leaning towards programming in C# instead of VB but not just because I am upset with the decisions that were made on the future of VB: I need something much more powerful then that to justify my reasons.

One of the things I really like in C# is the new inline XML style comments. This is not available in VB.net. With this I am able to produce some very clear comments in my code, where they happen and with them produce a technical document. Many times in the past I have had to duplicate some of this effort, and then update my documents when the code went through some changes. Not anymore, it is all in one place and as I make changes my documents are also updated.

Secondly, Dot Net is built around this new concept of Namespaces, which is the way that Microsoft is getting around the DLL hell issues that have plagued us for years. I have some interesting stories to tell on that subject but will need to wait for another time. In C#, the Namespace is exposed right out there directly in your face. You can adjust the Namespace in VB.net but you need to do this through the IDE and is just not in your face. I have done some work with multiple projects that support other projects and I just think it is a lot cleaner when I have total control over the Namespace.

Thirdly, there is the learning curve. VB.net is not just an upgrade from Visual Basic. It is a new life style and you really need to get into that life style if you really want to take advantage of the Frame Work and go beyond what we have coded and designed in the past. This Frame Work is wonderful and I am almost tempted to say that the only limitation is lack of our imagination. Since I started getting into C#, I have had to take each step with a fresh new approach. When I was playing with the early beta’s I found that I was constantly doing a comparison with the previous version of VB. I think my return on investment with C# is a whole lot better then if I had gone the VB.net route. Something to keep in mind, Dot Net programming is for new programs, not to port over a working application. Microsoft has made sure that the Dot Net Framework supports our old code, so why touch something that works fine. Instead it is to create new applications and rebuilds of programs that lacked functionality that was difficult or impossible to implement in the past.

It is true that all languages compile to a common Immediate Language (IL) file that is used by the Common Language Runtime (CLR) but there are some advantages to using C# over VB.

Conclusions

In a survey of 633 development managers conducted by BZ Research during June of 2002 the results show that VB.net is being used in 21.8% of the current projects being developed while C#.net is being used in 18.8%. Over the next 12 months these same development managers are planning future development, where VB.net will be used in 43.4% of the projects and C#.net will rise to 36.7%. Pretty close.

These numbers would support what I have heard through the grape-vine that many of the VB shops are making plans to go the VB.net route: I think in part it is because of the upgrade path that has been followed in the past. They are not taking into consideration that VB.net is not the same VB that they have worked with over the past decade or so. I am sure that many of these shops will eventually start to move towards C#, since this is the language of the Framework and clearly the best way to start over. I think the training could be more cost effective and less expensive then attempts to retrain them with VB.net.

My prediction is that the growth of C#.net will be even greater then what is being portrayed in this survey which shows them pretty close to a draw. As for me and my house, we are going to skip dabbling in VB.net and go straight to the future of good programming, C#.

The Power of Time Tracking

I love to keep track of time. It could be related to my love of data and all the information that I can extract from it: how much fuel does my car use, how much time do I spend on stuff each week, how many hours am I away from my family.

Actually my attraction to time tracking goes much deeper than that. I never planned to start my own business when I made the career change into software development so many years ago. I had seen how it worked being self employed as I grew up in a family owned business and my father was in charge of the service department of an auto / agriculture dealership. One of the things I noticed was that as the billing was being discussed from the details obtained from the back of the work order, the customers would be requesting a discount because they did not see enough detail that explained why the job took as long as it did. This was not something I was looking forward to experiencing myself being self employed.

I do not like to negotiate. I am not a good negotiator. Instead I would like to have my work speak for itself and it has for many, many years. So when I did end up being self employed presented my client with an invoice, I also had the opportunity to present them with a detailed accounting of what that invoice represented. Sometimes it read just like a book, but I never had to explain my work. There was never any negotiation about the amount of the invoice that I was presenting and I always got paid on time. Mission accomplished.

That was my original motivation to really get into time tracking, I have built various pieces of internal software (after all, I am a software developer) that have helped me to maintain my goals. Since then I have discovered other benefits to keeping tracking of time and for the rest of this article I want to detail these benefits.

Deliverable

When working on a long project many times the client would only pay on some sort of a deliverable. We can all agree that we don’t want to pay for something we have not yet received. I did discover that I could use my detailed time tracking entries as a deliverable since the client was able to receive something from me that they could use to justify approval of payment.

When I was in college an instructor said that we should be paid for each stage of the software life cycle. At first I had trouble with the concept because at that time I only pictured the deliverable as the final finished product. However, my perception was very small in the overall grasp of developing software for a client. I soon discovered that sometimes all that I ended up doing for the client was research and some feasibility studies, sometimes working on the specifications and never got a chance to work on the actual software. Also, I have worked on projects where the specification phase went on for almost a year; collecting rules and processes and writing about the software that would be built. I needed regular pay periods. The only way to do this and justify my demands was to provide a deliverable that ended up being the details from my time tracking efforts.

Resolve Disputes

Anytime you need to resolve a dispute, details play a very important role. I worked on a project quite some time ago that did lead to some legal confrontation. My recorded project details were used to justify the amount of time that was spent on the project and why a deposit should not be returned. It is important to keep track of how and where you spend your time.

I know that this is also a good rule with dealing with tax situations. Revenue Canada and the IRS want details and many legal actions have been taken against individuals simply because they could not produce enough details. I can hardly remember what I did a few hours ago let alone days, months or years, but if I have details in front of me, it sure helps jog my memory.

How Much Does it Cost?

We all have ideas as to how long we work on a task or even a project. Sometimes I can hardly believe that a certain task took me as long as it did. It felt like five minutes but in reality it took me four hours. When you start tracking details of your day with real time, you get very clear evidence of the time that was really consumed.

In my own anal way I not only record the time and detail that I can bill my clients, I also keep track of how long I spend on the road, reading my technical books and papers, and the internal projects. This altogether tells me how much time this is costing me away from my family. It helps me keep my life in perspective and allows me to make better decisions. If I have only allowed for a few hours of time to spend with the family this week, maybe it is time to go and have that game of handball with my stepdaughter or go for a nice leisurely stroll with my wife or give my stepson a call just to see how he is doing.

This is a very monetary world and time costs us money. Sometime this is good since it helps us to provide for our families and sometimes the cost is great because it takes us away from them. However, if you don’t track it, how are you going to know how well you are balancing your life? What is the cost?

This raises another thought from another life. When I was into the financial world, (okay I was an accountant for the family business), I would have people asking me advise on how they could construct a budget. My advise is always the same; you first need to be extremely anal about tracking your spending, because before you can start budgeting you need to know where you money is going. That is how I see Time Tracking.

The Plug

Over the years I have built several applications that tracked time. First with an Access Database, then a VB front end and SQL backend. The problem with both of these was the synchronization to a central data store. For the last three-and-a-half years I worked for a company that built a time machine on the web. I thought that I would continue working for them until I decided to move on or retired, so I stopped thinking about building a better time tracker. Their software allowed me to keep track of all the things I had become accustomed to tracking.

I regretted this decision when the company got sold to a medium size corporation that was acquiring software companies across the country. The head office insisted that we use a multi-million dollar time tracking system which was in my eyes worthless. I could not maintain the level of detail to which I had grown accustom. None of us could see the point of this since it did not produce detailed invoices for our clients. Now red flags were flying for our clients, they all loved to know the details of what we were doing for them. Anyway, the company closed its doors and I found myself again being an independent software developer and needing some form of time tracking system, so I built Time Tracker. The product is still evolving and I may release a commercial version of the product some time in the future.
Time I spent away from my family in September
If you would like to know more about my Time Tracker program and or are interested in finding out how you can implement Time Tracker in your facility, send email to: TimeTracker@TheWebWeWeave.net

My name is Donald L. Schulz and I like to keep track of my time.

No no he's not dead, he's, he's restin'!

The blog grim reaper

Just in case you did not get the Monty Python reference here is a cartoon courtesy of Blaugh which gets right to the point. I have been away from writing anything for my web site for a very, very, long time. Where have I been? Where do I begin? I have been quite busy developing software for a number of clients that I cannot name because of none disclosure clauses in my contracts. I never did understand how disclosing who the actual client is in a public forum would be such a big deal but I can only descibe what I have been doing over the last four years as having worked in the hospitality, mortgage, back to hospitality and now property cost industry. While that has been keeping me busy with all the work that these projects generate, Mary and I have continued to develop and support our AGP Maker program.

What has brought my sudden attention back to this site and providing more articles and input on what I have been working on? I guess because of the change in where and how I am hosting the site and a change in the content program to update the site. This has been the third time that I have changed the content management system for this site. I started out using City Desk because of an article that I came across. I don’t rember which magazine but the article was about content managment systems. The article quoted a couple of paragraphs from Joel Spolsky and he was talking about City Desk. That article took me to Joel’s web site Joel on Software which was the original inspiration for starting my site. I liked Joel’s style and how he looked at things. This was the very first blog that I followed faithfully. Even today, when Joel writes something, I just want to find the time to sit down and read it. I guess part of it is that Joel does not write every day or even every week. When he has something he wants to say and share he does and that has always been my goal. Speak when I have something to say, not just to generate content.

Next I switched the content management system over to Microsoft Content Management System (MCMS). This was a great learning experience and I was able to leverage my dot net skills. It provided me with the ability to edit the pages from where ever I was at home or on the road, which was a problem that I had with City Desk as I had to make changes within the City Desk program and then push out all the files to their final location. The future of MCMS is uncertain as Microsoft is moving that technology into the latest release of Microsoft Office SharePoint Server (MOSS). That was not the reason I am leaving this platform though, as this is a really great product, it was just impossible to host these sites anywhere but on my public exposing web server. I really want to move all the public web sites to be hosted outside our office so that they can be expanded and extended and provide a much more stable environment. Our office is not setup for hosting and right now our hosting needs are not all that great, but things may very well change over time.

This brings us to the third content mangement system that I am switching to. I am moving all our content over to DotNetNuke. Once again that leverages my skills as a dot net developer added with the extra benifit that GoDaddy supports this in their free hosting program natively. This continues to give me the flexability to update the pages were ever I am, give me a better opportunity to get my pages indexed by the search engines and allow readers to link to direct pages and articles. When I had this site hosted in my office you could not link directly to an article unless you knew the name of the page which was all hidden from view. This may even lead to some articles that I might do about working with DotNetNuke.

Over the next couple of weeks and months I want to take on some technical issues like authentication and how I have taken advantage of windows authentication but used it in the way that forms authentication provides some greater flexability. The way that in house internal programs are built and consumed in other companies that I have worked, just bugs me to death. There is no reason why I need to log onto every single tool that I use if I have logged onto the computer that I am using. There is no need for this and I have developed some techinques that I will share on how I use this to work the way it should.

I would also like to cover some topics that I have never covered before. These would just be opion pieces so take them with a grain of salt, but I do want to cover some political and economic issues that have been bugging me. If nothing else they will make you think cause I am sure my views are going to be a little different then what you might have been expecting. I do at times have a unique view on the way I see things working and how I think that they should be working. Keep in mind these are opionions not necessarily based on a lot of facts.

I would like to talk about my conversion and on going conversion of all my web sites going the way of DotNetNuke. This is a great content management tool that gives me a lot of flexabiltiy as the skins are easy to create, now if only I was better at graphics I could really do something with this tool, but over all the experience is quite plesant. Modules that are not provided by what is in the DotNetNuke installation package I can create quite easily, I am after all a software developer. Plus the fact that GoDaddy which has been my domain name registar for years is now providing some free hosting (for the price of a domain registration) and they fully support DotNetNuke as a hosting package.

What is The Web We Weave, Inc?

A little more than a year ago, Mary and I had a discussion about the many projects that we both have had in the backs of our minds and would like to make a reality. We thought a corporation would be good in that it could provide us with the legal entity and a single structure in which we could register our copyrights and trademarks. It might also provide us with some tax relief and if things went well, could very well represent a major part of our future.

Well, these things are all well and good until you find that our vast array of projects are just that, vast, varied and hard to find a simple way to describe what our company “The Web We Weave, Inc.” is all about. I guess the best way to present this is to go through our current list, and how we came about these as they all lead to a very interesting story, at least to Mary and me.

Fuel Consumption

I have been interested in fuel consumption and fuel consumption tracking since about as far back as 1990 or 1991. Somewhere around this time, I was spending a lot of my time traveling between Canada and the USA. I would often travel with my laptop and liked to keep an eye on my fuel consumption. There were a few calculator type programs that could do this when in Canada and we used them at the family-owned dealership to verify fuel consumption for our customers. The problem that I had was when I traveled to the US; I had to do all these extra conversions from a US gallon into liters in order for this other program to do the calculation. I figured that there had to be a better way to do this that would take the various measurements and do the conversions on the fly in the background.

As a result of this, I built an application that I later distributed as shareware called “win-Fuel” and it was written as a desktop application in Visual Basic 1.0. It did exactly what I had in mind. Radio buttons that switched between miles and kilometers and a second set of radio buttons to switch between Liters, Imperial Gallons, and US Gallons. The display of the results showed the consumption calculations in four formats; Miles Per US Gallons, Miles Per Imperial Gallons, Miles Per Liter, and the number of Miles per 100 Liters (the official metric calculation). I did have some success with the application but more importantly to me than the success was that it provided me with the experience of building a simple application and taking it through all the stages; from concept, development, to distribution. I also built a context sensitive “help” and a “setup” program to complete the project.

I had always planned to go back to this little application and add the ability to store the information in a database of some sort and use that data to compare past trips with the current calculation. However, that never did happen. But now with the availability of the Internet and the ease at which what was once deemed a desktop application can now be transported into a web application and provide an even larger data source, this is a possibility. It is my belief that the collected data could be quite valuable to governments, environmental groups, car manufactures as well as individuals. Up to the present, fuel consumption has always been measured under laboratory conditions and real data has never been taken into consideration.

I see this site as a free service to the users of the application which will allow me to be able to provide a market with the collective value of the data. I also see this as a central place where fuel consumptions can be discussed in the form of forums and discussions, as well as, articles on fuel consumption such as tips on getting better gas mileage and regular vs. premium grade gasoline.

Stock Market Analysis

Mary has always had an interest in the Stock Market and has been very good at doing the research and analysis necessary to make good stock market picks. From this interest she has wanted to be able to share some of this research with others in the rather unique way of only looking at and grading stocks that can be bought directly from companies, the official term is DRIPS (Direct Reimbursement Investment Programs).

One of the many interesting things that I learned about this as Mary has been explaining it to me, is that stock bought through a stock broker is not in your name but instead is being held for you under the brokers’ name. Buying directly from companies enables you to buy stock in your own name, have a right to vote at shareholders meetings, avoid stock broker fees and a whole lot of other benefits that Mary can tell you about on her new site. Sounds pretty good, doesn’t it?

Anyway, the model for this site is a choice of either a monthly or yearly subscription basis or on a per use basis. The idea being that during the valid times that the client has chosen they can go into the site and pick out the various stocks that are graded for their safety and growth potential and provide links to the web sites if available, to the various companies that do indeed sell their stock directly to you. The data itself would come from a variety of sources and it can be assured that Mary has already validated that all the stocks listed on her site are available as DRIPS.

Graduation and Awards Program

Then in the last year that Mary was working in the Activities Department of a High School, she came across an interesting opportunity. It seems that this High School would type up a number of lists for the Awards Night and the Graduation Ceremony. One list would be a list of all the Awards, the Presenters and the students that received that award. This would be used during their Awards Night Presentation. Then on Graduation there would be a program that listed all the students and the awards that they received during the Awards Night. Besides this being a lot of repetitive work, it was always easy to have many errors and a lot of time was spent proofreading the lists.

Mary knew there had to be a better solution to this and brought the problem home where we designed an Access Application where Students, Presenters, and Awards were only entered once, with links to each other and the result being two Access Reports that could be either exported into Word for some further formatting adjustments or Printed out right from Access to be given to the Printer to print these two programs. This proved to be quite successful and the next year, this High School had Mary come back to provide some instruction and make some minor tweaks to the application.

It did not take long for Mary and I to realize that if this High School had such a large task in front of them when it came to the end of the school year, so would every other High School and Middle School in the country. However, the Access Application has a bit of a quick and dirty feel to it and would need to be re-engineered into a more commercial product, especially if we were going to support it. Plans are in motion to build a complete application even though the decisions for the final name have not been reached yet. Our plan is to build and then market this application starting with all the schools here in Southern California.

Custom Software Development

Several months ago, Mary was questioning me about the future of our little corporation. We had the company in place, although we had not opened any bank accounts or anything further then shelling out the legal fees involved in getting ourselves set up. There was no point in going too fast, as all the projects that we had been talking about so far would cost us money and time to develop and we really were not sitting on top of any real surpluses of either. Still wanting to do all these projects, we would just go about it more slowly. There was a need to upgrade our entire network, as the servers and workstations were old and having great difficulty keeping up with the technology that we were using for development and storage.

Then near the end of January 2002, everything changed. The company that I had been working for over the last 3.5 years closed its doors. Now I was officially unemployed, and The Web We Weave, Inc. was not able to support us at this time, or so we thought. The last client that I worked for through my employer was attempting to put a number of the team members on their project back together, offering them short term contracts.

I was one of the lucky ones, and as it turns out it worked out quite well in that we put the contract in the name of The Web We Weave, Inc. and now we are doing custom software development.

Beyond Technical

Besides all of these more or less technical projects, Mary and I have interests in writing. Mary has a number of ideas for books that she would like to write and I still have a desire to do things with music. We both would like to write articles for various publications as we both feel we have something to say and would like to share it with the rest of the world.

What is “The Web We Weave, Inc.”?

Well, we are back to this question, what is “The Web We Weave, Inc.”? And you are probably as confused about this as we are. We made a list of words that we thought were some descriptions of what describes the nature of our company, but still no simple mission statement.
-Internet

  • web-FUEL
  • Nothing but Direct
  • Education
  • Fuel Consumption
  • Software Development
  • Web Development
  • AGP Maker
  • Research
  • Business Intelligence
  • E-commerce
  • Consulting
  • Organizing
  • Tracking
  • Money Making
  • Profitable
  • Service Provider
  • Hardware
  • Relaxed
  • Confident
  • Professional
  • Cutting Edge Technology

We will keep working on it, to find that perfect mission statement and motto that clears up exactly what “The Web We Weave, Inc.” is all about. It just shows that I was wrong; you need more then just a cool name.