Please create an account to participate in the Slashdot moderation system

 



Forgot your password?
typodupeerror
User Journal

Journal Journal: 9 - systemD: Interfaces last longer than code 2 2

This entry discusses the benefits of good interfaces, then gives a (overly simple) metric for how to recognize them. Then it ties it back to systemd.

The 'unix way' is built around solid interfaces. The actual code to Unix is mostly gone (unless you use SCO or something), but the interface lives on with multiple (mostly compatible) implementations. The interface long outlasted the code. (NB: Unix hasn't always had good interfaces in every place, Unix isn't perfect.)

Another example of a good interface is the Berkeley networking API. It's not user-friendly, but as a low-level 'plumbing' API, it is extremely flexible and effective. It spread and now every OS has an implementation. (That is, every OS more complex than some stuff at http://wiki.osdev.org ). The original code is gone, but the interface will be around for a long, long time.

There are plenty of examples of interfaces in Unix. It doesn't have to be an API.

If you consider a programming language to be an interface between a computer and a human, then think of the C compiler. The original C compiler is no longer in use, but the interface was designed clearly enough that even intentionally bad IOCC code from 30 years ago still compiles.

Cron is another interface, as are the basic CLI commands like ls, mv, ps, grep, etc (which have now taken over almost everywhere....the interfaces, not the original code). The pipe is a powerful interface that seems obvious now, but wasn't at the time......the pipe makes it possible to take the output from any program and send it as input to any other program. That is impressive.

"Robert Metcalf [the inventor of Ethernet] says that if something comes along to replace Ethernet, it will be called Ethernet', so therefore Ethernet will never die. Unix has already undergone several such transformations." -- Ken Thompson

How do you recognize a good API? It's tough, but one thing is sure, a good interface allows easy swapping of components. If it doesn't allow easy swapping of components, it's not a good interface.

"Linux has always been multiple components that you can chose which one suits you best - whether its vi or emacs, gnome or kde, sendmail or postfix, apache or nginx, etc. This is a good thing, where you can swap out component A for B for any reason, and keeps the project competing with each other to get better and better." -- gbjbaanb.

When your component can be easily replaced, because the interfaces are good, it can only compete on its technical merits. That is how you will recognize the best interfaces, because when they are evaluated and put into use by skilled programmers, the best ones will come to the fore.

Time to wrap this back to systemd.

Systemd has gained traction as a init engine because the "unit file" interface provides benefits that a lot of people like. If the "unit file" interface proves durable, then it will last longer than the code. Interfaces can be immortal, code can not.

Throughout systemd there is a lack of understanding of proper interfaces. Making the GUI depend on a particular init system is a particularly obvious example of poor design, but the code was written from a 'code first' perspective rather than an 'interface first' perspective.

