Oops. I opened www.yahoo.com with MSIE to check. You are correct.
www.yahoo.com's "Help" link is part of the graphic at the top. I was using Mozilla 1.3.1 with "Accept images from originating server only". Mozilla1.3's "Manage Images" was useless.
I just upgraded to Mozilla1.6 to check if I could still complain. It is now possible to allow images from certain servers! The interface is quite user-intensive, but it is possible. The user has to know that the images are coming from yimg.com to add that domain to the Allow list. The "Copy Link Location" is useful, but the interface still expects too much knowledge and work from the user.
Right-clicking an image (or the space where it should appear) has the option "Block images from this server". It does not have the option "Allow images from this server" or the more useful "Allow images from this domain". And "View image" still opens the image into the whole window (or tab) rather than showing it in context (as any user would expect.)
Mozilla is slowly improving. Maybe they will get an interface designer to help the project soon. Or should I be checking Firefox for a user-friendly experience?
Thank you very much. I will tell my father so he can complain about Yahoo not having full fuctionality for Mozilla users.
There was no Help on the homepage. (I even checked with Mozilla search.) I found the Help link at the top of the mail homepage: http://mail.yahoo.com
--- I tried using the Help Search with "Mozilla" and "Using Mozilla" and received: We think you may have asked about a Yahoo! ID. Please try your search at one of the following: * Yahoo! Search * Yahoo! Member Directory
As far as Yahoo knows, Mozilla is just one of their members. (Wonder who?) "Using Mozilla with Yahoo Mail" did not return anything useful.
I tried to create an account with the name "Mozilla". The "Are you really human?" graphic did not show because it is from a different server.
--- SIG: Currently over two years without mod points. Could I give you some mod points? They are rather painful, since browsers (I checked Mozilla, MSIE, and Opera) choke on all those pull-downs, so I have to be careful to open only one article, and it cannot have over 300 posts. I have not had 48 hours without points since OCT. I let 14 points expire last week (meaning I only modded 6 posts.) (No, I will not turn them off. The moderation system keeps this site healthy.)
MSIE has a link "Plain | Color and Graphics" next to the title "Compose". It defaulted to Plain, but showed the RichText icons after clicking "Color and Graphics". I could not find an Option to make that choice permanent. (If Yahoo is technologically competent, they may default it to your last choice. I did not test.)
Mozilla had the ability to send HTML emails from Yahoo. It was missing some of the functionality available in MSIE. Today, there is no option to send HTML email.
If Yahoo was technologically competent, they would have writtten the functionality to the standards so all browsers could use it. Instead, they wrote a crippled version for non-MSIE users. That was almost understandable when MSIE had over 90% of the browser users. Now that MSIE usage has declined, and the rate of the decline is increasing, they completely remove the functionality.
Shall we start some conspiracy theories about how Yahoo wants to encourage use of Microsoft products? That seems unlikely unless they are hoping MS will buy them, which also seems unlikely in today's merger-resistant world.
Please, please retrace your steps and post the URL for Yahoo Support here.
Last year, my father spent 3 weeks searching their website and calling every phone number he found. He finally reached someone in California that told him that Yahoo has no interest in supporting their subscribers.
His issue was the lost functionality when using Mozilla rather than MSIE for RichText. He really likes sending HTML emails, although I convinced him not to send them to me. I still get them when he sends to the whole family.
Paper ballots mean tons of volunteers counting them. Tons of volunteers counting votes leads to tons of people who are involved with the election process. Tons of people involved with elections means tons of people who think they can make a difference in government. The current powers do not want more people involved in government; they already have power; why would they want more competition? So they spend some of our money implementing systems that reduce the number of people needed to run the government.
I just recommended to a small business that they not add more computers because computers would increase the time required for record-keeping. The few benefits of having electronic records were not worth the cost, effort of installation, and on-going effort of maintaining a new system. I will be helping create a proper website, but that will not be much more than a brochure site and an email form because they do not want any customers who will not visit the store. Their business is value-add through personal configuration, not reselling, so they do not want relationships with customers they have not personally measured. Sometimes using computer/internet technology will not add value.
--- The Slashdot quote for this page was: Anything is possible on paper. -- Ron McAfee Very relevant, but even more is possible if your voting system is based on MS technology.
Microsoft Chairman Bill Gates and Ballmer have said they dislike large purchases because of the difficulty of integrating the businesses. In July 2002, Gates told attendees at an analyst meeting that 'there's a lot of hurdles that any type of acquisition has to get over.'
Technology company merges rarely work. The techies that make a company worth having tend to find new jobs during the uncertainty of a merger. The rest have have more difficulty merging different corporate cultures than merging product lines. Microsoft solves this by only buying companies that they want to eliminate from the market, avoiding any worries about integration.
Gates said at that meeting that he and Ballmer 'kind of look' at buying 30 to 40 different companies every day and do 'a lot of what-if scenarios.'
I read this as "Would we do better if that company no longer existed? Can we steal their technology outright, or should we pay off the owners? Should we just kill the market because it might threaten us someday? How about announcing some vaporware; would that be enough?" They act like the music companies putting all the artists in a certain genre under long contracts, and then never promoting them.
The scale of their efforts impresses me. 250 business days per year * 30 companies per day = 7500 companies reviewed per year. If they average 10 minutes per company, that is greater than 5 hours per day just thinking about eliminating possible competition. At least we know where they get their ideas for "innovation".
So you're in the UK. I am in Pennsylvaia, one of those States in the US.
I have bought very little computer hardware from stores. CompUSA's prices are always unreasonable. ComputerCity was better, until CompUSA bought them and closed them down. MicroCenter is the best chain; the prices sometimes match the web, and I bought the Linux version of MythII for $0.99.
I went to computer shows until the late 90s. Stores would deeply discount stuff for the shows. By 1998, Buy.com was consistently beating the show prices. Then GoogleGear.com started beating Buy.com's prices. Then GoogleGear.com changed its name to ZipZoomFly.com. I just checked 160GB IDE 7200rpm drives there (all prices USD): $103 = 133Mhz 8MB cache Maxtor $ 92 = 100Mhz 2MB cache WD WD's prices are close now, if you do not mind the older technology. The SATA drives are within $5 for identical specs from both companies, so my next SATA drive may be a WD.
I often sleep in the same room as the computers (by choice, for productivity. I have another bedroom I use with girlfriends.) I often shutdown because of the noise. - I already replaced the CPU fan; Intel was great about sending a replacement, but it took over a month to arrive. Still have the noise, but too busy/lazy to swap drives. This is my MSWindows box, so it would take hours to restore.
I wouldn't want to give a techie access to this box, far too much personal data on it.
This is why you put the box at a FRIEND'S house. Choose someone you can trust. Then store everything in password encrypted files.
About half my friend's are techies, but they keep crossing the boundary. I have been good friends with one non-techie since 1995, but he got a job as QA for application development a few years ago (probably due to my influence.) A non-techie girlfriend introduced me to one of my closest friends: another techie currently starting a construction business, but he still does computer support for several wealthy people.
(Expanding your point) IMAP keeps a full copy of the mail on each machine. It keeps synchronizing the copies, so frequent backups are needed in case any copy is corrupted. There is a larger chance of corruption (compared to POP3) because any copy can corrupt the rest.
--- HARD DRIVES I switched to Maxtor after having problems with the others. - Western Digital is always priced far above everybody else. I dislike that Single and Master need to be jumpered differently. The only "failures" I have seen are when we did not change the jumpers after adding or removing a second drive, although changing the jumpers has required reformatting. Hard drive sizes grow fast enough that WD's prices keep me from recommending them. - In the mid-90s, Seagate kept replacing a bad drive with dead refurbs. We gave up and used the sixth one as a paperweight. We have not bought one since then. - In the late 90s, IBM's DeathStars had to be replaced through the distributor. The distributor was annoyed when we were replacing every drive for the third time in less than 6 months. We were not happy about it either. I had one for personal use; the first died within 2 months; the replacement died in 2 days; the reseller swapped it for a Maxtor. A client had bought 60 IBM computers and was stuck with their drives; we bought a few extra so we could send a batch back only once each week. - We have been using Maxtor since the 500MB days, and only seen one fail within the 5yr warranty. The replacement arrived quickly, and we sent the dead drive back in the new box. I am writing from a PC with a Maxtor 80GB; it is noisier than most drives, and it is really slow the first time the directory structure is accessed after boot. (The latter may be a Windows98 issue. I have not tried this drive with other OSes.) When I first got it, I was expecting it to fail quickly, but it has been that way for 2 years. I still recommend them. - What brand are you using now? (Serious question. I am buying another drive in the next week and am willing to try a different brand if it is economical and quiet.)
--- OFFSITE SERVERS Make friends with other techies, or see if your job will give you an IP Address and a place to leave a server. I do both; I do not have a permanent IP address for home. I have my "secure" server at a friend's house, and pay for sharing the SDSL. My websites are on server in a NOC. The manager is a friend of a friend, and I use a machine bought by them in exchange for assisting when they have really difficult technical issues. (The archtypical Slashdotter would be jealous that you have non-techie friends.)
[Windows 3.1] ran fine on my 486/25 back in the day. How much RAM did you have? I'm pretty sure I only had 32 or 64.
Windows 3.1 could only use 16MB RAM. More RAM would be wasted for Windows 3.1, and I do not remember any MSDOS applications that would use 16MB even with Extended Memory. That caused a major price jump at 16MB. Most systems had 4 slots filled with 4MB chips. You could put in 8MB chips, but they were not cost efficient, and buying 16MB or higher chips was for the wealthy. I think we were using RAM technology that required pairs of chips at that time.
The release of Windows 95 caused major changes in the memory market: - 4MB was required, - 16MB was the minumum for a decent system, and - 64MB became the norm as soon as the prices dropped.
That said, virtual memory in Windows98SE has problems if the PC over 512MB physical RAM. MS prefers forcing OS upgrades by not supporting hardware that does not exist at the time of release: - Win98 FDISK and Scandisk cannot handle hard drives larger than 64GB. (There is a replacement for FDISK, but you need a working Windows98 PC to install it.) - Win2K requires patching to allow using hard drive space over 130GB.
I wonder if/how [Windows 3.1] would run on a modern system
It would only use 16MB RAM. It would be really fast. The interface would be worse than WinXP. You could play Solitaire. MSWord could not read modern DOC files, and modern versions of MSWord trash the layout of your files. Were there any other programs for Win3.1? Most games required exiting to MSDOS.
That is what I want, except I need to try these out. I know several people who get severe headaches from laptops and LCD monitors. I have stuck with CRTs because I want the high (at least 85hz) refresh at 1024x768 and at least 80hz at 1280x1024. 70hz gives me headaches after an hour. Can someone please report on the experience of using an OLED monitor for extended (>10 hours) period?
Revise my history. This applies to Yahoo.com. I never tried the uk website.
1. I had Geocities and Yahoo email. I could POP3 from Geocities so I used that as my non-work address. 2. Yahoo bought Geocities. I merged the accounts and Yahoo allowed POP3. I started using the Yahoo address, since I worried that the Geocities address might disappear. 3. Yahoo.com requires receiving weekly advertisements to allow POP3. The justification was that the users were not visiting the website. Please ignore the free marketing of all those myname@yahoo.com addresses increasing the awareness of Yahoo, but Yahoo was still on top then. I still used Yahoo as a main address. 4. [Spring 2002] Yahoo.com requires money for POP3. You also get larger inboxes! (They are almost useless if you download your mail regularly.) I used other email domains to avoid Yahoo.
--- I have a variety of addresses at my own domains, so my Yahoo address is not used much. It serves as my permanent address for people who lose contact with me, and for testing other mail systems.
Is there any good reason to use POP3 over IMAP, aside from some services not offering IMAP access?
POP3 allows downloading your inbound mail to a local client. The only choice is whether to delete the mail from the server at the time of the download or let it remain on the server (useful when using a temporary client.)
IMAP replicates your entire mail file (email and folders) to clients. You use more space on the server and all clients, but your mail looks the same on all PCs.
If you only use one PC, then POP3 is fine. If you use one PC as the master, and occasionally want to check your mail from other PCs, then POP3 is fine. If you are putting your mail into another system that allows mail replication, then POP3 is good because it empties the other servers.
If you use multiple clients and want to maintain your folders, then either use that last option, or use IMAP.
--- I have mail pulled from several sources into my Lotus Notes mail file, which is then replicated between my home systems and several internet servers for redundant access from anywhere, including webmail. I use POP3 to pull the mail from all other systems. My mail database sorts it into folders depending on where it originated.
IMAP was designed to grant Notes-like abilities to email. If you want a distributed system and do not have Notes, then IMAP is a good alternative, as long as your mail servers support it. (Lotus Notes servers support webmail, POP3, IMAP, and Notes replication, so you can use your Notes infrastructure with every standards-based mail client.)
AC asked what does not work as well in Yahoo webmail using Mozilla as MSIE.
The RichText (HTML-email) functions are different. The MSIE version uses IFRAMES and provides more functionality than appears in Mozilla.
I detailed this in previous posts. I do not send HTML mail, but my father (a non-techie I convinced to use Mozilla as his main browser, and who is a good evangelist for Mozilla) complains about having to switch to MSIE because of this.
He currently runs Windows98SE. He is about to receive his new triple-boot PC: Windows98SE, RedHat, and Slackware.
--- I have Mozilla only accept images from the originating server. That is probably what is causing problems with MapQuest. That is not a "wrong" configuration, just a safe one. So I use Yahoo Maps.
You can POP3 your Yahoo mail, but it requires paying $30/year. I want to do this, but am scared about the automatic renewal. There is no option to have it automatically stop at the expiration date. The consumer would not lose anything since the account would revert to the normal free webmail until another payment was received, and they could easily send reminders before and after the expiration.
I had Geocities and Yahoo mail. Geocities always allowed POP3. After Yahoo bought them, I merged the accounts and was able to POP3 from both accounts. Then Yahoo started charging. I received an email advertisement about the "new service" every time I tried to POP3.
I dislike that Yahoo's webmail does not work in Mozilla as well as MSIE. I wish they would hire some good standards-aware web developers. Their spam filter works very well, but did not work with POP3 the last time I used it. The spam would be in the Junk folder in webmail, but there was no option to exclude the Junk folder from POP3. --- I use Yahoo's movie listings and their maps. Mapquest's maps do not appear in Mozilla (with my settings?), and Yahoo's maps do.
20 years ago, I decided the internet needed to be invented. I had spent my early years learning tons of interesting and useless facts (such as still taught by our "education" system) when I realized that the ability to handle concepts (called "thinking") was more important than knowing the data, since the data could be looked up, but the ability to do something with the data could not be external.
My first company was information publishing. I hoped to grow it into a combination AOL/Amazon/encyclopedia. It would serve as the place anybody could look up anything. This was 1989; the internet was barely public, and I knew nothing about it. The business was successful enough that my partner kicked me out and destroyed it. (I was the vision and most of the labor.)
Then the internet revolution happened. The world got closer to my vision. We could search for almost any data and have the answer in moments, except...
I must go to my computer to look it up.
Since then, we have various experiments to allow that functionality to be done from anywhere. Wirelessly connected devices are getting better. Another decade or two will make them people-friendly.
The article's vision is what will happen to the home computer. But by 2034, the home computer will simply be your personal datastore that is accessible from anywhere. Hopefully by then you will be able to access your server and the rest of the internet by subvocalizing and listening to an ear plug. You will also be able to call anybody the same way (and you will always get voicemail unless they really want to talk to you. Phone tag will be so fast that you will not notice after people stop using greetings.)
Learning facts will become useless when all information is in your ear whenever you need it. Then we can take the next step and start teaching people to THINK.
Disclaimer: I am an American. This was told to me by someone who researched it, but I did not check the research. ---
A long time ago, everybody ate with a knife. About the time America was being colonized by Europeans, Europeans started using the fork. They used the fork in their good hand, and kept the knife in their other hand. Around the time of the American Revolution, Americans noticed the fork. Being at war with England, and very aware of appearing civilized, they invented the weird etiquette of using their good hand for the primary utensil, constantly switching the fork between hands.
I occasionally eat with Europeans (usually Germans), and they are amused by my constantly switching utensils.
6GHZ/2GB/1TB specs HAS to be a JOKE. The only way Microsoft would make money off the machine is new comptuers, seeing that older computers coundn't run it
You are completely correct, and completely missed the point. MS has driven the hardware market for over a decade.
Because MSWindows3.1 was limited to 16MB, the memory sellers had to keep the price on 16MB of RAM as high as possible, because they couldn't sell more to the public. When MSWindows95 both allowed and required more, RAM immediately dropped in price, but everybody was buying it.
MSWindowsME, 2K, XP each required a better processor than the last because MS kept adding garbage to the OS that made it slow.
Hard drives have finally escaped MS's control. Previously, you needed a larger hard drive when you installed a newer MS OS, MSOffice, or MSVisualStudio. The only other programs for the public that required hard drive space were games, and you could uninstall them. Now people are buying very large hard drives to store their music and movies. A friend just bought an additional 300GB drive because he filled his 200GB drive in less than 6 months by recording TV shows.
MS's statement that Longhorn ("Windows 2010") will require 6GHZ/2GB/1TB was a promise to the PC manufacturers. The manufacturers could start selling Linux PCs that get great performance, and try to make money on support (with more expensive technicians.) Or they could stick with MS, and sell tons of hardware if Longhorn is ever released.
The downside is that the only reason people upgrade today is when their PC is slowed by spyware and viruses. Again, MS gets the credit for making it possible to continue selling PCs to the general public. With older hardware, people would notice when an evil program was installed. Now they do not complain until they have around 50 spyware/viruses installed. If people started buying Linux PCs, viruses and spyware would not slow their PCs, and nobody (except gamers) would upgrade.
MS's delay in releasing a new OS is because MS's sales growth is limited. They are having difficulty convincing people to upgrade to XP. Longhorn will not be have a killer app that gets everybody to buy a new PC. MS sales growth is slowing; soon it will decline. They desperately need a new cash cow, because MSWindows and MSOffice are becoming unwanted.
Nobody bought WindowsXP without a new PC. Nobody upgrades MSOffice unless they buy a new PC. MS must keep delaying Longhorn until enough people have upgraded from MSWindows98 to make it worthwhile. A 1 GHz PC is more than good enough for the general public. MS needs to tell the PC manufacturers that business will improve if they wait long enough. That is why they have released those silly specifications.
I have never thought of "unrolling loops" as optimization techniques. They are fun tricks to learn, but are bad for performance and maintenance. A good compiler will do better optimization, and using those tricks in high-level source code may hurt the optimization the compiler can do. If performance needs that kind of tuning, you should insert some assembler.
Programmers usually get to use fast machines with lots of RAM and diskspace, and often end up writing programs that need everything they have. I mentioned in another post to this article how I had to optimize a program that I wrote on a 386, but customers were running on a XT. My quickie add-the-functionality-so-it-works was not good enough, but changing the algorithm was almost painless once we knew the feature would be used.
How to optimize Remember that tasks cause performance hits in this order:
1. Writing to the network with confirmation. If you are just sending to a port, it does not matter. Just write and forget. If you are waiting for a response, then this is the worst. Make certain that the response is handled as in #2.
2. Reading from the network. Do not allow your program to idle while waiting for input. The first use of threading should be to continue processing as much as possible while waiting for the input.
2.a User interaction User input (keyboard, mouse, etc.) is also slow, but it is very important. Make certain that your program will pause everything else to respond to the user. Try to redraw as little of the screen as possible. Do not recalculate any of the screen that was not changed. VB is the worst for this, since it wants to run all the code every time the screen is refreshed.
Even MS has trouble not refreshing the entire screen every time something minor changes. Rename a file in Windows Explorer. Did the entry stay in place (desirable)? Did it resort so you have to find it again? Did it resort and move the data so you forget where you were? Did it drop to the end of the list (Windows98)? Were you able to type the new name while another process wrote to a file in that directory (WindowsNT)? If the user wanted it sorted, they would click the title of the column. Do not try to anticipate them. (And remember where they were. Why does it always go to the first entry if you use the Up or Back buttons?)
3. Writing to a local hard drive. Keep as much in memory as possible so it can be written once. The only reason to write more than once is during debugging, and that code should not be in production. If you really need to log the intermediate steps, think about using write-and-forget across the incredibly-fast local network to a separate box that can do the writing.
The other side is that if you are done with something, then store it so you can free the RAM. Unless you will reuse it. See #5.
4. Reading from a local hard drive. Do it in one operation. Get all the data possible, then work with it. See #6.
5. Requesting more resources. If you need much RAM, ask for it in one chunk. For VB, do not "Redim Preserve" arrays for every new entry. Start with an estimated size, and double it if you reach the upper bound. If you write C, then this concept was beat into you early. If you use Java, the Hashtable class does it for you.
If you constantly use several network ports, use a pool. Add each to a pool, and check if one is available before requesting new ones. Your pool should send them to garbage collection if the number being used is MUCH lower than the number being reserved. This depends on your platform. You can always pool outbound ports, but the platform usually assigns the inbound ports as needed, so optimization must be handled by the OS or platform software.
6. Know the physical resources available. If you try to load a 2GB database into 1GB of RAM, the database is going to be swapped to the much-slower-than-RAM hard drive anyway. It would be more efficient to use 200MB ch
A friend mentioned at lunch that he missed playing a game that ran on MS-DOS BASIC. He last tried to play it on a 486, but it moved too fast. We wondered whether there was an interpreter for MSWindows98 that would run it slow enough to be usable on modern hardware.
I remember trying to play Populous on a Pentium100. A game lasted almost 2 minutes. I flattened a mountain 3 times, but the computer player would keep wrecking it. I was going to use MoSlo Deluxe to slow it down, but Civ3 was released and I was "busy" for a few years.
Even if I could get the games from the tapes, would I want them? Do I really want to see code from when I was learning to program? It might have historical value if I become very famous, but I have not heard of people asking for the source of Bill and Paul's BASIC compiler, or their Traff-o-matic system, or Carmack's early efforts, so it is unlikely anyone would care.
I could probably write similar games in a week using today's technology. Most were variants on PacMan or SpaceInvaders. None were as good as what was in the arcade a few years later. They would not be a good resume to enter computer game development.
The tapes I have are for the VIC20. The C64 (and other color Commodore computers) used a slightly different version of BASIC. My games used PEEK and POKE to control the display, so even if I had a BASIC interpreter, I would need a VIC20 (or PET) virtual machine for them to run.
I really doubt I will ever make the effort to recover the code, even if the 10-minute cassette tapes are usable after 25 years.
I am currently involved with making a very simple change to an application. It has been implemented using 3 very different algorithms. The change is to automatically set 2 fields for geographical groupings from a Country field. I wrote the application, and I suggested during the original design we should automatically fill in the other two fields, but I was overruled. (If they would not configure what country belonged to what grouping, my design would have failed, so I did it their way. The deadline was too short for me to argue about it.)
The users requested it a year later, and they realized the poor data quality from depending on users to set all 3 fields, so they decided to implement the change.
The original design pulled 3 "multi-value" text fields (like arrays) from a single record. The platform will automatically parse each element so what is before the pipe '|' is displayed to the user, and what is after the pipe is stored. Each field used its own choices.
The first revision was without me. (I am expensive, and it seems an easy change. Even I thought the full-timers could handle it.) They created a new table with a 6-field record for each Country: 3 for the codes, and 3 for the display names. Then they created 3 new fields on the form to display the names, while using the original fields to store the codes. The programming was so that every time the screen refreshed, the 3 code fields and the 2 display fields were recalculated. Even worse, each of the 5 fields did its own lookup to the table. So we have 5 lookups (across a global WAN) for every screen refresh. They also set each field twice, which may cause the issues that made them call me.
Then they told me what they wanted. In less than 2 hours (more than half spent testing and writing instructions for implementation), I delivered code that only triggers if the Country changes. It pulls from the single record (as described above) when the document loads, does one lookup (from the in-memory copy) for all the data, which is then parsed into the other 2 fields. (I did not use 3 display-only fields, since the platform supports translating the code to text as mentioned above.) I am hoping they will switch to this code soon.
Then I learn that another group has modified their own copy of the application to do this in a third method. One of the groupings is static, because everybody using this copy belongs to one of the regions, so they just hardcoded those 2 fields. They hardcoded very long IF statements that decides the other grouping based on the Country. There are 3 of these hardcoded blocks: one each for the country code, the region code, and the region display text. Each of the 3 blocks of code runs every time the screen is refreshed. Their performance is much better than the first developer since it is hardcoded, but it is unmaintainable. (Their version is supposed to allow integration back into the corporate version, but they arbitrarily changed many of the field names and some of the data formats, so any integration will require translation.)
We currently have 3 versions of the same code: #1 is very slow (and is not functioning properly.) This application runs globally from a central server, so those 5 lookups every refresh will be eat bandwidth. #3 is hardcoded, so maintenance requires a programmer. #2 (mine) is configurable and is fast since it runs only when needed and uses a single lookup done once when the record loads.
Did I spend time optimizing? I probably put 5 minutes of thought into how the configuration data should be stored, but the algorithm was obvious because it was the simplest method.
Was it more expensive? I may charge 6 times what the full-time developers get paid, but my 2 hours included testing all exceptions. (If the Country is not in the lookup, then the Country code is displayed in the region fields, which alerts the user and admins that there is a problem. I could have blanked the fields, and may still if this is not acceptable.) I
When I was finally allowed to program, I did it on a Commodore PET in elementary school. Of course I was writing games, and I optimized because games are not fun when they are slow. I was too lazy to type in the source from magazines, so all of my programs grew until they were usable, then grew some more as people played them and asked for features.
Junior High did not have computers yet. I finally convinced my family to get me a computer if I paid half. With my budget, that meant a VIC20 for under $100. The VIC20 had 4KB of RAM. You could buy a 16KB expansion, but I could not afford it.
The language was the same as the PET, so I tried to run my existing programs. They ran. I tried to modify them, save, and run them, and they would not work, even if the change was to remove code. I finally tried changing all the commands to "tokens" to shorten them. IIRC, a token was the first 2 characters of a command and an underscore. Since most of the commands were 4 letters, this saved quite a few characters. I also renamed all my variables to shorten them. Then I saved and the program ran. Yeah!
Then I made another change, and the problem reappeared.
I decided that: 10 The program loaded as written to the tape. (Hard drive? Floppy disk? Never heard of them.) 20 If the program fit in memory, it would run. 30 When the program was loaded for editing, all tokens were expanded to the full command. 40 The program was saved as text, except... 50 If the tokenized version of a command was encountered, then it was saved as the token. I never figured out if they were saved as the 2 Hex number, the dollar sign and the number, or the 3-character shorthand "token" I typed. 60 GOTO 10 (and see if it runs.)
So every time I wanted to modify the longer programs, I had to change every command to the "token" format. (About half of my programs were under the 4KB limit, about half could be "fixed" using this technique, and a few were large enough that I never got them working again.) Any changes to the longer programs required 20 minutes of "tokenizing" the commands before saving it. That killed much of the fun of programming. (Today I get upset if a build takes longer than a game of Solitaire, but "getting upset" means deciding to fix the build process.)
Commodore bought BASIC from MS, and then modified it, so I do not know who to blame for the hours I wasted on this, but Commodore is gone and MS continues to take the fun out of computers, so I blame MS.
--- My next venture into computers was the C64. They had "Sprites". Half of the code in my games was controlling the graphics, and this improvement to the platform made that code obsolete. For the challenge, I upgraded one game to use Sprites. They took much of the fun out of it, and (IIRC) you were limited to 4 of them, so you had to play games (pun intended) to write PacMan. (4 Ghosts and PacMan required 5 Sprites. The dots and cherries would be handled without Sprites. It was easy to write a 3-ghost PacMan game, and really difficult to write a 4-ghost game.)
Since the C64s at school did not have tape drives, my old programs had to be typed in, if I had a printout from elemetary school (no printer at home.) I already stated that I was lazy, so they are gone. Well, I still have the tapes, but they are 2 decades old, and my PC does not have a tape drive anyway.
you can actually register after a violation and still gain some benefits.
There is no reason to register most copyrights until there is a violation. If you are going to distribute it, have the work notarized to prove when it existed. Notary publics are inexpensive compared to registration. The registration is only desirable if you are going to sue. Registration allows triple damages and recovery of legal fees, which is a good investment and threat if going to court. The notarized copy serves as evidence as well as the registration does.
You can have songs notarized for a couple of dollars. Registering a song (and most other works) is $30. ($100 if you use my IP lawyer.) You may attempt to register songs yourself, but do not do it unless there is a chance for court or profits (when your lawyers are already involved so $30 is insignificant.) $30 per song aggregates into much money if you are a prolific artist and registering all your work.
You can have software notarized for tens of dollars. Registering a software program is $300. ($650 if you use my IP lawyer. I forget what additional charges beyond the basic $30 registration are required, but that is why I have a lawyer.) You really want a lawyer before registering software to make certain that the registration is defensible, and that you are not providing more than is necessary. There is a maximum of 50 pages for a software registration; it is usually the first and last 25 pages, but you can mask and/or delete enough to make the code unusable and still have a valid registration. My lawyer recommends deleting every 20th line, then masking anything critical like hardcoded keys. (IANAL, and I highly recommend you get one if you are filing registrations.)
Most of my professional work includes Lotus Notes (LN), but I use the best language for each project, or part of a project.
I started with Sun JVM, then switched to the IBM JVM. I tried a couple of others, but could not find any advantages over the 2 corporate versions. I think IBM included code to make the JVM work better with their products. I had more than one major issue that disappeared when I switched to IBM's JVM. All the core functionality worked with either, but the integration was better with IBM's.
That worked with LN5. IBM decided that including Java with Lotus Notes was hurting WebSphere, so they trashed Java with LN6. Servlets that ran in seconds on an old server would timeout on a much better server. The integration issues with any JVM are worse than ever.
IBM has been using WebSphere to take Java away from Sun. This whole discussion shows the attack has been successful. I wish the Java issue was decided so IBM would improve LN rather than steal technology from LN to improve WebSphere. If the JVM was forkable, then IBM would be the first to fork it. (Not that MS would not try, but IBM has slightly better programmers than MS, so IBM would finish first.) My programs would require the IBM JVM, and that defeats the purpose of opening Java.
You are mostly agreeing with me, but we disagree that Java can survive forking.
The fight is about the trademark. The source is already available. So far, only MS has tried to fork it, and they lost the fight with Sun because of the trademark. That is why their versions are now known as J++ and C#. MS can embrace and extend Java all they want, but they cannot call it Java.
I like that there is only one JVM that cannot run my Java. (The MS JVM 1.1 installed with MSIE browsers makes it difficult to write Applets.) If we allow GPL-style forking, then Java will be forked and we (prgrammers) will need to test for functionality before using it. Yes, there will be pressure to merge the forks, but their existance will make our job almost impossible. Some form of certification program is needed. Today I can release a program requiring Java1.3. I do not want to release a program for IBM Java 1.6, then rewrite it for RedHat Java 1.6, then rewrite it for MS Java 1.6. If I want to do that much work, I will program in C or C++.
We want that Redhat, SuSE, Debian all shipped Sun's JRE - so it was there, on the CD, ready to go The current license makes that illegal. That is what needs fixing. Java needs a license that allows free redistribution (of certified versions), but releasing Java under the GPL is overkill because ANY forking will kill Java's primary purpose.
I love that the sandbox and the memory handler (garbage collection) make it easy to write safe programs. Java 1.5 is removing some of the verbosity. But portability is the main strength, and that must be protected.
There are already 3 versions of Java, including a "Mini Java" for cell phones. You can also include many optional extensions (packages) depending on your use. What features are you expecting a fork to improve? Are any of them worth the development headaches of having multiple forks?
Oops. I opened www.yahoo.com with MSIE to check. You are correct.
www.yahoo.com's "Help" link is part of the graphic at the top. I was using Mozilla 1.3.1 with "Accept images from originating server only". Mozilla1.3's "Manage Images" was useless.
I just upgraded to Mozilla1.6 to check if I could still complain. It is now possible to allow images from certain servers! The interface is quite user-intensive, but it is possible. The user has to know that the images are coming from yimg.com to add that domain to the Allow list. The "Copy Link Location" is useful, but the interface still expects too much knowledge and work from the user.
Right-clicking an image (or the space where it should appear) has the option "Block images from this server". It does not have the option "Allow images from this server" or the more useful "Allow images from this domain". And "View image" still opens the image into the whole window (or tab) rather than showing it in context (as any user would expect.)
Mozilla is slowly improving. Maybe they will get an interface designer to help the project soon. Or should I be checking Firefox for a user-friendly experience?
Thank you very much. I will tell my father so he can complain about Yahoo not having full fuctionality for Mozilla users.
There was no Help on the homepage. (I even checked with Mozilla search.) I found the Help link at the top of the mail homepage: http://mail.yahoo.com
---
I tried using the Help Search with "Mozilla" and "Using Mozilla" and received:
We think you may have asked about a Yahoo! ID. Please try your search at one of the following:
* Yahoo! Search
* Yahoo! Member Directory
As far as Yahoo knows, Mozilla is just one of their members. (Wonder who?) "Using Mozilla with Yahoo Mail" did not return anything useful.
I tried to create an account with the name "Mozilla". The "Are you really human?" graphic did not show because it is from a different server.
---
SIG: Currently over two years without mod points.
Could I give you some mod points? They are rather painful, since browsers (I checked Mozilla, MSIE, and Opera) choke on all those pull-downs, so I have to be careful to open only one article, and it cannot have over 300 posts. I have not had 48 hours without points since OCT. I let 14 points expire last week (meaning I only modded 6 posts.) (No, I will not turn them off. The moderation system keeps this site healthy.)
MSIE has a link "Plain | Color and Graphics" next to the title "Compose". It defaulted to Plain, but showed the RichText icons after clicking "Color and Graphics". I could not find an Option to make that choice permanent. (If Yahoo is technologically competent, they may default it to your last choice. I did not test.)
Mozilla had the ability to send HTML emails from Yahoo. It was missing some of the functionality available in MSIE. Today, there is no option to send HTML email.
If Yahoo was technologically competent, they would have writtten the functionality to the standards so all browsers could use it. Instead, they wrote a crippled version for non-MSIE users. That was almost understandable when MSIE had over 90% of the browser users. Now that MSIE usage has declined, and the rate of the decline is increasing, they completely remove the functionality.
Shall we start some conspiracy theories about how Yahoo wants to encourage use of Microsoft products? That seems unlikely unless they are hoping MS will buy them, which also seems unlikely in today's merger-resistant world.
Please, please retrace your steps and post the URL for Yahoo Support here.
Last year, my father spent 3 weeks searching their website and calling every phone number he found. He finally reached someone in California that told him that Yahoo has no interest in supporting their subscribers.
His issue was the lost functionality when using Mozilla rather than MSIE for RichText. He really likes sending HTML emails, although I convinced him not to send them to me. I still get them when he sends to the whole family.
Paper ballots mean tons of volunteers counting them. Tons of volunteers counting votes leads to tons of people who are involved with the election process. Tons of people involved with elections means tons of people who think they can make a difference in government. The current powers do not want more people involved in government; they already have power; why would they want more competition? So they spend some of our money implementing systems that reduce the number of people needed to run the government.
I just recommended to a small business that they not add more computers because computers would increase the time required for record-keeping. The few benefits of having electronic records were not worth the cost, effort of installation, and on-going effort of maintaining a new system. I will be helping create a proper website, but that will not be much more than a brochure site and an email form because they do not want any customers who will not visit the store. Their business is value-add through personal configuration, not reselling, so they do not want relationships with customers they have not personally measured. Sometimes using computer/internet technology will not add value.
---
The Slashdot quote for this page was:
Anything is possible on paper. -- Ron McAfee
Very relevant, but even more is possible if your voting system is based on MS technology.
I doubt there are any chimp shamans.
Didn't you see "The Lion King"?
Of course, Disney has a different definition for prostitution than the rest of us.
Microsoft Chairman Bill Gates and Ballmer have said they dislike large purchases because of the difficulty of integrating the businesses. In July 2002, Gates told attendees at an analyst meeting that 'there's a lot of hurdles that any type of acquisition has to get over.'
Technology company merges rarely work. The techies that make a company worth having tend to find new jobs during the uncertainty of a merger. The rest have have more difficulty merging different corporate cultures than merging product lines. Microsoft solves this by only buying companies that they want to eliminate from the market, avoiding any worries about integration.
Gates said at that meeting that he and Ballmer 'kind of look' at buying 30 to 40 different companies every day and do 'a lot of what-if scenarios.'
I read this as "Would we do better if that company no longer existed? Can we steal their technology outright, or should we pay off the owners? Should we just kill the market because it might threaten us someday? How about announcing some vaporware; would that be enough?" They act like the music companies putting all the artists in a certain genre under long contracts, and then never promoting them.
The scale of their efforts impresses me. 250 business days per year * 30 companies per day = 7500 companies reviewed per year. If they average 10 minutes per company, that is greater than 5 hours per day just thinking about eliminating possible competition. At least we know where they get their ideas for "innovation".
So you're in the UK. I am in Pennsylvaia, one of those States in the US.
I have bought very little computer hardware from stores. CompUSA's prices are always unreasonable. ComputerCity was better, until CompUSA bought them and closed them down. MicroCenter is the best chain; the prices sometimes match the web, and I bought the Linux version of MythII for $0.99.
I went to computer shows until the late 90s. Stores would deeply discount stuff for the shows. By 1998, Buy.com was consistently beating the show prices. Then GoogleGear.com started beating Buy.com's prices. Then GoogleGear.com changed its name to ZipZoomFly.com. I just checked 160GB IDE 7200rpm drives there (all prices USD):
$103 = 133Mhz 8MB cache Maxtor
$ 92 = 100Mhz 2MB cache WD
WD's prices are close now, if you do not mind the older technology. The SATA drives are within $5 for identical specs from both companies, so my next SATA drive may be a WD.
I often sleep in the same room as the computers (by choice, for productivity. I have another bedroom I use with girlfriends.) I often shutdown because of the noise.
- I already replaced the CPU fan; Intel was great about sending a replacement, but it took over a month to arrive. Still have the noise, but too busy/lazy to swap drives. This is my MSWindows box, so it would take hours to restore.
I wouldn't want to give a techie access to this box, far too much personal data on it.
This is why you put the box at a FRIEND'S house. Choose someone you can trust. Then store everything in password encrypted files.
About half my friend's are techies, but they keep crossing the boundary. I have been good friends with one non-techie since 1995, but he got a job as QA for application development a few years ago (probably due to my influence.) A non-techie girlfriend introduced me to one of my closest friends: another techie currently starting a construction business, but he still does computer support for several wealthy people.
(Expanding your point)
IMAP keeps a full copy of the mail on each machine. It keeps synchronizing the copies, so frequent backups are needed in case any copy is corrupted. There is a larger chance of corruption (compared to POP3) because any copy can corrupt the rest.
--- HARD DRIVES
I switched to Maxtor after having problems with the others.
- Western Digital is always priced far above everybody else. I dislike that Single and Master need to be jumpered differently. The only "failures" I have seen are when we did not change the jumpers after adding or removing a second drive, although changing the jumpers has required reformatting. Hard drive sizes grow fast enough that WD's prices keep me from recommending them.
- In the mid-90s, Seagate kept replacing a bad drive with dead refurbs. We gave up and used the sixth one as a paperweight. We have not bought one since then.
- In the late 90s, IBM's DeathStars had to be replaced through the distributor. The distributor was annoyed when we were replacing every drive for the third time in less than 6 months. We were not happy about it either. I had one for personal use; the first died within 2 months; the replacement died in 2 days; the reseller swapped it for a Maxtor. A client had bought 60 IBM computers and was stuck with their drives; we bought a few extra so we could send a batch back only once each week.
- We have been using Maxtor since the 500MB days, and only seen one fail within the 5yr warranty. The replacement arrived quickly, and we sent the dead drive back in the new box. I am writing from a PC with a Maxtor 80GB; it is noisier than most drives, and it is really slow the first time the directory structure is accessed after boot. (The latter may be a Windows98 issue. I have not tried this drive with other OSes.) When I first got it, I was expecting it to fail quickly, but it has been that way for 2 years. I still recommend them.
- What brand are you using now? (Serious question. I am buying another drive in the next week and am willing to try a different brand if it is economical and quiet.)
--- OFFSITE SERVERS
Make friends with other techies, or see if your job will give you an IP Address and a place to leave a server. I do both; I do not have a permanent IP address for home. I have my "secure" server at a friend's house, and pay for sharing the SDSL. My websites are on server in a NOC. The manager is a friend of a friend, and I use a machine bought by them in exchange for assisting when they have really difficult technical issues. (The archtypical Slashdotter would be jealous that you have non-techie friends.)
[Windows 3.1] ran fine on my 486/25 back in the day. How much RAM did you have? I'm pretty sure I only had 32 or 64.
Windows 3.1 could only use 16MB RAM. More RAM would be wasted for Windows 3.1, and I do not remember any MSDOS applications that would use 16MB even with Extended Memory. That caused a major price jump at 16MB. Most systems had 4 slots filled with 4MB chips. You could put in 8MB chips, but they were not cost efficient, and buying 16MB or higher chips was for the wealthy. I think we were using RAM technology that required pairs of chips at that time.
The release of Windows 95 caused major changes in the memory market:
- 4MB was required,
- 16MB was the minumum for a decent system, and
- 64MB became the norm as soon as the prices dropped.
That said, virtual memory in Windows98SE has problems if the PC over 512MB physical RAM. MS prefers forcing OS upgrades by not supporting hardware that does not exist at the time of release:
- Win98 FDISK and Scandisk cannot handle hard drives larger than 64GB. (There is a replacement for FDISK, but you need a working Windows98 PC to install it.)
- Win2K requires patching to allow using hard drive space over 130GB.
I wonder if/how [Windows 3.1] would run on a modern system
It would only use 16MB RAM. It would be really fast. The interface would be worse than WinXP. You could play Solitaire. MSWord could not read modern DOC files, and modern versions of MSWord trash the layout of your files. Were there any other programs for Win3.1? Most games required exiting to MSDOS.
That is what I want, except I need to try these out. I know several people who get severe headaches from laptops and LCD monitors. I have stuck with CRTs because I want the high (at least 85hz) refresh at 1024x768 and at least 80hz at 1280x1024. 70hz gives me headaches after an hour. Can someone please report on the experience of using an OLED monitor for extended (>10 hours) period?
Now I just need to find a 40" touchscreen.
Revise my history. This applies to Yahoo.com. I never tried the uk website.
1. I had Geocities and Yahoo email. I could POP3 from Geocities so I used that as my non-work address.
2. Yahoo bought Geocities. I merged the accounts and Yahoo allowed POP3. I started using the Yahoo address, since I worried that the Geocities address might disappear.
3. Yahoo.com requires receiving weekly advertisements to allow POP3. The justification was that the users were not visiting the website. Please ignore the free marketing of all those myname@yahoo.com addresses increasing the awareness of Yahoo, but Yahoo was still on top then. I still used Yahoo as a main address.
4. [Spring 2002] Yahoo.com requires money for POP3. You also get larger inboxes! (They are almost useless if you download your mail regularly.) I used other email domains to avoid Yahoo.
---
I have a variety of addresses at my own domains, so my Yahoo address is not used much. It serves as my permanent address for people who lose contact with me, and for testing other mail systems.
Is there any good reason to use POP3 over IMAP, aside from some services not offering IMAP access?
POP3 allows downloading your inbound mail to a local client. The only choice is whether to delete the mail from the server at the time of the download or let it remain on the server (useful when using a temporary client.)
IMAP replicates your entire mail file (email and folders) to clients. You use more space on the server and all clients, but your mail looks the same on all PCs.
If you only use one PC, then POP3 is fine. If you use one PC as the master, and occasionally want to check your mail from other PCs, then POP3 is fine. If you are putting your mail into another system that allows mail replication, then POP3 is good because it empties the other servers.
If you use multiple clients and want to maintain your folders, then either use that last option, or use IMAP.
---
I have mail pulled from several sources into my Lotus Notes mail file, which is then replicated between my home systems and several internet servers for redundant access from anywhere, including webmail. I use POP3 to pull the mail from all other systems. My mail database sorts it into folders depending on where it originated.
IMAP was designed to grant Notes-like abilities to email. If you want a distributed system and do not have Notes, then IMAP is a good alternative, as long as your mail servers support it. (Lotus Notes servers support webmail, POP3, IMAP, and Notes replication, so you can use your Notes infrastructure with every standards-based mail client.)
AC asked what does not work as well in Yahoo webmail using Mozilla as MSIE.
The RichText (HTML-email) functions are different. The MSIE version uses IFRAMES and provides more functionality than appears in Mozilla.
I detailed this in previous posts. I do not send HTML mail, but my father (a non-techie I convinced to use Mozilla as his main browser, and who is a good evangelist for Mozilla) complains about having to switch to MSIE because of this.
He currently runs Windows98SE. He is about to receive his new triple-boot PC: Windows98SE, RedHat, and Slackware.
---
I have Mozilla only accept images from the originating server. That is probably what is causing problems with MapQuest. That is not a "wrong" configuration, just a safe one. So I use Yahoo Maps.
yahoo mail (you can actually get *gasp* POP3)
You can POP3 your Yahoo mail, but it requires paying $30/year. I want to do this, but am scared about the automatic renewal. There is no option to have it automatically stop at the expiration date. The consumer would not lose anything since the account would revert to the normal free webmail until another payment was received, and they could easily send reminders before and after the expiration.
I had Geocities and Yahoo mail. Geocities always allowed POP3. After Yahoo bought them, I merged the accounts and was able to POP3 from both accounts. Then Yahoo started charging. I received an email advertisement about the "new service" every time I tried to POP3.
I dislike that Yahoo's webmail does not work in Mozilla as well as MSIE. I wish they would hire some good standards-aware web developers. Their spam filter works very well, but did not work with POP3 the last time I used it. The spam would be in the Junk folder in webmail, but there was no option to exclude the Junk folder from POP3.
---
I use Yahoo's movie listings and their maps. Mapquest's maps do not appear in Mozilla (with my settings?), and Yahoo's maps do.
20 years ago, I decided the internet needed to be invented. I had spent my early years learning tons of interesting and useless facts (such as still taught by our "education" system) when I realized that the ability to handle concepts (called "thinking") was more important than knowing the data, since the data could be looked up, but the ability to do something with the data could not be external.
My first company was information publishing. I hoped to grow it into a combination AOL/Amazon/encyclopedia. It would serve as the place anybody could look up anything. This was 1989; the internet was barely public, and I knew nothing about it. The business was successful enough that my partner kicked me out and destroyed it. (I was the vision and most of the labor.)
Then the internet revolution happened. The world got closer to my vision. We could search for almost any data and have the answer in moments, except...
I must go to my computer to look it up.
Since then, we have various experiments to allow that functionality to be done from anywhere. Wirelessly connected devices are getting better. Another decade or two will make them people-friendly.
The article's vision is what will happen to the home computer. But by 2034, the home computer will simply be your personal datastore that is accessible from anywhere. Hopefully by then you will be able to access your server and the rest of the internet by subvocalizing and listening to an ear plug. You will also be able to call anybody the same way (and you will always get voicemail unless they really want to talk to you. Phone tag will be so fast that you will not notice after people stop using greetings.)
Learning facts will become useless when all information is in your ear whenever you need it. Then we can take the next step and start teaching people to THINK.
Disclaimer: I am an American. This was told to me by someone who researched it, but I did not check the research.
---
A long time ago, everybody ate with a knife. About the time America was being colonized by Europeans, Europeans started using the fork. They used the fork in their good hand, and kept the knife in their other hand. Around the time of the American Revolution, Americans noticed the fork. Being at war with England, and very aware of appearing civilized, they invented the weird etiquette of using their good hand for the primary utensil, constantly switching the fork between hands.
I occasionally eat with Europeans (usually Germans), and they are amused by my constantly switching utensils.
6GHZ/2GB/1TB specs HAS to be a JOKE. The only way Microsoft would make money off the machine is new comptuers, seeing that older computers coundn't run it
You are completely correct, and completely missed the point. MS has driven the hardware market for over a decade.
Because MSWindows3.1 was limited to 16MB, the memory sellers had to keep the price on 16MB of RAM as high as possible, because they couldn't sell more to the public. When MSWindows95 both allowed and required more, RAM immediately dropped in price, but everybody was buying it.
MSWindowsME, 2K, XP each required a better processor than the last because MS kept adding garbage to the OS that made it slow.
Hard drives have finally escaped MS's control. Previously, you needed a larger hard drive when you installed a newer MS OS, MSOffice, or MSVisualStudio. The only other programs for the public that required hard drive space were games, and you could uninstall them. Now people are buying very large hard drives to store their music and movies. A friend just bought an additional 300GB drive because he filled his 200GB drive in less than 6 months by recording TV shows.
MS's statement that Longhorn ("Windows 2010") will require 6GHZ/2GB/1TB was a promise to the PC manufacturers. The manufacturers could start selling Linux PCs that get great performance, and try to make money on support (with more expensive technicians.) Or they could stick with MS, and sell tons of hardware if Longhorn is ever released.
The downside is that the only reason people upgrade today is when their PC is slowed by spyware and viruses. Again, MS gets the credit for making it possible to continue selling PCs to the general public. With older hardware, people would notice when an evil program was installed. Now they do not complain until they have around 50 spyware/viruses installed. If people started buying Linux PCs, viruses and spyware would not slow their PCs, and nobody (except gamers) would upgrade.
MS's delay in releasing a new OS is because MS's sales growth is limited. They are having difficulty convincing people to upgrade to XP. Longhorn will not be have a killer app that gets everybody to buy a new PC. MS sales growth is slowing; soon it will decline. They desperately need a new cash cow, because MSWindows and MSOffice are becoming unwanted.
Nobody bought WindowsXP without a new PC. Nobody upgrades MSOffice unless they buy a new PC. MS must keep delaying Longhorn until enough people have upgraded from MSWindows98 to make it worthwhile. A 1 GHz PC is more than good enough for the general public. MS needs to tell the PC manufacturers that business will improve if they wait long enough. That is why they have released those silly specifications.
I have never thought of "unrolling loops" as optimization techniques. They are fun tricks to learn, but are bad for performance and maintenance. A good compiler will do better optimization, and using those tricks in high-level source code may hurt the optimization the compiler can do. If performance needs that kind of tuning, you should insert some assembler.
Programmers usually get to use fast machines with lots of RAM and diskspace, and often end up writing programs that need everything they have.
I mentioned in another post to this article how I had to optimize a program that I wrote on a 386, but customers were running on a XT. My quickie add-the-functionality-so-it-works was not good enough, but changing the algorithm was almost painless once we knew the feature would be used.
How to optimize
Remember that tasks cause performance hits in this order:
1. Writing to the network with confirmation.
If you are just sending to a port, it does not matter. Just write and forget. If you are waiting for a response, then this is the worst. Make certain that the response is handled as in #2.
2. Reading from the network.
Do not allow your program to idle while waiting for input. The first use of threading should be to continue processing as much as possible while waiting for the input.
2.a User interaction
User input (keyboard, mouse, etc.) is also slow, but it is very important. Make certain that your program will pause everything else to respond to the user. Try to redraw as little of the screen as possible. Do not recalculate any of the screen that was not changed. VB is the worst for this, since it wants to run all the code every time the screen is refreshed.
Even MS has trouble not refreshing the entire screen every time something minor changes. Rename a file in Windows Explorer. Did the entry stay in place (desirable)? Did it resort so you have to find it again? Did it resort and move the data so you forget where you were? Did it drop to the end of the list (Windows98)? Were you able to type the new name while another process wrote to a file in that directory (WindowsNT)? If the user wanted it sorted, they would click the title of the column. Do not try to anticipate them. (And remember where they were. Why does it always go to the first entry if you use the Up or Back buttons?)
3. Writing to a local hard drive.
Keep as much in memory as possible so it can be written once. The only reason to write more than once is during debugging, and that code should not be in production. If you really need to log the intermediate steps, think about using write-and-forget across the incredibly-fast local network to a separate box that can do the writing.
The other side is that if you are done with something, then store it so you can free the RAM. Unless you will reuse it. See #5.
4. Reading from a local hard drive.
Do it in one operation. Get all the data possible, then work with it. See #6.
5. Requesting more resources.
If you need much RAM, ask for it in one chunk. For VB, do not "Redim Preserve" arrays for every new entry. Start with an estimated size, and double it if you reach the upper bound. If you write C, then this concept was beat into you early. If you use Java, the Hashtable class does it for you.
If you constantly use several network ports, use a pool. Add each to a pool, and check if one is available before requesting new ones. Your pool should send them to garbage collection if the number being used is MUCH lower than the number being reserved. This depends on your platform. You can always pool outbound ports, but the platform usually assigns the inbound ports as needed, so optimization must be handled by the OS or platform software.
6. Know the physical resources available.
If you try to load a 2GB database into 1GB of RAM, the database is going to be swapped to the much-slower-than-RAM hard drive anyway. It would be more efficient to use 200MB ch
A friend mentioned at lunch that he missed playing a game that ran on MS-DOS BASIC. He last tried to play it on a 486, but it moved too fast. We wondered whether there was an interpreter for MSWindows98 that would run it slow enough to be usable on modern hardware.
I remember trying to play Populous on a Pentium100. A game lasted almost 2 minutes. I flattened a mountain 3 times, but the computer player would keep wrecking it. I was going to use MoSlo Deluxe to slow it down, but Civ3 was released and I was "busy" for a few years.
Even if I could get the games from the tapes, would I want them? Do I really want to see code from when I was learning to program? It might have historical value if I become very famous, but I have not heard of people asking for the source of Bill and Paul's BASIC compiler, or their Traff-o-matic system, or Carmack's early efforts, so it is unlikely anyone would care.
I could probably write similar games in a week using today's technology. Most were variants on PacMan or SpaceInvaders. None were as good as what was in the arcade a few years later. They would not be a good resume to enter computer game development.
The tapes I have are for the VIC20. The C64 (and other color Commodore computers) used a slightly different version of BASIC. My games used PEEK and POKE to control the display, so even if I had a BASIC interpreter, I would need a VIC20 (or PET) virtual machine for them to run.
I really doubt I will ever make the effort to recover the code, even if the 10-minute cassette tapes are usable after 25 years.
I am currently involved with making a very simple change to an application. It has been implemented using 3 very different algorithms. The change is to automatically set 2 fields for geographical groupings from a Country field. I wrote the application, and I suggested during the original design we should automatically fill in the other two fields, but I was overruled. (If they would not configure what country belonged to what grouping, my design would have failed, so I did it their way. The deadline was too short for me to argue about it.)
The users requested it a year later, and they realized the poor data quality from depending on users to set all 3 fields, so they decided to implement the change.
The original design pulled 3 "multi-value" text fields (like arrays) from a single record. The platform will automatically parse each element so what is before the pipe '|' is displayed to the user, and what is after the pipe is stored. Each field used its own choices.
The first revision was without me. (I am expensive, and it seems an easy change. Even I thought the full-timers could handle it.) They created a new table with a 6-field record for each Country: 3 for the codes, and 3 for the display names. Then they created 3 new fields on the form to display the names, while using the original fields to store the codes. The programming was so that every time the screen refreshed, the 3 code fields and the 2 display fields were recalculated. Even worse, each of the 5 fields did its own lookup to the table. So we have 5 lookups (across a global WAN) for every screen refresh. They also set each field twice, which may cause the issues that made them call me.
Then they told me what they wanted. In less than 2 hours (more than half spent testing and writing instructions for implementation), I delivered code that only triggers if the Country changes. It pulls from the single record (as described above) when the document loads, does one lookup (from the in-memory copy) for all the data, which is then parsed into the other 2 fields. (I did not use 3 display-only fields, since the platform supports translating the code to text as mentioned above.) I am hoping they will switch to this code soon.
Then I learn that another group has modified their own copy of the application to do this in a third method. One of the groupings is static, because everybody using this copy belongs to one of the regions, so they just hardcoded those 2 fields. They hardcoded very long IF statements that decides the other grouping based on the Country. There are 3 of these hardcoded blocks: one each for the country code, the region code, and the region display text. Each of the 3 blocks of code runs every time the screen is refreshed. Their performance is much better than the first developer since it is hardcoded, but it is unmaintainable. (Their version is supposed to allow integration back into the corporate version, but they arbitrarily changed many of the field names and some of the data formats, so any integration will require translation.)
We currently have 3 versions of the same code:
#1 is very slow (and is not functioning properly.) This application runs globally from a central server, so those 5 lookups every refresh will be eat bandwidth.
#3 is hardcoded, so maintenance requires a programmer.
#2 (mine) is configurable and is fast since it runs only when needed and uses a single lookup done once when the record loads.
Did I spend time optimizing? I probably put 5 minutes of thought into how the configuration data should be stored, but the algorithm was obvious because it was the simplest method.
Was it more expensive? I may charge 6 times what the full-time developers get paid, but my 2 hours included testing all exceptions. (If the Country is not in the lookup, then the Country code is displayed in the region fields, which alerts the user and admins that there is a problem. I could have blanked the fields, and may still if this is not acceptable.) I
When I was finally allowed to program, I did it on a Commodore PET in elementary school. Of course I was writing games, and I optimized because games are not fun when they are slow. I was too lazy to type in the source from magazines, so all of my programs grew until they were usable, then grew some more as people played them and asked for features.
Junior High did not have computers yet. I finally convinced my family to get me a computer if I paid half. With my budget, that meant a VIC20 for under $100. The VIC20 had 4KB of RAM. You could buy a 16KB expansion, but I could not afford it.
The language was the same as the PET, so I tried to run my existing programs. They ran. I tried to modify them, save, and run them, and they would not work, even if the change was to remove code. I finally tried changing all the commands to "tokens" to shorten them. IIRC, a token was the first 2 characters of a command and an underscore. Since most of the commands were 4 letters, this saved quite a few characters. I also renamed all my variables to shorten them. Then I saved and the program ran. Yeah!
Then I made another change, and the problem reappeared.
I decided that:
10 The program loaded as written to the tape. (Hard drive? Floppy disk? Never heard of them.)
20 If the program fit in memory, it would run.
30 When the program was loaded for editing, all tokens were expanded to the full command.
40 The program was saved as text, except...
50 If the tokenized version of a command was encountered, then it was saved as the token. I never figured out if they were saved as the 2 Hex number, the dollar sign and the number, or the 3-character shorthand "token" I typed.
60 GOTO 10 (and see if it runs.)
So every time I wanted to modify the longer programs, I had to change every command to the "token" format. (About half of my programs were under the 4KB limit, about half could be "fixed" using this technique, and a few were large enough that I never got them working again.) Any changes to the longer programs required 20 minutes of "tokenizing" the commands before saving it. That killed much of the fun of programming. (Today I get upset if a build takes longer than a game of Solitaire, but "getting upset" means deciding to fix the build process.)
Commodore bought BASIC from MS, and then modified it, so I do not know who to blame for the hours I wasted on this, but Commodore is gone and MS continues to take the fun out of computers, so I blame MS.
---
My next venture into computers was the C64. They had "Sprites". Half of the code in my games was controlling the graphics, and this improvement to the platform made that code obsolete. For the challenge, I upgraded one game to use Sprites. They took much of the fun out of it, and (IIRC) you were limited to 4 of them, so you had to play games (pun intended) to write PacMan. (4 Ghosts and PacMan required 5 Sprites. The dots and cherries would be handled without Sprites. It was easy to write a 3-ghost PacMan game, and really difficult to write a 4-ghost game.)
Since the C64s at school did not have tape drives, my old programs had to be typed in, if I had a printout from elemetary school (no printer at home.) I already stated that I was lazy, so they are gone. Well, I still have the tapes, but they are 2 decades old, and my PC does not have a tape drive anyway.
you can actually register after a violation and still gain some benefits.
There is no reason to register most copyrights until there is a violation. If you are going to distribute it, have the work notarized to prove when it existed. Notary publics are inexpensive compared to registration. The registration is only desirable if you are going to sue. Registration allows triple damages and recovery of legal fees, which is a good investment and threat if going to court. The notarized copy serves as evidence as well as the registration does.
You can have songs notarized for a couple of dollars. Registering a song (and most other works) is $30. ($100 if you use my IP lawyer.) You may attempt to register songs yourself, but do not do it unless there is a chance for court or profits (when your lawyers are already involved so $30 is insignificant.) $30 per song aggregates into much money if you are a prolific artist and registering all your work.
You can have software notarized for tens of dollars. Registering a software program is $300. ($650 if you use my IP lawyer. I forget what additional charges beyond the basic $30 registration are required, but that is why I have a lawyer.) You really want a lawyer before registering software to make certain that the registration is defensible, and that you are not providing more than is necessary. There is a maximum of 50 pages for a software registration; it is usually the first and last 25 pages, but you can mask and/or delete enough to make the code unusable and still have a valid registration. My lawyer recommends deleting every 20th line, then masking anything critical like hardcoded keys. (IANAL, and I highly recommend you get one if you are filing registrations.)
Most of my professional work includes Lotus Notes (LN), but I use the best language for each project, or part of a project.
I started with Sun JVM, then switched to the IBM JVM. I tried a couple of others, but could not find any advantages over the 2 corporate versions. I think IBM included code to make the JVM work better with their products. I had more than one major issue that disappeared when I switched to IBM's JVM. All the core functionality worked with either, but the integration was better with IBM's.
That worked with LN5. IBM decided that including Java with Lotus Notes was hurting WebSphere, so they trashed Java with LN6. Servlets that ran in seconds on an old server would timeout on a much better server. The integration issues with any JVM are worse than ever.
IBM has been using WebSphere to take Java away from Sun. This whole discussion shows the attack has been successful. I wish the Java issue was decided so IBM would improve LN rather than steal technology from LN to improve WebSphere. If the JVM was forkable, then IBM would be the first to fork it. (Not that MS would not try, but IBM has slightly better programmers than MS, so IBM would finish first.) My programs would require the IBM JVM, and that defeats the purpose of opening Java.
You are mostly agreeing with me, but we disagree that Java can survive forking.
The fight is about the trademark. The source is already available. So far, only MS has tried to fork it, and they lost the fight with Sun because of the trademark. That is why their versions are now known as J++ and C#. MS can embrace and extend Java all they want, but they cannot call it Java.
I like that there is only one JVM that cannot run my Java. (The MS JVM 1.1 installed with MSIE browsers makes it difficult to write Applets.) If we allow GPL-style forking, then Java will be forked and we (prgrammers) will need to test for functionality before using it. Yes, there will be pressure to merge the forks, but their existance will make our job almost impossible. Some form of certification program is needed. Today I can release a program requiring Java1.3. I do not want to release a program for IBM Java 1.6, then rewrite it for RedHat Java 1.6, then rewrite it for MS Java 1.6. If I want to do that much work, I will program in C or C++.
We want that
Redhat, SuSE, Debian all shipped Sun's JRE - so it was there, on the CD, ready to go
The current license makes that illegal. That is what needs fixing. Java needs a license that allows free redistribution (of certified versions), but releasing Java under the GPL is overkill because ANY forking will kill Java's primary purpose.
I love that the sandbox and the memory handler (garbage collection) make it easy to write safe programs. Java 1.5 is removing some of the verbosity. But portability is the main strength, and that must be protected.
There are already 3 versions of Java, including a "Mini Java" for cell phones. You can also include many optional extensions (packages) depending on your use. What features are you expecting a fork to improve? Are any of them worth the development headaches of having multiple forks?