Programmers are still rare
on
Source Code Escrow
·
· Score: 3, Insightful
Please do not compare programming to engineering.
Engineers have one best method for accomplishing something. There may be several valid alternatives, but the difference between the alternatives can be measured.
Programming is still an art. Forget all the hype. Scientific analisys of various algorithms is very useful, but rarely affect real world solutions. First a business manager makes the primary decision about which technology to use. Not only does the manager have no knowledge of the technologies, this decision often contradicts the advice if the technical advisors. Then a project manager cuts the work into pieces and assigns them to porgrammers. Again, the knowledge of what pieces ahould be grouped for one programmer is ignored. And the assignment starts with the manager's favorite programmer taking the interesting pieces, regardless of the programmer's skill level or suitability. Then the programmers do their thing, which usually involves getting high on caffeine and using the mystical energy to conduct the thoughts of higher powers into electronic form.
--- American programmers vs. others:
I talked to a German programmer. After currency exchanges, she was making less than half what an American with her skill level would make, but she may have had a better standard of living.
I talked to a company that has outsourced some of their work to India. The big problem is that the work returns to exactly meet their specifications. American programmers translate business needs into code. The Indian programmers translate specifications into code. If those specifications are wrong, then the code is wrong. And the specifications are always wrong because programming is an art and requires flexibility during the coding process. This company solved this issue by adding a translation layer of managers and programmers between the specification writers and the outsourced programmers.
American programmers are arrogant individualists. This is good. They will tell you when a proposal is stupid. They will suggest better ways. The employable ones will still do the work when management insists on using the worst technology with even worse algorithms, but at least management knows they are being stupid. (Not that it matters after the project fails; the programmers usually still get the blame.)
No one shoved through two years of tech school can produce an application that is as fast, usable, and useful as an experienced business analyst/programmer. And much of that experience is still concentrated in the US. (I have friends from around the world, but they work here. Guess where Torvalds lives now?)
Disclaimer: I am not suggesting that all American programmers are better than all non-American programmers. Just suggesting that Americans have arrogance that has proven useful for programmers.
Yes, I know I am proving your point about American programmers. But we are worth the price. My customers insisted I raise my rate this year, and I was already in the 3-digit hourly. There may not be anybody in the world who could replace me.
It is incredibly bad business for any company to be using a product from a company that is about to fail without the code in escrow AND A STATED MIGRATION PLAN. Otherwise you have the situation where the code is bought by another company that decides to drop the product. For a software producer to protect the customers requires a contract that states that the customers gain access and all rights to the source if there is no official release in one year or so. Maybe any patch counts as an official release. Or maybe it requires that at least 10% of feature requests are filled. The point is to have some determination that the code is being maintained. If a software company drops a product FOR ANY REASON, then the code becomes available.
The list of the new owners should also be open. Let companies have less rights if they want to stay off the list. As soon as the customers get the source, they would open source it. It would only requires one customer to place it under GPL. Of course, it would only requires one customer to make it public domain. All of the customers should communicate to decide what should be done with the code. This would be difficult if their names are not specified. (Lawyers: When reading a will, are the names of all beneficiaries released?)
Or the dying company could specify the license and set up the organization to maintain it. Would you trust them to plan to keep their customers happy once they are dead?
--- About Microsoft's code: Bill and I know that MS will be dead in the very short term. Bill even told Steve. That is why development has been stalled on most of their products; there is no reason to waste the money now. If MS survives to 2005, then they can slap something together for release in 2006. Note that they have not reduced the PR budget.
If MS's code was in escrow in a usable form, then somebody would try to maintain it when MS dies. While it might be NICER to companies to maintain that code, it would be BETTER if they migrated to a better platform. Do you really want any code from MS to survive their death? Think about the pay raises for now in-demand Linux and Unix and Apache and PostgreSQL and other non-MS techies because every company in the US wants to migrate away from MS and wants it done yesterday.
Writing is a much more mature art than video, or even recorded music. If you were alive when the technology was transitioning from clay tablets to scrolls to hand-written to print, you would have noticed the change. There have not been very many consumer-noticable changes in books since the printing press became popular. (Well, the art of binding keeps improving, and paperbacks are rather new.)
Video (also called motion pictures or movies) is much younger. Recently, StarWars revolutionized special effects, and Matrix and LOTR are still pushing forward. Until technological progress slows down, consumers will be able to date movies by their production quality.
Same with music: You can usually tell the decade that music was recorded by the quality of production. Every decade brings great improvements in compression and noise reduction. The only time this was not obvious was the 1990s, because popular music did not require any clarity, and the popular format was the CompactDisc, which uses a digital format at a resolution well inside the most people's perception. Clarity may return once bandwidth is better and the popular format (MP3s?) are recorded at decent resolutions.
Let us pretend your daughter was a few years older, and still opened games because they had links to the web site she wants. That implies she does not understand how to make a bookmark/favorite link. That implies she was not curious enough to find an easier method. (If she understands the WindowsXP Start menu, she is very smart. I still have not found the logic behind it, and it is closed source so I cannot read or fix it.) But none of this has anything to do with her becoming a programmer.
Which of your frameworks/IDEs came with the computer she uses? Eclipse may come with some version of Linux, but you make her use MSWindowsXP! Which IDE comes with MSWindowsXP? (And why do you allow her to use MSWindowsXP?)
Would you be a programmer today if you had not started with BASIC at a young age? What language will your daughter use to learn programming?
--- Nobody wants to go down the "Dot Net" route. Even your statement implies that nobody who has learned Java would ever want.net. I believe the numbers are something like: - Half of the VB programmers think object programming is too hard, so will stay with the old VB. - Half of the rest move to Java since it requires about the same effort and pays better. - The last quarter are moving to VB.Net. They have enough brains to understand object programming, but not enough to understand that bigger paychecks means more stuff. So MS has managed to cut their development community by 75%. Maybe more of the programmers will migrate. Maybe MS will buy a few colleges and churn out VB.Net programmers. Maybe MS will fold in the next couple of years.
Yes, we have more people using computers every day. The world populations grows. The area where technology is useful grows. So the number of programmers should grow to stay proportional with the nuber of users.
No, software is the one field where each task only needs to be completed once, and everybody benefits. We only need one word processor. We only need one spreadsheet. We only need one database. We only need one windowing API. We only need one business application platform. Once a task has been programmed, it should never need to be written again.
The problem with word processors and spreadsheets is that they became proprietary very early. I remember reading the source code for VisiCalc. I have not read the source code for Lotus123 or MSExcel. These applications are returning to the open world, so hopefully programmers will stop making YetAnotherTextEditor.
Databases have stalled. DB2 and Oracle and a few others use ancient technology for large databases. LotusNotes uses newer technology, and is the only usable database for home consumers. I believe the next wave is coming; hopefully it will be open source so everyone can share the benefits. (And if I own the company, do not complain that it is originally released as proprietary. I WILL find a business model where the core engine is open and free. Just give me some time.)
It seems that the windowing API is stuck with 3 popular choices: MSWindows, GNOME, and KDE. MSWindows will die with Microsoft, so the battle is between GNOME and KDE. GNOME was winning because RedHat was doing well as the primary US distribution. Now RedHat has changed paths to follow MS, and SuSE was bought into the US, so we may see a shift to KDE.
The only usable business application platform is LotusNotes. The other platforms still require too much effort for too little gain, or quickly become unmaintainable. But many companies have not installed LotusNotes yet, so we need the tons of programmers required to get anything from those other platforms.
A big problem is that programmers cannot find what already exists. A big problem is that we change programming languages every few years. A big problem is that programmers prefer to rewrite everything than use someone else's platform.
Eventually, platforms will be available so new programs can be created by voice control a la StarTrek. But that is at least a decade away. We need tons of programmers to migrate the Microsoft-based applications to other platforms. We need programmers to keep the world running until the new platforms are ready. We will need programmers to help migrate to the new platforms.
I would prefer that all programmers were "true" programmers. But just think: for every two hundred VB programmers in the world, there is one less application that I have to write.
--- My best friend is now a software tester. I wanted him to enter the computer field, but he does not have the creator mindset to be a programmer. Testing is perfect for him, and he is an incredible tester. I like that, as my programmer friends tend to develop inferiority complexes. QA is a worthy field. Be proud of your talent.
What does a "software engineer" do? What do you need to learn to become a "software architect"?
I have been called many names. The technology-related ones include application design and programming titles such as "business analyst", "visionary", "application designer", "developer", "programmer", "senior programmer", "team leader", and "project manager". I also work on the administration side: originally as "support", then "administrator", now as "architect" of global networks. I prefer titles that suggest technical abilities rather than the ones that suggest managerial abilities, especially since about half the "project managers" I have met have little talent for managing people. Today I just use "technology consultant".
I loved C, but wished it had a few more capabilities that seemed obvious to me. Then C++ became available and fulfilled my dreams. Then MSWindows3.0 became the platform of choice for clients; I read the awful API specifications and fled the industry. The disadvantage with C and C++ is that the common functions are made to allow damage, so if I do not keep the knowledge current, I will write really bad code. I had the experience; I knew most of the pitfalls; I know they are dangerous, and I do not want to take the time to relearn them. So now I write Java, which does not require worrying about memory leaks in every line of code.
You already have Lotus Notes, the database and the GUI (i.e. Windows) written for you. You buy in graphics rather than draw them yourself. You don't need to write 99.9% of what you actually deliver.
That is the good thing! I focus on delivering applications that solve business requirements using interfaces that shift the entire paradigm of the worker and result in magnitudes of productivity improvement. And my apps cost less too!
Why would any engineer not use all available tools? When designing a bridge, do you reinvent geometry and algebra? Or just define what is necessary to efficiently build a structure to handle the volume of traffic that will cross this chasm? Do you expect your builders to build a forge and mine the ore, or do you order steel beams from a company that specializes in making steel beams? Most of the computer platforms are still building with wood, and the programmers are doing a great job with hammers. Meanwhile I am using powertools... - And paying a contractor to paint the structure. I do build my own graphics for prototypes. But I know a few incredible graphic artists. They can do in hours what would take me a week, and the result is more professional/impressive. And they charge less than 1/5th my rate. So I pay them to add the professional appearance. Tell me how this is bad business.
That's fine by me, but don't scoff at people who absolutely have to write 50% or even more of what they deliver. And don't scoff at them because they don't cut corners to make themselves look good.
I do not mock the programmers who have to rebuild that 99.9% of what is required every time, although I wonder about calling them programmers. Programmers should have the engineering mind and do have the perfect domain for using it. "Build it once and reuse it."
I do laugh at the business people who are paying those programmers to work on inefficient platforms. They are the ones wasting money when it is their job to protect that money.
I do not cut corners. I make everything fantastic, and am anal about making code perfect. My applications always have features that were not in the specs. Every one of my applications has some feature where the customer goes "That is great. It seems obvious. Why doesn't everyone do it that way?"
A PM told me I was stealing, because either the customer paid for more or less than was delivered, and the consulting house was losing business for expanding the application. I prefer "customer loyalty through great products" over "repeat business due to poor design", and none of my projects ever went ove
If you rephrased your post to use "consultants" rather than "you", you would have been more accurate. I have seen examples of what you describe. I do not believe that I fit that mold, but I could not live with myself if I believed I was.
I do try to be humorous. I am glad I was able to make you laugh. PMs often have that attitude. Then they try to hire me full-time so they can continue to receive the benefits of my presence.
- I promise the world, and always deliver! - I'm worth at least three times what is charged for my time. - I've been on projects for 4 years. 6 years ago, I did maintenance on a project I had written 7 years earlier. - I had to integrate DB2 and SAP and a PBX into one system. I've had to integrate the entire internet into another system. - I maintain many of my apps. You can blame the limited time required for this on skill or luck. I tend to make everything configurable. - I am forced to work with tons of systems that I do not like, because I am only a consultant and cannot touch anything that was not placed under my responsibility. - People rarely know what they want. I deliver apps that solve their issues. Sometimes they require that I stick to specifications, that rarely lasts through the project because either my ideas are really good, or I have mind control abilities and force them to my will. (You pick.) - Maintenance is when you get repeat business on the same application. It means that I have failed to anticipate something, usually because to do so would have greatly increased the cost for little benefit during the original development. (Can I charge just in case they change from MSSQL to DB2, and from terminals to a web UI?) - I use Lotus Notes to rapidly build business applications. I regularly make it do things that Lotus continues to define as impossible. I do not know if there are any real programmers working in this domain; you can read my rants about how Notes Developers are the most untrained group in the computer world. Lotus tried to hire me because "I know more about every area of the product than anybody except the person who wrote that specific code." IBM has said that my "Notes expertise exceeds ours." - I read The Mythical Man-Month, but it was a decade ago. I remember it being very humorous, but it did describe how many PMs think (which I also find humorous.)
Lotus Notes is a platform. Platforms are not applications. Platforms are very generic to allow applications to be built on top of them. Platforms require planned architecture and tons of integration to be useful. Platforms do not know what data will be stored, so must have a flexible structure. A platform will always take many times the effort as a single application. In easy terms, adding two numbers together takes a moment. Building a calculator that handles input of two numbers and adds them together takes much longer.
Applications are very specific. I know what back-ends to integrate. I know what data is to be stored. I know what UIs are needed. An application has very limited scope, which makes them much easier to write and test.
Lotus Notes has become a great platform because they listened when consultants and RAD monkeys told Lotus what they needed to do their job. I believe the initial work was done by a very small team over 2 years.
I am building a new platform. I have easily put a year's worth of time into it. It stalled because I based it on Lotus Notes, and Lotus Notes has a few major flaws that keep my platform from being production-worthy. Their stated work-arounds will not work for a new platform, although they might work for applications. I will be writing a replacement for the Notes portion next year. I expect it to take me 1 year to be usable, and then I will hire others for expertise in performance-tuning an SQL engine and a few other things.
Pick your example better. Maybe use a statement like "Word Processors cannot be written by one person working for 6 months," except I
Right now, the Average Computer User (ACU) was probably born when personal computers didn't even exist. Look ahead 50 years, and that won't be the case. The ACU will be much more familiar with computers, and there will be no need to coddle them as much.
I disagree. I believe the Average Computer User will remain approximately as well-informed as they are today. They will know how to turn it on (as long as nothing goes wrong), and use a few applications (as long as the work properly). Most people believe that a little computer knowledge grants expert status: - A friend thinks his 6-year-old child is a computer genius because she can use the mouse to play children's games. - Another friend thinks his teenagers are computer literate. They know how to download songs. - A college student thought another student was very computer literate because he found her "lost" document in the "My Documents" folder. - A friend's friend at a party was hailed as a computer genius because he could install anti-virus software, start the scan, and remove viruses if the software knew how.
When I started with computers, they could play a few games. They often required typing in the source code. (We did not call it "open source" then. "Closed source" came on plug-in cartridges, or was in the BIOS. Everything else was open.) I quickly decided it was more fun to program a game than to play a game.
In the early 90s, the computer world exploded. Suddenly tons of people were seen as computer literate because they knew how to "program in HTML". Then the techies added JavaScript. Some of these "web developers" survived by copy/pasting (otherwise known as "stealing", or "borrowing" since all JavaScript is "open source") JavaScript from other sites, or from new websites that collected easy-to-implement code.
None of the people mentioned are likely to become techies. There is also a class of people known as "administrators" who have basic knowledge of installing programs and rebooting computers. They fill the boring roles in the computer world that programmers do not want. (Network architects and a few other jobs are more engineers than techies, and so are not part of this discussion.) Using "scripting" languages has reduced the intelligence/competence/skill-level-required to program, and that is good because we need more programmers, and we have fewer.
The bar for being considered "computer literate" by the public is very low, while the bar for becoming a programmer has been raised. I really started programming on a Commodore PET. IIRC, it booted to a command line that also served as the IDE for BASIC. - What IDE do I use in Windows? DOS Help was hidden in the extras on the Windows95 CD. QuickBASIC disappeared. MS wants you to use VisualStudio (after giving them much money,) but how many 10-year-olds can afford it. - Java is easy to install, after waiting for the download, but compiling requires the command line. (I use batch files. Raise your hand if you know what is a batch file. OK. Now explain to that newbie who wants to be a programmer.) - The best bet for a newbie is to ask for someone's old computer, install Linux, and start playing with all those compilers. But that newbie already knows they want to program. The casual entry of source code is gone.
Computers must become get easier for the average person to use, while programmers become rarer. At least we are guaranteed good income.
I make businesses better. I do process reengineering and technology implementation. My work has saved companies millions of dollars per month. My work has people finishing their main task in 2 hours instead of 12 hours, so they can be more productive and pick up their children from school rather than just watch them sleep. I have had a positive effect on people and companies, and I plan to continue.
If you call all that "trivial", I cannot imagine what you consider important.
--- [WARNING: Bragging follows.]
Now about man-months: 1 great programmer = 20 good programmers 1 good programmer = 10 average programmers
Time required for a project = (Time for one programmer to complete it) ^ (number of programmers assigned) - One programmer is more efficient than 2 programmers. With 3 programmers, projects take so long that they may fail. 4 or more almost guarantees failure.
If a project cannot be completed by one good programmer in 6 months, it is designed wrong.
I design applications in my head before the business people have decided what they think they want. I write code 3 to 10 times faster than anybody my colleagues know. My code is more efficient (less LOC) so it is easier to test. I unit-test as I go, and reuse proven code, so beta testing is almost a formality. (I do get upset when clients say, "The last 5 applications worked perfectly, so why do we need to test this one?") I work on the best RAD platform ever created for business applications, and I know more about the platform than the people who write it (by their own admisssion.)
Your typical project: 2 months specification gathering and approval 1 week designing major functionality and assigning responsibility 2 months initial programming 1 month integration of each person's work Oops! Specifications changed | design was bad/unscalable/does not fulfill needs | someone did not write the same API that someone else planned to use | Integration with backends needs rewrite. Repeat "design - code - integrate" until project seems to work or the money is gone.
My typical project: "Show me what you do now." "Thanks. I'll have something for you to try next week." [Then a miracle occurs] "So... Can you talk with that smile or is it stuck?"
(If you want to use the word "trivial", what do you call the corporate application development department that can be replaced by having me work part-time?)
I agree that this law was an incredible win for the spammers. Otherwise the new CA law would have made a (small) difference. It is nice to know our government responds to the needs of all businesses with money, regardless of their ethics and how they annoy the citizens. I also agree that any solution must be technical, not legal, especially since the government is placing themselves in the other camp.
I doubt MS will be of any use in distributing a new email protocol. First, we need to design the new protocol to be usable on the hostile internet. Then we can try to get the mail clients to use it. Mozilla would have it very quickly. Mozilla seems to be spreading rapidly from what I hear from non-techies, but I have no stats.
If MS is going to fix MSOutlook to work with a new email protocol, it would only be available when buying their next OS, and possibly included in a MSWindowsXP service pack. This is called a marketing opportunity. "Buy our new version and reduce SPAM." Even though all of the technology would be invented/defined by the OSS crowd. And MS would have to learn how to read the RFC so they could change MSExchange to fit. That costs money (and brains) = probably would not happen unless more money could be made.
IIRC, 1/4 of surfers run MSWindows9x, one fourth run NT4/2K, one third run XP, one sixth run "other". MS would try to use this to get half the surfers to upgrade.
This policy would not change the world in 6 to 10 months. The only reason XP is the top group is because almost all machines sold in the last 2 years had it preinstalled. Do you know anybody who "upgraded" to XP without buying a new PC at the same time or soon after?
So if MS added the new protocol, it might be usable in 5 years. My opinion is that MS will stop owning the desktop soon, so better software will have a chance to effect this change without MS.
Does MS even patch MSOutlookExpress any more? I thought that was cancelled with MSInternetExplorer. I could be wrong.
I worry that people are dropping broadband because of the RIAA, and are dropping email and chat because of the spam. Email was the killer app for the internet. Many people may soon only use the internet for surfing.
(Sorry. Not my usual cohesive post. Time for bed.)
I am guessing you are a PM, so most of this will seem incredibly lax to you. Most of your questions are about non-productive parts of projects used to pad the costs.
I already admitting to adding comments to the code. With the debugger, it is possible to learn an application just by taking a test document through the process.
I did not mention design documentation. I usually write a list of the important or tricky elements, and a complete workflow of a record, and store it in the application.
There is a very junior programmer that regularly adds code to a few of my applications. 4 years ago I taught him a few basic concepts, because the data he was modifying was in the wrong table. The documentation was there (well, actually, the table was named "backup".) Others see my code. No one has had difficulty following it. I would be told because I would provide free support until they were happy. (Standard line from me: "The application is finished when you are smiling." Factually untrue because they usually start smiling when they see the demos, and the application is not finished until rollout.)
I did not mention user documentation. Read my other posts. I believe assistance should be provided at the point that it is required. Separate user documentation might be nice for off-line training, but I believe that off-line training is a waste of time. I do occasionally write extra documentation (because I get paid as much for writing documentation as for productive work), and I write it very well, but I believe I have failed if it ever gets used.
Business cases are a waste of time. If there was one, it was used as justification for hiring me, and is now obsolete since I will handle the rest.
Use cases are usually a waste of time. Again, they are usually done before I am hired. I have referred to them occasionally. I actually read one for information rather than humor.
For specifications, I usually talk to a group including: - a techie manager (for the environment and back-end specifications for integration), - a business manager (because its his money) and - a user (because I need the example of someone who will use it. They also tell me what the old system did, how they really use it, and what the real process is.)
I write a document telling them what I heard, clarifying anything weird or complicated. I may explain how I will reengineer the business process (if I am allowed.) - Then I design the application. I usually do it in my head, although I may use paper or a text editor to keep notes. If it needs to be broken into pieces, I then discuss what pieces are needed to make it functional, and which should be added later (like next week.) - If anything is to be handled by others, I tell/write them about what is needed: sometimes I need professional graphics, sometimes I need the table definitions for a RDBMS.
Then I create the application. As soon as screens are ready, I demo them to show progress and check the colors. Then I demo the alpha, then beta testing, then rollout.
I usually do the spec-gathering on TUE, WED, or THU, then demo it on TUE, start beta on WED, and do rollout for MON or TUE. So all applications take about 2 weeks. Most of that time allows my subconcious to notice if I forgot anything or included a bug. If I write code and put it into production the same day, bad things happen. So I prefer to sleep on an application for at least one day before rollout.
--- On to the personal attack: It appears you are cranking out one day, one person projects. I won't denigrate you for writing them. Everybody has to start somewhere. Tying a small UI to a small database with a tool designed for doing just that is not hard work. Consider yourself lucky that you don't have to maintain a billion LOC, 20 year old project that you didn't write.
I think of all projects as taking one week, unless something really complicated is involved. (See above, but the second week is the users
I apologize. I was deluded that I had a reputation as a Lotus Notes zealot. In the hands of a trained programmer, it is wonderful. The bad is that I am one of very few real programmers who works with it, and I do not know any of the others.
Should I add my usual rant about how there are few trained programmers working with the Notes platform? Because it is so easy to create solutions so, 1. Untrained "developers" can make a living. 2. Real programmers cannot find the challenge they need. Just read my other posts.
I keep hoping another real programmer will become interested in the Notes platform. It would be nice to converse about my niche with someone who knew what is an algorithm.
Thanks. I have been reading Slashdot for years, and should have known to mention the GIMP. I did try it a while back, and decided I did not want to have to support it when my father calls. I plan to install it during this reinstall session (see previous post) but tell him that if he has any problems, switch back to Photoshop because I cannot answer them.
That is how I handled the transition to OpenOffice. He had used MSWord for years. I installed both. He tried it, found it easier, stopped losing work, and stayed with it. Except for a few things that either OO cannot do, or are hidden well enough that he could not figure them out. (He reads Help files, but forgets he can web search for help.)
I am hoping that GIMP2 and OO2 will be ready before I finish reinstalling, but I may do it before EOM/EOY, so I doubt either will.
[Answering an AC] I may be missing your point. You state that I've already done the prototyping because I've done essentially the same application over and over again, and all that's necessary at this point is to adapt what you've already done to each specific business case. All programs have input and output; all business applications require data entry and storage. The platform handles that, as well as security and much of the networking. Yes, I follow certain guidelines that I have developed over time (and will be in my book if I finish it,) but I am paid for experience.
If I switched to programming games, I would be a newbie, and would need a few minutes to learn the differences. I might even read a book on the subject before deciding the best method to program.
Or I could find a platform that provides all the basic functionality for the type of game I want to write and work with the platform. When writing a FPS, would you prefer to start with a C compiler, or the latest engine from id Software? The Quake engine provides the input, configuration, graphics output, and networking functionality. If I want to write a FPS, I do not need to rewrite them.
Same with business applications: The platform provides the input screens, the ability to organize the data, the networking, the ability to sychronize between servers and laptops, a great security system. All I need to do is write the business functionality and the user interface. But it is not about what I've done; it is about what is provided by the platform. Otherwise application development could take weeks or even months! Most businesses should not wait for their applications. They think of something; next week I deliver. Everybody moves on.
Professionally, I have never had a project go over budget or miss a release date, nevermind have one actually fail. Any mistakes are caught before deployment, so they do not count, right?
Very few of my applications look like existing applications. I'm on the expensive side, and companies tend to ask their full-timers for a solution first, so I only get the strange ones. Except that a few companies have learned that it is cheaper to ask me first, so I am usually busy, which keeps my price rising, so companies will ask less expensive programmers first.
The Windows Registry is easy to program. You can easily add information. Removing information is a little more difficult. I have worked with it enough that some of the standard MS stuff actually makes sense, causing me to doubt my sanity. I expect whoever invented CLSIDs will be forced to type them in manually for eternity.
The problem is that if you have a problem with the Registry, your entire computer is useless. This one place (2 files) owns your system, and if anything happens to it, you must reinstall every application that depends on it.
MS does not have the brains and/or empathy to have implemented regular backups. Back it up every successful boot, and keep at least the last 5. If there is a problem, mark the current one as bad and use the next newest.
Applications should not depend on the Registry. Program applications so that if the registry disappeared, the program would still function. Use default settings. Then try to create the registry settings again.
I believe that I should be able to delete any configuration file without causing programs to fail. This should include the registry or any specific setting in it. If the settings is missing, use the default. If the setting is bad, use the default. Easy, and proof against both fools and geniuses.
--- Sorry, currently sensitive on this subject.
Over Thanksgiving I finished configuring my father's computer. Two weeks later the registry failed. It reverted to the only backup, which was from when the OS was installed over 1 year ago, and before any applications were installed. Almost every program is useless, and most must be reinstalled. Yes, bad programming on the application vendor's part (such as the programmers who wrote MSWord), but very bad programming on the OS vendor's part (such as the programmers who wrote MSWindows.) I already have him using OpenOffice and Mozilla, but I cannot switch him to Linux until I find a replacement for Photoshop. So I must reinstall MSWindows and all the applications once again, and I am really busy launching another start-up this month.
Yes, he usually uses OpenOffice because it is easier and less crash-prone, but he said there were a couple of things it does not do yet, so he still needs MSWord. He is willing to give them up, (or maybe OO2 will fix them) but he cannot give up Photoshop without a replacement.
Grandparent: Write your prototype - and then deploy it, because it's already fast and robust enough for everyday use.
Parent: And then watch it die...
Joke: You obviously do not work for MS. Proper marketing can sell anything.
Real reply: If you use a good platform, the prototype develops into the application. Without recreating the prototype. Without leaving excess code behind. Without making the program impossible to maintain.
My primary platform for business applications is great. I can build the interface or the functionality first. I can expand either at any time, rarely worrying about new stuff interfering with the existing stuff. The datastore automatically expands to include any fields need by the UI or the code. The source code is the programming documentation, although comments are welcome. The integrated debugger walks through the code showing the value of all variables, allowing easy debugging, and making it easy to learn what code does, and making it easy to see all the code that runs, so an obscure function is not missed. I can create backups of the entire application or any piece of functionality before making changes. The most recent version includes check-in/check-out of design elements. The client used to be cross-platform, but I can move the interface to use a web browser in minutes.
Where I start building an application depends on what it will do. If the interface is very important, then I start with the interface. Then I can get user input into whether all data is being captured. You can call that a protoype, but it is functional for data input, although most of the specifications have not been implemented at that point.
If how the data is processed is the important function, then I start with the code, then add an interface to allow configuration. Most applications require both, so I build an interface for the data entry, then build code for the functionality, then add to the interface for configuration. Repeat until the application does everything I can imagine (which is usually a superset of everything the users or specifications wanted.) When ready for release (and all fields are specified), redesign the interface for friendliness and productivity (without worrying that something will break because I moved a field.)
--- That is how I work professionally. For fun at home, I use Notepad or vi to write Java. But my home work does not require the easy development/maintenance needed by business applications.
I want a setting so that any new tabs OR WINDOWS open in the background, and I want to be able to do it by left-clicking. No, CTRL-clicking does not help because then one hand has to be on the keyboard. I currently use "open in new window" with a right-click, which passes the focus to the new window, and does not work if the link was JavaScript. If the left-click could handle it, then JavaScript should work properly.
The situation: I am reading a page; I see a link I want to follow; I click the link. I do not want to look at an empty window while the new page loads, then return to the original page and have to find my place. I want to keep my attention on the page I am currently reading, then see if any links that looked interesting are actually worth reading.
I realize that I am not the normal surfer. Most people click a link and need to see the result. They need to see tha chain of events to remember that THIS page opened because they clicked THAT link. But Mozilla is supposed to be able to be used by smart people too, right?
I also want the double-rightclick to close the current tab. I have the habit of closing windows (and all tabs) with the window's X or from the taskbar. Either method causes Mozilla to closes the window (and all tabs) without warning. Double-rightclick would allow me a method to close the tab or window without moving the mouse to a corner of the screen.
I am very surprised that Mozilla does not have a warning message that you are closing multiple tabs. I expected a prompt stating: "You are closing a window that contains multiple tabs. Would you like to: - Close the window and all tabs. - Close only the current tab. - Cancel and keep all tabs open." That seems like an obvious and easy function to me. It would give me a chance to retrain my habits without losing information. Again, I am very surprised the original developer of the tabbed interface did not include it.
If left-click could open new tabs, and double-rightclick could close them, I would be using the tabbed interface. If there was a warning dialog when I accidentally close the 30 pages I want to read, I could at least try the tabbed interface without losing everything many times. As it is, I am stuck using multiple windows, and clicking to focus on the current page all the time.
--- While we are at it, when receiving "Page Not Found", put the URL in the dialog box so we are informed what page is missing, THEN CLOSE THE WINDOW. Or at least offer the option in the "Page Not Found" dialog. Does anybody really need to keep the empty window open? "The following page was not found: http://slashdot.rog - Close the empty window or tab. - Leave it open (so the address can be fixed.)"
Otherwise, why are we prompted for missing pages? Just leave the window blank. Or even put the error message in the page (like every browser ever written except Mozilla.) The current prompt is useless, since it does not even focus on the window so it can be closed.
(I once tried to open 20 links from a page. A dozen of them gave this prompt, and then I had to find which dozen windows were empty from bad addresses, while some of the others were just loading slow.)
--- Notice that all my dialogs have descriptive choices. I hate the VB-trained programmers that use dialogs like: "This is dangerous. Would you like the hard drive to not be erased? - Yes. - No."
MUCH better would be: "This is dangerous. Do you want to: - Erase the hard drive. - Cancel."
Always avoid double negatives since then the user has to think before answering, and we know how well users think.
--- A final note in this lesson on UI design: Why does Submit come before Preview?
The movie had little to do with the book except the alien invasion and some of the political lectures about your duty to society and community service being required for citizenship.
The biggest change allowed the sex and tit shots.
Heinlein was against women in the military. He felt the entire purpose of the military was to protect the child-bearers. While he felt women could be as good or better than men, and should be trained with guns in case we were invaded, men were the expendable sex to be used as the first line of defense against any attack, including governments' attacks on liberty. He had women (and children) fighting in The Moon is a Harsh Mistress, but that was when their home was invaded, and he graphically described a girl's death to disgust the reader about letting woman die, while saying that liberty was worth even that price.
The movie is fine as a quick action adventure with a little political philosophy. If anybody learned the politics from the movie, then it was worth making. And it serves as an advertisement for the book, which goes into much better detail. The script probably went through a dozen rewriters, and none of them had read the book. I am surprised that the main character was still named Rico.
Yes, the word Lindows was chosen because of its relationship with Windows. And they could be in trouble legally because they are deliberately confusing their trademark with Microsoft's in the mind of the consumer. The ability to distinguish a product in the mind of the consumer is the ONLY purpose of a trademark. So causing even accidental confusion is frowned upon by the courts.
The defense is not that Lindows is causing confusion, but whether "Windows" can be a trademark in the software domain. "Microsoft Windows" can be trademarked, because it is a generic term used in conjuction with an identifier. And if someone tried to trademark "Macrosift Windows", Microsoft would have a case.
But the generic term "windows" had already been in use in the software domain for several years before Microsoft applied for the trademark. Research how Microsoft gained the trademark. Several other companies were using "windows" in other software trademarks. Microsoft bought several of those companies to remove the patent and trademark office's objections.
If "windows" is a generic software term, then Microsoft cannot object to companies using similiar trademarks. The US courts seem to agree, and may take the generic trademark from Microsoft.
--- As far as "Winux" being confused with "Linux": Visually, there is only a 20% difference in letters, but it is the most significant character. But "W" sounds much like "L", so Linus would have a good case based on the similarity of pronunciation. He would not have much of a case against "Dinux", "Kinux", "Pinux", "Sinux", "Tinux", or "Zinux".
(I am currently fighting a trademark case where both the words and audial identifiers are similar. We are arguing that they are distinct enough not to cause confusion in the mind of any consumer.)
Same here. There are at least 3 copies of Ender's Game on my shelves. 2 more are out on permanent loan to people I know. I think I gave away at least 20 to other people, and either stopped associating with them or forgot who had them.
I also bought 50 copies of the softcover edition of Maps in the Mirror. Anybody I meet who admits to reading gets a copy. It includes the original short story "Ender's Game", which is missing the siblings storyline. I have about a dozen left (after 7 years, and I meet tons of people. That says much of the importance of reading in our society.)
The first book (and the new Shadow continuations) are about treating intelligent children as if they have a purpose. The rest of the original series was about redemption of the childhood star, so had little interest to the audience of children who were entranced by the idea that adults might recognize their worth.
So I was not the only one who knew as a child that I could change the world for the better if only given a chance?
I had the technical abilities at 10 to do anything I have done since. I have learned much about people since then, but I already had the ability to see a system and know how it can be improved. Started my first technology business at 18; even at the "adult" age it was extremely difficult to get adults to respect my thoughts (which directly led to the business's demise.) I gave up the fight and partied for 6 years of college before I started caring for the world again. It would have been great for both me and the world if my talents were exploited earlier.
--- My father recently asked my advice about how a friend of his should handle a super-intelligent child who was bored with homework. I told him to forget about the homework and help the child learn as much as possible about the child's current interests while trying to expand those interests, such as using algebra as an excuse to teach about the Greeks and move into philosophy. His reply was that I was talking like a child. He still does not understand, even after "raising" a genius, although around age 8 (when those silly tests said I should be in college, but they still insisted I do third-grade homework) I gave up on adults as sources of information, and started raising myself.
Yes, I have a 6-speed manual. 6th gear: 1100rpm cruising at 65mph, 1600rpm for 90mph.
The time I tested it was during a very long trip on flat ground. An entire tank of gas on cruise control at 85mph averaged 23mpg. An entire tank of gas at 70mph averaged 21mpg. These numbers were incredible since I usually get 18mpg, and 15mpg in city traffic. I hope to get to Montana someday so I can try the test at 100mph.
I did the tests; I have no idea about the theory behind these numbers. Should a slightly higher RPM marginally use enough more gas to offset the additional miles covered at a higher speed? What is the formula? Please tell me so I can figure the optimal speed. Maybe it would it help with speeding tickets to demonstrate that I was being economically and environmentally aware through using less gas by driving 90mph.
I am in KingOfPrussia and my best client is in Horsham (WillowGrove exit). I went to NJ for Thanksgiving. I have not been west much recently.
I assumed that if they are adding an EZPass-only exit between 2 exits that are only 4 miles apart, they would be adding them farther west where the exits are 20 miles apart.
There are usually many dual EZPass/ticket pickups for entering the Turnpike. Yes there are usually only 2 lanes for paying the tickets, but since most commuters are using EZPass, I rarely have to wait. (It helps that I refuse to drive near rush hour.)
Anyway, I pass the only EZPass-only exit all the time, and was "assuming".
I lived in NJ through driving age. Now I live in PA.
As a child, I heard complaints about how the tolls did not disappear after the roads were paid off. When I moved to PA, I learned that having somebody pump your gas was to cut down unemployment, not somehow a safety issue. I also heard that the toll systems kept people employed.
I was poor in both states. I know all the roads to use to avoid the tolls, but they are much slower. Now my time is worth more than the tolls, but a decade ago I often took the back roads to avoid tolls.
NJ is willing to implement EZ-Pass because it allows them to keep the tolls while disrupting the driving less. Obviously the tolls are important revenue. Also obvious is that they are using EZ-Pass for the convenience. They even moved the toll at the Delaware bridge to make the untolled exit easier, and to build a fast lane for EZ-Pass users.
PA does not have an untolled exit; you must give PA money to use the Delaware bridge. PA is also building new exits on the Turnpike that only accept EZ-Pass. There was a rumor that EZ-Pass would only pay for itself if enough people ran the tolls and were fined. Then it was rumored that enough people were not doing it. Now PA is making it impossible to exit without EZ-Pass. And if you think that signs make anything obvious, you have never driven in PA. (I made a wrong turn today because the signs said the left lane turns left and the right lane turns right. The road did continue straight, but I think you had to drive between the lanes to stay on it.)
People like tolls and taxes on gas because they believe that the revenues are collected from the people who benefit from their use. They need to feel this money is used for the roads. If it was announced that toll money was going to be used for education, people would revolt.
If you wonder what NJ does with the money, try driving in PA. The roads are awful compared to NJ. I saw NJ repave about 40 miles of the Parkway over a weekend, one lane per day. PA cannot repave 20 miles of a highway in less than 2 weeks. It took PennDot 6 months with one lane closed at all times to "widen" a 2-lane highway to 2 lanes with better shoulders. Part of this may be because NJ uses blacktop and PA roads are typically concrete. Part of it may be because PennDOT is a very unorganized and/or corrupt department.
NJ roads are some of the best I have seen. A report in the 80s listed the Garden State Parkway as the safest road in the US, and I wondered how it could be when it was usually 70mph bumper-to-bumper traffic. A factor is that in NJ you always move right when a faster car is coming behind you. NJ drivers keep moving in heavy traffic; it takes an accident, bad weather, or a patrol car to get them to slow down (a little.)
PA has some of the worst roads I have seen. PA passed a "stay right" law recently, but no one noticed. The left lane of most 2 lane roads often moves slower than the right lane. And when it is bumper-to-bumper in PA, everybody slows down to 20mph and stops erratically. This may be necessary to avoid all the potholes.
In NJ, I worried that salt from the ocean and the weather would ruin my cars. In PA, I worry that the roads and the potholes are going to shake my cars apart. (Do you plan to have a flat tire at least once per year?)
Some factors for the difference in road quality: - NJ is a richer state with a denser population. - The tolls contribute to road upkeep, and... - NJ has 2 toll roads that cross the state in different directions, while PA only has one and it misses most of the state. (Not that you'd want to go there.) - NJ just cares more about roads, and has a DOT that works.
--- Side note: I refuse to get EZ-Pass, even though driving to my best client almost requires the PA Turnpike, because I believe the issues in this article are inevitable. I don't have a tinfoil hat, but why make it easy for them? (And I drive sports cars that get lower mpg when under 70mph.)
Thank you for the information about stand-alone clients.
--- I am much like you. I have never used P2P file trading. A friend forced me to try ICQ once; my "trial" lasted less than 20 minutes.
I was looking for methods to market Notes to the home consumer. Unless all standalone IDs use some special IBM certifier and work through IBM (or third-party) servers, domain policies could not exist. The great thing about consumer products is that us corporate types do not need to fix them; they would call IBM for help. No home consumer could afford my rates. That does not stop my family from expecting assistance, but I can usually list the paying projects I need to finish this week, and they will wait patiently.
--- As far as overhead, my very selective MSOffice program directory is about 60MB. That does not include Outlook and Access and many of the extras.
My all-clients Lotus program directory is about 100MB. I did not include the data directory because I have tons of large databases. Notes could replace Outlook and Word and Access and most use of Excel.
Hard drive space is cheap; some games install close to 1GB. Notes uses about the same amount of memory as MSWord. I doubt resources will be an issue.
A simple Notes database with a Subject and a RichText field can replace MSWord. The documents can be emailed easiliy, and searched for words, or by creation date, modification date, or other fields. You could have automatic version creation, so previous versions are available. (I use databases like this for my resume and my songs.)
The technology is there. The problem is how to market it to the home consumer, and whether IBM is willing to push it.
I missed this option, probably because I rarely install Notes and always create an ID file first. I assume it must happen if you specify your name rather than an ID file, and I have not used that option for many years.
Could you provide some details? - What version gained this functionality? - Which options trigger the ID creation? - Can you set a password? - Can you encrypt databases locally? - Why isn't IBM shouting this from the rooftops? (Yes, I know. IBM does not care about Notes.)
--- It would still help if it was free for home use. Having annoying 90-day trials will not win home consumers. They can get enough of the communication functionality using Mozilla that they would never jump through hoops for a database program. Most think MSWord is good for record-keeping, although some use MSExcel, and masochists attempt to use MSAccess. Free Lotus Notes for home consumers would eliminate this industry. The next release of Quicken might even include a Notes version if enough people had it.
--- Now all we need is to remove the need for servers: - client-to-client selective replication. (Give me document stubs, then choose which to fully replicate, and it is a P2P file-sharing network.) - client-to-client instant messaging (without requiring a SameTime server.)
Notes could still conquer the home consumer market (if IBM cared to let it be a success.)
Please do not compare programming to engineering.
Engineers have one best method for accomplishing something. There may be several valid alternatives, but the difference between the alternatives can be measured.
Programming is still an art. Forget all the hype. Scientific analisys of various algorithms is very useful, but rarely affect real world solutions. First a business manager makes the primary decision about which technology to use. Not only does the manager have no knowledge of the technologies, this decision often contradicts the advice if the technical advisors. Then a project manager cuts the work into pieces and assigns them to porgrammers. Again, the knowledge of what pieces ahould be grouped for one programmer is ignored. And the assignment starts with the manager's favorite programmer taking the interesting pieces, regardless of the programmer's skill level or suitability. Then the programmers do their thing, which usually involves getting high on caffeine and using the mystical energy to conduct the thoughts of higher powers into electronic form.
---
American programmers vs. others:
I talked to a German programmer. After currency exchanges, she was making less than half what an American with her skill level would make, but she may have had a better standard of living.
I talked to a company that has outsourced some of their work to India. The big problem is that the work returns to exactly meet their specifications. American programmers translate business needs into code. The Indian programmers translate specifications into code. If those specifications are wrong, then the code is wrong. And the specifications are always wrong because programming is an art and requires flexibility during the coding process. This company solved this issue by adding a translation layer of managers and programmers between the specification writers and the outsourced programmers.
American programmers are arrogant individualists. This is good. They will tell you when a proposal is stupid. They will suggest better ways. The employable ones will still do the work when management insists on using the worst technology with even worse algorithms, but at least management knows they are being stupid. (Not that it matters after the project fails; the programmers usually still get the blame.)
No one shoved through two years of tech school can produce an application that is as fast, usable, and useful as an experienced business analyst/programmer. And much of that experience is still concentrated in the US. (I have friends from around the world, but they work here. Guess where Torvalds lives now?)
Disclaimer: I am not suggesting that all American programmers are better than all non-American programmers. Just suggesting that Americans have arrogance that has proven useful for programmers.
Yes, I know I am proving your point about American programmers. But we are worth the price. My customers insisted I raise my rate this year, and I was already in the 3-digit hourly. There may not be anybody in the world who could replace me.
It is incredibly bad business for any company to be using a product from a company that is about to fail without the code in escrow AND A STATED MIGRATION PLAN. Otherwise you have the situation where the code is bought by another company that decides to drop the product. For a software producer to protect the customers requires a contract that states that the customers gain access and all rights to the source if there is no official release in one year or so. Maybe any patch counts as an official release. Or maybe it requires that at least 10% of feature requests are filled. The point is to have some determination that the code is being maintained. If a software company drops a product FOR ANY REASON, then the code becomes available.
The list of the new owners should also be open. Let companies have less rights if they want to stay off the list. As soon as the customers get the source, they would open source it. It would only requires one customer to place it under GPL. Of course, it would only requires one customer to make it public domain. All of the customers should communicate to decide what should be done with the code. This would be difficult if their names are not specified. (Lawyers: When reading a will, are the names of all beneficiaries released?)
Or the dying company could specify the license and set up the organization to maintain it. Would you trust them to plan to keep their customers happy once they are dead?
---
About Microsoft's code:
Bill and I know that MS will be dead in the very short term. Bill even told Steve. That is why development has been stalled on most of their products; there is no reason to waste the money now. If MS survives to 2005, then they can slap something together for release in 2006. Note that they have not reduced the PR budget.
If MS's code was in escrow in a usable form, then somebody would try to maintain it when MS dies. While it might be NICER to companies to maintain that code, it would be BETTER if they migrated to a better platform. Do you really want any code from MS to survive their death? Think about the pay raises for now in-demand Linux and Unix and Apache and PostgreSQL and other non-MS techies because every company in the US wants to migrate away from MS and wants it done yesterday.
Writing is a much more mature art than video, or even recorded music. If you were alive when the technology was transitioning from clay tablets to scrolls to hand-written to print, you would have noticed the change. There have not been very many consumer-noticable changes in books since the printing press became popular. (Well, the art of binding keeps improving, and paperbacks are rather new.)
Video (also called motion pictures or movies) is much younger. Recently, StarWars revolutionized special effects, and Matrix and LOTR are still pushing forward. Until technological progress slows down, consumers will be able to date movies by their production quality.
Same with music: You can usually tell the decade that music was recorded by the quality of production. Every decade brings great improvements in compression and noise reduction. The only time this was not obvious was the 1990s, because popular music did not require any clarity, and the popular format was the CompactDisc, which uses a digital format at a resolution well inside the most people's perception. Clarity may return once bandwidth is better and the popular format (MP3s?) are recorded at decent resolutions.
Let us pretend your daughter was a few years older, and still opened games because they had links to the web site she wants. That implies she does not understand how to make a bookmark/favorite link. That implies she was not curious enough to find an easier method. (If she understands the WindowsXP Start menu, she is very smart. I still have not found the logic behind it, and it is closed source so I cannot read or fix it.) But none of this has anything to do with her becoming a programmer.
.net. I believe the numbers are something like:
Which of your frameworks/IDEs came with the computer she uses? Eclipse may come with some version of Linux, but you make her use MSWindowsXP! Which IDE comes with MSWindowsXP? (And why do you allow her to use MSWindowsXP?)
Would you be a programmer today if you had not started with BASIC at a young age? What language will your daughter use to learn programming?
---
Nobody wants to go down the "Dot Net" route. Even your statement implies that nobody who has learned Java would ever want
- Half of the VB programmers think object programming is too hard, so will stay with the old VB.
- Half of the rest move to Java since it requires about the same effort and pays better.
- The last quarter are moving to VB.Net. They have enough brains to understand object programming, but not enough to understand that bigger paychecks means more stuff.
So MS has managed to cut their development community by 75%. Maybe more of the programmers will migrate. Maybe MS will buy a few colleges and churn out VB.Net programmers. Maybe MS will fold in the next couple of years.
We need more programmers?
Yes and no.
Yes, we have more people using computers every day. The world populations grows. The area where technology is useful grows. So the number of programmers should grow to stay proportional with the nuber of users.
No, software is the one field where each task only needs to be completed once, and everybody benefits. We only need one word processor. We only need one spreadsheet. We only need one database. We only need one windowing API. We only need one business application platform. Once a task has been programmed, it should never need to be written again.
The problem with word processors and spreadsheets is that they became proprietary very early. I remember reading the source code for VisiCalc. I have not read the source code for Lotus123 or MSExcel. These applications are returning to the open world, so hopefully programmers will stop making YetAnotherTextEditor.
Databases have stalled. DB2 and Oracle and a few others use ancient technology for large databases. LotusNotes uses newer technology, and is the only usable database for home consumers. I believe the next wave is coming; hopefully it will be open source so everyone can share the benefits. (And if I own the company, do not complain that it is originally released as proprietary. I WILL find a business model where the core engine is open and free. Just give me some time.)
It seems that the windowing API is stuck with 3 popular choices: MSWindows, GNOME, and KDE. MSWindows will die with Microsoft, so the battle is between GNOME and KDE. GNOME was winning because RedHat was doing well as the primary US distribution. Now RedHat has changed paths to follow MS, and SuSE was bought into the US, so we may see a shift to KDE.
The only usable business application platform is LotusNotes. The other platforms still require too much effort for too little gain, or quickly become unmaintainable. But many companies have not installed LotusNotes yet, so we need the tons of programmers required to get anything from those other platforms.
A big problem is that programmers cannot find what already exists.
A big problem is that we change programming languages every few years.
A big problem is that programmers prefer to rewrite everything than use someone else's platform.
Eventually, platforms will be available so new programs can be created by voice control a la StarTrek. But that is at least a decade away. We need tons of programmers to migrate the Microsoft-based applications to other platforms. We need programmers to keep the world running until the new platforms are ready. We will need programmers to help migrate to the new platforms.
I would prefer that all programmers were "true" programmers. But just think: for every two hundred VB programmers in the world, there is one less application that I have to write.
---
My best friend is now a software tester. I wanted him to enter the computer field, but he does not have the creator mindset to be a programmer. Testing is perfect for him, and he is an incredible tester. I like that, as my programmer friends tend to develop inferiority complexes. QA is a worthy field. Be proud of your talent.
What does a "software engineer" do?
What do you need to learn to become a "software architect"?
I have been called many names. The technology-related ones include application design and programming titles such as "business analyst", "visionary", "application designer", "developer", "programmer", "senior programmer", "team leader", and "project manager". I also work on the administration side: originally as "support", then "administrator", now as "architect" of global networks. I prefer titles that suggest technical abilities rather than the ones that suggest managerial abilities, especially since about half the "project managers" I have met have little talent for managing people. Today I just use "technology consultant".
I loved C, but wished it had a few more capabilities that seemed obvious to me. Then C++ became available and fulfilled my dreams. Then MSWindows3.0 became the platform of choice for clients; I read the awful API specifications and fled the industry. The disadvantage with C and C++ is that the common functions are made to allow damage, so if I do not keep the knowledge current, I will write really bad code. I had the experience; I knew most of the pitfalls; I know they are dangerous, and I do not want to take the time to relearn them. So now I write Java, which does not require worrying about memory leaks in every line of code.
You already have Lotus Notes, the database and the GUI (i.e. Windows) written for you. You buy in graphics rather than draw them yourself. You don't need to write 99.9% of what you actually deliver.
That is the good thing! I focus on delivering applications that solve business requirements using interfaces that shift the entire paradigm of the worker and result in magnitudes of productivity improvement. And my apps cost less too!
Why would any engineer not use all available tools?
When designing a bridge, do you reinvent geometry and algebra? Or just define what is necessary to efficiently build a structure to handle the volume of traffic that will cross this chasm? Do you expect your builders to build a forge and mine the ore, or do you order steel beams from a company that specializes in making steel beams? Most of the computer platforms are still building with wood, and the programmers are doing a great job with hammers. Meanwhile I am using powertools...
- And paying a contractor to paint the structure. I do build my own graphics for prototypes. But I know a few incredible graphic artists. They can do in hours what would take me a week, and the result is more professional/impressive. And they charge less than 1/5th my rate. So I pay them to add the professional appearance. Tell me how this is bad business.
That's fine by me, but don't scoff at people who absolutely have to write 50% or even more of what they deliver. And don't scoff at them because they don't cut corners to make themselves look good.
I do not mock the programmers who have to rebuild that 99.9% of what is required every time, although I wonder about calling them programmers. Programmers should have the engineering mind and do have the perfect domain for using it. "Build it once and reuse it."
I do laugh at the business people who are paying those programmers to work on inefficient platforms. They are the ones wasting money when it is their job to protect that money.
I do not cut corners. I make everything fantastic, and am anal about making code perfect. My applications always have features that were not in the specs. Every one of my applications has some feature where the customer goes "That is great. It seems obvious. Why doesn't everyone do it that way?"
A PM told me I was stealing, because either the customer paid for more or less than was delivered, and the consulting house was losing business for expanding the application. I prefer "customer loyalty through great products" over "repeat business due to poor design", and none of my projects ever went ove
If you rephrased your post to use "consultants" rather than "you", you would have been more accurate. I have seen examples of what you describe. I do not believe that I fit that mold, but I could not live with myself if I believed I was.
I do try to be humorous. I am glad I was able to make you laugh. PMs often have that attitude. Then they try to hire me full-time so they can continue to receive the benefits of my presence.
- I promise the world, and always deliver!
- I'm worth at least three times what is charged for my time.
- I've been on projects for 4 years. 6 years ago, I did maintenance on a project I had written 7 years earlier.
- I had to integrate DB2 and SAP and a PBX into one system. I've had to integrate the entire internet into another system.
- I maintain many of my apps. You can blame the limited time required for this on skill or luck. I tend to make everything configurable.
- I am forced to work with tons of systems that I do not like, because I am only a consultant and cannot touch anything that was not placed under my responsibility.
- People rarely know what they want. I deliver apps that solve their issues. Sometimes they require that I stick to specifications, that rarely lasts through the project because either my ideas are really good, or I have mind control abilities and force them to my will. (You pick.)
- Maintenance is when you get repeat business on the same application. It means that I have failed to anticipate something, usually because to do so would have greatly increased the cost for little benefit during the original development. (Can I charge just in case they change from MSSQL to DB2, and from terminals to a web UI?)
- I use Lotus Notes to rapidly build business applications. I regularly make it do things that Lotus continues to define as impossible. I do not know if there are any real programmers working in this domain; you can read my rants about how Notes Developers are the most untrained group in the computer world. Lotus tried to hire me because "I know more about every area of the product than anybody except the person who wrote that specific code." IBM has said that my "Notes expertise exceeds ours."
- I read The Mythical Man-Month, but it was a decade ago. I remember it being very humorous, but it did describe how many PMs think (which I also find humorous.)
Lotus Notes is a platform. Platforms are not applications. Platforms are very generic to allow applications to be built on top of them. Platforms require planned architecture and tons of integration to be useful. Platforms do not know what data will be stored, so must have a flexible structure. A platform will always take many times the effort as a single application. In easy terms, adding two numbers together takes a moment. Building a calculator that handles input of two numbers and adds them together takes much longer.
Applications are very specific. I know what back-ends to integrate. I know what data is to be stored. I know what UIs are needed. An application has very limited scope, which makes them much easier to write and test.
Lotus Notes has become a great platform because they listened when consultants and RAD monkeys told Lotus what they needed to do their job. I believe the initial work was done by a very small team over 2 years.
I am building a new platform. I have easily put a year's worth of time into it. It stalled because I based it on Lotus Notes, and Lotus Notes has a few major flaws that keep my platform from being production-worthy. Their stated work-arounds will not work for a new platform, although they might work for applications. I will be writing a replacement for the Notes portion next year. I expect it to take me 1 year to be usable, and then I will hire others for expertise in performance-tuning an SQL engine and a few other things.
Pick your example better. Maybe use a statement like "Word Processors cannot be written by one person working for 6 months," except I
Right now, the Average Computer User (ACU) was probably born when personal computers didn't even exist. Look ahead 50 years, and that won't be the case. The ACU will be much more familiar with computers, and there will be no need to coddle them as much.
I disagree. I believe the Average Computer User will remain approximately as well-informed as they are today. They will know how to turn it on (as long as nothing goes wrong), and use a few applications (as long as the work properly). Most people believe that a little computer knowledge grants expert status:
- A friend thinks his 6-year-old child is a computer genius because she can use the mouse to play children's games.
- Another friend thinks his teenagers are computer literate. They know how to download songs.
- A college student thought another student was very computer literate because he found her "lost" document in the "My Documents" folder.
- A friend's friend at a party was hailed as a computer genius because he could install anti-virus software, start the scan, and remove viruses if the software knew how.
When I started with computers, they could play a few games. They often required typing in the source code. (We did not call it "open source" then. "Closed source" came on plug-in cartridges, or was in the BIOS. Everything else was open.) I quickly decided it was more fun to program a game than to play a game.
In the early 90s, the computer world exploded. Suddenly tons of people were seen as computer literate because they knew how to "program in HTML". Then the techies added JavaScript. Some of these "web developers" survived by copy/pasting (otherwise known as "stealing", or "borrowing" since all JavaScript is "open source") JavaScript from other sites, or from new websites that collected easy-to-implement code.
None of the people mentioned are likely to become techies. There is also a class of people known as "administrators" who have basic knowledge of installing programs and rebooting computers. They fill the boring roles in the computer world that programmers do not want. (Network architects and a few other jobs are more engineers than techies, and so are not part of this discussion.) Using "scripting" languages has reduced the intelligence/competence/skill-level-required to program, and that is good because we need more programmers, and we have fewer.
The bar for being considered "computer literate" by the public is very low, while the bar for becoming a programmer has been raised. I really started programming on a Commodore PET. IIRC, it booted to a command line that also served as the IDE for BASIC.
- What IDE do I use in Windows? DOS Help was hidden in the extras on the Windows95 CD. QuickBASIC disappeared. MS wants you to use VisualStudio (after giving them much money,) but how many 10-year-olds can afford it.
- Java is easy to install, after waiting for the download, but compiling requires the command line. (I use batch files. Raise your hand if you know what is a batch file. OK. Now explain to that newbie who wants to be a programmer.)
- The best bet for a newbie is to ask for someone's old computer, install Linux, and start playing with all those compilers. But that newbie already knows they want to program. The casual entry of source code is gone.
Computers must become get easier for the average person to use, while programmers become rarer. At least we are guaranteed good income.
You ARE a PM! Or do you prefer PHB?
I make businesses better. I do process reengineering and technology implementation. My work has saved companies millions of dollars per month. My work has people finishing their main task in 2 hours instead of 12 hours, so they can be more productive and pick up their children from school rather than just watch them sleep. I have had a positive effect on people and companies, and I plan to continue.
If you call all that "trivial", I cannot imagine what you consider important.
---
[WARNING: Bragging follows.]
Now about man-months:
1 great programmer = 20 good programmers
1 good programmer = 10 average programmers
Time required for a project = (Time for one programmer to complete it) ^ (number of programmers assigned)
- One programmer is more efficient than 2 programmers. With 3 programmers, projects take so long that they may fail. 4 or more almost guarantees failure.
If a project cannot be completed by one good programmer in 6 months, it is designed wrong.
I design applications in my head before the business people have decided what they think they want. I write code 3 to 10 times faster than anybody my colleagues know. My code is more efficient (less LOC) so it is easier to test. I unit-test as I go, and reuse proven code, so beta testing is almost a formality. (I do get upset when clients say, "The last 5 applications worked perfectly, so why do we need to test this one?") I work on the best RAD platform ever created for business applications, and I know more about the platform than the people who write it (by their own admisssion.)
Your typical project:
2 months specification gathering and approval
1 week designing major functionality and assigning responsibility
2 months initial programming
1 month integration of each person's work
Oops! Specifications changed | design was bad/unscalable/does not fulfill needs | someone did not write the same API that someone else planned to use | Integration with backends needs rewrite.
Repeat "design - code - integrate" until project seems to work or the money is gone.
My typical project:
"Show me what you do now."
"Thanks. I'll have something for you to try next week."
[Then a miracle occurs]
"So... Can you talk with that smile or is it stuck?"
(If you want to use the word "trivial", what do you call the corporate application development department that can be replaced by having me work part-time?)
I agree that this law was an incredible win for the spammers. Otherwise the new CA law would have made a (small) difference. It is nice to know our government responds to the needs of all businesses with money, regardless of their ethics and how they annoy the citizens. I also agree that any solution must be technical, not legal, especially since the government is placing themselves in the other camp.
I doubt MS will be of any use in distributing a new email protocol. First, we need to design the new protocol to be usable on the hostile internet. Then we can try to get the mail clients to use it. Mozilla would have it very quickly. Mozilla seems to be spreading rapidly from what I hear from non-techies, but I have no stats.
If MS is going to fix MSOutlook to work with a new email protocol, it would only be available when buying their next OS, and possibly included in a MSWindowsXP service pack. This is called a marketing opportunity. "Buy our new version and reduce SPAM." Even though all of the technology would be invented/defined by the OSS crowd. And MS would have to learn how to read the RFC so they could change MSExchange to fit. That costs money (and brains) = probably would not happen unless more money could be made.
IIRC, 1/4 of surfers run MSWindows9x, one fourth run NT4/2K, one third run XP, one sixth run "other". MS would try to use this to get half the surfers to upgrade.
This policy would not change the world in 6 to 10 months. The only reason XP is the top group is because almost all machines sold in the last 2 years had it preinstalled. Do you know anybody who "upgraded" to XP without buying a new PC at the same time or soon after?
So if MS added the new protocol, it might be usable in 5 years. My opinion is that MS will stop owning the desktop soon, so better software will have a chance to effect this change without MS.
Does MS even patch MSOutlookExpress any more? I thought that was cancelled with MSInternetExplorer. I could be wrong.
I worry that people are dropping broadband because of the RIAA, and are dropping email and chat because of the spam. Email was the killer app for the internet. Many people may soon only use the internet for surfing.
(Sorry. Not my usual cohesive post. Time for bed.)
I am guessing you are a PM, so most of this will seem incredibly lax to you. Most of your questions are about non-productive parts of projects used to pad the costs.
I already admitting to adding comments to the code. With the debugger, it is possible to learn an application just by taking a test document through the process.
I did not mention design documentation. I usually write a list of the important or tricky elements, and a complete workflow of a record, and store it in the application.
There is a very junior programmer that regularly adds code to a few of my applications. 4 years ago I taught him a few basic concepts, because the data he was modifying was in the wrong table. The documentation was there (well, actually, the table was named "backup".) Others see my code. No one has had difficulty following it. I would be told because I would provide free support until they were happy. (Standard line from me: "The application is finished when you are smiling." Factually untrue because they usually start smiling when they see the demos, and the application is not finished until rollout.)
I did not mention user documentation. Read my other posts. I believe assistance should be provided at the point that it is required. Separate user documentation might be nice for off-line training, but I believe that off-line training is a waste of time. I do occasionally write extra documentation (because I get paid as much for writing documentation as for productive work), and I write it very well, but I believe I have failed if it ever gets used.
Business cases are a waste of time. If there was one, it was used as justification for hiring me, and is now obsolete since I will handle the rest.
Use cases are usually a waste of time. Again, they are usually done before I am hired. I have referred to them occasionally. I actually read one for information rather than humor.
For specifications, I usually talk to a group including:
- a techie manager (for the environment and back-end specifications for integration),
- a business manager (because its his money) and
- a user (because I need the example of someone who will use it. They also tell me what the old system did, how they really use it, and what the real process is.)
I write a document telling them what I heard, clarifying anything weird or complicated. I may explain how I will reengineer the business process (if I am allowed.)
- Then I design the application. I usually do it in my head, although I may use paper or a text editor to keep notes. If it needs to be broken into pieces, I then discuss what pieces are needed to make it functional, and which should be added later (like next week.)
- If anything is to be handled by others, I tell/write them about what is needed: sometimes I need professional graphics, sometimes I need the table definitions for a RDBMS.
Then I create the application. As soon as screens are ready, I demo them to show progress and check the colors. Then I demo the alpha, then beta testing, then rollout.
I usually do the spec-gathering on TUE, WED, or THU, then demo it on TUE, start beta on WED, and do rollout for MON or TUE. So all applications take about 2 weeks. Most of that time allows my subconcious to notice if I forgot anything or included a bug. If I write code and put it into production the same day, bad things happen. So I prefer to sleep on an application for at least one day before rollout.
---
On to the personal attack:
It appears you are cranking out one day, one person projects.
I won't denigrate you for writing them. Everybody has to start somewhere. Tying a small UI to a small database with a tool designed for doing just that is not hard work. Consider yourself lucky that you don't have to maintain a billion LOC, 20 year old project that you didn't write.
I think of all projects as taking one week, unless something really complicated is involved. (See above, but the second week is the users
I apologize. I was deluded that I had a reputation as a Lotus Notes zealot. In the hands of a trained programmer, it is wonderful. The bad is that I am one of very few real programmers who works with it, and I do not know any of the others.
Should I add my usual rant about how there are few trained programmers working with the Notes platform? Because it is so easy to create solutions so,
1. Untrained "developers" can make a living.
2. Real programmers cannot find the challenge they need.
Just read my other posts.
I keep hoping another real programmer will become interested in the Notes platform. It would be nice to converse about my niche with someone who knew what is an algorithm.
Thanks. I have been reading Slashdot for years, and should have known to mention the GIMP. I did try it a while back, and decided I did not want to have to support it when my father calls. I plan to install it during this reinstall session (see previous post) but tell him that if he has any problems, switch back to Photoshop because I cannot answer them.
That is how I handled the transition to OpenOffice. He had used MSWord for years. I installed both. He tried it, found it easier, stopped losing work, and stayed with it. Except for a few things that either OO cannot do, or are hidden well enough that he could not figure them out. (He reads Help files, but forgets he can web search for help.)
I am hoping that GIMP2 and OO2 will be ready before I finish reinstalling, but I may do it before EOM/EOY, so I doubt either will.
[Answering an AC]
I may be missing your point. You state that I've already done the prototyping because I've done essentially the same application over and over again, and all that's necessary at this point is to adapt what you've already done to each specific business case. All programs have input and output; all business applications require data entry and storage. The platform handles that, as well as security and much of the networking. Yes, I follow certain guidelines that I have developed over time (and will be in my book if I finish it,) but I am paid for experience.
If I switched to programming games, I would be a newbie, and would need a few minutes to learn the differences. I might even read a book on the subject before deciding the best method to program.
Or I could find a platform that provides all the basic functionality for the type of game I want to write and work with the platform. When writing a FPS, would you prefer to start with a C compiler, or the latest engine from id Software? The Quake engine provides the input, configuration, graphics output, and networking functionality. If I want to write a FPS, I do not need to rewrite them.
Same with business applications: The platform provides the input screens, the ability to organize the data, the networking, the ability to sychronize between servers and laptops, a great security system. All I need to do is write the business functionality and the user interface. But it is not about what I've done; it is about what is provided by the platform. Otherwise application development could take weeks or even months! Most businesses should not wait for their applications. They think of something; next week I deliver. Everybody moves on.
Professionally, I have never had a project go over budget or miss a release date, nevermind have one actually fail. Any mistakes are caught before deployment, so they do not count, right?
Very few of my applications look like existing applications. I'm on the expensive side, and companies tend to ask their full-timers for a solution first, so I only get the strange ones. Except that a few companies have learned that it is cheaper to ask me first, so I am usually busy, which keeps my price rising, so companies will ask less expensive programmers first.
The Windows Registry is easy to program. You can easily add information. Removing information is a little more difficult. I have worked with it enough that some of the standard MS stuff actually makes sense, causing me to doubt my sanity. I expect whoever invented CLSIDs will be forced to type them in manually for eternity.
The problem is that if you have a problem with the Registry, your entire computer is useless. This one place (2 files) owns your system, and if anything happens to it, you must reinstall every application that depends on it.
MS does not have the brains and/or empathy to have implemented regular backups. Back it up every successful boot, and keep at least the last 5. If there is a problem, mark the current one as bad and use the next newest.
Applications should not depend on the Registry. Program applications so that if the registry disappeared, the program would still function. Use default settings. Then try to create the registry settings again.
I believe that I should be able to delete any configuration file without causing programs to fail. This should include the registry or any specific setting in it. If the settings is missing, use the default. If the setting is bad, use the default. Easy, and proof against both fools and geniuses.
---
Sorry, currently sensitive on this subject.
Over Thanksgiving I finished configuring my father's computer. Two weeks later the registry failed. It reverted to the only backup, which was from when the OS was installed over 1 year ago, and before any applications were installed. Almost every program is useless, and most must be reinstalled. Yes, bad programming on the application vendor's part (such as the programmers who wrote MSWord), but very bad programming on the OS vendor's part (such as the programmers who wrote MSWindows.) I already have him using OpenOffice and Mozilla, but I cannot switch him to Linux until I find a replacement for Photoshop. So I must reinstall MSWindows and all the applications once again, and I am really busy launching another start-up this month.
Yes, he usually uses OpenOffice because it is easier and less crash-prone, but he said there were a couple of things it does not do yet, so he still needs MSWord. He is willing to give them up, (or maybe OO2 will fix them) but he cannot give up Photoshop without a replacement.
Grandparent:
...
Write your prototype - and then deploy it, because it's already fast and robust enough for everyday use.
Parent:
And then watch it die
Joke:
You obviously do not work for MS. Proper marketing can sell anything.
Real reply:
If you use a good platform, the prototype develops into the application. Without recreating the prototype. Without leaving excess code behind. Without making the program impossible to maintain.
My primary platform for business applications is great. I can build the interface or the functionality first. I can expand either at any time, rarely worrying about new stuff interfering with the existing stuff. The datastore automatically expands to include any fields need by the UI or the code. The source code is the programming documentation, although comments are welcome. The integrated debugger walks through the code showing the value of all variables, allowing easy debugging, and making it easy to learn what code does, and making it easy to see all the code that runs, so an obscure function is not missed. I can create backups of the entire application or any piece of functionality before making changes. The most recent version includes check-in/check-out of design elements. The client used to be cross-platform, but I can move the interface to use a web browser in minutes.
Where I start building an application depends on what it will do. If the interface is very important, then I start with the interface. Then I can get user input into whether all data is being captured. You can call that a protoype, but it is functional for data input, although most of the specifications have not been implemented at that point.
If how the data is processed is the important function, then I start with the code, then add an interface to allow configuration. Most applications require both, so I build an interface for the data entry, then build code for the functionality, then add to the interface for configuration. Repeat until the application does everything I can imagine (which is usually a superset of everything the users or specifications wanted.) When ready for release (and all fields are specified), redesign the interface for friendliness and productivity (without worrying that something will break because I moved a field.)
---
That is how I work professionally. For fun at home, I use Notepad or vi to write Java. But my home work does not require the easy development/maintenance needed by business applications.
I want a setting so that any new tabs OR WINDOWS open in the background, and I want to be able to do it by left-clicking. No, CTRL-clicking does not help because then one hand has to be on the keyboard. I currently use "open in new window" with a right-click, which passes the focus to the new window, and does not work if the link was JavaScript. If the left-click could handle it, then JavaScript should work properly.
The situation:
I am reading a page; I see a link I want to follow; I click the link. I do not want to look at an empty window while the new page loads, then return to the original page and have to find my place. I want to keep my attention on the page I am currently reading, then see if any links that looked interesting are actually worth reading.
I realize that I am not the normal surfer. Most people click a link and need to see the result. They need to see tha chain of events to remember that THIS page opened because they clicked THAT link. But Mozilla is supposed to be able to be used by smart people too, right?
I also want the double-rightclick to close the current tab. I have the habit of closing windows (and all tabs) with the window's X or from the taskbar. Either method causes Mozilla to closes the window (and all tabs) without warning. Double-rightclick would allow me a method to close the tab or window without moving the mouse to a corner of the screen.
I am very surprised that Mozilla does not have a warning message that you are closing multiple tabs. I expected a prompt stating:
"You are closing a window that contains multiple tabs. Would you like to:
- Close the window and all tabs.
- Close only the current tab.
- Cancel and keep all tabs open."
That seems like an obvious and easy function to me. It would give me a chance to retrain my habits without losing information. Again, I am very surprised the original developer of the tabbed interface did not include it.
If left-click could open new tabs, and double-rightclick could close them, I would be using the tabbed interface. If there was a warning dialog when I accidentally close the 30 pages I want to read, I could at least try the tabbed interface without losing everything many times. As it is, I am stuck using multiple windows, and clicking to focus on the current page all the time.
---
While we are at it, when receiving "Page Not Found", put the URL in the dialog box so we are informed what page is missing, THEN CLOSE THE WINDOW. Or at least offer the option in the "Page Not Found" dialog. Does anybody really need to keep the empty window open?
"The following page was not found:
http://slashdot.rog
- Close the empty window or tab.
- Leave it open (so the address can be fixed.)"
Otherwise, why are we prompted for missing pages? Just leave the window blank. Or even put the error message in the page (like every browser ever written except Mozilla.) The current prompt is useless, since it does not even focus on the window so it can be closed.
(I once tried to open 20 links from a page. A dozen of them gave this prompt, and then I had to find which dozen windows were empty from bad addresses, while some of the others were just loading slow.)
---
Notice that all my dialogs have descriptive choices. I hate the VB-trained programmers that use dialogs like:
"This is dangerous. Would you like the hard drive to not be erased?
- Yes.
- No."
MUCH better would be:
"This is dangerous. Do you want to:
- Erase the hard drive.
- Cancel."
Always avoid double negatives since then the user has to think before answering, and we know how well users think.
---
A final note in this lesson on UI design:
Why does Submit come before Preview?
The movie had little to do with the book except the alien invasion and some of the political lectures about your duty to society and community service being required for citizenship.
The biggest change allowed the sex and tit shots.
Heinlein was against women in the military. He felt the entire purpose of the military was to protect the child-bearers. While he felt women could be as good or better than men, and should be trained with guns in case we were invaded, men were the expendable sex to be used as the first line of defense against any attack, including governments' attacks on liberty. He had women (and children) fighting in The Moon is a Harsh Mistress, but that was when their home was invaded, and he graphically described a girl's death to disgust the reader about letting woman die, while saying that liberty was worth even that price.
The movie is fine as a quick action adventure with a little political philosophy. If anybody learned the politics from the movie, then it was worth making. And it serves as an advertisement for the book, which goes into much better detail. The script probably went through a dozen rewriters, and none of them had read the book. I am surprised that the main character was still named Rico.
Yes, the word Lindows was chosen because of its relationship with Windows. And they could be in trouble legally because they are deliberately confusing their trademark with Microsoft's in the mind of the consumer. The ability to distinguish a product in the mind of the consumer is the ONLY purpose of a trademark. So causing even accidental confusion is frowned upon by the courts.
The defense is not that Lindows is causing confusion, but whether "Windows" can be a trademark in the software domain. "Microsoft Windows" can be trademarked, because it is a generic term used in conjuction with an identifier. And if someone tried to trademark "Macrosift Windows", Microsoft would have a case.
But the generic term "windows" had already been in use in the software domain for several years before Microsoft applied for the trademark. Research how Microsoft gained the trademark. Several other companies were using "windows" in other software trademarks. Microsoft bought several of those companies to remove the patent and trademark office's objections.
If "windows" is a generic software term, then Microsoft cannot object to companies using similiar trademarks. The US courts seem to agree, and may take the generic trademark from Microsoft.
---
As far as "Winux" being confused with "Linux":
Visually, there is only a 20% difference in letters, but it is the most significant character. But "W" sounds much like "L", so Linus would have a good case based on the similarity of pronunciation. He would not have much of a case against "Dinux", "Kinux", "Pinux", "Sinux", "Tinux", or "Zinux".
(I am currently fighting a trademark case where both the words and audial identifiers are similar. We are arguing that they are distinct enough not to cause confusion in the mind of any consumer.)
Same here. There are at least 3 copies of Ender's Game on my shelves. 2 more are out on permanent loan to people I know. I think I gave away at least 20 to other people, and either stopped associating with them or forgot who had them.
I also bought 50 copies of the softcover edition of Maps in the Mirror. Anybody I meet who admits to reading gets a copy. It includes the original short story "Ender's Game", which is missing the siblings storyline. I have about a dozen left (after 7 years, and I meet tons of people. That says much of the importance of reading in our society.)
The first book (and the new Shadow continuations) are about treating intelligent children as if they have a purpose. The rest of the original series was about redemption of the childhood star, so had little interest to the audience of children who were entranced by the idea that adults might recognize their worth.
So I was not the only one who knew as a child that I could change the world for the better if only given a chance?
I had the technical abilities at 10 to do anything I have done since. I have learned much about people since then, but I already had the ability to see a system and know how it can be improved. Started my first technology business at 18; even at the "adult" age it was extremely difficult to get adults to respect my thoughts (which directly led to the business's demise.) I gave up the fight and partied for 6 years of college before I started caring for the world again. It would have been great for both me and the world if my talents were exploited earlier.
---
My father recently asked my advice about how a friend of his should handle a super-intelligent child who was bored with homework. I told him to forget about the homework and help the child learn as much as possible about the child's current interests while trying to expand those interests, such as using algebra as an excuse to teach about the Greeks and move into philosophy. His reply was that I was talking like a child. He still does not understand, even after "raising" a genius, although around age 8 (when those silly tests said I should be in college, but they still insisted I do third-grade homework) I gave up on adults as sources of information, and started raising myself.
Yes, I have a 6-speed manual. 6th gear: 1100rpm cruising at 65mph, 1600rpm for 90mph.
The time I tested it was during a very long trip on flat ground. An entire tank of gas on cruise control at 85mph averaged 23mpg. An entire tank of gas at 70mph averaged 21mpg. These numbers were incredible since I usually get 18mpg, and 15mpg in city traffic. I hope to get to Montana someday so I can try the test at 100mph.
I did the tests; I have no idea about the theory behind these numbers. Should a slightly higher RPM marginally use enough more gas to offset the additional miles covered at a higher speed? What is the formula? Please tell me so I can figure the optimal speed. Maybe it would it help with speeding tickets to demonstrate that I was being economically and environmentally aware through using less gas by driving 90mph.
I am in KingOfPrussia and my best client is in Horsham (WillowGrove exit). I went to NJ for Thanksgiving. I have not been west much recently.
I assumed that if they are adding an EZPass-only exit between 2 exits that are only 4 miles apart, they would be adding them farther west where the exits are 20 miles apart.
There are usually many dual EZPass/ticket pickups for entering the Turnpike. Yes there are usually only 2 lanes for paying the tickets, but since most commuters are using EZPass, I rarely have to wait. (It helps that I refuse to drive near rush hour.)
Anyway, I pass the only EZPass-only exit all the time, and was "assuming".
I lived in NJ through driving age. Now I live in PA.
As a child, I heard complaints about how the tolls did not disappear after the roads were paid off. When I moved to PA, I learned that having somebody pump your gas was to cut down unemployment, not somehow a safety issue. I also heard that the toll systems kept people employed.
I was poor in both states. I know all the roads to use to avoid the tolls, but they are much slower. Now my time is worth more than the tolls, but a decade ago I often took the back roads to avoid tolls.
NJ is willing to implement EZ-Pass because it allows them to keep the tolls while disrupting the driving less. Obviously the tolls are important revenue. Also obvious is that they are using EZ-Pass for the convenience. They even moved the toll at the Delaware bridge to make the untolled exit easier, and to build a fast lane for EZ-Pass users.
PA does not have an untolled exit; you must give PA money to use the Delaware bridge. PA is also building new exits on the Turnpike that only accept EZ-Pass. There was a rumor that EZ-Pass would only pay for itself if enough people ran the tolls and were fined. Then it was rumored that enough people were not doing it. Now PA is making it impossible to exit without EZ-Pass. And if you think that signs make anything obvious, you have never driven in PA. (I made a wrong turn today because the signs said the left lane turns left and the right lane turns right. The road did continue straight, but I think you had to drive between the lanes to stay on it.)
People like tolls and taxes on gas because they believe that the revenues are collected from the people who benefit from their use. They need to feel this money is used for the roads. If it was announced that toll money was going to be used for education, people would revolt.
If you wonder what NJ does with the money, try driving in PA. The roads are awful compared to NJ. I saw NJ repave about 40 miles of the Parkway over a weekend, one lane per day. PA cannot repave 20 miles of a highway in less than 2 weeks. It took PennDot 6 months with one lane closed at all times to "widen" a 2-lane highway to 2 lanes with better shoulders. Part of this may be because NJ uses blacktop and PA roads are typically concrete. Part of it may be because PennDOT is a very unorganized and/or corrupt department.
NJ roads are some of the best I have seen. A report in the 80s listed the Garden State Parkway as the safest road in the US, and I wondered how it could be when it was usually 70mph bumper-to-bumper traffic. A factor is that in NJ you always move right when a faster car is coming behind you. NJ drivers keep moving in heavy traffic; it takes an accident, bad weather, or a patrol car to get them to slow down (a little.)
PA has some of the worst roads I have seen. PA passed a "stay right" law recently, but no one noticed. The left lane of most 2 lane roads often moves slower than the right lane. And when it is bumper-to-bumper in PA, everybody slows down to 20mph and stops erratically. This may be necessary to avoid all the potholes.
In NJ, I worried that salt from the ocean and the weather would ruin my cars. In PA, I worry that the roads and the potholes are going to shake my cars apart. (Do you plan to have a flat tire at least once per year?)
Some factors for the difference in road quality:
- NJ is a richer state with a denser population. - The tolls contribute to road upkeep, and...
- NJ has 2 toll roads that cross the state in different directions, while PA only has one and it misses most of the state. (Not that you'd want to go there.)
- NJ just cares more about roads, and has a DOT that works.
---
Side note: I refuse to get EZ-Pass, even though driving to my best client almost requires the PA Turnpike, because I believe the issues in this article are inevitable. I don't have a tinfoil hat, but why make it easy for them? (And I drive sports cars that get lower mpg when under 70mph.)
Thank you for the information about stand-alone clients.
---
I am much like you. I have never used P2P file trading. A friend forced me to try ICQ once; my "trial" lasted less than 20 minutes.
I was looking for methods to market Notes to the home consumer. Unless all standalone IDs use some special IBM certifier and work through IBM (or third-party) servers, domain policies could not exist. The great thing about consumer products is that us corporate types do not need to fix them; they would call IBM for help. No home consumer could afford my rates. That does not stop my family from expecting assistance, but I can usually list the paying projects I need to finish this week, and they will wait patiently.
---
As far as overhead, my very selective MSOffice program directory is about 60MB. That does not include Outlook and Access and many of the extras.
My all-clients Lotus program directory is about 100MB. I did not include the data directory because I have tons of large databases. Notes could replace Outlook and Word and Access and most use of Excel.
Hard drive space is cheap; some games install close to 1GB. Notes uses about the same amount of memory as MSWord. I doubt resources will be an issue.
A simple Notes database with a Subject and a RichText field can replace MSWord. The documents can be emailed easiliy, and searched for words, or by creation date, modification date, or other fields. You could have automatic version creation, so previous versions are available. (I use databases like this for my resume and my songs.)
The technology is there. The problem is how to market it to the home consumer, and whether IBM is willing to push it.
I missed this option, probably because I rarely install Notes and always create an ID file first. I assume it must happen if you specify your name rather than an ID file, and I have not used that option for many years.
Could you provide some details?
- What version gained this functionality?
- Which options trigger the ID creation?
- Can you set a password?
- Can you encrypt databases locally?
- Why isn't IBM shouting this from the rooftops? (Yes, I know. IBM does not care about Notes.)
---
It would still help if it was free for home use. Having annoying 90-day trials will not win home consumers. They can get enough of the communication functionality using Mozilla that they would never jump through hoops for a database program. Most think MSWord is good for record-keeping, although some use MSExcel, and masochists attempt to use MSAccess. Free Lotus Notes for home consumers would eliminate this industry. The next release of Quicken might even include a Notes version if enough people had it.
---
Now all we need is to remove the need for servers:
- client-to-client selective replication. (Give me document stubs, then choose which to fully replicate, and it is a P2P file-sharing network.)
- client-to-client instant messaging (without requiring a SameTime server.)
Notes could still conquer the home consumer market (if IBM cared to let it be a success.)