Eric S. Raymond's Home Page Welcome to my piece of the Web. I maintain quite a lot of open-source software, FAQs, and HTML documents, so this site is rather complex. It's mostly validated HTML and light on the graphics, though. If the software and FAQs I maintain are valuable to you (and especially if my software makes you money) please leave me a tip at Patreon or SubscribeStar. I'm on If you want to link to, copy, mirror, or translate portions of this site, please read my copying policy. If the HTML or images on this site seem to be confusing your browser, see the site design notes. If you're with the press, or want me to give a talk, here are answers to the usual questions. If you're looking for the Halloween Documents, they're here. You can fetch my GPG public key here. As a public service and act of civil disobedience, we are proud to offer the DeCSS code that will allow you to circumvent the encryption on the DVDs you own. Also, here is the decryption key used for most HD-DVD movies:
IronPython.net / How to be a Programmer: A Short, Comprehensive, and Personal Summary Debugging is the cornerstone of being a programmer. The first meaning of the verb to debug is to remove errors, but the meaning that really matters is to see into the execution of a program by examining it. A programmer that cannot debug effectively is blind. Idealists that think design, or analysis, or complexity theory, or whatnot, are more fundamental are not working programmers. Debugging is about the running of programs, not programs themselves. To get visibility into the execution of a program you must be able to execute the code and observe something about it. The common ways of looking into the ‘innards’ of an executing program can be categorized as: Using a debugging tool, Printlining --- Making a temporary modification to the program, typically adding lines that print information out, and Logging --- Creating a permanent window into the programs execution in the form of a log. Some beginners fear debugging when it requires modifying code. How to Understand Performance Problems
A successful Git branching model » nvie.com In this post I present the development model that I’ve introduced for some of my projects (both at work and private) about a year ago, and which has turned out to be very successful. I’ve been meaning to write about it for a while now, but I’ve never really found the time to do so thoroughly, until now. I won’t talk about any of the projects’ details, merely about the branching strategy and release management. Why git? ¶ For a thorough discussion on the pros and cons of Git compared to centralized source code control systems, see the web. But with Git, these actions are extremely cheap and simple, and they are considered one of the core parts of your daily workflow, really. As a consequence of its simplicity and repetitive nature, branching and merging are no longer something to be afraid of. Enough about the tools, let’s head onto the development model. Decentralized but centralized ¶ Each developer pulls and pushes to origin. The main branches ¶ masterdevelop Supporting branches ¶ develop
Gilder Technology Report In order to develop an investment strategy, a paradigm--a model of technology change--is indispensable. Some paradigms--such as the Gilder paradigm--are explicit and explained. Most investors, though, follow a technological paradigm without knowing it. They respond to a consensus about technology implicit in the media, which is driven by fashion rather than insight. Within a consensus paradigm, large breakthroughs are impossible. Informed by a systematic vision of technological change, the Gilder Telecosm Forum team finds ascendant companies through legwork and technical acumen in laboratories, entrepreneurial offices, semiconductor clean rooms, optical engineering centers, and technological investigations around the globe. The paradigm of the 1990s was the telecosm: the convergence of fiber-optic-networks and wireless communications. The new millennial paradigm combines microcosm and telecosm in a new cornucopian convergence of optical networks and spectronic wireless.
Bruce Eckel's MindView, Inc. ::: Exceptional Learning Experiences PLEAC-Python Following the Perl Cookbook (by Tom Christiansen and Nathan Torkington, published by O'Reilly) spirit, the PLEAC Project aims to gather fans of programming, in order to implement the solutions in other programming languages. In this document, you'll find an implementation of the Solutions of the Perl Cookbook in the Python language. The latest version of Python is 2.4 but users of 2.3 and 2.2 (and in some cases earlier versions) can use the code herein. Users of 2.2 and 2.3 should install or copy code from utils.py ( [the first section provides compatability code with 2.4] Users of 2.2 should install optik ( [for optparse and textwrap] Where a 2.3 or 2.4 feature is unable to be replicated, an effort has been made to provide a backward-compatible version in addition to one using modern idioms.
Signs that you're a bad programmer - Software Engineering Tips Why was this written? Most of these faults were discovered the hard way by the author himself, either because he committed them himself or saw them in the work of others. This paper is not meant for grading programmers, it was intended to be read by programmers who trust their ability to judge when something is a sign of bad practice, and when it's a consequence of special circumstances. This paper was written to force its author to think, and published because he thinks you lot would probably get a kick out of it, too. 1. Reasoning about code means being able to follow the execution path ("running the program in your head") while knowing what the goal of the code is. Symptoms Remedies To get over this deficiency a programmer can practice by using the IDE's own debugger as an aide, if it has the ability to step through the code one line at a time. 2. Object Oriented Programming is an example of a language model, as is Functional or Declarative programming. 3. 4. 5. 6. 1. 2. 3. 4. 5. Symptoms
The Law of Leaky Abstractions by Joel Spolsky Monday, November 11, 2002 There's a key piece of magic in the engineering of the Internet which you rely on every single day. It happens in the TCP protocol, one of the fundamental building blocks of the Internet. TCP is a way to transmit data that is reliable. We use TCP for many things like fetching web pages and sending email. By comparison, there is another method of transmitting data called IP which is unreliable. Here's the magic part: TCP is built on top of IP. To illustrate why this is magic, consider the following morally equivalent, though somewhat ludicrous, scenario from the real world. Imagine that we had a way of sending actors from Broadway to Hollywood that involved putting them in cars and driving them across the country. That is, approximately, the magic of TCP. Back to TCP. This is what I call a leaky abstraction. Abstractions fail. During my first Microsoft internship, I wrote string libraries to run on the Macintosh. Next: Lord Palmerston on Programming
Facebook et Friendfeed tueurs de rêves | Le peuple des connecteu Richard Stallman, 1985, Le manifeste GNU. Hakim Bey, 1991, TAZ. John Perry Barlow, 1996, Déclaration d’indépendance du cyberspace. Nous sommes entrées dans le monde numérique avec l’idéal de défendre l’indépendance dans l’interdépendance, l’autonomie avec la responsabilité. Un peu partout, des enthousiastes convertis à des slogans marketing affirment que le blog est mort et qu’est venu le temps des lifestreams. « Vous autres du bas peuple discutez nos idées, faites-en la promo, liez-nous pour que les moteurs de recherche nous amènent au premier-plan. Quand nous avons créé des blogs, les plus vigilants d’entre-nous, ont évité les plateformes propriétaires. Quand je publie une vidéo sur Youtube, une photo sur Flickr, un livre sur Scridb, je reste le possesseur de ces informations. Nous courrons entre les tables, nous rangeons les chaises, faisons la plonge pour la seule gloire du service que nous croyons exploiter mais qui nous asservit en retour. Notes concrètes
Crack Windows Passwords Have you ever tried to log into a Windows computer for a few minutes and you finally realize that you forgot the password? There’s a way to crack the password and it doesn’t involve reformatting and reinstalling Windows. The solution is called @stake LC4 (formerly L0phtCrack), however since Symantec stopped development of L0phtcrack, I’m going to let you in on a program called LC5. Just like L0phtCrack, LC5 attacks your Windows machine with a combination of dictionary and brute force attacks. LC5 can crack almost all common passwords in seconds. The main purpose of the LCP program is user account passwords auditing and recovery in Windows NT/2000/XP. I haven’t tested it against Windows Vista yet, so I’m not sure if it will work. How it works: Windows NT, 2000 and XP passwords are stored as encrypted hashes. Eventually the correct password will be sent and then displayed to the screen. Good intentions: System administrators can find weak passwords within minutes. Bad intentions: