Older blog entries for graydon (starting at number 70)

28 Oct 2000 (updated 28 Oct 2000 at 04:22 UTC) »
hands off my car. vroom, vroom!

lilo: whether arabs and indians produce more people is irrelevant to my issue with zaitcev's retort, which is why I paraphrased. I'm questioning his reasoning, which is that the underdeveloped countries' production of more people compensates for a north american choosing not to reproduce. this derives from fatalism at best, random assignment of causality at worst. one could just as well say that even if they have 10 babies, I can "compensate" by not having one of my own (since north americans consume so much more per capita). the concept of compensation is not actually present; neither of us causes the other to reproduce or not. the conviction that one should reproduce less (or consume less) stands completely aside from matters of who else is doing what else simultaneously, and nobody gets anything accomplished if they focus on the things "everyone else is doing".

furthermore, you suggest that I would have people serve the concerns of society, rather than the society serve the concerns of people, as though this is an all-or-nothing situation. what then are laws? do they serve us, or do we serve them? could it be... both? could it be that they represent decisions which do concern us, but which can only be instituted at a social, systemic level?

oh wait.. "public policy is going to have to give way to the preferences of the public"... that is hard-core creepy. are you actually enough of a free-market cheerleader that you'd do away with public policy? scrap painstakingly agreed-upon law, human rights, safety and standards and just abandon the process of public discourse? have you given this much thought? it has pretty serious implications.

lastly, associating ecological claims with the second coming of christ and the belief in chain mail is just bad science. chain mail and the messiah are falsifiable; species extinction rates and habitat encroachment are not. try it. try finding a living monk seal or laughing owl or atlantic walrus or prairie grizzly bear. you won't.

27 Oct 2000 (updated 27 Oct 2000 at 18:43 UTC) »
zaitcev:

if I do good thing, bad people compensate. therefore bad state is inevitable. therefore I should do bad thing.

hmm.. and I foolishly thought california has power shortages because individual californians use too much power. I apologize for dragging ivory-tower things like numbers and causality into the equation. please return to blaming your problems on arabs and indians.

lilo: but a change of opinion is all that's needed to fix the problem, and massive shifts of opinion do happen. they happen with the presence of convincing arguments. the fallacy many people presently make is that a citizen's only concern anymore should be with the fulfilling of their own wants, as opposed to the social process of arguing, establishing and enshrining beliefs (including the belief not to be subject to a particular law) as legal means to social ends. these arguments cannot be based in terms of individual wants by definition: if all we were discussing was satisfying your "want" to get to work in comfort and style, of course everyone would support your position of buying a car. but we're not: there's a social issue at stake and it's the issue of the expiration of the natural world. this issue, like the broad issues of national security, economic stability and social welfare, demands addressing in the terms that concern it. in particular, it demands analysis of causes of environmental degradation and (consensual) application of control mechanisms to achieve the broader end of preservation. california has been particularly effective in their application of this concept to cars, far more so than my own province.

your comparison between "concern for social issues" and "desire to assume control over others" is perhaps well historically motivated, but the two matters are not always the same. many people who make arguments about social issues are concerned about social issues, as issues, and are only interested in arguing a point insofar as the point seems important; whether the point gains them "power" is frequently a non-issue.

the general systemic cause I was pointing out, and continue to believe lies at the heart of our systemic problem here, is that we are convinced of the necessity of increasing the rate of economic activity for its own sake. computers are a non-issue; they are another surface effect of this systemic cause, like paper, like television, like sneakers and croutons and steel belted tires. they're all effects, mere symptoms, of the conviction that maximized economic activity is an end in and of itself, rather than a mere means to satisfying needs.

this is an issue which only becomes more important to discuss as the species becomes more powerful. how important is it to increase the rate of production and consumption, even if everyone's needs are already met? I would venture the answer "not at all", but the discussion has already been derailed into discussing why paper is better/worse than PDAs. never mind that point, one is surely better than the other but we still have too many of both.

lilo my comments have nothing to do with marxism or the ability to feed others, nor the flush of ecstasy people get when their cell phone goes ring-a-ding-ding or they spend an hour surfing on their cordless laptop from the comfort of their car.