Lennart Poettering is a fine programmer. (His code is readable, and let's be honest, anyone who can hack on the Linux kernel has skill. Furthermore he is passionate about it). I don't think he really understands interfaces, though. When he does, his code will move up to next level.

User Journal

Journal Journal: 8 - Does Gnome depend on systemd, or just logind? 7 7

The previous entry investigated Gnome and logind, and found that practically speaking, Gnome does depend on logind. There are some alternatives, but they are not complete or well-maintained.

This entry discusses the dependency between logind and systemd.

Logind is deeply embedded in systemd. Here is a list of logind features, which seem like a grab-bag of vaguely related requirements. If anything, their relation seems to be they are goals of GnomeOS. Maybe Poettering looked at that list and tried to implement as many as possible to convince Gnome to adopt his software.

At a minimum we can say the name 'logind' is a poor choice for a name, since it does much more than that: the name doesn't describe what the product does.

Logind depends on systemd (for example) for calling unit scripts to shutdown or put the computer in sleep mode. In logind-dbus.c function execute_shutdown_or_sleep() you can see an example. Systemd also seems to be required for detecting hot-plugged devices and probably for other stuff. Note also there is a clear dependency on DBUS.

Logind is described as a tiny daemon. That's a lie, the thing has 15491 lines, with the largest file having 3023 lines (3023 lines is large but not necessarily bad).

As always, if you find any errors, please let me know. I'm trying to find the truth, not start fights.

User Journal

Journal Journal: 7 - Why does Gimp depend on systemd? 2 2

This post is flotsam related to some dependencies. If you note any mistakes, please let me know, I'm collecting information.

Gimp doesn't depend on systemd as far as I can tell. Gimp runs on Windows. It does depend on libgtk, whose dependency list is available.

There are reports that Gimp depends on systemd, but that seems to be an artifact of a package dependency tree on one system, not that Gimp actually needs systemd.

What about Gnome? Does Gnome depend on systemd? The answer is yes....., although there are alternatives. Systembsd, systemd-shim, and LoginKit.

LoginKit doesn't seem to be complete, like some files were missing from commit or something. The README is attractive, though. It seems to only be attempting to provide services for logind.

Systembsd provides hostenamed, localed, logind, and timedated.

Systemd-shim provides c-group services, some unit file services, power/sleep/reboot services, and ntpdate services.

Neither code base has been updated in four months, and the code in neither one looks particularly well organized.

I suspect there are other things systemd provides that Gnome relies on, but those aren't immediately apparent. I'm not sure where to look to figure that out.

Before logind, Gnome used ConsoleKit to provide login support. Fascinatingly, the commit to remove support for ConsoleKit was made by Florien Mullner.

A lot of this stuff depends directly on DBus. In my opinion that is a mistake; the communication mechanism should be separate from the API interface.

In the next journal entry I will investigate how deeply libsystemd is tied into the init system, or whether it is truly modular.

User Journal

Journal Journal: Systemd (or, how to make portable software) 10 10

In this post, Lennart explains that he doesn't know how to write portable C code. He says:

[Making systemd portable] would turn every second line of systemd into #ifdefs.

The purpose of my post here is to explain how to write portable code, without #ifdefs on every other line. If that happens, you are doing it the hard way.

An easier way is to create an OS independent layer. Call it OSI (since no one is using that acronym anymore, right?). Create a header file that declares all your functions, then create an implementation file for each platform. Every time you find a piece of functionality that is different on different platforms, throw it into that header file.

For example, if you need to take a screenshot, it will be different on every platform you find. In the header file, create a function OSI_Screenshot(). Then in your OSI_Windows.c file, add an implementation for windows. In your OSI_Linux.c, add a screenshot implementation for Linux. In your OSI_OSX.c, add your implementation for OSX. This technique can also work for extremely incompatible platforms, with OSI_printf(), or OSI_malloc(), etc. If you use your compiler correctly, you can compile it without any extra overhead from the function call.

An example of this technique can be found in Android (look at sysdeps.h and sysdeps_win32.c), demonstrating that this technique works. They don't have #ifdefs scattered throughout their code. The Android example is tougher than it needs to be, because Android added the compatibility layer after the code was written. If they had started at the beginning, the code would have been much simpler.

The lack of knowledge (about how to write portable code) in the systemd team is causing them to make bad decisions, because the alternative seems too hard. For example:

I have no plans porting it to other kernels, and I will not merge any such patches........Quite frankly, I'd like to question [cross-platform compatibility]. In the light of GNOME OS I think we need to ask ourselves the question if we do ourselves any good if we continue to support all kinds of kernels that simply cannot keep up with Linux anymore.

Those who don't understand the failures of the past are destined to repeat them. Plenty of vendors try to focus on a single platform, and their work disappeared, to be replaced by something that was cross-platform compatible, and usually better work. The discipline required to keep things portable results in better code (there's a quote from Mythical Man Month that fits here but I'm too lazy to look it up). The Gnome developers understand the importance of portability but that's a story for another post.

User Journal

Journal Journal: Systemd's solution to large init scripts 1 1

(Note: When you write code, you're making a UI for programmers. Learn to do it well.)

Below you can see a traditional unix init script. It's long, but if you're familiar with shell-script you can figure out what is going on. There is a lot of redundancy here, most init scripts have a switch that runs an option based on the first command-line parameter, for example. One solution is to put common code in a function, but Poettering decided to use config files.

Let's examine the general tradeoff between putting code in a function, and using config files (a form of declarative programming). Config files are fine as long as there aren't too many special cases. If there are too many special cases, you end up with so many options and keywords that it would have been easier to just use a scripting language.

The good side is systemd saves a lot of typing. Way down at the bottom, is a unit file for the same init script. It's clearly shorter, and easier to type.

The bad side is it has arcane keywords which are are not discoverable merely by looking at the file. This is a pattern that repeats itself over and over in systemd, things are easier if you know how to do them, but the system itself is inscrutable without arcane knowledge.

Ideal systems fulfill the requirements while making it easy for those who want to dig deeper. The system opens like the petals of a rose.

#!/bin/bash
# Starts the abrt daemon
#
# chkconfig: 35 82 16
# description: Daemon to detect crashing apps
# processname: abrtd
### BEGIN INIT INFO
# Provides: abrt
# Required-Start: $syslog $local_fs
# Required-Stop: $syslog $local_fs
# Default-Stop: 0 1 2 6
# Default-Start: 3 5
# Short-Description: start and stop abrt daemon
# Description: Listen to and dispatch crash events
### END INIT INFO
 
# Source function library.
. /etc/rc.d/init.d/functions
ABRT_BIN="/usr/sbin/abrtd"
LOCK="/var/lock/subsys/abrtd"
OLD_LOCK="/var/lock/subsys/abrt"
RETVAL=0
 
#
# Set these variables if you are behind proxy
#
#export http_proxy=
#export https_proxy=
 
#
# See how we were called.
#
 
check() {
    # Check that we're a privileged user
    [ "`id -u`" = 0 ] || exit 4
 
    # Check if abrt is executable
    test -x $ABRT_BIN || exit 5
}
 
start() {
 
    check
 
    # Check if it is already running
    if [ ! -f $LOCK ] && [ ! -f $OLD_LOCK ]; then
        echo -n $"Starting abrt daemon: "
        daemon $ABRT_BIN
        RETVAL=$?
        [ $RETVAL -eq 0 ] && touch $LOCK
        echo
    fi
    return $RETVAL
}
 
stop() {
 
    check
 
    echo -n $"Stopping abrt daemon: "
    killproc $ABRT_BIN
    RETVAL=$?
    [ $RETVAL -eq 0 ] && rm -f $LOCK
    [ $RETVAL -eq 0 ] && rm -f $OLD_LOCK
    echo
    return $RETVAL
}
 
restart() {
    stop
    start
}
 
reload() {
    restart
}
 
case "$1" in
start)
    start
;;
stop)
    stop
