Domain: delorie.com
Stories and comments across the archive that link to delorie.com.
Comments · 138
-
How is userspace executable loading not native?
Wine is an executable loader and an implementation of the Win32 toolkit.
Last time I checked GTK and QT apps do use native ELF executable formats.
What practical effect does the choice of ELF or PE executable format have on an application's performance? In the MS-DOS era, were protected-mode applications compiled with DJGPP (such as Quake) considered not native because they used COFF instead of the built-in, real-mode-only MZ executable format?
there are still areas where Wine has not yet fully implemented the Win32 API.
"Wine is incomplete" is a valid criticism, but it's far from "Wine is not native".
The post to which you replied never said anything about emulation.
"Emulated" is the opposite of "native" in some senses.
Until the day I can check a box in my kernel config to natively load Win32 PE binaries, its a foreign executable format.
Graphics are not handled in the kernel; they're handled by X, a user-space process. Accessing an NTFS-formatted drive is not handled in the kernel; it's handled in FUSE, a userspace process. Likewise, printing and scanning are not handled in the kernel; they're handled by CUPS and SANE respectively. So why must executable loading be handled in the kernel in order to be "native"?
-
Re:Code reuse, junk food example?
Did I just take a Deloriane back to 1955?
No, but DJ Delorie will take your source back to 1986.
-
Re:Overkill DIY solution...
I had that desire too, but my electronics skills were up to an overkill DIY solution...
http://www.delorie.com/electronics/powermeter/
I record watt-seconds for each of 64 circuits once per second to a linux server.Okay...how much to build another one of these with detailed instructions on how to install it?
-
Overkill DIY solution...
I had that desire too, but my electronics skills were up to an overkill DIY solution...
http://www.delorie.com/electronics/powermeter/
I record watt-seconds for each of 64 circuits once per second to a linux server. -
Re:Mathematicians are gathering to vet this paper
writing a Lisp interpreter (or compiler) that can use multiple CPUs effectively is no small task.
Just making a thread-map counterpart to the map functions will help use more CPUs: break the list into portions, have each thread process one, and slam them back together. This might be easier on splittable list structures, such as skip lists or array lists, than on the common linked list.
-
Re:Repost?
Erk no... but does this mean I might need to upgrade from Lynx? I don't see why I should as Microsoft's forums look ok....
-
Re:Open Source Hardware? I do not agree.
http://www.acooke.org/andrew/electronics/spice.html- Spice and GEDA tutorial
http://members.dslextreme.com/users/billw/gsch2pcb/tutorial.html-Bill Wilson's tutorial on using gEDA/gaf, gsch2pcb, and PCB
Ugg! These tutorials are completely ancient. I have removed them. Thanks.
The official documentation for the gEDA project can be found here: Official Documentation
Seriously, if you want folks to use gEDA, release a beginner's guide showing how to make something simple, like a fm transmitter or lm317 board, and how to successfully prepare it for sending off to some place like batchPCB.
How about these documents:
- gsch2pcb_tutorial
- gschem_warmup
- transistor_guide
- Getting started with PCB
- ngspice and gschem
- tragesym tutorial
- Circuit Design on Your Linux Box Using gEDA
There is lots of documentation available for using the gEDA suite of tools and the geda-user mailing list is very friendly to all levels of users. I could probably dig up a few more tutorials if the above isn't enough.
:)I've also added a bunch of new free/open source hardware projects to the gEDA links page. There are some really awesome projects listed there that do not use proprietary tools.
-
Re:What's next?
vim http://www.vim.org/
Elvis http://elvis.vi-editor.org/
nvi http://www.bostic.com/vi/
vile http://invisible-island.net/vile/
viper http://www.delorie.com/gnu/docs/emacs/viper.html
March in the Clones; http://www.guckes.net/vi/clones.php3 -
Viper Is a Package for Emacs RebelsIf only Emacs came with a decent text editor... You mean like Viper mode?
-
Re:goodhe
software used to have a tangible monetary value before the internet, when distribution was costly and the major determinant of market spread was the company's investment in stamping CD's, packaging and delivery.
Even before CD-ROMs existed there was free software. In 1991, when I lived in LA, I sometimes went to a little shop in Venice Beach where I paid $6 for each 5 1/4" diskette with free software. Linux was in version 0.01 by then, I had never heard of it. But I got several of the GNU packages, running in DJGPP, a "DOS extender".
Funny thing, I remember once I was in a meeting with some high-level managers in my company. I had that store's brochure among my papers, and a vice-president saw it before the meeting started. He was curious, so I gave him that catalog. He spent the whole meeting browsing it, giving only some distracted generic answers when anyone spoke to him. So, you see, long before "free software" became popular among geeks, there were managers who became interested in it when they got informed. -
Re:What about vi?
I'm afraid it's been complete for a long time, then.
-
Re:Always check your return values!
If you are looking for a way to get to fail for the purpose of testing your code check out the alloc hooks.
http://www.delorie.com/gnu/docs/glibc/libc_34.html
glibc isnt the only implementation that does something like this. You can write a simple little function that will just keep a counter of the number of times alloc has been called and then call back to the regular alloc until the counter hits a certain value and then force it to fail by returning NULL. Just do some analysis on your code and then use enough different counter values that you can be reasonably sure you have covered all the paths. Or you could turn the hooks on/off depending on where you are in the code being tested.
A lot of people will wrap their alloc calls in a != NULL or something similar but never test it. If you are working on a large system it is a virtual certainty that someone somewhere has made an error in the code that is supposed to clean up after the return from a failed alloc call. Untested alloc clean up functionality causes a lot of errors. Having difficulty forcing it to fail is a terrible excuse for not testing your code.
I cant count the number of times I have seen a programmer do something like the following:
for(i=0; ibig_number; i++){ ....
if((array[i]=malloc(something)==NULL){
return failure;
} ....
}
Just checking your return value is not enough. You have to make sure you clean up everything and test it. It is very rare that you can just throw a "return failure" statement in there and be ok. Usually things are significantly complex that you cant get away with just assuming that the error case works. For example many programs will keep enough memory seperate from the alloc that they can still perform an operation like saving the file and exiting cleanly. However it is very common to see this functionality fail to work correctly because the guy writing all the other code left the data structures in some bad state due to not testing alloc failures well enough. -
Re:One day?
I don't remember anyone hating apple, although they did say their prices were too high in the 1980s.
"Keep your lawyers off my computer!" doesn't ring a bell? We've known Apple to be evil for a long time.
-
ViperEmacs is a great OS...it does pretty much everything. All it lacks is a decent text editor. Not even Viper?
-
Re:Oh!
I don't think it is included as standard, but Vi has been ported to it:
http://www.delorie.com/gnu/docs/emacs/viper.html -
Re:Cue the vi versus emacs flamewars
Viper is far superior to Vimacs! (A new kind of flame war, whee!)
In all seriousness, I have never tried Vimacs (I don't think I'd actually heard of it before reading your post) and am only recently playing with Viper as a method of reacquainting myself with vi commands. No actual flame war intended, I just thought the idea of emacs-emulating-vi vs vi-emulating-emacs as a flame war was kinda funny. -
Re:Definitely not completely
Lynx viewer
:-) -
It wasn't Windows 95
Windows 95 onwards made life WAY easier to play games. Remember dicking around with autoexec.bat and config.sys trying to get enough free memory to load games back in the day?!? I sure do.
Windows didn't do anything special for that.
Memory problem were solved when game developer started to use the 32-bits protected mode memory.
Long before Windows 95, this was solved by DOS4GW (for most commercial games), DJGPP (for Quake, and most opensource projects) and some more esoteric hacks (for Ultima VII).
In fact, Windows 95 broke compatibility with some of those games, and wasn't that much new, 32bits mode was already provided by Win32s - a backport from WinNT3.5's Win32 API for Win3.1x.
What slowly Windows succeeded is to make *programmers* life easier :
- 1 single 32bit solution to choose from (instead of several under DOS)
- 1 uniform API slowly emerging for mutlimedia (DirectX under Win95, versus several drivers for sound cards, VESA modes and blitters under DOS)
But from a user stand-point as long as you had a standart sound card (Soundblaster-compatible) and GFX card (VESA 2.0 compliant), running 32bit games was a similar experience.
(Then, much later, hardware accelerated 3D came and made a stronger advantage for Windows 95 : standarised APIs like OpenGL and Direct3D, whereas on DOS, only Allegro provides 3D acceleration in DJGPP with OpenGL and it only works with Voodoo boards, everything else on DOS is proprietary API - like Glide and Speedy3D). -
About the "CLR sucks" referrence...First, thanks to Anonymous Coward for us lazy readers.
Then about the "CLR sucks" reference :My initial motivation for the project was to understand all of the reports that I read on the web claiming that the Common Language Runtime (CLR) was a terrible platform for Python and other dynamic languages. I was surprised to read these reports because I knew that the JVM was an acceptable platform for these languages.
This was essentially people complaining that the first implementations for .NET didn't have all the features needed to compile Python and Perl straight into .NET bytecode. Some information about this can be found at Dan's blog (formely working on Parrot).
Perl and Python can do some weird kind of operations that aren't supported by C#. And because it was mainly built with C# in mind, the CLR machine lacks them (the "open to other language" is mainly PR stuff : Microsoft is basically not against the CLR being used to run other languages, but don't expect to find everything you need for it). The JVM happen to be a little bit more friendly (even if it was never advertised as such back then and was only initially intended to be used for Java).
What the people, who complained about CLR, wanted was to have scripts compiled into NET bytecode and then directly run inside the .NET interpreter, and just mix freel python/perl/java/C# at compile time.
IronPython is a solution around those limitation, and basically is something like rewritting a python interpreter in C#.
So you get your Python script ran inside a python interpreter which it self is compiled into bytecode that runs inside the NET interpreter. (But that's only the global over-simplified idea. Thanks to some optimizations, it doesn't run as slow as one may except, and also python script and C# classes can communicate).
One could mix python and C# if one includes the IronPython interpreter at compile time.
IronPython implements those part that are missing in the CLR engine. And some other parts were improved for the 2.0 version of the .NET framework.
The opposite approach is the one behind Parrot. It is designed as language-neutral from the ground up. Althrough it began it's life as "The software we're writing to run Perl 6", very early the project was going to be designed to run Python, and Ruby was considerated too. Wikipedia has some info about current status and projects collaborating to incorporate other languages.
Unlike IronPython the point is to compile Python scripts (and whatever else language) to Parrot bytecode, and then dirrectly run them from the parrot engine, mixed freely (and sharing data and classes) with whatever else language was thrown in the mix (1 single language binding to use whatever tool-kit. No more separated SDL#, PyGames, Perl::SDL, etc...) and easy communications with C libraries. An interpreter is only needed in the final compiled product if one needs to be able to support uncompiled scripts.
(Also, in addition to a large array of languages, the parrot aims to support a crazy large array of targets)
IronPython is somewhat reminiscent of the FSF saying that the GNU software could never be ported to DOS because of it limitations, and DJ Delorie writing DJGPP to get around those limitation and give a POSIX compatibility layer on MS-DOS. -
About the "CLR sucks" referrence...First, thanks to Anonymous Coward for us lazy readers.
Then about the "CLR sucks" reference :My initial motivation for the project was to understand all of the reports that I read on the web claiming that the Common Language Runtime (CLR) was a terrible platform for Python and other dynamic languages. I was surprised to read these reports because I knew that the JVM was an acceptable platform for these languages.
This was essentially people complaining that the first implementations for .NET didn't have all the features needed to compile Python and Perl straight into .NET bytecode. Some information about this can be found at Dan's blog (formely working on Parrot).
Perl and Python can do some weird kind of operations that aren't supported by C#. And because it was mainly built with C# in mind, the CLR machine lacks them (the "open to other language" is mainly PR stuff : Microsoft is basically not against the CLR being used to run other languages, but don't expect to find everything you need for it). The JVM happen to be a little bit more friendly (even if it was never advertised as such back then and was only initially intended to be used for Java).
What the people, who complained about CLR, wanted was to have scripts compiled into NET bytecode and then directly run inside the .NET interpreter, and just mix freel python/perl/java/C# at compile time.
IronPython is a solution around those limitation, and basically is something like rewritting a python interpreter in C#.
So you get your Python script ran inside a python interpreter which it self is compiled into bytecode that runs inside the NET interpreter. (But that's only the global over-simplified idea. Thanks to some optimizations, it doesn't run as slow as one may except, and also python script and C# classes can communicate).
One could mix python and C# if one includes the IronPython interpreter at compile time.
IronPython implements those part that are missing in the CLR engine. And some other parts were improved for the 2.0 version of the .NET framework.
The opposite approach is the one behind Parrot. It is designed as language-neutral from the ground up. Althrough it began it's life as "The software we're writing to run Perl 6", very early the project was going to be designed to run Python, and Ruby was considerated too. Wikipedia has some info about current status and projects collaborating to incorporate other languages.
Unlike IronPython the point is to compile Python scripts (and whatever else language) to Parrot bytecode, and then dirrectly run them from the parrot engine, mixed freely (and sharing data and classes) with whatever else language was thrown in the mix (1 single language binding to use whatever tool-kit. No more separated SDL#, PyGames, Perl::SDL, etc...) and easy communications with C libraries. An interpreter is only needed in the final compiled product if one needs to be able to support uncompiled scripts.
(Also, in addition to a large array of languages, the parrot aims to support a crazy large array of targets)
IronPython is somewhat reminiscent of the FSF saying that the GNU software could never be ported to DOS because of it limitations, and DJ Delorie writing DJGPP to get around those limitation and give a POSIX compatibility layer on MS-DOS. -
Re:But does it run....
-
Re:But does it run....
-
DJGPP for Unix-style utilities
For Unix-style utilities on Windows without the need for an emulation layer, nothing beats DJGPP.Unix-style utilities (ps.exe, kill.exe, and others) ported to Windows, without the need for a layer like Cygwin
Some DOS windows unix util ports
-
Re:From Wiki
What if someone ports Vi to Emacs?
It's called VIP.
-
Re:Remarkably Calm and Coherent for RMSErr... everything that in Scheme is (equivalent to) a pointer.
See eq? in R5RS
In particular: "It will usually be possible to implement `eq?' much more efficiently than `eqv?', for example, as a simple pointer comparison [...which would be useful because...] it may not be possible to compute `eqv?' of two numbers in constant time".
Per eqv?'s rationale, implementations may merge constant objects by using the same pointer or representation, but are not required to.
Effectively, anything testable by eq? is indistinguishable from a pointer to some object.
Also, consider a list l which is eq? to (a b c). (cdr l) returns a pointer to the second element in the list, i.e., (b c). (set-cdr! (cdr l) 'd) destructively changes l such that (equal? l '(a b d)) ==> #t.
There is no real semantic difference between this sort of dereferencing of pointers and how one would do this in C; it's the syntax that is different.
Although this can be true in C as well, usually Scheme objects are subject to relocation (e.g. during garbage collection) where the relocation process updates all pointers to the object, whereas usually C objects are not relocated from wherever pointers to them point to.
That is, if one could { SCHEME_OBJECT s_o; printf("%p", &s_o); } the output could differ from moment to moment, whereas usually { int c_o; printf("%p", &c_o); } will output the same number every time. Moreover, C may guarantee that *(addr) = val will change a specific location in memory e.g. if it's running with no MMU in the way, whereas in R5RS there is no equivalent semantic.
That said, there are several Scheme implementations which use foreign function interfaces (FFIs) to call code written in other languages. Chicken is one of them, and it introduces locations as a first class Scheme type directly equivalent to C pointers.
In other words...Someone might add pointers
Too late! -
Re:Vim mean...
If you don't like vi(m) then, *cough* DON'T USE IT! I could say exactly the same things about emacs. It's all a personal choice, I for one can't stand the non-vi model of editing.
As for intuitivness, maybe I don't want every keystroke bound to some rediculous command.
-ms
--
C-u followed by a character which is neither a digit nor a minus sign has the special meaning of "multiply by four."
http://www.delorie.com/gnu/docs/emacs/emacs_29.htm l -
Re:Fully Modular
Like most people, you miss the point about Emacs. It is *not* a text editor. It's a Lisp environment. Close to "an entire operating system", yes, depending on your definition of OS --- but absolutely not "just for editing text". It's for running Lisp applications. It's the closest thing youngsters like me have to a Lisp machine.
Currently most of my applications are Lisp programs running under the Emacs environment, including my mail client, IRC client, IM clients, my *set* of text editors (including my favourite vi), IDE, psychiatrist, etc, and I love it. Linux is my bootloader. -
Re:VI can't we have this thread without someone...
There is http://www.delorie.com/gnu/docs/emacs/viper_26.ht
m l/ for those wanting to return to the one true path (and avoidance of carpal tunnel syndrome). -
Re:...the same features we delivered seven years a
Another wonderful tool for this can be found at the djgpp site http://www.delorie.com/djgpp. Basically it let's you turn the dosbox (or whatever they call it now) into a semi-decent CLI. As a minimum, I'd suggest installing gcc and the bash shell.
-
There's no need to fear...
When criminals in this world appear
and break the laws that they should fear
and frighten all who see or hear
the cry goes up both far and near
for Underdog! Underdog! Underdog! Underdog!
Credits to: http://www.delorie.com/users/dj/tidbits/underdog_l yrics.html (#2 hit on Google "underdog theme song" search, #1 had a .wav link. Add "lyrics" as a search term and that link is still #2, and #1 is: http://www.wickedcoolnews.com/underdoglyrics.html which also has the lyrics.) -
Re:Why do I get the impression
emacs is an esoteric and poorly designed vi wannabe
How dare you?!?! Emacs is an excellent and fully featured operating system, which includes a shell, a mail client, a calendar, and a text editor.
You can even run it on a eMac if you wish... -
Re:Programming in C++ on Linux
I was using CodeWarrior, Visual C++, and GCC and my main professor was a Linux guru who despises Windows. From what I can remember, Visual C++ was the most troublesome. I think it would be a good idea to set your compiler to only accept ansi C++ code because that's what GCC handles. If that doesn't work then try downloading DJGPP. It's like a DOS version of GCC. If you can get your code to compile on that, it will probably compile on GCC. And it's been a while since I used GCC but I'm pretty sure you have to type G++ instead of GCC to compile C++ code instead of C code, just in case you didn't know.
For book recommendations, I think your Deitel book is fine because ansi C++ is crossplatform as long as you're not including unistd.h or windows.h or whatever that other unix include file is.
I hope that helps.
-
Web Server
Interestingly, their website is hosted on a Windows box.
-
Re:Cygwin!
I generally prefer DJGPP over cygwin. They're GNU utilities ported to DOS/Windows. There are small utilities like rm, mv, and touch, as well as big ones like g++.
-
Re:when an undertaking like this is accomplished..
or is a database created- with pointers to a 'use this word' list, so that the 3rd and further languages can be added by merely updating the list of available translations?
This facility is provided by the GNU C library (see chapters 6, 7, 8). You just need to provide the message catalogs. Of course, you translate whole messages, not just words, since you want to convey meaning, and word-by-word translations come out sounding stupid.
And, of course, internationalization is not just message translation for something like OpenOffice. There's stuff like input methods, which way the text goes on the screen (not all languages go left to right), paper sizes, etc. -
Re:All-time most-useful open-source programThe standard return type for "main" is an int.
e.g.:
int main(int argc, char *argv[])
Borrowed from The online version of The C Book, second edition (Yeah, its a historical book but never mind) (You can tell how often I use exit and the return values from main... (Embedded systems, eh?))Also, a quick look at part of the DJGPP FAQ should help.
Finally, the exit stuff from the same source, suggests EXIT_SUCCESS and EXIT_FAILURE for portability (Non POSIX systems, for example) and that some systems will truncate the return value to 8 bits (0 to 255) for example.
exit and return should really do the same thing when they're in main (Assuming they're not within a locally declared function!) but compilers have bugs just like other software.
The reason UNIX software returns a pass or a fail is more to fit in with other systems, I think. You could sit and define errors all day and some systems would still define all errors as 1 and all non-errors as 0. Besides, where do you stop with the errors? And then you have to convince the people writing the software to adopt them. Sometimes its hard enough to get them to give a pass or a fail...
Anyway, I suppose this is a little offtopic.
-
Re:All-time most-useful open-source programThe standard return type for "main" is an int.
e.g.:
int main(int argc, char *argv[])
Borrowed from The online version of The C Book, second edition (Yeah, its a historical book but never mind) (You can tell how often I use exit and the return values from main... (Embedded systems, eh?))Also, a quick look at part of the DJGPP FAQ should help.
Finally, the exit stuff from the same source, suggests EXIT_SUCCESS and EXIT_FAILURE for portability (Non POSIX systems, for example) and that some systems will truncate the return value to 8 bits (0 to 255) for example.
exit and return should really do the same thing when they're in main (Assuming they're not within a locally declared function!) but compilers have bugs just like other software.
The reason UNIX software returns a pass or a fail is more to fit in with other systems, I think. You could sit and define errors all day and some systems would still define all errors as 1 and all non-errors as 0. Besides, where do you stop with the errors? And then you have to convince the people writing the software to adopt them. Sometimes its hard enough to get them to give a pass or a fail...
Anyway, I suppose this is a little offtopic.
-
Re:I would tend to disagree...
Lynx to http://www.a9.com/ is working for me. It's quite neat too, with text results followed by image results, etc. Try it yourself. This webpage degrades nicely
:) -
Re:Use a pipe and untilities
Why not just use zgrep?
-
Re:An important difference
Mingw provides a bourne again shell for windows.
I think DJGPP also provides a bash port. Whether it's a replacement for command.com or it just runs on top of the normal shell, I don't know. I do know that they also provide some ports of other GNU utilities. -
Re:Will it run bash?
Yes, there is Perl port to DOS, as well as bash port. Unfotunatelly, for 386+ only. Check out DJGPP project. Also there was project called GNUish to port some GNU apps to 16-bits.
-
Free compilers and moreIf you need development tools and utilities, have a a look at DJ Delorie Software.
He's best known for DJGPP C++ compiler for DOS. (djgpp a special version of gcc)
-
Re:Stability, cost, ease of use, programming ease.
In all fairness, I don't think that your second and fourth points are very valid.
Yes, WinXP broke a lot of compatibility with DOS and older Windows apps, and in my opinion, it was far overdue; supporting the legacy APIs was hurting Windows. To put things in perspective, the majority of the software that it broke compatibility with was written for Win95 or earlier; the Linux kernel was still in 1.x in 95, and I doubt that you could find any Linux program compiled for a 1.x kernel that would run on a modern system.
Also, saying that you can't program without spending cash on a compiler and libraries is just wrong. I am familiar with at least two free C++ compilers that run under Windows, DJGPP and MinGW. Dev-C++ is also a fairly popular development environment. You don't even have to use Microsoft's libraries, if you don't want to; while I believe the DirectX SDK can be downloaded for free or bought on CD for a nominal fee, you could, alternatively, use SDL or wxWidgets or any number of other graphical libraries. -
Re:Round TwoStephen King is not dead, though.
Does it take much effort to be that obtuse?
The fact that you believe an urban legend makes this and any future conversations between us totally pointless from my frame of reference.
It doesn't even approach the status of urban legend- the most it's achieved is "over-repeated joke that wasn't even funny the first time".
Since you've decided I'm pointless, I'll have to counter that with a free clue: compared to the general population, a Slashdot reader is much more likely to possess some of the following traits:- prefer non-IE web browsers
- prefer non-Intel computers
- use operating systems even less mainstream than Linux
- use a low-graphics environment like a text console or a PDA
- object on principle to installation of proprietary software
- object on principle to violation of W3C standards
- block certain media types that are used primarily for advertising
For any of those reasons, if you're going to plug a website in your Slashdot signature, consider making it one that appears as something other than a blank black page when viewed by a person without the Macromedia Flash plugin. -
Re:Large text and contrasting colors
The point is NOT to make a web site accessible to people who don't understand web sites! This is like the icon caption: "AOL 4.0: DOUBLE CLICK TO START". Don't do that. It's okay to say "Click here to view the page I have written about foo." instead of "I have written a page about foo.", but please don't take all that advice literally.
Yes, please do not take this advice literally, as it is wrong. The poster is correct that you are not to build a web site to people that don't understand web sites, but W3C actually recommends the exact opposite of his example of what is ok.
Also, making multiple links only seperated by spaces is bad. Not just because slashdot's filter (or whatever it is that adds the link domain) probably just garbled that, but those with poor sight cannot tell the difference when one link ends and the other begins (unless slashdot garbles it for them to point out a link is done and where it goes).
Also, if you come across sites referencing Bobby, please note that for some reason Bobby has decided that if an image is used anywhere in the page it will not pass their test. Previously, they would mark it off and warn testers that they must ensure that colors aren't used to differentiate context. Because of this, there are many sites out there that will claim Bobby compliance when they are not. That said, Cynthia Says provides a similar tester with a few more options. If you use Mozilla, Chris Pederick's Web Developer Extension contains an option under the Validation menu to validate against WAI Accessibility or Section 508 (as well as validate links, HTML and CSS).
Finally, it's worth noting that some you should check your pages in Lynx Viewer to see how the page would look in Lynx (or just run Lynx yourself). This is useful for when judging your content based on its textual equivalent (which in some instances is what is read off by screen readers). Also add a "skip to content" link whose CSS sets it to display none for graphical browsers (some people suggest leaving this on, but W3C's validator even uses this method so I go with them). If they are having the screen read to them after a while they will no how the navigation system works, and won't need to have all those links read to them and just want to get to the actual content in your page. If you go the full XHTML route, you'll also have accesskeys and tabindexes available so they can tab through your links corretly and can get back to the beginning of your page if you set a named anchor as the first thing they tab to (the second being the skip to content, thus they can simply hit the 'T' key on to take them to the top and then skip the content to get to the beginning of the content OR they can go through the navigation (of course, you could have given each entry in your navigation an accesskey, but that's not always helpful, and this is useful in case they forget what they key is for something in the navigation).
Wow, I can't believe I knew this much on the subject....
-
MoreThis is a great idea, but there's not a great deal on there. I've been making up CDs full of free and open source Windows software for a couple of years now, which (along with Knoppix and Toms) prove to be extremely useful. Here's just some of what's on there (note that some of the links don't actually point to the Windows version of that software; you might need to dig around a bit):
- Abiword - Word processor, supports
.doc, .rtf, GPL. - Open Office - Whole Office suite, including a database frontend and BASIC macro language.
- Perl - Scripting language
- Python - Scripting language
- Cygwin - UNIX emulator. Can create Windows programs, reliant on a cygwin1.dll.
- MinGW - Port of some of the UNIX utilities (BASH, gcc, vi...) to Windows.
- djgpp - UNIX emulator for DOS.
- Mozilla, Firefox, Thunderbird - Web browser, e-mail client, IRC client, lots more.
- Filezilla - FTP client.
- xchat - IRC client.
- putty, pscp, psftp and others - Telnet/SSH clients.
- Gaim - Client for IRC/Yahoo/MSN/ICQ/AIM and more.
- gzip - Compression (usually better than
.zip). - tar - Extracts/Makes tar archives.
- bzip2 - Totally ace compression (usually better than gzip).
- Info-ZIP - Support for
.zip. Good free substitute for Winzip. - 7-zip - Support for multiple compression formats.
- frhed - Hex editor
- Ext2fs - Several programs for doing Ext2 under Windows.
- Antiword - Converts documents out of the proprietary
.doc format. - MySQL - RDBMS.
- Apache - Web/Proxy server
- sendmail - Mail server
- squid - Proxy server
- freeamp - Audio player
- winlame - MP3 encoder
- cd-ex - MP3/OGG encoder?
- gimp - Very detailed graphics program.
- imagemagick - Graphic manipulation. Provides the 'convert' utility under UNIX.
- freeciv - Civilisation clone.
- gnuplot - Plotting package.
- TightVNC - A fork of VNC, with enhancements.
- RealVNC - The original VNC.
- rdesktop - Access Windows Terminal Services and Remote Desktops.
- Nmap - Well known port scanner.
- John the Ripper - Password cracker. Does NT and MD5.
- Abiword - Word processor, supports
-
Re:Problem
Yet, even with excess RAM turning off swap is disasterous.
I find that swap partitions in Linux and FreeBSD are just a nuisance once you've got enough RAM for your apps. Swap files are preferable because you can change the size and number of the files after installation. Swap partitions are just wasting valuable space on your HDD.
I have 1Gb of RAM on my laptop and Linux, FreeBSD, Windows 98 SE and Windows XP all run fine without any swap partitions or files on my quadruple boot.
The virtual memory algorithms in Linux, *BSD and NT all prefer you to have 1.5 times the virtual memory as you have physical memory. When you have 1Gb of RAM that's a hell of a lot of space to waste, especially in a multiboot situation.
At any rate it has little affect on the total memory available in practice to Windows 98. I used to play around a lot with DJGPP which is a port of gcc to DOS DPMI (DOS Protected Mode Interface). I worked out that the maximum theoretical amount of memory you could have with such a DPMI memory manager was 512Mb, which some people had reportedly achieved using OS/2's DOS emulator. So I used to think Microsoft were pretty smart to be able to support 1Gb on my laptop on Windows 98 until I saw the BSODs with the "Out of Memory" exceptions when wordpad was running!
-
Content-mangling proxyI'm working on a homebrew web proxy that'll pass web pages through talkfilters. For example:
Nighttime ax's, dig dis: "April de Fust will soon be upon us an' I'm lookin' fo' some subtle pranks t' play a'ound da damn office. What it is, Mama! Dere's de usual takin' some damn screenshot an' settin' as background, placin' some damn piece uh tape across de mouse ball (use opaque tape fo' optical mice), settin' de keyboa'd layout t' Dvo'ak, swappin' de 'M' an' 'N' keys etc. Word! De office empties quite quickly at da damn end uh de day which leaves plenty uh time fo' prepa'ation.
-
Re:The Microsoft Monopoly
Perhaps a repository is in order to list all the apps that need replacing, and possible alternatives--if one exists, PLEASE let me know.
The GNU folks (RMS) used to have a list called the GNU Task List. It appears that they've broken it out of a single file into multiple sections over at Savannah. Unfortunately, I think it's missing some of the things in the original Task List. An older version seems to have some of the other things I remember. -
Re:Why has this taken so long?
I'm not sure if MS aren't talking about something different from what most of this discussion thinks they are. Rather than showing the thread of discussion of whole emails (which we're all used to in other clients) it might be they mean something more like this old discussion of what e-mail discussions should look like by Ka Ping-Yee..
In case you manage to /. that, the idea is that it shows the responses to pieces of your email - the kind where someone says "see my responses inline" and responds to each of your points piecemeal, then you do the same to their responses, and so on.
I've often thought it would be cool to write something to parse emails the KPY way, but the heuristics would have to be pretty damn clever to deal with supercite. Specifically what I wanted was something that combined KPY's ideas with text-autosummarization , and some 'author ranking' information to produce mailing list summaries from gmane which are like Kernel Traffic and Cousins, or the now-defunct Eclectic.
Oh well, I can always wait until MS put this in Outlook 2010 ;)