I'm suggesting we take all the energy we pour into everything and reduce it. a lot. because the energy we pour into doing things, just things in general (even "good" things) is so excessive that the ecological result is bad. superbad. we're so dead it's not funny.

it's embarassing to read people here argue that because you like something, it makes it good to do it. that not only flattens the rich mental life of morals, ethics, duties, goals and beliefs to a single "stimulus/response" continuum, but it assumes complete inability to reason about cause and effect, or any timescale other than the present.

for a free software group, this is really sad.

dria, I refer to websites for 3 reasons:
  1. as real-world objects, they encourage the use of computers, which suck up a lot of power (note the power shortages in dot-com crazed california), require expensive-to-refine materials to make, and are thrown away shortly after being made since we are convinced that they are not powerful enough.
  2. as accomplices to the "new economy", they encourage people to believe that there is lots of work which needs doing, and hence lots of peripheral considerations which we can feel free to ignore, so long as we're "getting important work done". in fact, none of this work is remotely important. all the important work (food, water, housing and heating production) has been done and done so much that we have massive surpluses. we fail to allocate these surpluses properly to anyone who really needs them because we (the holders of wealth) are all tied up believing we still need to compete with one another for relative economic standing, when we all actually live in conditions of pure luxury.
  3. as escapism, insofar as websites are substituting for TV, they support the model of life as continuous amusement, continuous stimulus, pure entertainment. they support the position that people should care about the items for sale on ebay or the screen captures on gamespot or the music streams available on mp3.com. all of this wold be fine and well if no harm came from it and it kept people pasively amused, but it keeps us actively demanding more machines and more consumer products to fulfil ever more fickle desires, and that hurts everyone.
don't take it too personally though; I have a website too. I'm just thoroughly pissed off with the world this week. it's like one gigantic acid party gone wrong.
to: everyone
from: the rapidly collapsing ecosystem
subject: please reduce the rate at which you...

buy, work, save, spend, produce, move, read, eat, think, talk, want, complain, drive, reproduce, take, break, discard, publish, collect, consume, etc.

you're doing it too much, and it's causing trouble. do it less.

we're all painfully aware of impending ecological doom, and everyone's fucking stuck on recycling. newsflash: you can just do less and everything will be fine. walk don't drive. don't eat meat. don't fly. work 3 days a week. don't have babies. don't print so many stupid magazines and newspapers. don't operate so many websites. don't buy a new computer and ugly bloated SUV every 6 months. sleep in. don't buy so much junk. the whole continent has attention deficit disorder. just sit still dammit!

scratching that itch

two more crushing blows to the mouse industry this weekend: first off, the beautiful X window manager / general UI tool ion, which has such cool things as minibuffers, file completion, full keyboard operation, and a purely frame-based tile system. actually seems more useful than larswm, which is surprising. it's like a little fragment of the parts you use most from emacs, shaved off and put in a window manager.

secondly: I wrote a new emacs mode called quads, which is a quadtree navigation assistant. it solves (or seems to solve) the problem of relocating the cursor to an arbitrary position in a window. you eyeball the position you want to go, hit the magic key, and it lights up 4 wedge-shaped regions overlaid on the text in the current window. above, below, to the left, and to the right. you cursor in the direction of the region containing the spot you want to go, it recenters the wedges in the middle of that wedge. if you hit space, ctrl-g or bottom out of the quadtree it drops you back into normal navigation. this way you can move to any spot in a typical editor buffer in 5 or 6 keystrokes, which is roughly as fast as mousing.

also increasingly satisfied with konqueror as primary browser. it's like a small, fast, working version of nautilus+mozilla.

polishing off the squash

frances makes good food. frances makes vegetarian thanksgiving that makes turkey-eaters cry. cry, turkey-eaters, wah wah wah.

On the fractions front, my professor gave me a thesis which introduced me to the wonderfully bent world of p-adic fields, each of which is essentially the standard completion of the rationals with a different metric on it: two rationals are "close" if their canonical difference is divisible by large powers of the prime p in question.