;;
reload)
    reload
;;
force-reload)
    echo "$0: Unimplemented feature."
    RETVAL=3
;;
restart)
    restart
;;
condrestart)
    if [ -f $LOCK ]; then
        restart
    fi
    # update from older version
    if [ -f $OLD_LOCK ]; then
        restart
    fi
;;
status)
    status abrtd
    RETVAL=$?
;;
*)
    echo $"Usage: $0 {start|stop|status|restart|condrestart|reload|force-reload}"
    RETVAL=2
esac
 
exit $RETVAL

-----------------------------------------------------------------------------------------

[Unit]
Description=Daemon to detect crashing apps
After=syslog.target
 
[Service]
ExecStart=/usr/sbin/abrtd
Type=forking
 
[Install]
WantedBy=multi-user.target

Reference to the examples.

User Journal

Journal Journal: systemd - Why did Debian Adopt it? 8 8

There's a Debian debate page, but it's disappointing and everything systemd does is listed with equal value. Thanks to Russ Albery for making a much more balanced assessment, explaining what he likes. The short answer to the question is: SystemD makes things much easier for people writing init scripts. It wasn't about cgroups, or speed, or login managers, it was about writing easy init scripts.

Here are the major complaints he has with the traditional startup system:

* Lack of integration with kernel-level events to properly order startup.
* No mechanism for process monitoring and restarting beyond inittab.
* Heavy reliance on shell scripting rather than declarative syntax.
* A fork and exit with PID file model for daemon startup.

He furthermore points out these problems with startup scripts:

The model of fork and exit without clear synchronization points is inherently racy, the boot model encoded into sysvinit doesn't reflect a modern system boot, and maintaining large and complex init scripts as conffiles has been painful for years. Nearly every init script, including the ones in my own packages, have various edge-case bugs or problems because it's very hard to write robust service startup in shell, even with the excellent helper programs and shell libraries that Debian has available.

