You upgraded your PC because it both made games better *and* it improved game performance. Now you've got lots of people like me: my main work machine is a P2-350 with a GeForce MX (it's already been upgraded once). It is perfectly fine for all of the work, email and web browsing that I do. That'll change in a while I guess, but right now it's just fine - I have no desire whatsoever to upgrade it.
So that leaves games as the sole reason to upgrade. To upgrade my PC to spec so that I can play most PC games these days I'll have to replace the motherboard, the CPU, the RAM, and the graphics card - that's almost everything that matters in a PC, quite costly! Or I can pass PC games by and buy brand new games for my 2-year old PlayStation, which will probably continue to serve well for some time to come.
Of course the PC does have some advantages: advanced input methods and more power, so if some absolute killer game that needed the juice came out I'd do the upgrade. Total Annihilation 2 anyone?:)
This method, like most backup solutions, doesn't take a backup as at a specific instant, but instead takes it over a period of time - the length of time required to make the backup, which can be a problem if the data being backed up is changing all the time.
A few years ago I saw a neat (expensive!) disc array that could 'freeze' the disc image at a single point in time so that a backup could be taken from the frozen image. The backup
software saw only the frozen image, while the rest
of the OS saw the disc as normal including updates
made after the freeze occurred. The disc array
maintained the frozen image until the backup was
complete, guaranteeing a true snapshot as at a
specific instant in time.
I wonder whether such a thing would be possible in
software. Possibly it can even be done through
cunning application of the tools that we already
have. I imagined that you might be able to do
something like it by extending the loopback device
interface. Does anyone out there have any cunning
ideas?
I live in a banana republic where your $1 feels more like $2 in our economy, and even I think that it's a perfectly reasonable price (as long as a significant chunk of it goes to the artist).
Changes have to be done twice? That's right, when they change the code, they must change the comment.
I'll repeat that: they MUST change the comment. And it must make complete sense when they're done or they'll be out of a job!
Why is this important? When you change the comment, you must think about the comment. You must think about the change you've done and how it fits in with the rest of the code, and what the rest of the code is trying to do. If a comment isn't up to date or doesn't make sense, that's a bug in the code, as bad as any other, and it needs to be fixed.
It's not difficult to spot when the comments don't line up, so they're fairly easy to fix. While you're there fixing the comments you need to check the code, 'cos whoever the idiot was that wrote it, they obviously haven't checked it properly. Go and hit them with a Very Big Stick.
Certainly you shouldn't whine about the extra typing. A little extra typing shouldn't hurt - and you should be able to type faster than you can think, so it shouldn't really slow you down. If it does, go take a typing class.
And if your lame excuse is that you're in too much of a hurry to maintain comments, just make sure you're not in too much of a hurry to deal with the bug reports that come back because you haven't checked your code properly.
That's what they're doing. The news article doesn't give an accurate impression of what's happening. Google chooses which ad appears on top, no matter how much you offer to pay. And as usual Google chooses by relevancy and click-thru count - so the ads that float to the top are those that the Google's visitor is most likely to want to see.
The only difference is that the ads that do happen to appear at the top get charged more, which is fair enough, as they're appearing in a more effecitve space. The ads are still text-only, fast loading and still reasonably unobtrusive. And this is geared solidly towards showing relevant ads only, which is good for everybody.
The reason I don't often click on ads these days is because I don't want another credit card, have no interest in yet another casino or any of the other ads we've already seen over and over again. Anything that introduces more variety and relevance in advertisers is a great move in my book.
... is what they're seeing at the moment. Let's say for a moment that Microsoft programmers, per 1000 lines of code, leave in no more bugs and security holes than anybody else (including those in OSS camps).
The problem is that on a Windows box a lot of software that shouldn't be there has to be installed due to the interrelationships with other software. For example, what sane Linux sysadmin would install a web browser or even a GUI on a web-server box? None would: each additional piece of software you install, each additional service you run, increases the security risk. On Windows, you have to install the extra software, and therefore accept the increased risk.
The other issue is that integration increases the complexity of systems, making them harder to verify. Two pieces of software may be secure when independent, but together the interrelationship can raise problems that neither would have had in isolation.
Integration has been a key plank in Microsoft's strategy over the past 5-10 years, because it helps to further lock the customer into their solution, and also because it does indeed sometimes allow functionality that would be more difficulty otherwise. But is it worth the cost?
Yep, you can watch telly and view your computer's monitor on TV, even watch DVDs and control devices from your computer. Out of the box, this can only be done on Windows. Linux can do it, but only with a lot of work (been there).
What they're probably after is a standard that could cover EVERYTHING, out of the box, plug and play. This currently exists. Unfortunately that's controlled by the last oufit they'd want in charge: Microsoft. MS aren't known for playing ball (but then nor is Sony!). Every time you use an MS product you give them more control.
Not to mention all of the baggage MS's incessant drive for integration gives us, as we've seen repeatedly over the past few months. Who can be sure of what other issues remain, caused by something you'll never used that is linked to the core system? I wouldn't want to release that in my new VCR or TV, so they'd probably want to engineer something from the ground up to be as simple and secure as possible.
They could theoretically fork off a copy of linux, but there's still the GPL to contend with, which causes major problems with the integration of patented or licensed technologies. Sure patents and closed licensing is bad, but they're still going to need to do it. Technology vendors that won't (or can't) release the source to their driver software can't support a Linux-based system properly, as the drivers are out of date as soon as the next kernel release comes along. Even when you have the source, recompiling it is something no consumer should need to do.
Not to mention some people (whether right or wrong) would consider keeping the source to some new OS closed (or away from MS at least!) a benefit.
As to whether anything will come of this is anybody's guess, but it's certainly true that for some embedded applications the current set of offerings out there aren't particularly palatable.
It's interesting that you can often look around the world for a preview of what's going to happen at home in the tech world. The US tends to lead us
with internet-related stuff, while we often see
retail and product related things (eg Microsoft
software rental) first.
Down here in New Zealand IBM mostly withdrew from
standard retail some time ago. These days you
can still get some of the boxes via mail-order,
but you won't see much of them on the street
anymore. They're definitely tilting at the
business angle only, which can be seen by looking
at their product range at http://www.ibm.co.nz/.
Even their business PCs haven't been doing so
well though.
They were seeing losses in their PC division over this way some time ago, so it was no particular surprise when this happened.
I wasn't sorry to see their PCs go, but their laptops are often pretty innovative, and I'd
bet my business on their bigger (non-intel)
machines any day. Of course you can still get
those:)
Does anybody else still see strange behaviour
with text and the cursor at the end of lines
when composing plaintext email in mozilla?
If for example I click at the end of a long line
of text in a message and press RETURN to insert
a single blank line Moz inserts two lines instead,
and only if I haven't already inserted a line there before.
I tried looking for it in bugzilla but couldn't spot it - I suspect I'm probably searching for the wrong thing though. Maybe it's something wrong with my setup?
Apart from that, it's all coming along rather well
and I use it as my main browser and mail client
on my primary work machine. The only real thing left from my point of view is to trim down on the memory leakage (eg try switching between IMAP folders with the welcome page visible in the preview pane and watch Moz chew another 30-50k).
That's BadTrans, a virus. Mozilla pops up a window asking where you want the file saved; apparently Outlook Express just goes ahead and runs it. The message itself appears empty aside from a single strange character in the top left corner of the window.
These days we just filter all exe/scr/pif etc using a global procmail script - set up procmail as the default delivery agent and all your mail problems go away:-)
Actually, that's rather odd - I've been amused over the past couple of weeks to find that Mozilla 0.95 actually seemed to run better on my Linux box than my Windows box. I'm running it on a celeron 500 laptop with 256Mb of RAM, running RH7.2 kernel 2.4.9. What sort
of kit are you running it on?
I'll fetch 0.96 now and check it out. Maybe they've fixed that annoying problem with the text area editor under Windows - frustrating when composing mail messages!
Yep, and equally importantly, the big boys (Sun, IBM et al) can't really choose KDE long term because they want to be able to ensure that they at least have the option of developing closed source
apps for the platform without being held to ransom
by TrollTech.
Certainly, Trolltech at the moment would almost certainly be very reasonable about it, and
charge fair licensing fees.
Unfortunately there's no way Trolltech or in fact anybody else can guarantee what policies the TrollTech management, say, 10 years from now, will have. After all, we don't know who that management would be.
You need a Client Access License (CAL) only if the user is directly accessing the SQL Server. If you have 1,000 users hitting a webserver, but the one webserver is the only device hitting the SQL Server, then only the webserver needs a CAL, not the 1,000 users.
Multiplexing is the use of hardware and/or software to reduce the number of devices that directly access or use the software on a particular server. An example of multiplexing is a server application that calls the Microsoft Transaction Server (MTS) component of Microsoft Windows 2000 Server on one server, which in turn pulls data from a SQL Server database on another server. The client computer has a direct connection to the server running MTS, but it also has an indirect connection to SQL Server because it is ultimately retrieving and using the SQL Server data through MTS.
Use of such multiplexing, pooling, or related hardware and/or software does not reduce the number of CALs required for SQL Server. Regardless of how many tiers of hardware or software exist between the SQL Server and the client devices that ultimately use its data, services, or functionality, a CAL is required for each distinct input to the multiplexing, pooling, or related software or the hardware front end. Processor licensing will likely be the appropriate licensing option in these situations, due to its simplicity and affordability.
The processor license changes are relatively new -
in the past you used an 'internet connector' license for websites (which didn't cover internal
users), but it looks like the processor license
covers everybody now.
Primarily because it's so new. Everybody has to go over the consequences of it, given that it uses the SMP code in a way slightly different to how it was intended. It may in fact be rock solid, it's just that nobody knows yet, and doesn't care to 'test' it on their production boxes:-).
But if you're just tinkering on a linux box at home then go for it - and report any problems. I feel a download coming on...
Re:Odd kernel error message [slightly OT]
on
Linux Kernel 2.4.10
·
· Score: 1
I found this happens occasionally when the modules installed in/lib/modules/(version) aren't updated correctly - sometimes even doing a make modules_install won't always fix it.
As a result, when I last built my kernel (only 2.2.19 - I fear the bleeding edge:-), I renamed the/lib/modules/2.2.19 to/lib/modules/2.2.19-old before rebuilding the kernel and running make modules_install. This way you can be sure it's all clean.
Failing that, go through the standard escalation
procedures: make clean, or if really desperate: make mrproper:-)
Once you've got your current problem sorted, also consider moving to holding multiple copies of System.map in your/boot directory (eg/boot/System.map-2.2.17,/boot/System.map-2.2.19). This way everything still works when you choose an older backup kernel from your boot loader.
We're free and don't depend on money. But the people who make hardware aren't free and do depend on money. They need incentive to even release the specs for their hardware.
Want to be able to watch DVDs on your linux box? Use the latest new technology? Each linux desktop user that can buy a piece of hardware or software is more incentive for people to support the platform. Each extra desktop user that linux has increases the likelihood that you can use your cool new hardware and apps on the OS you want to.
Probably a bit late for existing projects but...
on
Memory Leaks
·
· Score: 2, Interesting
One of the places I'm involved with doesn't use the standard malloc calls. Instead we use something more like:
get_mem(ptr, size, "widget hash table")
When debugging, get_mem keeps track of all allocs. At the end, just before the program shuts down the heap dump routine is called which lists all outstanding memory blocks along with the debug string so you can see where they were allocated.
It's also often practical to call the dump routine at various points within the program and give the output a quick look-over or diff - it's amusing how often you can nip these problems in the bud this way.
Also, if you get really desparate, change the get_mem routine to increment a global counter and tag that to the end of each allocation info block. If you keep a program debug log and log each allocation it makes it easy to see where a loose block was allocated - grab the unique ID from the dump and search the log file for it.
A handy feature about this trick is that you use #define to define get_mem, so when you go to production you simply define it to malloc and throw the debug string away - no speed or size cost in the running program. In addition, it basically costs nothing except an hour or so to set it up in the first place. The catch is you have to use it religiously from the start of your project.
A really simple trick, but it has saved me so much work!
That's right, make Linux better for Linux users. Just don't come complaining to me when the new piece of hardware you just bought doesn't work on it because it wasn't worth the manufacturer's (or anybody else's!) time to develop drivers for it.
The more people that are brought into using it, the more people will work on it, and the better it will be for everybody (including you!).
When clicking on a link doesn't work, I've found it's almost always because Netscape has a dialog box up somewhere asking a question. Usually it's been hidden behind something else - you often have to click on another Netscape window or minimise and restore before it'll be visible.
Not wanting to learn a language is a poor excuse. Learning a language takes a couple of days at worst - learning the libraries and environment is what takes time, and you'd do that with their C++ environment anyway.
Back in university I used to hate Pascal and Modula-2 with a passion. Primarily because of the pedantic type-checking (having to cast a short int to a long int to use it in a function call - pah!). With Object Pascal, they fixed virtually all the things that irritated me (except boolean operator precedence), and did a pretty tidy job of the object stuff too.
But in fact for me there are 2 killer features: - real string handling: no buffer overflows or mucking about with memory allocation. In addition, the reuse element means it's often faster then standard C-style handling. If you're doing any form of database programming you will sing the praises of this repeatedly. - F9. This is the Run button. You push it and your program runs. Yeah it compiles it too, but you don't notice that, it's so fast. Even recompiling all source files from scratch only takes a few seconds.
So it's all very well calling it a language designed to 'teach programming', but for many purposes it is definitively superior to C or C++. I've been happy to bet my livelihood on it and it hasn't let me down.
If you really want to attack it, at least come up with coherent arguments, like these: - by using Delphi you are reliant on one vendor to supply the tools. - the fact that it's not as widespread as C/C++ means the support from third parties and community isn't as strong. - pointer handling still sucks, Pascal style. It works but it ain't nice.
I was in the beta-test, and was curious about this too. But soon after starting the solution they've taken immediately becomes apparent: *everything* goes through their servers.
For example, if you click on an item in your inventory, there's a noticeable delay as (presumably) their server is contacted to verify the action. Then there's another delay when you drop the item in its new location.
In addition, you can only play online with special 'secure' characters, every facet of which is also controlled by the server. With all items and characters being controlled centrally like this, I'd say it will be very difficult to fabricate your own mega-magic items or characters, since none of this information is actually authoritatively stored on your own PC.
ksh does let you do that stuff, but it's not active by default. Read the man page and you'll find that you can give it Emacs-style bindings. Amusingly, it also has a vi-style mode:-)
The documentation issue isn't a problem for me. Certainly the documentation in some places can be hard to find (but this is IBM - EVERYTHING is documented, if you know where to look:-), but smit itself can help directly here - read on...
First thing's first: Real SMIT users use 'smitty' to tell smit to run in terminal mode. The X version is indeed cumbersome (though I admit I like the wee running man - he falls over if a command fails:).
SMIT actually does (almost) everything via commands that you can execute yourself, which limits it in some ways. However this is also its advantage: Rather than pressing ENTER to tell smit to execute that command you've just given it, press F6 instead. SMIT will now tell you the actual command line it was about to execute. You can take this command and type it yourself, or, more importantly you can stick it in a script. Linuxconf isn't able to do that in the same way as far as I'm aware, or at best it does it in terms of its UI, which isn't a good way to script things. Have you ever tried to script setting disk space quotas under Linux? Aarrgh!
The ODM (binary database) is indeed something of an issue, and something I'm always fretting about whenever I have to do system recovery on an AIX box. Though it's been scary in the past to note Linux people talking about an NT-style 'registry' (shudder). Probably the main thing we can do there is that if such a thing ever does eventuate, ensure that it is well documented at a central site somewhere, and provide good tools to manipulate it. In particular such tools must be small and stand-alone so that they can be run easily in recovery mode.
Some things about AIX I'm not keen on, for instance its price, its devel environment, and some of its 'non-standard' wrinkles. But I've been working with it for 6 years now and I can say in no uncertain terms that its disk handling (LVM and JFS), and its system adminstration (SMIT) are nothing short of stellar, especially if you have to maintain one of these things remotely.
I don't think I'd like to see SMIT verbatim in Linux, but LinuxConf could learn a lot from it.
As far as IBM and the open source community goes I'm pretty comfortable. IBM got whacked good in the 80s, and have pretty much played ball since. More important though is the fact that they've been slowly reshaping themselves into a total-service oriented organisation for some time now, where they can make their money from the services they provide more than the products. Linux slots into this strategy very well, don't you think?
If you go and look at their JFS subsite you'll see that they've been making very steady progress on it since they started - I've been monitoring it regularly and I think what they've acheived in the short time so far is actually pretty remarkable!
d'oh - you upgraded because it improved both games *and* work performance. Open foot insert mouth...
So that leaves games as the sole reason to upgrade. To upgrade my PC to spec so that I can play most PC games these days I'll have to replace the motherboard, the CPU, the RAM, and the graphics card - that's almost everything that matters in a PC, quite costly! Or I can pass PC games by and buy brand new games for my 2-year old PlayStation, which will probably continue to serve well for some time to come.
Of course the PC does have some advantages: advanced input methods and more power, so if some absolute killer game that needed the juice came out I'd do the upgrade. Total Annihilation 2 anyone? :)
A few years ago I saw a neat (expensive!) disc array that could 'freeze' the disc image at a single point in time so that a backup could be taken from the frozen image. The backup software saw only the frozen image, while the rest of the OS saw the disc as normal including updates made after the freeze occurred. The disc array maintained the frozen image until the backup was complete, guaranteeing a true snapshot as at a specific instant in time.
I wonder whether such a thing would be possible in software. Possibly it can even be done through cunning application of the tools that we already have. I imagined that you might be able to do something like it by extending the loopback device interface. Does anyone out there have any cunning ideas?
If not $1, what should it cost?
I'll repeat that: they MUST change the comment. And it must make complete sense when they're done or they'll be out of a job!
Why is this important? When you change the comment, you must think about the comment. You must think about the change you've done and how it fits in with the rest of the code, and what the rest of the code is trying to do. If a comment isn't up to date or doesn't make sense, that's a bug in the code, as bad as any other, and it needs to be fixed.
It's not difficult to spot when the comments don't line up, so they're fairly easy to fix. While you're there fixing the comments you need to check the code, 'cos whoever the idiot was that wrote it, they obviously haven't checked it properly. Go and hit them with a Very Big Stick.
Certainly you shouldn't whine about the extra typing. A little extra typing shouldn't hurt - and you should be able to type faster than you can think, so it shouldn't really slow you down. If it does, go take a typing class.
And if your lame excuse is that you're in too much of a hurry to maintain comments, just make sure you're not in too much of a hurry to deal with the bug reports that come back because you haven't checked your code properly.
The only difference is that the ads that do happen to appear at the top get charged more, which is fair enough, as they're appearing in a more effecitve space. The ads are still text-only, fast loading and still reasonably unobtrusive. And this is geared solidly towards showing relevant ads only, which is good for everybody.
The reason I don't often click on ads these days is because I don't want another credit card, have no interest in yet another casino or any of the other ads we've already seen over and over again. Anything that introduces more variety and relevance in advertisers is a great move in my book.
The problem is that on a Windows box a lot of software that shouldn't be there has to be installed due to the interrelationships with other software. For example, what sane Linux sysadmin would install a web browser or even a GUI on a web-server box? None would: each additional piece of software you install, each additional service you run, increases the security risk. On Windows, you have to install the extra software, and therefore accept the increased risk.
The other issue is that integration increases the complexity of systems, making them harder to verify. Two pieces of software may be secure when independent, but together the interrelationship can raise problems that neither would have had in isolation.
Integration has been a key plank in Microsoft's strategy over the past 5-10 years, because it helps to further lock the customer into their solution, and also because it does indeed sometimes allow functionality that would be more difficulty otherwise. But is it worth the cost?
What they're probably after is a standard that could cover EVERYTHING, out of the box, plug and play. This currently exists. Unfortunately that's controlled by the last oufit they'd want in charge: Microsoft. MS aren't known for playing ball (but then nor is Sony!). Every time you use an MS product you give them more control.
Not to mention all of the baggage MS's incessant drive for integration gives us, as we've seen repeatedly over the past few months. Who can be sure of what other issues remain, caused by something you'll never used that is linked to the core system? I wouldn't want to release that in my new VCR or TV, so they'd probably want to engineer something from the ground up to be as simple and secure as possible.
They could theoretically fork off a copy of linux, but there's still the GPL to contend with, which causes major problems with the integration of patented or licensed technologies. Sure patents and closed licensing is bad, but they're still going to need to do it. Technology vendors that won't (or can't) release the source to their driver software can't support a Linux-based system properly, as the drivers are out of date as soon as the next kernel release comes along. Even when you have the source, recompiling it is something no consumer should need to do.
Not to mention some people (whether right or wrong) would consider keeping the source to some new OS closed (or away from MS at least!) a benefit.
As to whether anything will come of this is anybody's guess, but it's certainly true that for some embedded applications the current set of offerings out there aren't particularly palatable.
Down here in New Zealand IBM mostly withdrew from standard retail some time ago. These days you can still get some of the boxes via mail-order, but you won't see much of them on the street anymore. They're definitely tilting at the business angle only, which can be seen by looking at their product range at http://www.ibm.co.nz/. Even their business PCs haven't been doing so well though.
They were seeing losses in their PC division over this way some time ago, so it was no particular surprise when this happened.
I wasn't sorry to see their PCs go, but their laptops are often pretty innovative, and I'd bet my business on their bigger (non-intel) machines any day. Of course you can still get those :)
I tried looking for it in bugzilla but couldn't spot it - I suspect I'm probably searching for the wrong thing though. Maybe it's something wrong with my setup?
Apart from that, it's all coming along rather well and I use it as my main browser and mail client on my primary work machine. The only real thing left from my point of view is to trim down on the memory leakage (eg try switching between IMAP folders with the welcome page visible in the preview pane and watch Moz chew another 30-50k).
These days we just filter all exe/scr/pif etc using a global procmail script - set up procmail as the default delivery agent and all your mail problems go away :-)
I'll fetch 0.96 now and check it out. Maybe they've fixed that annoying problem with the text area editor under Windows - frustrating when composing mail messages!
Certainly, Trolltech at the moment would almost certainly be very reasonable about it, and charge fair licensing fees. Unfortunately there's no way Trolltech or in fact anybody else can guarantee what policies the TrollTech management, say, 10 years from now, will have. After all, we don't know who that management would be.
Imaginary headline: Microsoft buys Trolltech :-)
That's not quite right. From the MS website ( http://www.microsoft.com/sql/howtobuy/pricing/defa ult.asp
):
Multiplexing is the use of hardware and/or software to reduce the number of devices that directly access or use the software on a particular server. An example of multiplexing is a server application that calls the Microsoft Transaction Server (MTS) component of Microsoft Windows 2000 Server on one server, which in turn pulls data from a SQL Server database on another server. The client computer has a direct connection to the server running MTS, but it also has an indirect connection to SQL Server because it is ultimately retrieving and using the SQL Server data through MTS.
Use of such multiplexing, pooling, or related hardware and/or software does not reduce the number of CALs required for SQL Server. Regardless of how many tiers of hardware or software exist between the SQL Server and the client devices that ultimately use its data, services, or functionality, a CAL is required for each distinct input to the multiplexing, pooling, or related software or the hardware front end. Processor licensing will likely be the appropriate licensing option in these situations, due to its simplicity and affordability.
The processor license changes are relatively new - in the past you used an 'internet connector' license for websites (which didn't cover internal users), but it looks like the processor license covers everybody now.
Don't forget up, down, left, right and select. A learning remote we have here goes unused because there's no convenient mapping for DVD menu control :(
Primarily because it's so new. Everybody has to go over the consequences of it, given that it uses the SMP code in a way slightly different to how it was intended. It may in fact be rock solid, it's just that nobody knows yet, and doesn't care to 'test' it on their production boxes :-).
But if you're just tinkering on a linux box at home then go for it - and report any problems. I feel a download coming on...
As a result, when I last built my kernel (only 2.2.19 - I fear the bleeding edge :-), I renamed the /lib/modules/2.2.19 to /lib/modules/2.2.19-old before rebuilding the kernel and running make modules_install. This way you can be sure it's all clean.
Failing that, go through the standard escalation procedures: make clean, or if really desperate: make mrproper :-)
Once you've got your current problem sorted, also consider moving to holding multiple copies of System.map in your /boot directory (eg /boot/System.map-2.2.17, /boot/System.map-2.2.19). This way everything still works when you choose an older backup kernel from your boot loader.
Want to be able to watch DVDs on your linux box? Use the latest new technology? Each linux desktop user that can buy a piece of hardware or software is more incentive for people to support the platform. Each extra desktop user that linux has increases the likelihood that you can use your cool new hardware and apps on the OS you want to.
get_mem(ptr, size, "widget hash table")
When debugging, get_mem keeps track of all allocs. At the end, just before the program shuts down the heap dump routine is called which lists all outstanding memory blocks along with the debug string so you can see where they were allocated.
It's also often practical to call the dump routine at various points within the program and give the output a quick look-over or diff - it's amusing how often you can nip these problems in the bud this way.
Also, if you get really desparate, change the get_mem routine to increment a global counter and tag that to the end of each allocation info block. If you keep a program debug log and log each allocation it makes it easy to see where a loose block was allocated - grab the unique ID from the dump and search the log file for it.
A handy feature about this trick is that you use #define to define get_mem, so when you go to production you simply define it to malloc and throw the debug string away - no speed or size cost in the running program. In addition, it basically costs nothing except an hour or so to set it up in the first place. The catch is you have to use it religiously from the start of your project.
A really simple trick, but it has saved me so much work!
The more people that are brought into using it, the more people will work on it, and the better it will be for everybody (including you!).
When clicking on a link doesn't work, I've found it's almost always because Netscape has a dialog box up somewhere asking a question. Usually it's been hidden behind something else - you often have to click on another Netscape window or minimise and restore before it'll be visible.
Not wanting to learn a language is a poor excuse. Learning a language takes a couple of days at worst - learning the libraries and environment is what takes time, and you'd do that with their C++ environment anyway.
Back in university I used to hate Pascal and Modula-2 with a passion. Primarily because of the pedantic type-checking (having to cast a short int to a long int to use it in a function call - pah!). With Object Pascal, they fixed virtually all the things that irritated me (except boolean operator precedence), and did a pretty tidy job of the object stuff too.
But in fact for me there are 2 killer features:
- real string handling: no buffer overflows or mucking about with memory allocation. In addition, the reuse element means it's often faster then standard C-style handling. If you're doing any form of database programming you will sing the praises of this repeatedly.
- F9. This is the Run button. You push it and your program runs. Yeah it compiles it too, but you don't notice that, it's so fast. Even recompiling all source files from scratch only takes a few seconds.
So it's all very well calling it a language designed to 'teach programming', but for many purposes it is definitively superior to C or C++. I've been happy to bet my livelihood on it and it hasn't let me down.
If you really want to attack it, at least come up with coherent arguments, like these:
- by using Delphi you are reliant on one vendor to supply the tools.
- the fact that it's not as widespread as C/C++ means the support from third parties and community isn't as strong.
- pointer handling still sucks, Pascal style. It works but it ain't nice.
For example, if you click on an item in your inventory, there's a noticeable delay as (presumably) their server is contacted to verify the action. Then there's another delay when you drop the item in its new location.
In addition, you can only play online with special 'secure' characters, every facet of which is also controlled by the server. With all items and characters being controlled centrally like this, I'd say it will be very difficult to fabricate your own mega-magic items or characters, since none of this information is actually authoritatively stored on your own PC.
ksh does let you do that stuff, but it's not active by default. Read the man page and you'll find that you can give it Emacs-style bindings. Amusingly, it also has a vi-style mode :-)
First thing's first: Real SMIT users use 'smitty' to tell smit to run in terminal mode. The X version is indeed cumbersome (though I admit I like the wee running man - he falls over if a command fails :).
SMIT actually does (almost) everything via commands that you can execute yourself, which limits it in some ways. However this is also its advantage: Rather than pressing ENTER to tell smit to execute that command you've just given it, press F6 instead. SMIT will now tell you the actual command line it was about to execute. You can take this command and type it yourself, or, more importantly you can stick it in a script. Linuxconf isn't able to do that in the same way as far as I'm aware, or at best it does it in terms of its UI, which isn't a good way to script things. Have you ever tried to script setting disk space quotas under Linux? Aarrgh!
The ODM (binary database) is indeed something of an issue, and something I'm always fretting about whenever I have to do system recovery on an AIX box. Though it's been scary in the past to note Linux people talking about an NT-style 'registry' (shudder). Probably the main thing we can do there is that if such a thing ever does eventuate, ensure that it is well documented at a central site somewhere, and provide good tools to manipulate it. In particular such tools must be small and stand-alone so that they can be run easily in recovery mode.
Some things about AIX I'm not keen on, for instance its price, its devel environment, and some of its 'non-standard' wrinkles. But I've been working with it for 6 years now and I can say in no uncertain terms that its disk handling (LVM and JFS), and its system adminstration (SMIT) are nothing short of stellar, especially if you have to maintain one of these things remotely.
I don't think I'd like to see SMIT verbatim in Linux, but LinuxConf could learn a lot from it.
As far as IBM and the open source community goes I'm pretty comfortable. IBM got whacked good in the 80s, and have pretty much played ball since. More important though is the fact that they've been slowly reshaping themselves into a total-service oriented organisation for some time now, where they can make their money from the services they provide more than the products. Linux slots into this strategy very well, don't you think?
If you go and look at their JFS subsite you'll see that they've been making very steady progress on it since they started - I've been monitoring it regularly and I think what they've acheived in the short time so far is actually pretty remarkable!