Domain: sunsite.dk
Stories and comments across the archive that link to sunsite.dk.
Comments · 329
-
The Poor Man's Site Announcement ServiceAre you tired of all those annoying paid search engine placement services? Ever tried using the free ones, only to be annoyed with tons of ads and to find your URL submissions blocked by the robosubmission filters on the search sites?
Well, I'm tired of them too, and I write pages that I submit to search engines from time to time, and I've come up with what I feel is the best way to submit links to a bunch of sites:
Direct links into the pages that have the URL submission forms on a bunch of search engines.
Keep a text window open with your URL, title, description, for-public-consumption email address and the like, and use "Open Page in New Window" on all these links to manually copy and paste your information into a bunch of search engine submission forms.That's it!
I got all these search engines off the Search Engines Category at the Open Directory Project. If you know of any pages that list a bunch of other search engines (there are many smaller ones, and a lot of special purpose ones) then drop me a line at crawford@goingware.com.
In my index I provide brief notes about some of the engines, including mentioning whether they refuse to accept submissions without payment. I don't provide links to submission forms for the engines that won't list a site for free, and I'd like to ask you not to support the trend towards paid index and spider placement.
You should understand that the vast majority of visitors to your sites don't get there through search engines, they get there because other people like your page and give you a link. The main value of search engines is to "prime the pump" so a few people start finding your site and then know to create a link for it.
Create successful web sites by writing good web sites - see Some Web Application Design Basics for links to a few good pages written by experts that will start you well on the road to an appealing, successful website.
Thank you for your attention.
-
Articles on Testing Web Apps, KernelHot off the presses tonight: Maybe the folks who write the Slashcode would find it helpful.
I've posted this here before, but don't want the IBM folks who might be reading to miss it:
Comments, criticism, additional links and resources to add, suggestions for future articles to write and of course articles you would like to write are appreciated.I could also use some help from someone with expertise in designing database schemas.
Thank you for your attention.
-
Articles on Testing Web Apps, KernelHot off the presses tonight: Maybe the folks who write the Slashcode would find it helpful.
I've posted this here before, but don't want the IBM folks who might be reading to miss it:
Comments, criticism, additional links and resources to add, suggestions for future articles to write and of course articles you would like to write are appreciated.I could also use some help from someone with expertise in designing database schemas.
Thank you for your attention.
-
Let's Make Linux Useful for My Mom and DadEver helped your mom fix her PPP connection on Windows or Mac OS? Did you do it in person, or over the phone?
Now help your mom download, apply, configure, compile and install a source code patch!
I know people who are blessed with parents who know how to program, but my mom wanted to go back to CompuServe after Dad fixed her up with Earthlink because earthlink gave them netscape on the installation CD to read her email with.
She didn't know, until I came to visit, downloaded and tested every email client available for the Mac OS, and set her up with Sono Software's Musashi that everyone's email wasn't hardwired to their ISP. I tried to explain to her before I visited that she could get a different mail program, but didn't understand - she didn't know she was running Netscape to read her email, she thought she was reading her email in Earthlink.
My dad knows a little programming - FORTRAN IV on an IBM 360 via punchcards.
If something breaks on their little Mac (and they manage to do it somehow), it stays broken until their son the software consultant flies home to visit.
Please contribute articles to the Linux Quality Database on how to write quality software, test it, or send in links to quality information and resources that I can link to from the page or write articles about.
Especially important are articles that are accessible to ordinary users or inexperienced programers on how they can contribute in a meaningful way to QA testing of the Free Software product of their choice. An example is my article (still in progress) Using Test Suites to Validate the Linux Kernel.
Planning for the kernel testing database that I have in mind is still in a vaporware phase. If you know about designing database schemas I could really use your help in architecting this thing. I could write the database access code myself but I don't want to plan the schema because I'm sure I'd make a mess of it. I've never designed a real schema before.
I'd like to use Enhydra as the application server - it's pretty good and open source. You can integrate it with Apache or the Netscape server, or it comes with its own Java HTTP server built-in that you can use either for testing or production.
When you use the Enhydra multiserver in development the whole enhydra system can run in one Java VM process. I echoed out the java command line from the startup script to find out what all the parameters were then put the command line into NetComputing's AnyJ debugger (free as in beer for Linux) to run a whole web application in a source debugger. Much nicer and more effective than printing "here I am" to the console.
I believe they have Enhydra running under Kaffe now. It didn't when I tried it but the startup scripts now support it as an option. I reported the problem to the Kaffe folks quite a while ago and I guess they fixed it.
-
Let's Make Linux Useful for My Mom and DadEver helped your mom fix her PPP connection on Windows or Mac OS? Did you do it in person, or over the phone?
Now help your mom download, apply, configure, compile and install a source code patch!
I know people who are blessed with parents who know how to program, but my mom wanted to go back to CompuServe after Dad fixed her up with Earthlink because earthlink gave them netscape on the installation CD to read her email with.
She didn't know, until I came to visit, downloaded and tested every email client available for the Mac OS, and set her up with Sono Software's Musashi that everyone's email wasn't hardwired to their ISP. I tried to explain to her before I visited that she could get a different mail program, but didn't understand - she didn't know she was running Netscape to read her email, she thought she was reading her email in Earthlink.
My dad knows a little programming - FORTRAN IV on an IBM 360 via punchcards.
If something breaks on their little Mac (and they manage to do it somehow), it stays broken until their son the software consultant flies home to visit.
Please contribute articles to the Linux Quality Database on how to write quality software, test it, or send in links to quality information and resources that I can link to from the page or write articles about.
Especially important are articles that are accessible to ordinary users or inexperienced programers on how they can contribute in a meaningful way to QA testing of the Free Software product of their choice. An example is my article (still in progress) Using Test Suites to Validate the Linux Kernel.
Planning for the kernel testing database that I have in mind is still in a vaporware phase. If you know about designing database schemas I could really use your help in architecting this thing. I could write the database access code myself but I don't want to plan the schema because I'm sure I'd make a mess of it. I've never designed a real schema before.
I'd like to use Enhydra as the application server - it's pretty good and open source. You can integrate it with Apache or the Netscape server, or it comes with its own Java HTTP server built-in that you can use either for testing or production.
When you use the Enhydra multiserver in development the whole enhydra system can run in one Java VM process. I echoed out the java command line from the startup script to find out what all the parameters were then put the command line into NetComputing's AnyJ debugger (free as in beer for Linux) to run a whole web application in a source debugger. Much nicer and more effective than printing "here I am" to the console.
I believe they have Enhydra running under Kaffe now. It didn't when I tried it but the startup scripts now support it as an option. I reported the problem to the Kaffe folks quite a while ago and I guess they fixed it.
-
Let's Make Linux Useful for My Mom and DadEver helped your mom fix her PPP connection on Windows or Mac OS? Did you do it in person, or over the phone?
Now help your mom download, apply, configure, compile and install a source code patch!
I know people who are blessed with parents who know how to program, but my mom wanted to go back to CompuServe after Dad fixed her up with Earthlink because earthlink gave them netscape on the installation CD to read her email with.
She didn't know, until I came to visit, downloaded and tested every email client available for the Mac OS, and set her up with Sono Software's Musashi that everyone's email wasn't hardwired to their ISP. I tried to explain to her before I visited that she could get a different mail program, but didn't understand - she didn't know she was running Netscape to read her email, she thought she was reading her email in Earthlink.
My dad knows a little programming - FORTRAN IV on an IBM 360 via punchcards.
If something breaks on their little Mac (and they manage to do it somehow), it stays broken until their son the software consultant flies home to visit.
Please contribute articles to the Linux Quality Database on how to write quality software, test it, or send in links to quality information and resources that I can link to from the page or write articles about.
Especially important are articles that are accessible to ordinary users or inexperienced programers on how they can contribute in a meaningful way to QA testing of the Free Software product of their choice. An example is my article (still in progress) Using Test Suites to Validate the Linux Kernel.
Planning for the kernel testing database that I have in mind is still in a vaporware phase. If you know about designing database schemas I could really use your help in architecting this thing. I could write the database access code myself but I don't want to plan the schema because I'm sure I'd make a mess of it. I've never designed a real schema before.
I'd like to use Enhydra as the application server - it's pretty good and open source. You can integrate it with Apache or the Netscape server, or it comes with its own Java HTTP server built-in that you can use either for testing or production.
When you use the Enhydra multiserver in development the whole enhydra system can run in one Java VM process. I echoed out the java command line from the startup script to find out what all the parameters were then put the command line into NetComputing's AnyJ debugger (free as in beer for Linux) to run a whole web application in a source debugger. Much nicer and more effective than printing "here I am" to the console.
I believe they have Enhydra running under Kaffe now. It didn't when I tried it but the startup scripts now support it as an option. I reported the problem to the Kaffe folks quite a while ago and I guess they fixed it.
-
Use a cross-platform framework to write this
It has to work on Windows...
Do yourself a favor and get the efficiency of native machine code without the headache of making your users get a Java virtual machine - or caring what version of the JVM is available for a given platform.Apple has announced it has no plans to support a JVM later than 1.1.8 on the classic Mac OS so you can't use all those great collection classes in Java 1.2 and be cross platform! (See Apple's Java Developer page and scroll down to where it says "Mac OS Classic Java".)
Use a cross-platform application framework. That way you can program on Linux, Mac, BeOS, Windows or maybe even QNX and deliver for all those schoolkids running Windows ME on their parents' PC.
One such framework, for C++, is ZooLib. There are many others, as you can see from The GUI Toolkit, Framework Page.
Read about why it's important to write cross-platform code.
I'm most familiar with ZooLib, because I've been working with it on the products I write for my clients, and I helped ZooLib author Andy Green prepare it for open source release late last year under the MIT License.
ZooLib offers all of the following implemented as C++ classes:
- Multithreading, with cross-platform C++ thread classes and various kinds of locks (simple mutexes, reader/writer locks) - multithreading is important for something like a servent. For systems like the Mac OS that don't have preemptive threads it has a handrolled thread scheduler.
- GUI, with a uniquely flexible layout method. The widgets are rendered by platform appropriate renderers, and you can make custom widgets. There's a renderer that will call through to the Appearance Manager on the Mac OS, if it's running.
- platform-independent TCP networking, it's implemented in terms of sockets on Linux, WinSock on Windows, sockets on BeOS and MacTCP on Mac OS. I think Open Transport may be working too on the Mac, I'm not sure - but on all platforms you use the same C++ classes for your networking with no platform-specific client code needed.
- Thread-safe reference counted smart pointers, for quick, efficient memory management that's free of leaks.
- Extensive debugging support - assertions in core components and a debugging memory manager, handy macros for assertions and the like
- Single-file database format with C++ interface. Create ZDatabase objects with ZTables in them. Much zippier than SQL and more pleasing to the object-oriented soul.
- File objects - you instantiate a ZFile object from a ZFileRef object, then use its Open, Close, Read and Write methods
- Platform-specific file open and save dialogs with an API that's consistent with the rest of ZooLib. Filter by filetype on the Mac or filename three letter extension on windows. While ZooLib is cross-platform, it breaks out into platform specific code in cases like this where it's appropriate, in a way that's considered entirely sacreligious by the Java community.
- Streams that can be chained to provide filtering, somewhat like the iostreams classes in the C++ standard library but more appropriate for use with binary data. This is how you typically read or write to a file or network connection.
- Handy preprocessor macros to deal with platform specific code or selecting options like debug builds.
- Offscreen graphics buffers that may be manipulated directly via pointers or accessed in a manner that is transparent to the bit depth via GetPixel and SetPixel calls. All platforms have the same API that provide a wrapper around platform bitmap buffers. I believe there's a purely homegrown in-memory implementation, plus platform implementations bounds to the native GUI layer like GWorlds on the Mac OS.
ZooLib 0.81 is known to build with MetroWerks CodeWarrior on Windows and Mac OS, gcc on Linux, and gcc on BeOS for Pentium.
If you use CodeWarrior you can cross-compile and cross-debug; check out Thursby Software for some filesharing solutions that work well for this. (Tip - on Windows, select the "MacBinarize" post-linker in the target linker prefs when building a Mac target - you also need to derez all your resource files and include them as Rez text source).
While it should ultimately work, there are known build problems with BSD, CodeWarrior for BeOS PowerPC and Visual C++ on Windows. These are all being worked on and full support for all these platforms is expected before long.
Other cross-platform frameworks I'd like to note are:
- The Adaptive Communications Environment for cross-platform networking
- GTK - yes, that's right, GTK! but you must forgo using XLib calls and POSIX calls that are not in the ANSI C Standard Library
- The Netscape Portable Runtime for the non-GUI aspects of cross-platform development
- The Mozilla XPToolkit for cross-platform GUI
- Mozilla Netlib for network and file stream access
- Mozilla XPInstall for cross-platform installation, packaging and updating.
- Also check out AbiWord, a great cross-platform WYSIWYG word processor that's open source, with an open file format. As far as I know the only product coded in AbiWord's XP framework is AbiWord itself, but it's worth looking into for another look at how people architect these things.
People often mistake these problems for valid arguments that one should not do cross-platform development, or perhaps not render your own widgets when doing so but depend on platform specific ones (like AWT vs. Swing), but I think the lightweight, well architected, efficient and easy to use ZooLib answers those arguments very eloquently.
Help me teach the Free Software community to write quality code.
-
My own efforts to help other programmersFirst, my effort to improve the quality of free software can be found at the Linux Quality Database. While the database hasn't started being written yet, I have started writing articles on the top of quality assurance and writing better free software. The first such article actually to be posted is Using Test Suites to Validate the Linux Kernel.
For quite some time before that I have been writing GoingWare's Bag of Programming Tricks, a collection of articles on the business and practice of programming. Of most interest in learning how to program well would be:
- Study Fundamentals Not Tools APIs or OSes
- Properly managing memory returned by transcode() in the Xerces library (while about an obscure problem, it illustrates more general principles in a useful way)
- Secrets of the Debug Meisters: MacsBug Tips and Tricks (MacsBug is a Mac OS assembly debugger)
- Pointers, References and Values - Passing Parameters, Returning Results and Storing Member Variables, with Musings on Good C++ Style
- Bounded Pointers for GCC
- Spotlight for Mac OS PowerPC
- BoundsChecker for Windows
- Purify for Windows and Unix (but I think it doesn't support Linux)
-
My own efforts to help other programmersFirst, my effort to improve the quality of free software can be found at the Linux Quality Database. While the database hasn't started being written yet, I have started writing articles on the top of quality assurance and writing better free software. The first such article actually to be posted is Using Test Suites to Validate the Linux Kernel.
For quite some time before that I have been writing GoingWare's Bag of Programming Tricks, a collection of articles on the business and practice of programming. Of most interest in learning how to program well would be:
- Study Fundamentals Not Tools APIs or OSes
- Properly managing memory returned by transcode() in the Xerces library (while about an obscure problem, it illustrates more general principles in a useful way)
- Secrets of the Debug Meisters: MacsBug Tips and Tricks (MacsBug is a Mac OS assembly debugger)
- Pointers, References and Values - Passing Parameters, Returning Results and Storing Member Variables, with Musings on Good C++ Style
- Bounded Pointers for GCC
- Spotlight for Mac OS PowerPC
- BoundsChecker for Windows
- Purify for Windows and Unix (but I think it doesn't support Linux)
-
My own efforts to help other programmersFirst, my effort to improve the quality of free software can be found at the Linux Quality Database. While the database hasn't started being written yet, I have started writing articles on the top of quality assurance and writing better free software. The first such article actually to be posted is Using Test Suites to Validate the Linux Kernel.
For quite some time before that I have been writing GoingWare's Bag of Programming Tricks, a collection of articles on the business and practice of programming. Of most interest in learning how to program well would be:
- Study Fundamentals Not Tools APIs or OSes
- Properly managing memory returned by transcode() in the Xerces library (while about an obscure problem, it illustrates more general principles in a useful way)
- Secrets of the Debug Meisters: MacsBug Tips and Tricks (MacsBug is a Mac OS assembly debugger)
- Pointers, References and Values - Passing Parameters, Returning Results and Storing Member Variables, with Musings on Good C++ Style
- Bounded Pointers for GCC
- Spotlight for Mac OS PowerPC
- BoundsChecker for Windows
- Purify for Windows and Unix (but I think it doesn't support Linux)
-
Re:Depends on your product.I think Tim does have a point, in that much open source software has quality problems, but my argument is that I haven't observed closed-source to be any better - one can point out glowing examples of good process in both camps, and bad process too.
What I am trying to do with the Linux Quality Database is twofold - make it easier for regular users to participate in the quality process for the Linux kernel, and to encourage improvement in the quality of free software in general, by giving tips on how to do so and links to resources that enable you to do it.
I think one problem is perfectly natural - a lot of programmers are just not very experienced, and have not had the opportunity to work in a way the encourages quality yet. And this goes for both closed source and open source programmers.
It's a matter of education; a lot of people may try to get the bugs out of their products, but simply struggling valiantly is not the right way to approach it - I hate to repeat this tired old phrase, but "Work smarter, not harder".
-
I thought your name looked familiarTim,
I think we've met, or at least corresponded when I was at Apple.
I was on the Traditional OS Integration team during System 7.5.3 and 7.5.4, and then later worked on PowerBooks. When I started, my manager was Jennifer Ahlquist. I worked with Dave Lyons, Jim Murphy and those guys.
I'm afraid my work on PowerBooks didn't lead to much, but I managed to do some good as a "debug meister". Some of what I learned I pass on to other mac developers in my page:
- Secrets of the Debug Meisters - tips and tricks for MacsBug
Anyway, one more way to lower the upper bound on the bugs is to build assertions into the core of one's development framework. Lots of people use assertions when they're looking for a specific bug (and that's my style), but the ZooLib cross-platform application framework is riddled with assertions, and the more frequently a class is likely to be used, the more likely you'll find an assertion in it.
This is something that's available to anyone, but ZooLib was the first time I found it very widely used, and the result was that the product I wrote with it had the least bugs of any substantial program I've ever had the pleasure to work with (note - I also did a little unit testing).
While Instant Makeover is not open source, ZooLib is, under the MIT License.
By the way, the reason the Mac version of Instant Makeover is "coming soon" and not already available is because those deadbeats stiffed me for seven weeks pay - and told me they were going to at the end of a 29-hour workday trying to get the beta out.
During the development of Instant Makover, I usually delivered Mac and Windows builds simultaneously from the same source base. My guess is they can't find a Mac programmer since we parted ways.
I didn't even take a honeymoon after I was married last summer because of the pressure they were putting on me to ship.
It was the largest program I'd ever written by myself (but note the extensive use of libraries), although the one thing I feel was worthwhile is that working on it made me a better programmer, something I'm trying to pass on.
And yes, I did use Radar quite a bit, probably more than most software engineers at Apple because of my job debugging the system software, but read about what I'd really like to see in a bugbase - the idea of having preset, named hardware configurations that a tester can quickly select when they file a bug report is a feature that I was asking for in Radar when I was at Apple.
-
My experience is not so positiveI don't know what commercial projects you've had the pleasure to work on, but that's not been my experience, and I've worked for a lot of closed-source companies.
Some of the most amazing excuses for "software" get packaged up by commercial companies all the time and sold to an unsuspecting public.
This is not always what the companies want, not by any means, but often they feel they have no choice.
Scientific American did an article called "The Risks of Computing" a while back, I'm not sure if Neumann wrote it but it was where I found out about the Risks forum, and what it documented is that in any software system, the number of bugs steadily increases over time but the reproducibility of each individual bug goes down, so in the end you have 100,000 bugs each of which you will experience just once in your career.
There are ways to lower the upward bound of bugs, for example on Linux you can use Bounded Pointers for GCC and make great strides in a hurry - but then although you'll have fewer bugs you'll have different kinds of them.
Improving QA by using test suites is another important step, as I discuss in this article on Using Test Suites to Validate the Linux Kernel.
You think your commercial vendor uses test suites? Guess again. It's so frustrating when I have a client who I cannot convince there's a reason to actually perform QA of any sort, let alone use test suites.
Another way of lowering the upward bound is to use Unit Tests - but despite the fact that I've seen unit tests advocated in many places, and I guess they're more popular, the one time I have ever seen them put into practice on a project I've personally worked on is when yours truly used them on a consulting project last year.
-
Fast Mirror (SunSITE dk)
Just mirrored it at http://sunsite.dk/lgdc/tmp/Final-0.2-30pct-index_
3 2.png
It's hosted at SunSITE Denmark as you see, which should have enough bandwidth.
And yes, it's very cool, and it's completely unreadable at that size & resolution :) -
Fast Mirror (SunSITE dk)
Just mirrored it at http://sunsite.dk/lgdc/tmp/Final-0.2-30pct-index_
3 2.png
It's hosted at SunSITE Denmark as you see, which should have enough bandwidth.
And yes, it's very cool, and it's completely unreadable at that size & resolution :) -
Use test suites to test the new Linux kernelsI wrote an article on Using Test Suites to Validate the New Linux Kernel.
You should do this kind of testing either to contribute to the kernel's development (this testing is more thorough than just casually trying it out), and especially if you're considering using a new kernel in a production system.
I welcome submissions of test suites to include in the article (or other articles to post at the Linux Quality Database - you'll see if you check out the site that there's not much there yet, but I have great hopes for doing good with it).
There have been some new suites submitted, including PostgreSQL's regression tests and one or two others that I have not yet added. I'll be updating the article soon.
Michael D. Crawford
GoingWare Inc -
Use test suites to test the new Linux kernelsI wrote an article on Using Test Suites to Validate the New Linux Kernel.
You should do this kind of testing either to contribute to the kernel's development (this testing is more thorough than just casually trying it out), and especially if you're considering using a new kernel in a production system.
I welcome submissions of test suites to include in the article (or other articles to post at the Linux Quality Database - you'll see if you check out the site that there's not much there yet, but I have great hopes for doing good with it).
There have been some new suites submitted, including PostgreSQL's regression tests and one or two others that I have not yet added. I'll be updating the article soon.
Michael D. Crawford
GoingWare Inc -
Layered Security
As always with security, you shouldn't have a single point of failure... make sure you encrypt the upper level protocols with the likes of VPND, IPSec or something similar.
Coincidentally, it has been reported that sensitive data from the Davo's World Economic Forum was stolen last week, and Microsoft and Compaq were touting the benefits of 802.11b network on the iPaq PocketPC, they issued all 2300 attendees with a device and installed numerous access points throughout the complex, hotel's etc. I wonder if this could of been the source of the exploit ?
It seems wherever Bill Gates (cheesy grin) goes... security flaws travel with him (like a fly to sh1t). -
Writing one for the Linux kernelI have proposed writing one more or less from scratch at the Linux Quality Database Project.
It's just a proposal so far, I want to find a few developers to collaborate with before I start, but I'm also writing and posting articles there on the general topic of making Free Software of better quality and also testing the kernel in particular.
While this doesn't provide an answer to your question, some of what I plan would be useful to think about in selecting a bugbase.
The number one feature that I wished to have in bugbases at companies I've worked at in the past was for the user to have an ability to describe a configuration of a machine and then give it a name in the database.
Each user would have some number, one or many, preset machine configurations, particularly the hardware configurations in my case, and the components of these configurations would be drawn from a database describing every piece of hardware that could conceivably be placed in a Linux box.
Then when you go to report a bug, you log in (so your contact info and presets are available), select the config that has the bug, and describe it.
For the Linux kernel, you'd paste in or upload your
.config file (this is created by the kernel configuration process).Then kernel developers could do boolean searches, say "find me all the crashes involving TCP that had a WhizzyNet card installed but in which PPP is not configured in the kernel".
The other part of this is that it is meant to be easy to use for both those who test new kernels (to report bugs) and kernel developers (to research bug reports).
I got the idea to develop the database after subscribing to the linux-kernel mailing list to resolve a bug on my laptop during the 2.4.0-test series kernels.
I was able to work with the list to resolve the bug and see that the patch stuck in the kernel sources, but I felt that many people who might otherwise like to contribute to testing new kernels might be put off by the process of dealing with the list - it's not sufficient simply to report a bug, sometimes patches don't "stick" and you've got to hang around until you're sure your bug stays fixed, but linux-kernel has one of the highest amounts of traffic of any internet mailing list.
Michael D. Crawford
GoingWare Inc -
Emacs Source Made Me Decide to Remain a ProgrammerI was in and out of my University physics studies a number of times, and having a generally bad time, because of a serious illness, and at some point decided I should get out and get a programming job because I figured I'd be better at that than school.
I didn't really know how to program, I knew a little FORTRAN, C and Basic from doing data analysis during summer jobs, and I didn't really like it all that much. I used to really have to struggle to spend several weeks writing a 500 line program, and I'm sure I'd be embarrassed if I had to look at the source code to those programs today.
I figured I'd program for a while because it paid the rent (I was making $20k a year doing Sun administration and writing image processing software), but when I figured out what I really wanted to do for a living I'd quit programming and get a real job.
That was in 1988. Then some consultant visited and installed GNU Emacs on our machines (two Sun 3/160's, one diskless, both with terminals and no workstation monitor, but with frame grabber cards and NTSC color monitors). He explained about the GNU manifesto.
I thought it was pretty cool but didn't see it affecting me personally in a big way. I was mostly annoyed that I had to wait up while the consultant installed the software on what was supposed to be my day off while a ladyfriend was visiting from away.
Then my friend Jeff Keller, who went to MIT for a while and vaguely knew Richard Stallman, spent an evening with me singing the praises of Emacs. What I really wanted was VI with macros you could program to include conditional branches, and he said it had all though and much much more.
So I learned to actually use Emacs, and soon learned that it was quite extensible, but it wasn't made too clear how to extend it. The online manual was useful mainly to people who already knew what they were doing.
So I read the source code. One thing I was interested in doing was writing C functions that were callable from Emacs lisp as lisp functions. There are many such functions built into Emacs (usually for performance) and you can add your own. There's this big DEFUN macro that even makes the C API look like Lisp.
I learned that and a lot more. I learned what an eloquent statement of software architecture Emacs is.
I learned that there really was something worth my while doing in the way of software.
I wanted to write a program like that someday. Not another big editor, but a program that would someday strike other young programmers the way Emacs struck me.
During the course of reading the source code, one day I stayed at my terminal 24 hours straight, arising only to get coffee and use the restroom, not even eating. I only realized how much time had passed when I started to fall asleep.
That was when I started to take programming seriously. I began to put serious effort into studying programming, and studying it deeply.
For example I would read Knuth's The Art of Computer Programming on the bus on the way to work and I would stay up all night after work learning to program better on my Macintosh at home.
For many years I selected all of my jobs based mainly on what I could learn from them.
I've become a very skilled programmer. You can see this from my consulting business website, my resume (on my resume the place where I first encountered Emacs is the Programmer job at Verde Technologies) and my programming tips pages.
So in a very direct and profound way I owe it all to Richard Stallman and Emacs.
I still haven't written my great program yet. I don't even know what it will be. One project I've worked on peripherally is the ZooLib cross-platform application framework and a project I've just started up but not gotten too far with yet is the Linux Quality Database.
I did finally get my B.A. in Physics, from UC Santa Cruz, but only after being out of school working at a programmer for a number of years.
Michael D. Crawford
GoingWare Inc -
Incompetence? The Developers or Be's?Who's incompetence?
The developers were out their shipping many fine, supported commercial products that worked very well - Gobe, Steinberg was onboard developing audio applications, Thomas Dolby spoke at the developer conference about supporting Be with his audio software (he was wildly enthusiastic).
No, the incompetence was not the developers. It was Be's press relations and marketing (or to be more precise, the lack thereof). Be's technical staff is highly competent, and they produced a fine product, something Linux developers would do well to study because of it's ease of installation, smooth and trouble-free performance, and clean integration. It's also a joy to program.
My wonderfully positive experiences with using the BeOS and my sadness at having to leave the platform behind in order to have currently supported hardware and software is another component of what motivates my effort to improve the quality of Linux and Free Software in general.
But Be's business management was always, and still is, incompetent. There was never any effort made to convince people to make the move to the BeOS - they were always waiting for more applications to appear, even when there were plenty of applications for the average user to do almost all their daily work.
Even though almost anyone who ever laid eyes on the system became an instant convert - and many of those became evangelists, such as I especially after I got it running on my laptop, Gassee never felt it was ready for the mass market and kept holding it back from the people who could have done him the most good - the public who was eager to try something better if only they knew it existed and where to get it.
For example, I never once saw a banner ad on a website that was run on a non-Be related site directing the user to Be's website or BeDepot (Be's now-defunct eCommerce site).
And speaking of BeDepot - Gassee very early on spoke repeatedly about the problem of penetrating software channels for new developers, especially developers for new platforms like the BeOS, and how Be was going to be very advanced in its thinking by offerring software for sale via download at BeDepot.
And we all have seen what has become of eCommerce in general - it's the only way you can get many products for mainstream platforms - but BeDepot was one of the most ineptly run operations I have ever seen.
BeDepot's ineptitude was murder to developers for whom it was the only sales channel - so you've got a newly released product? What do you do when it takes three months to appear on the website because they're either too understaffed to deal with it or too incompetent to just upload the damn file? I've heard lots of complaints from developers who had to wait months to receive their contract from Be that would enable them to sell on BeDepot.
It's not like it's so hard to run a good online Be software site, as demonstrated by the folks who founded BeBits, in part to make up for BeDepot's and BeWare's inadequacies. (BeWare was for free downloads).
If you won't listen to me because of Be's lack of character, listen to me because of Be's demonstrated incompetence, and know that if they couldn't keep an eCommerce site with a few dozen titles running efficiently, how are they going to provide adequate support for a bunch of disparate embedded hardware vendors?
By the way, you should note that many of Be's most prominent engineers left when Be made the decision to drop the desktop and move to Internet Appliances, folks like Dominic who wrote the BFS Journaled Filesystem (with indexed file attributes - there's a read-only version of BFS you can get for Linux, that I'd like to make read-write, and would make a great addition to the system).
Michael D. Crawford
GoingWare Inc -
Why Be doesn't have the moral fibre to be trustedIf anyone from Sony is reading this, I'd like you to understand that Be, Inc. does not possess the moral fiber that is necessary for a company you will be trusting for a business-critical component of any product.
This lack of integrity goes to the heart of Be's corporate culture, and is in particular exemplified by the attitudes and practices of Be's CEO, Jean Louis Gassee.
Read about the experience of one of Be's formerly most-loyal and most enthusiastic business partners in:
Note: the page gives the URL's for a number of alternative vendors for Internet Appliance operating systems, many of which are open source (an important consideration in a market where your vendor may abandon you). Also see the Embedded Linux Journal.I have no doubt that BeIA has tremendous technical advantages. See what this once-ardent BeOS developer is doing to harden the competition for Be Inc. at The Linux Quality Database and Freeing the Developer from OS Vendor Shackles.
Michael D. Crawford
GoingWare Inc -
Help the Testing Cycle with LinuqQualityThe kind folks at SunSITE Denmark are helping me out with my proposal to make testing new Linux kernels more widespread and effective with the Linux Quality Database at: So far it's just a proposal. In the short term there will be resources on testing strategies, as well as tips on writing quality code. I the long run will come a nice web form for reporting bugs in a way that will be especially meaningful for kernel developers (capturing and searching hardware configuration and kernel config options).
Michael D. Crawford
GoingWare Inc -
Help the Testing Cycle with LinuqQualityThe kind folks at SunSITE Denmark are helping me out with my proposal to make testing new Linux kernels more widespread and effective with the Linux Quality Database at: So far it's just a proposal. In the short term there will be resources on testing strategies, as well as tips on writing quality code. I the long run will come a nice web form for reporting bugs in a way that will be especially meaningful for kernel developers (capturing and searching hardware configuration and kernel config options).
Michael D. Crawford
GoingWare Inc -
Crap bloody memory leak takes down my browserThe reason for the bogus HTML above is that somewhere in the combination of Netscape 4.73 and XFree86 4.0.1 I've got a severe memory leak that will eventually result in my system paging so heavily it becomes unusuable.
And it always seems to happen when I'm composing something in a web form like here on Slashdot, so I end up losing it, so I immediately hit the submit button when it started happening while composing the above.
Working towards improving this situation is The Linux Quality Database.
Michael D. Crawford
GoingWare Inc -
Why and How We Should All Test the New KernelWell I guess I was hoping there would be more widespread testing before the -nothing release was released, because now that 2.4.0 final has been released, some distros are likely to use it right away rather than wait for bugs to stabilize and some people will put it straight into production use.
So just yesterday I wrote:
on Advogato.It's got some helpful, practical tips on downloading and building a kernel from sources as well as providing feedback to the kernel developers. All of the information in the article is available somewhere, but when I first began testing with 2.4.0-test1, I found some things difficult to figure out, so I felt that it would be nice to put what I learned all down in one place.
This is part of an overall effort to improve the quality of Free Software. Another part of the effort is the just-founded Linux Quality Database, so far just a proposal - contact me at crawford@goingware.com if you want to help.
And finally, some interesting trivia for you:
After a long beta testing period and many delays, Windows 2000 shipped with 64000 documented bugs of which 25000 were considered serious by Microsoft itself (the figures are quoted from memory, I might be a bit off). The Windows trade press reported that the opinion was widely held by IT managers that one should not install Windows 2000 on any machine until a few service packs had been released, with Windows 2000 server not being considered ready for use until much later than the desktop user version.
The BSD/Mach based Mac OS X, derived from the NeXT operating system and now in beta testing, is Apple's first operating system to support protected memory that is expected to be widely used. (Another was A/UX, Apple's Unix port, but it served only a niche market).
Apple has been trying for ten years, longer than Linux has been in existence, to write a modern operating system. The first was Pink, renamed Taligent when Apple collaborated with IBM on it. In the end all that came of it was a little-used object-oriented programming framework.
The next was Copland, and I don't know why it was never completed exactly, but I was offerred a job as a performance engineer on the Copland project when I worked at Apple, but I turned it down - I didn't tell them this but I had the sense that Copland was a project that would never ship.
And Linus wrote Linux when he was a college student, which combined with the GNU utilities forms the operating system we know and love today.
These huge, well-funded corporations can't get it together to program their way out of a wet paper bag but a bunch of freaks on the Net have written the fastest growing operating system in use today.
Michael D. Crawford
GoingWare Inc -
Re:Old news
DOH!
sorry 'bout the URL typo...
her it is: FreakTech -
Re:Kids could also try Allegro
installing [the Allegro library] is a kind of rocket science
What's so hard about this?
- Download and unzip DJGPP (djdev, GCC, Binutils, Texinfo, RHIDE, etc.) and the Allegro library.
- Set two environment variables in your autoexec.bat and reboot.
- Allegro 3.9.3x comes pre-configured for DOS. cd into
.../allegro/ and
make
make install
-
Linux Quality Database ProjectWhile it has begun too late to assist in 2.4.0, I have proposed the Linux Quality Database to make it easier and more effective for regular Linux users to give the kernel developers feedback on their builds.
It will also serve as an advocacy and education site to improve the quality of Free Software in general.
If you want to participate, please contact me at crawford@goingware.com or subscribe to the mailing list - instructions are on the site.
Michael D. Crawford
GoingWare Inc