What's interesting about p-adic arithmetic is in how their digital (radix expansion) representations differ. Having exchanged the property of "magnitude" for the property of "divisibility", division makes numbers "further apart" and multiplication makes them "closer together", but if you fix a digit length, and hence a subset of Q (defining the maximum closeness and farness) you get a remarkable set in which arithmetic amongst the remaining terms is "exact" with respect to the standard norm on Q.

Intuitively, this makes sense: if you were to have fixed the number of digits you use to represent the "normal" rationals, you would be able to represent only a certain subset of rationals by their size. Say if you fix 3 digits worth, you could only represent numbers between 999.0 and 0.999; nonetheless you could exactly represent every number in that range, and the results of its arithmetic, so long as they stay in that range. In the p-adics, you're exchanging the meaning of digits, and by truncating to those 3 digits you get the ability to represent all rationals regardless of magnitude which happen to have a canonical form (reduced to coprime * power-of-prime) in which they are divisible by a 0..3 digit power of the base prime.

The profound effect this has, if I follow the thesis correctly, is that the propagation error of operations on finite p-adic representations (or one such, which she calls "hensel codes") can be systematically compensated for after each operation. So you can make a fixed-length representation and completely quantify the error of any operation on that representation by the error introduced when reading numbers in and approximating them.

So now I think maybe there's hope for computer arithmetic after all. I have to go make some software which uses this system, and try it out.

Also, I have to give huge props to wei dei's crypto++ library. I've had occasion to need crypto code recently, and this library is the shit. Anyone who's still making crypto libraries when something this cleanly designed, modular, reusable and simple is available is a fool. normally, when you want to make parts of a crypto library work together in a way they weren't designed to by the author, they don't fit. In crypto++, they do. Every part has been designed to cleanly fit into every other part, so you can fabricate new crypto systems, complete with i/o facilities, in a few minutes of thinking and coding.

Finally, I made a saddening empirical discovery about makefiles: your time is actually best spent (I measured) by not only having 1 makefile for the whole project, but also listing explicitly each target, and all its dependencies, and the rule to remake it, in that 1 makefile. It takes a few moments of fiddling with find(1) to produce file lists, but it is actually less time than you spend getting your pattern rules, dependency generators and recursive invocations right. Furthermore, once you have such a makefile, its behaviour is completely predictable. Bugs in makefiles simply do not occur if you use them this way. Everything that needs remaking always gets remade in exactly the right order, you never need to make clean, you never have obscure bugs from old .o files, you never need to mess with automake, and best of all when your tree is up to date, running make returns immediately rather than after 100 recursive invocations. peter miller is right. dan bernstein is right. it is a better use of your time to use make the way it was intended.

connecting with my inner weasel

aaronl: let's say you are a normal unix user. you use the contents of /usr/bin as your verbs, files and file descriptors as your nouns, and a shell language as your set of connectives. you follow the "unix philosophy": make big things out of little things. lots of us are happy with this language.

now one day you decide (some people do not decide, but lets say you do) that you're a little sick of invoking programs with "flags", especially big programs, and you really want to have already-running programs interact with one another in the same way the typical shell pipeline does. hm. that's a little harder. you'll probably write a special purpose FIFO-based wire protocol for your particular case and leave it at that. but then as it's clear, you'll wind up making n! wire protocols for n programs to interoperate. suckage.

so, you decide to make your program's essential services into a library, so that rather than having program A talk to program B, one of them will just "swallow up" the other's functionality, and be able to call "itself" directly through C linking. Or python module loading. Or perl module loading. Or C++ linking. Or lisp module linking. hm. suckage. these things can't link with one another.

so, you decide to make SWIG, which can generare module loaders for anything in anything else. there, goddamn it, now I can load my modules in peace! a perl script can load up a bunch of C .so's and execute them. unless the module implements persistent objects with identity. or objects on other hosts. or objects with existing data. hm. suckage. you're limited to the scope and lifetime of a single process. beyond that you're back down to pipes and sockets.

so, you invent CORBA, in which anything can talk to anything else, regardless of implementation language, host, lifetime, etc. you can refer to dead objects and re-create them. you can call methods statically (compiler checked, like a library), you can call them dynamically (string tokenized, like a shell). everything's perfect! except you can't tell how to start objects, or query their capabilities, or name them, or disconnect them when they're done, or discuss basic protocol issues like who is going to embed whom. hm. suckage. looks good on paper, but lacks some infrastructure to hold it together.