Those are the main things that systemd fixes for a distro builder, and probably why so many distros have switched to systemd, because it was built for them.

User Journal

Journal Journal: systemd - A descendent of Apple's LaunchD 1 1

Systemd is a descendent of Apple's launchd, Lennart suggested the world watch this movie to learn about it, so why? What is good about launchd?

OSX has an excellent inter-processing message system, part of the mach kernel (which they got from CMU). Because of this, many times processes talk to each other through the standard messaging queues. If you use a library to launch a browser window, or query wifi strength, it will communicate through a message queue (although the library takes care of the details).

The interesting thing is that launchd can open a message queue before the recipient is running. So launchd doesn't launch services until they are needed, and if they aren't needed, they never get launched. The benefit is that resources are preserved, things don't get launched until someone sends a message.

The benefit here is dependency resolution. Instead of forcing a deep calculation of what depends on what, or forcing the server script to declare everything it depends on, you can say "manage all these thousand services!" and only the few that are needed will be used, when they are needed.

Another thing I think Lennart copied from launchd is the declarative config files. You don't need to write a shell script, you merely need to indicate what should be launched, and maybe give it configuration options like "relaunch on failure" or "launch completely before receiving message." Of course, some people like config files, others prefer scripts.....that's not an argument I want to get into here, I'm merely pointing out things that seem to have come from launchd. (

What is bad:

Launchd is utterly undiscoverable. It would have been nice of them to put a README in /etc/rc/ or something saying, "hey, all your startup scripts are gone, look elsewhere."

Launchd has a complex hierarchy of directories that it searches for startup scripts. They have justifications for why, and a reason behind each one.......but justifications and reasons are not the same as good design. Every bad design decision ever made had a justification and a reason.

User Journal

Journal Journal: Systemd - Efficiency and Pike's Rules of Programming 4 4

(DISCLAIMER: These are my notes and might be wrong.)

Lennart Poettering has never heard of Rob Pike's rules of programming. Let's examine why:

He said, "On my system the scripts in /etc/init.d call grep at least 77 times.... that has to be incredibly slow...., and should be rewritten in C."

You can time it yourself, with this command:

time for i in {1..77}; do grep user /etc/passwd > /dev/null; done

On my machine it takes 0.229 seconds.

Lennart didn't get the speed increase he wanted. From his benchmark report, "booting up with Upstart takes 27s, with systemd we reach 24s." This result isn't too bad: when I've made a similar mistake of writing code before timing anything, ignoring Pike's rules for programming, once I actually slowed the system down.

If you don't measure, you can't optimize.

For entertainment and enlightenment, here is a quote by Ken Thompson talking vaguely about Pike's rules for programming:

Early Unix programmers became good at modularity because they had to be. An OS is one of the most complicated pieces of code around. If it is not well structured, it will fall apart. There were a couple of early failures at building Unix that were scrapped. One can blame the early (structureless) C for this, but basically it was because the OS was too complicated to write. We needed both refinements in tools (like C structures) and good practice in using them (like Rob Pike's rules for programming) before we could tame that complexity.

User Journal

Journal Journal: SystemD: The Beginning 7 7

DISCLAIMER: THIS CODE REVIEW IS A LONG WORK IN PROGRESS, I COULD BE COMPLETELY WRONG IN ANYTHING I SAY.

To do a proper code review, you need to understand the purpose of the code, what all the stakeholders want. From my own perspective, init scripts work fine, but since Unix companies keep trying to create new init systems, they must have different needs than I do.

Here's a list of the stakeholders. I need to figure out what their goals are.
1) System admins.
2) Desktop users.
3) Distro builders.
5) Android (if systemd turns out to be good enough).
4) Programmers

My suspicion is that systemd has taken over because it makes things easier for 3.

At its core, Unix is a system for programmers. What other system comes with a compiler and multiple interpreters by default? Bash is so much more useable than DOS, or even powershell (yeah, go ahead and flame me but I'm right, Powershell doesn't even have < working). Unix was designed by programmers and for programmers.

The reason I'm talking about it is the traditional init process is incredibly discoverable. All you have to do is look in the /etc/rc directories, and you can figure out how your system boots. You can see it all. For a programmer it's easy. Poking around in the system to understand it is one thing that makes Unix great (and what I like about Slackware: the whole thing is lovingly crafted).

