Slashdot Mirror


User: goingware

goingware's activity in the archive.

Stories
0
Comments
456
First seen
Last seen
Profile
(view on slashdot.org)

Comments · 456

  1. Let's Make Linux Useful for My Mom and Dad on U.S. v. Microsoft Arguments - Streaming Audio · · Score: 3
    Ever 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.


    Mike

  2. Judge Jackson & Me on Cross-Platform API's on U.S. v. Microsoft Arguments - Streaming Audio · · Score: 3
    Please read what U.S. District Judge Thomas Penfield Jackson has to say about why Microsoft felt it was important to break the law to put an end to cross-platform API's.

    Scroll up to the top of the page and read about why I feel cross-platform development is essential to the developer and the public.

    Thank you for your attention.

    Regards,


    Mike

  3. Where to get rack mount in New England? on Cool Case · · Score: 2
    Can anyone tell me where I can get a rack mount, not the cases for the PC's, but the actual rack that you'd mount a bunch of them in, in New England?

    Mail ordering one of these babies from far away would be expensive, and I suspect the UPS man would stop talking to me.

    I live in mid-coast Maine. Portland, Maine is about an hour and a half drive away, Boston a little less than three. There's a lot of industry and some high-tech in South Portland, so maybe I can rent a truck or a van and get a rack there.

    Advice on rackmount uninterruptible power supplies would be helpful too.

    I do cross-platform development and I'd like to set up a build and test farm of lots of twisty little 1U machines all running different Linux and *BSD distros, QNX, Solaris x86, UltraSparc Solaris at some point, BeOS and of course Mr. Bill's operating systems. I do Mac OS too but probably won't rackmount those, as it would mess up the nice Flower Power look.

    BTW, I'm finally about to break down and by a Belkin Omniview 4-port KVM Switch with a Mac video/ADB keyboard adapter. Maybe if I save up I can get the 8 port with On-Screen Display.

    While the Belkin may be expensive, the switching is electronic. I've worn out a Manhattan mechanical VGA switch in about four months sharing a monitor between a Mac and a PC - I have to fiddle with the knob each time I switch it to get the connection right or the colors are all wonky. Also I'm sure to start shooting from the rooftops the next time I type into the wrong keyboard!


    Mike

  4. Use a cross-platform framework to write this on Napster Adding "Protection Layer" · · Score: 2
    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.
    However, ZooLib doesn't yet have everything it needs. Read about that here. But I think it will work fine for the application suggested here, and the needs given in that page are being addressed.

    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.
    While there are undoubtably many powerful advantages to the Mozilla framework, it often receives a great deal of criticism for being heavyweight - hard to code to, slow, and hungry for memory.

    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.


    Mike

  5. ZooLib and SDL are complementary, not competitors on Linux.com Chats with BioWare Regarding "Neverwinter Nights" · · Score: 2
    ZooLib and SDL appear to be different cross-platform frameworks.

    One would do very well to use them together in an application, and now that you've been so helpful as to tell me about SDL, I'll investigate how we might do a ZooLib/SDL integration.

    ZooLib is for doing the following in a platform-independent way from C++:

    • threads with various kinds of mutexes, reader/writer locks and so on
    • thread-safe reference counted smart pointers
    • Simple vector graphics
    • fonts and text
    • creating and using various kinds of windows (but not what the X folks refer to as "window management - dragging and so on)
    • platform-appropriate graphical user interface widget creation, drawing, input and layout
    • TCP networking
    • single-file databases (the databases, being entirely contained in single files, can be used as user documents, so the user could double-click on on a desktop to open it in an editor after receiving it via email).
    • streams and filters, conceptually like C++'s iostreams, but more appropriate for binary data formats
    • Debugging memory allocator and debugging support through widespread use of assertions
    Ah, but one thing it's completely lacking is any support whatsoever for multimedia! That's because the original developers primarily targeted Mac OS and Windows, for which the cross-platform QuickTime API was readily available, but not open source.

    Now don't fault me if I leave something out, because I only just now found out about SDL, but lets see what SDL says it has:

    • Simple, portable direct access to the graphics framebuffer, audio device, mouse and keyboard
    • Support for OpenGL (the actual GL support must come from a separate library, many of which are available)
    There's probably more but it's not readily apparent from the page.

    What I'd suggest you do in writing a game is use ZooLib for the overall GUI and threading support, and have a pane in the middle of the screen where your main action takes place. In that pane you do direct-to-screen drawing with SDL and if you're doing fancy 3D, consider using OpenGL. Use SDL for your sound.

    Again, thank you for bringing this to my attention.


    Mike

  6. Try Hello World in XLib on Linux.com Chats with BioWare Regarding "Neverwinter Nights" · · Score: 2
    Yes, it is complicated to do something very, very simple in ZooLib.

    But it is much, much easier to do something complex in ZooLib than many other means that might be available.

    And yes, you can probably set the background color much quicker by programming to the native API of your OS, but then you wouldn't have a cross-platform app, and to ship one, you'd have to port and maintain multiple parallel codebases.

    The learning curve pays off the larger the application you write.


    Mike

  7. A Good Cross-Platform Framework on Linux.com Chats with BioWare Regarding "Neverwinter Nights" · · Score: 4
    If a company wants to develop software that will run on both Windows and Linux (and Mac OS and BeOS too), one application framework they can use is the ZooLib cross-platform application framework.

    There's still some work it needs for complete Linux support as you can read here but it's a lot less than developing your own framework.

    ZooLib requires very little in the way of system graphics support so it wouldn't be too hard to port it to the framebuffer if you prefer doing that to running your game under X.

    Because ZooLib uses the MIT License (also known as the X11 License) it is appropriate for use in both proprietary and Free Software programs.

    If ZooLib doesn't suit your needs, have a look at the GUI Toolkit, Framework page.


    Mike

  8. What the W3C Says About Slashcode's HTML on Making Software Suck Less, Pt. II · · Score: 2
    I'm not much of an expert on databases, so I can't really comment on your offer to mentor Rob, but let's have a look at what the W3C Validation Service has to say about the slashcode:

    Click here to validate:

    I think the situation could be improved a bit by adding a DOCTYPE declaration at the beginning (for a DTD). DTD validation, yeah right.

    If you're writing files by hand and prefer to upload them for validation from your local hard disk, try this form.


    Mike

  9. Mod this up! on Making Software Suck Less, Pt. II · · Score: 2
    It's not the troll you might think it is from the subject line. I think it merits at least "Insightful".


    Mike

  10. More helpful tips for you on Making Software Suck Less, Pt. II · · Score: 2
    While I was out for a while I thought of a few more things to post that should have been included in the above.

    While I don't think either of them were really overtly trying to mentor me, I owe a lot of credit for what I know and what I can do to a couple of brilliant programmers that I've had the privilege to work with. Both of these fellows are very kind, pleasant people and went out of their way to help me. They also both go out of their way to write correct code, as opposed to, say, just screwing around with it until it sort of works.

    I met Haim Zamir at Live Picture (now MGI Software) in 1997 where I really began my C++ effort in a serious way (I tried it in 1990 to write test tools at Apple but didn't really enjoy the experience). Have a look at Haim's Resume, particularly under "Skills" where he lists:

    Well grounded in disciplines of software engineering for correctness, robustness, performance, and longevity
    Haim can write the most difficult code, and it doesn't just work right, it is unquestionable.

    Another brilliant programmer is my friend Andrew Green. Andy spares no amount of effort to get his code just right - he devoted nine years to developing the ZooLib cross-platform application framework before releasing under the MIT License. (Not five years as I say on the page.)

    If you think being correct, as opposed to merely working ok isn't important, imagine trying to get platform-independent reference counted smart pointers to work in a multithreaded application framework. Andy did.

    For an archive of anecdotes of interesting, funny and sometimes tragic technology quality problems, please read:

    Reading Risks for many years is what has made me such a zealot for software quality. It has also made me tend to avoid using software for anything of real importance in my life, and to feel uneasy while flying aboard modern aircraft - even though, with a B.A. in Physics, I am very comfortable with the aerodynamic principles that hold airplanes up and used to enjoy flying as a kid.

    If you write software, another good investment (more important than your hardware investment), is buying and reading good books. As a software consultant I keep the canceled checks and receipts for my technical book purchases; in 1999 I deducted about $750 worth of technical books from my taxes and about $250 in 1998.

    But there are a lot of bad software books out there; much as there was a gold rush due to the Internet, there was a smaller-scale gold rush for technical book authors over the last couple years. A really good source of straight-talking book reviews by people who have good reason to know what they're talking about is maintainted by the Association of C and C++ Users at:

    The ACCU is interested in more than just C and C++ these days, if you program in those languages, Java or (dare I say it) C-sharp you should join. The mailing lists is pretty low traffic and has some of the best signal-to-noise ratio of any list I've seen (except Risks). The ACCU's technical journals, with articles written by the members, are a valuable source of information on such things as how to write exception-safe code.

    (Note to CowboyNeal - writing C-sharp with the pound sign set off the lameness filter, driving me damn near out of my skull. How about adding something to the preview to let us know which characters are lame, exactly?).

    And good news for those of you across the pond (but bad news for me), it's a British organization and holds regular technical conferences. I believe they also send observers to the ISO standards bodies.

    If you program in C++ you should read these two books by Scott Meyers and put them to practice in your code. Read each item one at a time and then go through your code from beginning to end to see how you can apply it:

    After reading Effective C++ and More Effective C++, if you're programming with g++ (or using gcc to compile ".cpp" files) then you should use the -Weffc++ option to g++ to warn you about style problems. From the GCC Online Manual:

    -Weffc++ (C++ only)
    Warn about violations of various style guidelines from Scott Meyers' Effective C++ books. If you use this option, you should be aware that the standard library headers do not obey all of these guidelines; you can use `grep -v' to filter out those warnings.
    Importantly, in any language, make sure your code compiles cleanly without warnings with all the warnings enabled in the compiler - use the -pedantic option in gcc.

    C++ is not the problem language it's often said to be if you follow Meyers' advice, but if you prefer C you certainly can have problems there too - and note that the preferred language for Gnome is C (while KDE is an extended C++), for C programmers you should read:

    People who write in any programming language, from assembler on through C and way out to prolog, really should go back to our roots and read the early book:

    Sadly, this book is out of print, but see the "E" Titles Section at ACCU for other Elements of Style books.

    Back to the topic of compiler warnings, remember reading about lint in Kernighan and Ritchey's The C Programming Language? When I started out in my first real programming job, doing Sun system administration and writing image processing software back in the late '80's, I learned to write "lint" targets in my Makefiles, and I'd type "make lint" after editing but before compiling to actual machine code. This made my code much easier to debug and quicker to develop.

    Much of lint's function is now available in the warnings of GCC (but I don't think all of it), but there are some proprietary products that will do extremely rigorous statis analysis of your source code. I haven't yet used either (although I plan to) but the two I know about are:

    Looks like I missed one when I spoke about Bounded Pointers for GCC, Spotlight, etc. in my previous post. Parasoft offers:

    But note that these products use patented algorithms - number 5,581,696 and 5,860,011.

    You can search by patent number here.

    And speaking of web programming, many Slashdot readers write web applications (Linux being a "server OS" as they say). How many of you validate the HTML that's generated by the web applications you write?

    Your HTML should work well in any browser and it should be well designed for easy usability. I don't mean attractive graphics. I mean it shouldn't suck. Two links on design:

    Finally, to make sure your HTML is valid, test it with the W3C HTML validation service. You have two choices of how to get your documents processed:

    Try this link for an example of running a popular web application through the W3C validator.


    Mike

  11. Kids these days on Making Software Suck Less, Pt. II · · Score: 2
    Use auto_ptr and other templates from the STL.

    Garbage collection is for kids who haven't learned to reference count.


    Mike

  12. My own efforts to help other programmers on Making Software Suck Less, Pt. II · · Score: 5
    First, 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:

    I worked on an article on C++ programming style that is not done yet, and has some errors in it. But I'll post the URL here with the understanding that you're to take is as a preview and not gospel truth:

    Finally, if you program in C or C++, you need to be using one of the following tools, appropriate to your development system and platform:

    If you use Java, you don't have to worry about dangling pointers, but you do have to worry about memory leaks (quiz: why do you in a garbage collected language?), deadlocks and so on. For that we have:

    Don't let another day pass without availing yourself of one of these tools. I know most aren't Free Software and some are very expensive. I want to tell you that the money I spent on Spotlight is some of the best money I have spent on anything in my life. I wouldn't dream of shipping a Mac application to my clients unless it tested completely cleanly under Spotlight; on the other hand, the first time I'm given a client's code to work on, Spotlight usually reveals a multitude of sins.


    Mike

  13. Re:Depends on your product. on Red Hat CTO Responds To Allchin's Comments · · Score: 2
    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".


    Mike

  14. I thought your name looked familiar on Red Hat CTO Responds To Allchin's Comments · · Score: 2
    Tim,

    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:

    You might be a little shocked by what I have to say on the next page though. I don't think there could ever have been anybody more loyal to the Macintosh platform than me (bleeding in six colors, etc.) - but then read:

    I'm afraid the page about why I became a BeOS developer is temporarily disabled. It's at my old ISP in Santa Cruz and I'm always late paying my bill now that I'm living in Maine. Once I send them a check you'll be able to read it again. Eventually I'll move it to my own domain.

    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.

    Not afraid to speak my mind....


    Mike

  15. My experience is not so positive on Red Hat CTO Responds To Allchin's Comments · · Score: 2
    I 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.


    Mike

  16. Open Source and the Military on Red Hat CTO Responds To Allchin's Comments · · Score: 2
    SRI researcher and computer reliability and security expert Peter Neumann is promoting open source to the in various fora, including to an IEEE meeting and the military. His general thesis is that "open box" software promotes reliability because you can both inspect the source code and fix it.

    Go to Neumann's page above and search for "Robust" using the "Find in Page" function of your browser.

    Neumann is the moderator of The Forum on Risks to the Public in Computers and Related Systems and the author of the book Computer Related Risks, so he should know whereof he speaks.

    Please also read Open Source and These United States.

    In the previous article, someone suggested the problem of how to compose a letter to congressional representatives to promote open source - perhaps simply printing out that paper and mailing it to them with a brief cover letter explaining how you've found a way the U.S. Government and Military can achieve substantial savings in its software purchases, along with gains in reliability, would be helpful.


    Mike

  17. My software uncovered an online affair on Is Computer Sex Adultery? · · Score: 2
    I certainly didn't intend it for this purpose, but my program Last Resort for the Mac OS from Working Software was instrumental in one of the editors of MacUser magazine discovering that his girlfriend was having an online affair.

    This was before widespread use of the Internet by the public (although I was using it at the time). I don't know what network his girlfriend was using, but it was some proprietary system like Compuserve or AOL.

    Last Resort patched the GetNextEvent trap in the MacOS to save all your keystrokes into a file. The buffer is flushed and the volume flushed too every few keystrokes, so if you're writing the next Great American Novel and lose power, while the text may be a little garbled, you'll at least get your words back.

    Unfortunately for this fellow's girlfriend, this editor was an enthusiastic Last Resort user and he discovered her steamy letters to her online lover in his keystroke files.

    I was utterly horrified to find this out but the fellow came up to me at the MacWorld trade show and thanked me profusely.

    Last Resort was my first shipping commercial software product (now one of many). It was a simple program that took 8 kb of ram during operation, but we were well aware of the privacy implications. It doesn't try to hide itself - it shows up in your control panels under the apple menu and it displays it's "resort logo" with a palm tree by a beach (an early attempt at art by Yours Truly) at startup.

    There are numerous more invasize products meant to snoop on your lovers - or capture passwords. For example, I received some spam from someone who was selling software that would hide itself well and save its keystroke files encrypted on a disk, then make an encrypted network connection to a server to upload the keystroke files from the hapless user's machine.

    This wasn't your government snooping on you, this guy was looking for a distributor to publish the program.

    This MacUser editor later published a novel about the software industry in which many fictitiously named but software applications that were thinly disguised versions of real products (I guess for trademark reasons) played central roles in the plot. I'm proud to say that his thinly disguised clone for Last Resort was responsible for saving the world!

    Now if I could remember his name I'd give you a URL to the book...


    Mike

  18. I married a woman I met on the net on Is Computer Sex Adultery? · · Score: 3
    I married a woman I met after she sent me an email to say she liked my web page.

    She wasn't all that impressed, it was just a brief note to compliment my page, and I get such notes all the time.

    What mattered was that we began corresponding, and after a month or so I asked for her phone number, and we began talking on the phone occassionally. I really impressed her by calling her in Nova Scotia while I was visiting a friend in Rome.

    She lived in Truro, Nova Scotia, I in Santa Cruz, California. I soon discovered the need for cheap long distance - before I got my rate lowered I received a $2500 bill for just one month, and even after getting AT&T one rate international my bills were running $1100 per month.

    She didn't own her own computer so voice over IP wasn't an option, and I tried to make it one by sending her my old 486 and Speak Freely. While she was able to negotiate Speak Freely's complex UI the 486 wasn't up to the task of the signal processing.

    I also made three visits to her (the first on January 18, 1998, in wintry Canada from sunny California, bringing a rose with me all the way on the plane), and she made two to me.

    It was when I offerred to buy her a brand new Pentium-II machine to run Speak Freely on that she decided to finally come out to Santa Cruz and live with me.

    She soon found work doing biotech and was able to stay for a year on a TN-1 visa, an option also available to americans and mexicans in each other's countries who hold bachelor's degrees and work in various professional fields (tip - computer programming qualifies).

    We were married July 22, 2000 in Pippy Park, St. John's Newfoundland just outside the Fluvarium where we held our reception. It was a beautiful day - outdoor weddings are not common in Newfoundland because of the northern climate, and in fact we rented a big tent.

    We moved back to the U.S. a few weeks ago and now live in Owl's Head Maine in a house we could have never hoped to have afforded in Santa Cruz.


    Mike

  19. Advertise that you burn in with VA Linux Cerberus on Competing With The Larger Computer Manufacturers? · · Score: 3
    You should advertise that you only carry hardware that passes a rigorous burn-in test with VA Linux' Cerberus stress-testing tool.

    Better yet, leave one machine of each model you configure running in your showroom all the time with the tool running on it.

    Even if you sell machines preinstalled with Windows, let your customers know that they're getting machines that are of more robust hardware quality - if they're pass these tests thrashing the system under Linux, well you can figure it'll be pretty reliable running Word under Windows 98.

    Also have a bin near the door full of "Free - take one" floppies duplicated with Memtest86 - and test the memory you install with Memtest86 before giving it to a customer (to some extent it should validate CPU's and motherboards as well).

    Ask your customers to take memtest86 home and try it out on the machines they may already have. (You boot off the floppy to run the test; on Linux systems you can install it in LILO or Grub).

    They may get a suprise - I have a PC-133 DIMM that failed memtest86 when the machine was brand-new from a small PC shop like yours; I doubt they tested their memory with more than the BIOS test - my BIOS test still doesn't show any errors, but memtest86 consistently shows the same error on this DIMM.


    Michael D. Crawford
    GoingWare Inc

  20. Use test suites to test the new Linux kernels on The Hacker Ethic And Linux Kernel 2.4 · · Score: 4
    I 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

  21. Sun got it wrong all right, but that's not why on Sun To MS: You Don't Get It · · Score: 5
    Speaking as a cross-platform developer, I beg to differ with you on the point that cross-platform code is unimportant.

    I'd like you to understand why cross-platform code is incredibly important (note that this page quotes Judge Jackson of the MS vs. DOJ case as to why Microsoft felt it was so important to put a stop to cross-platform code as to break the law.)

    But I think what we have lost sight of is maintaining both the usefulness of our code and our independence as programmers by not remembering how to write cross-platform code.

    What Sun got wrong was not making Java cross-platform, but trying to bind us all into proprietary platform of Java while sweetly singing into our ears that it was platform independent. Sun did this and continues with it to serve its own marketing and political purposes, purposes which may not serve the interests of either the public or the independent developer.

    You too can write cross-platform code, in almost any compiled language. Check out the ZooLib cross-platform application framework for C++, as well as the Boost C++ Libraries.

    Jon Watte of Be, Inc. told me "Portable, to some people, means it builds on at least two linux distributions with several flavors of GCC".

    Here's a list of a bunch of application frameworks, many of which are cross-platform, and many of which are open source - so there's more than just ZooLib to pick from.

    Get off your duff and ship your executables for all platforms in common use - and not just ones with POSIX system call APIs!

    And here's a hint for making your code buildable cross-platform - ever try to run "./configure" on a computer that doesn't have a command shell? Pretty hard. Makes folks like me struggle to write all the makefile's and config.h's by hand. But look at how many platforms the Independent JPEG Group's JPEG codec library builds on - DOS, MacOS, Cray, you name it, and it builds with both ANSI-C and old K&R c compilers (using macros for the function interfaces).

    Kids these days... damn it makes me mad.


    Michael D. Crawford
    GoingWare Inc

  22. Java and XML bolted at hip? Try Xerces-C (C++)! on Sun To MS: You Don't Get It · · Score: 5
    I was pretty perplexed by Sun defending its statement that XML and Java are bolted at the hip.

    Now don't take me for a Microsoft fan or anything. But until Sun releases the Java specification to a vendor-neutral international standards body I have no use for this large corporation trying to manipulate the market by winning developer mindshare. Remember your choice of development platform is a vote you make, either in favor of one company or another, but hopefully a choice you make with clear thought behind it.

    What Sun basically said is that XML is platform independent, and Java is platform independent, so it makes a lot of sense to use XML with Java.

    Now, I'm not arguing that there is lots of great XML software available for Java. But in my feeling (and Bjarne Stroustrup's opinion too) Java is not platform-independent, but a proprietary platform unto itself.

    And in fact most of my actual working experience with XML has been in C++ using the platform-independent Xerces-C validating parser for DOM and SAX from the good folks at the Apache XML Project. (You can also use Xerces-C from Perl or Win32 COM with provided wrappers).

    I used Xerces-C on MacOS and Win32 for the config files and user documents of a consumer GUI application after integrating it with the similarly cross-platform ZooLib cross-platform application framework - something that would have been really inappropriate to do in Java, as this was meant to be a free downloadable app for which tech support costs had to be near zero, and we could not expect our users to install a Java runtime.

    According to its web page, the C++ version of Xerces works on:

    • Win32
    • Linux
    • Solaris
    • AIX
    • HP-UX
    • OS/390
    • AS/400
    • SGI IRIX
    • Macintosh
    • OS/2
    • PTX
    • "and more!"
    Further, it's open source under the Apache license and doesn't come with any burdensome requirements or political repercussions from dealing with Sun. You also don't have to wait until a needed version of some targeted runtime is available on any platform to be able to run your application with cross-platform C++ libraries like Xerces - because there are no runtimes.

    If more powerful players than you want to trip each other up with competing initiatives - well, just let them, and go on about your business by using open source like Xerces-C.

    BTW - the Win32 port listed on the web page says it builds with Visual C++, I think others have built it with Borland C++ and I was building it with Metrowerks Codewarror for both my Mac and Windows versions, and could cross-compile on each platform for the other.


    Michael D. Crawford
    GoingWare Inc

  23. RealRates.com has some good consulting resources on Ethics In Computer Consulting · · Score: 4
    Janet Ruh's Consultant's Resource Page has a lot of good stuff on it (and I haven't mentioned it on my own page yet), including a resume post that clients may search and get contact information from without a fee, a periodic salary and rate survey, and several books, some of which are available for inexpensive download in PDF or Palm Pilot format.

    I found her PDF on how to Market Your Consulting Services very helpful in my own practice - and she's got a lot of tips that I don't mention on my own marketing tips page above (while I have some she doesn't mention).

    I've also found that Janet has been quite helpful and responsive in answering the occasional questions I've emailed to her.

    In general, I prefer the resume sites which do not require a fee for the end client to search and get meaningful contact information from. Some of these require a small but very reasonable fee from the consultant, some are supported by advertising.

    You'll probably find as I do that the sites that require the client to pay a few are frequented mostly by headhunters, and they also often don't allow search engines to index them, so your clients won't find you.

    Other sites I recommend are The Software Contractor's Guild and Guru.com - know any others?

    Finally, read alt.computer.consultants.moderated - but be sure to read the moderated newsgroup, the unmoderated one has gone all to hell.


    Michael D. Crawford
    GoingWare Inc

  24. The Internet's Answer: The Cluetrain Manifesto on Ethics In Computer Consulting · · Score: 2
    Do you know what "second sound" means in thermodynamics? If you have liquid helium cooled to superfluidity, then it will be the same temperature throughout always. You can change the temperature in one local area, but rather than raising conveciton currents, the temperature will come to equilibrium throughout the body of the liquid at the speed of this second sound.

    The Internet is like that - in that information spreads effectively instantaneously throughout its body, and it helps a great deal with ethical problems with business (as well as failures in things like customer service) and is discussed extensively by The Cluetrain Manifesto.

    To make the most effective use of the Cluetrain, we must be willing to speak out in public fora on the Internet, and the book version of the Cluetrain quotes a profound speech made a hundred years ago that urges us to Make a Bonfire of Your Reputations - that is, when you have something important to say, say it, and don't let fear of others' scorn stop you.


    Michael D. Crawford
    GoingWare Inc

  25. Do What is Right or What the Client Wants? on Ethics In Computer Consulting · · Score: 5
    A common question I have to deal with in my consulting practice is whether to deliver what the client specifically asks for or what I think is right to deliver.

    This touches on matters both of ethics and of engineering judgement.

    You say, I should just write it to spec, but in practice I often don't have that detailed of a spec. In my work I write software on contract (rather than install systems or set up networks), usually for software publishers and sometimes for websites.

    I frequently do ports or complete rewrites to a new OS, and it is common for my spec to consist of nothing more than a working Windows version of a program and a request to make it work "just like it" on the Mac.

    The problem is things are done differently on the Mac than on Windows, both internally in the code we write and what the user expects. I feel it is important to give a client a product that will make their Mac users happy, even when the client is a Windows user/developer, and either doesn't understand the Mac or doesn't agree with it.

    A more serious question is when the client is asking for shoddy work. I make it clear to my clients that I do high quality work, and they shouldn't come to me if they want crappy, cheap software. But sometimes that's exactly what they want, in part because they want to cut development costs and also because they believe (I feel mistakenly) that they will reduce their time to market by sacrificing sound engineering principles.

    One thing I have started to do is to redesign my website to emphasize my ideals of quality work, as opposed to the spam I get that advertised offshore software development for $25/hour or less. Yes, this likely scares off some potential clients but they're probably the ones that would give me a pain in the backside anyway.

    I do try to involve the client in the decisions. The problem is that they are often not technically competent to help me make the judgement, and their arguments make this resoundingly clear. So very often I just go off and do what I think is in my client's best interests even if I know they disagree with it.


    Michael D. Crawford
    GoingWare Inc