so, you invent a set of component interfaces everyone must agree to support in CORBA. bonobo, say. hurrah! everything's solved! yip yip yip!

I too "have a problem" with components, and it is this: all the time is being spent on making mechanisms for finding and activating new nouns and verbs. once they exist, they tend to just get plopped into a "component bucket" application, wired together (manually) to make the application do what it's supposed to, and forgotten about. the task of finding new linguistic connectives is generally ignored. consider some domain specific languages developed in higher order languages like haskell.. they have really powerful connectives, well crafted to seemlessly "make bigger things out of smaller things" with a single statement. like the "|" connective accomplishes a reasonably rich set of "dup2, dup2, close, close, fork, exec" statements in a single character, higher order connectives can blend one "behaviour" into another, one "music" into another, one "animation" into another. now consider the connectives holding component-architecture programs (mozilla, nautilus, evolution) together: subobject activation and embedding, for loops, bulk data transfer, reference-to-data transfer, and hand crafted method calls.

the trouble with making a clean and useable connective is that it requires strict adherence to interfaces, and interfaces with good enough design to be connected together. in the current landscape of CORBA componentware, people tend to "just keep adding methods" to single objects, often critical ones, where they should be developing connectives and subobjects obeying regular, well designed, readily combinable interfaces. patterns of composition are way more powerful than just "my thing can see your thing". this is what sets fresco's interfaces apart from other uses of CORBA: its primitives, connectives and decorators are chosen to construct self-laying out, event-handling, MVC behavioural composites out of sub-objects in a natural way. designing those interfaces was clearly a hell of a lot of work, and they still don't do everything you'd want them to. but they're a far cry better than what other people are using CORBA for.

I'm afraid in 5 more years, programming will truly have regressed to for loops in ECMAscript. and that will be very sad.

more hot kimchee

back in toronto. cleaned apartment, moved everything around, paid loads of bills, back in my normal life with frances. everything feels mostly right again.

current fascination is with the perverse beauty of "generative programming"; in particular, with the horrors of expression templates and their use in compile time optimization of scientific computation. This is sick, dark magic business and I love it.

thus far, authors have explored this technique in making unrolled vector libraries and simulating functional programming. I'm interested in seeing if the same technique can be effectively used to do an arbitrary precision rationals package in C++ without any performance hit. I think it can, but I'm still surveying the literature. it's even crossed my mind that such a library could select appropriate cases in which to use long word & vector integer coprocessors, so common on today's CPUs :)

this is especially interesting because, now that I'm fiddling with quantum chemistry programs, I'm really coming to loathe floating point math.

the other possibly useful thing which could be done at a static metaprogramming level is to reorder expressions to minimize truncation and roundoff error if you happen to be using FP. so much interesting stuff to explore. sigh

going out to a party now...

kazoo orchestration

raph suggests, as many have before, that:

Nonetheless, it is important for authors to get paid for their work

And, while I can understand that authors certainly want to be paid (don't we all) I do not concur that it is important. Indeed, I broadly disagree with the film, music, book, and magazine industries in their constant affirmation of the supposed right of the "creative person" to get paid for anything they happen to create. A vast, incalculable majority of the material these industries foist on us is utter crap. We consume it because

  1. we have disposable income
  2. it's better than staring at a blank wall
  3. the companies use every known method of persuasion to get us to buy it
That these companies have a right to collect this money, come what may, or that the producers of the force-fed poop we all dole out for have a right to continue to be paid whatever fractional royalty the promoters pass along, is totally absurd. Payment is a function of the skills marketplace, and/or the marketplace for the product the skills happen to produce. If the market conditions no longer favour your industry, your skills, your products, you're out of luck! That's the fundamental optimization rule of a free market, and it's a pretty tough position to argue that the artists/promoter/publisher couldn't possibly have switched to a more profitable line of work when their current honeypot dried up.

There's a word for this in trade policy: protectionism

61 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!