So that describes the approach I am taking to code review, and to the init process. Hopefully Systemd is an improvement.

User Journal

Journal Journal: Why I pirate

On 9 October 2012, the game XCOM: Enemy launched... launched in the US. Unknown to me, the EU launch date was to several days layer, 12 October 2012. Maybe. Yet, 9 October 2012, I received an SMS from Gamemania.nl a dutch gaming retailer chain, that my copy was ready to be picked up. So I left work early that day to arrive 17:54 in front of the store. Doors pulled almost shut, store had already closed and refused to serve me. Very well, I thought there are other stores in the world, so I bought it the next day at Free Record Shop in Amsterdam. Then when I came home, I tried to install. First I had to install steam, which crashed, crashed and crashed some more but finally I got it working and had to create an account. Then activate my email. Then I installed the game and was told it was not released. What? If the game was not released, what was I holding in my hand? Note the error message mentioned nothing about a region or what would be the release date. Just not released. By google came to my aid and I found that throughout Europe, the game was available for sale but not yet ready for install. I read this from angry users posts. Not a single forum had an official answer yet. Not yet and counting. Even the official release date was less then clear. But I know my Internet, if Steam, Dutch retailing, 2kgames/firaxis couldn't/wouldn't help me, maybe some pirates would? thepiratebay itself is of course famously blocked in holland but there plenty of mirrors around. So I checked and yes, full downloads were available in various flavours for a total cost of ZERO bucks! And if you had issues, then the supplies answered your question in minutes. Not like the hours, days and counting before getting a reply from people I had payed money too. Many a reply to a piracy story has had comments similar to my story, so what is so special about it? Nothing. Just that after years of downloading, I have with MMO's gotten used again to paying and I didn't have any issue with paying for this game, if it had worked. But I do have an issue with paying 50 euro's for a game that can't be played and that now that I have read the forums I have seen is filled with bugs. Bugs the official forums have no answers for but that are fixed on piracy forums. To repeat myself, for this game the people that wanted me to pay did:
  • Act as if my giving them money is a favor they are doing me and only when they feel like it, opening hours be damned.
  • Not reply in a timely manner (or at all) to complaints
  • Treat Europeans as second rate customers for no reason (what are they afraid of, that a world-wide release will overload the servers)
  • Break consumer laws by selling a product not fit for its purpose (a game that can't even be installed is obviously not a fit product)

Meanwhile, the pirates offer:

  • Early access
  • No charge
  • Free, fast useful support by computer experts.
  • Service available any day of the week at any hour.

Sometimes the anti-piracy people complain the content industry can't compete with free. But come ON! I had PAYED already and the companies just said "no". Meanwhile the group that doesn't want money, said "yes". This is like paying a hooker to have an headache while your wife is stuffing your wallet full of money and begging for sex. Something ain't right!

And this is why I pirate. Because how else can I send the signal that I am not a sheep who will just keep turning the other cheek? Sure, there are sheep who advocate just that, just wait 3 days, it is not the developers fault etc etc. FUCK THAT! Nothing is every anybodies fault and I as a consumer should just take it all and keep quiet.

NO! And that is my reason why I post about being a pirate. Because just downloading alone isn't enough. Consumer boycotts don't work, there are to many sheep drowning out the silent protest of people like me who just see no other option but to not pay to make it clear I expect more service for my cash.

Because I see no other option. Mails go unanwered, forum posts get ignored, I can get my money back from the store and the sales clerk don't care, not his problem. How can I HURT that manager who thought it was a good idea to do a staggered release, hurt that Steam admin who didn't just flip a switch to prevent customers getting angry. How can I even get the companies involved to acknowledge my existence?

I can't. But I can keep my money in my pocket. That doesn't solve anything but it is a lot more fun having impotent nerd rage with cash then without.

Anyone want a beer over the backs of game developers who haven't learned that if they want an income, they need to tell their managers to not upset their customers?

Windows

Journal Journal: Vista/Windows 8 Hype Log. 1 1

All the usual hype is flowing about Vista 8. This mostly means that Vista 7 was a failure, but I decided to log it for laughs. Vista 7 did not sell as well as Vista did and Vista 8 won't sell any better than Vista 7. Vista failure has really killed Microsoft. The upgrade inevitability myth is six feet underground, traditional desktops are becoming a thing of the past and everyone looks to Google, Apple even IBM for cool and reliable computing. Despite that, Microsoft brings out the same old lines and strategies.

2009

  • 05/29 - Steve Ballmer tries to freeze the market by announcing an early release date, only to have Micrsoft quietly rebuff him. In reality, OEM outrage at Microsoft's limitations and power grab pushes Vista 8 release out of 2012.
  • 06/02 - A fawning article from business insider. We get all the usual BS, "riskiest OS ever," "biggest step forward in more than 20 years, when it pushed Windows as the replacement for DOS", "underneath that layer is the old Windows that users are accustomed to. It will run old Windows apps", Linux and Apple are too jarring, expensive and suck, and so on and so forth.
Windows

Journal Journal: Windows in Decline, as More than 1 in 3 PCs Ship Without 7

As the Linux Foundation wins new friends and influences people, sharp reporters at PCWorld notice that Windows sales as a fraction of PCs shipped are in a steep and accelerating decline. Woody Leonhard of Infoworld does the math on Microsoft's numbers,

Between launch and June 30, 2010 -- a period of 251 days -- Microsoft sold 0.78 Windows 7 licenses for each PC sold. Between July 1, 2010, and April 22, 2011 -- a period of 275 days -- Microsoft sold 0.67 Windows 7 licenses for each PC sold: 175 million Windows 7 licenses, and 260 million new PCs. To turn the numbers the other way around, in the past nine months, more than one-third of all new PCs sold didn't have Windows 7. ... it's entirely possible that 40 percent of all new PCs in the past nine months shipped without Windows 7. Maybe more.

So, the Windows 7 PC sales "refresh" is over. Business adoption rates are still under 10%. Kanthryn Noyles of Computer World interprets that as a Win for gnu/linux

I think it's fair to assume that a good number of them are running Linux instead. Preloaded options, after all, are increasingly common, and the reasons to switch are more compelling with each passing Patch Tuesday.

Android/Linux, is another reason for the decline. Why sit around mom's basement with a big, noisy PC when you can drop the net in your pocket? PCs are less important and Windows is downright archaic.

Microsoft's bottom line sags with its cash cow. There was good evidence in 2010 and January of this year that Windows 7 was not driving sales. Roughly Drafted now looks at Microsoft's quarterly report and shows that Windows profits are down since 2008 back when they were trying to sell Vista which many people dumped in less than six months.

Advertising

Journal Journal: What is Florian Mueller telling Slashdot? 7 7

A list of things that Microsoft lobbyist and software patent advocate, Florian Mueller has been telling Slashdot.

Florian Mueller has thrust himself into the news a lot over the last couple of years, mostly to the detriment of Microsoft competitors, and has been particularly successful at getting Slashdot to copy his message. Roy Schestowitz, of Techrights, noticed him early because Boycott Novell was on Florian's journalist mass mailing list. So was Groklaw. Both rejected Florian's message and both are now smeared by him. Techrights has this index and PJ has this about bad behavior in 2005, this, this and more. Florian waged a Twitter/Social Media FUD campaign against both "Groklie" and Techrights in retaliation. Even Slashdot submitters have called Florian a "gadfly" and noticed he's behind anti-Google FUD. All of Florian's media manipulation has earned him special mention by actual lawyers who advise those threatened by lawsuits to ignore him and people like him.

The best way to understand what Florian has been doing is to make a list of it. Here then, is a list of what he's been telling Slashdot readers over the last year or so, with context and links to refutations as time allows.

Android/Google Spin.

Red Hat FUD

IBM FUD

Novell's Patent Hoard.

Reframes Microsoft's attempt to tax Motorola's use of GNU/Linux and Android.

This issue should not be separated from general anti-Google FUD but Florian does this.

That's 16 articles in less than a year and each represents dozens of Microsoft press echos. All of it says something bad about Google, Red Hat, IBM and other free software users. When he's not busy smearing Microsoft competitors, he's telling us that they Love Microsoft and are working with them towards some noble goal.

People speculate that Muelller is fed inside information as part of Microsoft's coordinated campaigns against free software and Microsoft competitors. PJ of Groklaw thinks that Microsoft hoped that a community of deluded coders would form around Florian, but only Novell employees and Mono boosters pal around, while the larger free software community ignores him. His recent praise of the SCO Gang and smears of PJ places him among the most disgusting of Microsoft company.

Windows

Journal Journal: ZDNet Author Dumps Vista for GNU/Linux 1 1

J.A. Watson of ZDNet belatedly joins the Vista Sucks Chorus. He makes up for his tardiness with zeal and by moving to GNU/Linux.

I simply can't believe how awful Windows is, and (unfortunately) how gullible I am. [my laptop] came loaded with Vista Business, and a "fallback" DVD for XP Professional. I tried running Vista on it. I really tried, I really wanted it to work, and I said exactly that in my blog here. But it didn't. Every time I tried it, things started out looking promising, and after a month or two it would go belly-up. Three or four times I reloaded Vista from scratch and tried again, hoping that the latest Microsoft Updates would fix it. Eventually I gave up, reloaded one last time with XP Professional, and ran that with no problem for two years.

A month or so ago, through my own carelessness, I wiped the disk on this laptop. I had to reload everything from scratch, so (like a fool) I thought well, Vista SP2 is out, everyone says that it is "all fixed up now and works great, and reliably", so I'll try that again. I loaded Vista from scratch, added all the updates to SP2 and beyond, and I've been running it that way since. Until today. ... Windows is unreliable garbage, it always has been, it always will be, and if you use it you should be willing to accept that risk. I am no longer willing to accept that risk, even part-time as a secondary operating system on this laptop. Windows is gone, it has puked all over its disk for the last time here, and I will not reload it. I am in the process of transferring the data to one of the Linux partitions - yes, Linux is quite happy to read the partition that Windows says is hopelessly corrupted.

Please, PLEASE, unless you want to hear a very long string of words that I learned during my military service, do NOT tell me that the "solution" to this problem is to give Microsoft even more money and "upgrade" to Windows 7. ... if Vista is not stable, or reliable, then Microsoft should withdraw it and either offer a free "upgrade" to Windows 7 or offer a refund of the purchase cost. ... I absolutely don't believe the Windows 7 is any better, any more stable or any more reliable than Vista. They come from Microsoft, they are utter garbage...

This is a sign of things to come for Windows. Windows 7 was predictably just as bad as Vista was. People no longer are falling for Microsoft's promises of "this version fixes everything."

User Journal

Journal Journal: World Peace is Easy

World peace is an unusually simple problem: it's entirely a marketing problem. We don't even have to get people to buy anything, all we have to do is get them to want it. The marketing is the whole problem. Once everyone wants it, then the problem is solved because no one will fight anymore. It really is that easy.

In talking to people, I have observed three broad 'market segments' that need to be addressed, three types of people. Maybe there are more, but this is what I have found so far:

1) Those who think that humans are violent by nature, and thus war is inevitable. These are believers in the 'killer ape' theory or perhaps they've just seen too much violence in their lives. Fortunately men are not violent by nature, the 'killer ape' theory is discredited, and in any case we are capable of choosing our destinies.

2) The second group are those who would stop fighting, but the 'other guys' won't stop. These are most Americans. They didn't want to attack Afghanistan originally, but the Afghanis struck first, so what choice was there? These people happily would support peace if they saw it as a viable possibility. Fortunately, peace is viable because it is the most profitable solution, we just need to help the world see that. The more people start supporting peace, the more this group will become convinced that peace is possible.

3) The third group is the most difficult group, because they actually have something to gain from war. In this category was Slobodan Milosevic, who wanted to consolidate power in his country, or warriors on the edge of the Sahara who want to take others' land for their own cattle. Some people fight because it is exciting, they like the thrill. These people need to see that there is a better way, and that their children will want to live in peace, and sometimes compromise is worth it. Anyone who has loved has learned the value of compromise. These people can too.

Try to talk to everyone you can about world peace, because word of mouth is the best type of marketing.

It's not so hard to lift yourself by your bootstraps once you're off the ground. -- Daniel B. Luten

Working...