197 Articles


17 years Ago

Planning complex software processes

Published by marco on

I’ve recently written a new startup system for my company’s main software library. The technology on which it’s based is documented in the white paper, Describing Multi-step Processes. The abstract is below:

“Discusses the properties and requirements of multi-stage tasks or processes. Addresses the challenges associated with maintaining and customizing complex hierarchies of tasks by using a declarative approach which concerns itself less with the absolute ordering of steps within a task and... [More]”

Browser Detection

Published by marco on

earthli is now sporting a state-of-the-art browser-detection technology, described below. If you’d like, you can download it (PHP version only, full documentation included), read the class documentation online (developer documentation also available) or check out the source code.

Browser Detection Technology

The earthli Browser Detector is (hopefully) the last word in browser-detection technology. It provides the standard information like browser name and version, operating system name and... [More]

Blue Screen Program

Published by marco on

 I learned this trick for crashing Windows 2000/XP a while ago. I know, I know, it doesn’t take much. But, seriously, I haven’t gotten a BSOD (Blue Screen Of Death) in Windows 2000 in a long time. I can’t actually remember the last time I got one. This extremely simple program produces a BSOD immediately every time. Your computer will reboot.

It still works today. It’s quite simple: you simply issue one more backspace in a buffer passed to printf than there are characters in the buffer. You... [More]

Full Eiffel on .NET

Published by marco on

 MSDN has published Full Eiffel on the .NET Framework by Emmanuel Stapf, Raphael Simon and Bertrand Meyer, all of ISE (though Meyer is identified as being at the ETH in Zurich, Switzerland, so perhaps he’s teaching there now, which, for someone moving near Zurich, is pretty exciting).

“[It d]escribes the implementation and integration of the full power of the Eiffel language and method, including Design by Contract, multiple inheritance, genericity, and other advanced facilities, into the... [More]”

“Stealing” music with an iPod

Published by marco on

Apple has bowed to industry pressure and crippled their music device, the iPod. Each iPod has one “home” machine with which it stays automatically synchronized. Once you’ve connected the iPod (and only then), you can change on-board settings that control whether this happens automatically for all songs, for just selected playlists (useful if your library is larger than the iPod’s capacity) or not at all. If you select the manual mode of music transfer, iTunes and iPod still enforce moving songs... [More]

18 years Ago

Dreamweaver MX

Published by marco on

 Another exciting product announcement at the Apple Developer’s Conference is Dreamweaver MX, from Macromedia. In fact, you can download an OS X or Windows version right now. It has a lot of new functionality, including better support for PHP/MySQL. Future testing will determine whether that support includes design-time data.

CSS, XHTML, XML and any other buzzword you can think of are all supported. Most of the automated design tools can be run in a standards-compliant mode, so it doesn’t stick... [More]

Nice Web Pages

Published by marco on

The contents of this article have been moved to the new section, Web Design.

Donald Knuth Answer All Questions

Published by marco on

The American Mathematical Society recently published a paper titled All Questions Answered (PDF):

“On October 5, 2001, at the Technische Universität München, Donald Knuth presented a lecture entitled “All Questions Answered”. The lecture drew an audience of around 350 people.”

Donald Knuth is the grand old man of programming. He published the The Art of Computer Programming Vols. I-III (with the fourth one on it’s way, believe it or not) and invented TEX and METAFONT, the definitive document... [More]

Carmack on Doom’s Radeon/GF4 Support

Published by marco on

John Carmack made a couple of interesting posts to his .plan file recently. If you’re interested in seeing what the best 3d graphics programmer in the world is doing and thinking, check out his .plan from February 11, 2002. In it, he talks about implementing the Radeon-specific rendering instructions for the DOOM engine.

Of particular interest to those in the market for a video card when his next engine comes out is this quote: “Do not buy a GeForce4-MX for Doom.” He goes into some detail as to... [More]

C++ Initializer List Ordering

Published by marco on

The April issue of the C++ Users Journal published a letter by Ashley Williams pointing out yet another wart of C++. For any class in C++, you may declare as many member variables as you like. Each one of these member variables may be initialized in the constructor in the “initializer list”. References, in fact, must be initialized in this list.

Now, if you had to guess, in which order would those initializers be called? In the order they’re written? Remember that parameters passed to a... [More]

Skinnable User Interfaces

Published by marco on

osOpinion has an interview with Jef Raskin, …Jef Raskin Talks Skins…, one of the original UI designers for the Macintosh.

Skinning is all the rage with many applications these days (like’s themes). A lot of the time, it seems that the designer is more interested in the fun had making the skin or the look of it than the actual usability of it. Apple recently drew criticism for keeping its UI, “Aqua”, closed to skinning in order to provide a more consistent interface for users.
... [More]

Visual C++ Warning #4786

Published by marco on

The March 2002 issue of Windows Developer Journal has a tech tip that anyone who uses the STL with Visual C++ has been waiting for. If you’ve tried this, then you’ve likely gotten warning #4786, which tells you that the fully-qualified name of the class you are using is too long to fit into the debug information and will be truncated to 255 characters.

The reason behind this error is pretty stupid. You see, a while ago, I had a cross-platform project that compiled in Visual C++ 6.0 on Windows... [More]

What is .NET?

Published by marco on

Ars Technica is running a great article called Microsoft .Net aims to demystify .NET and clear up some of the misunderstandings and deliberate obfuscations surrounding it.

“In a remarkable feat of journalistic sleight-of-hand, thousands of column inches in many “reputable” on-line publications have talked at length about .NET whilst remaining largely ignorant of its nature, purpose, and implementation. Ask what .NET is, and you’ll receive a wide range of answers, few of them accurate, all of... [More]”

Dots Per Inch

Published by marco on

For those who’ve ever struggled to determine what pixels per inch actually means when applied to the real world, the thread DPI: TRUTH OR LIE? at TalkGraphics provides many answers.

The basic gist is that when you store a graphic in Photoshop, it asks for the Pixels per Inch for the graphic. If this graphic will never be printed or does not need to retain its crispness when printed, this number does not matter at all. With an increasing amount of content created exclusively for the web, the... [More]

Removing illegal filenames in NT/2000

Published by marco on

I thought it was a shame that the guy was laughing at what sad bastards we are that we can’t even clean up his mess (for 3 months).

For future reference, here’s how you do it (only works in Windows NT/2000, for Windows 95, 98, use a DOS utility like ‘elim’):

dir /x

The /x switch shows short and long file names. All of the illegal folders had legible short file names. The first one was ~0200, where 20 is actually hexadecimal for 32, which is ‘space’ in ASCII.

Once you know the folder name,... [More]

Beware constants in ASP (scripting bug)

Published by marco on

There is a bug in scope resolution in IIS 5.0. When resolving a variable within a member function, precedence is given to a global constant instead of to a member variable of the same name. The problem does not occur with global variables. Paste the following code into a page:

Sample Code

const name = 1
class A
  public name
  public function get_name
    get_name = name
  end function
end class
dim a1
set a1 = new A = "test"
... [More]

19 years Ago

Learn Perl or die

Published by marco on