<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>Advogato blog for graydon</title>
    <link>http://www.advogato.org/person/graydon/</link>
    <description>Advogato blog for graydon</description>
    <language>en-us</language>
    <generator>mod_virgule</generator>
    <pubDate>Sun, 19 May 2013 17:53:27 GMT</pubDate>
    <item>
      <pubDate>Sun, 4 Oct 2009 17:22:34 GMT</pubDate>
      <title>4 Oct 2009</title>
      <link>http://www.advogato.org/person/graydon/diary.html?start=123</link>
      <guid>http://www.advogato.org/person/graydon/diary.html?start=123</guid>
      <description>&lt;a href="http://www.advogato.org/person/ncm/" &gt;ncm&lt;/a&gt;: So long as I am speaking about&#xD;
&lt;i&gt;systemic issues&lt;/i&gt; and you are speaking about&#xD;
&lt;i&gt;accusation and defense&lt;/i&gt; of individuals, we are talking&#xD;
right past&#xD;
one another.&#xD;
&#xD;
&lt;p&gt; Try this: sexism is &lt;i&gt;not&lt;/i&gt; a trivial matter, but with&#xD;
respect to &lt;i&gt;systemic attitudes&lt;/i&gt;, individual&#xD;
accusations &lt;i&gt;are&lt;/i&gt; of little account. I really, really&#xD;
couldn't care less anything much about Mark Shuttleworth.&#xD;
You can stop talking about him in specific. Each such&#xD;
example is only a tiny expression of the &lt;em&gt;culture&lt;/em&gt;,&#xD;
and no one person or small set of people (your chosen&#xD;
a-few-bad-apples explanation) make a culture.</description>
    </item>
    <item>
      <pubDate>Fri, 2 Oct 2009 15:32:05 GMT</pubDate>
      <title>2 Oct 2009</title>
      <link>http://www.advogato.org/person/graydon/diary.html?start=122</link>
      <guid>http://www.advogato.org/person/graydon/diary.html?start=122</guid>
      <description>&lt;a href="http://www.advogato.org/person/chalst/" &gt;chalst&lt;/a&gt;:&#xD;
&#xD;
&lt;p&gt; The game of trying to determine "who is the guilty sexist"&#xD;
is tiresome. We all say and do mildly sexist things from&#xD;
time to time. I do, you do, women do. Moreover I do not care&#xD;
about Mark Shuttleworth in any&#xD;
capacity other than as an illustration of the&#xD;
&lt;i&gt;systemic&lt;/i&gt; bias in this community. You seem to&#xD;
understand systemic bias at least as far as language use,&#xD;
but you seem to think it stops there, that a little&#xD;
gender-biased language isn't worth getting enraged over.&#xD;
Unfortunately it doesn't stop there.&#xD;
&#xD;
&lt;p&gt; It's actually just &lt;i&gt;indicative&lt;/i&gt; of much deeper biasing.&#xD;
Look at any of the &lt;i&gt;numerous&lt;/i&gt; threads that have come&#xD;
out of incidents like this. Look at the discussion. it's 100x&#xD;
worse than the initial gaffe. What starts as a matter of&#xD;
language bias (or, well, in some cases uglier concerns such&#xD;
as pornographic slides) rapidly descends into outright&#xD;
verbal abuse.&#xD;
You have men of this community&#xD;
claiming women have developmental, genetic, psychological,&#xD;
spiritual or otherwise &lt;i&gt;innate&lt;/i&gt; inferiority in technical&#xD;
tasks. Men insulting women's appearance, sexuality,&#xD;
intelligence, sense of humor and honesty. Men threatening&#xD;
women with harassment and assault.&#xD;
Men cracking jokes about male domination and male privilege.&#xD;
Men telling anyone who dares take issue with any of this to&#xD;
shut up, go away, drop dead. &#xD;
&#xD;
&lt;p&gt; &lt;a href="http://www.advogato.org/person/ncm/" &gt;ncm&lt;/a&gt;:&#xD;
&#xD;
&lt;p&gt; You do not get to decide via some courtroom logic whether a&#xD;
statement is "ok" or not. There is no point examining the&#xD;
circumstances to tease a plausibly non-biasing meaning out&#xD;
of it. This&#xD;
is an even more tiresome game. Those statements made --&#xD;
&lt;i&gt;made&lt;/i&gt; -- people feel another shove of bias in an&#xD;
already systemically-biased environment. They make &lt;i&gt;me&lt;/i&gt;&#xD;
feel&#xD;
that. Any time I'm in the room and someone talks about&#xD;
"software so simple their girlfriend could use it" and&#xD;
"simple enough for Aunt Tillie", or "coding like a rockstar"&#xD;
and "manning up", or any of the horrendously biased&#xD;
statements made in the now-numerous threads about this topic&#xD;
elsewhere. Those reinforce the bias. I feel it. Enough&#xD;
people feel it to be talking about it. Deal with that fact,&#xD;
don't tell us how we feel.&#xD;
&#xD;
&lt;p&gt; It doesn't matter what was intended in Shuttleworth's case.&#xD;
Intention is not effect. When you intend to make&#xD;
a funny joke and nobody laughs, do you try to argue your&#xD;
audience into laughing? When you intend to ship an appealing&#xD;
product and nobody buys it, do you try to argue your market&#xD;
into buying?&#xD;
&#xD;
&lt;p&gt; You do not get to argue someone out of their feeling, their&#xD;
response. You might not care, that's your choice. But &lt;i&gt;if&#xD;
you care&lt;/i&gt;, the habits of&#xD;
speech and conduct need to change. More than that, the&#xD;
underlying attitudes revealed in the ensuing conversations&#xD;
need to change. If you don't care, your&#xD;
loss. Continue to lose most of the women and a chunk of the&#xD;
men who are&#xD;
too annoyed to stay.</description>
    </item>
    <item>
      <pubDate>Fri, 2 Oct 2009 06:40:15 GMT</pubDate>
      <title>2 Oct 2009</title>
      <link>http://www.advogato.org/person/graydon/diary.html?start=121</link>
      <guid>http://www.advogato.org/person/graydon/diary.html?start=121</guid>
      <description>&lt;a href="http://www.advogato.org/person/ncm/" &gt;ncm&lt;/a&gt;: no, &lt;i&gt;this&lt;/i&gt; is the first offensive&#xD;
quote:&#xD;
&#xD;
&lt;p&gt; &lt;blockquote&gt;&#xD;
A release is an amazing thing. I'm not talking about the&#xD;
happy ending, I'm talking about a software release, the&#xD;
fresh meat.&#xD;
&lt;/blockquote&gt;&#xD;
&#xD;
&lt;p&gt; followed by many references to &lt;i&gt;guys&lt;/i&gt; doing various&#xD;
bits of serious technical work, then this delight:&#xD;
&#xD;
&lt;p&gt; &lt;blockquote&gt;&#xD;
making sure that your printer, your mom's printer, my&#xD;
grandma's printer just work out of the box&#xD;
&lt;/blockquote&gt;&#xD;
&#xD;
&lt;p&gt; and this one:&#xD;
&#xD;
&lt;p&gt; &lt;blockquote&gt;&#xD;
then we'll have less trouble explaining to girls what we&#xD;
actually do.&#xD;
&lt;/blockquote&gt;&#xD;
&#xD;
&lt;p&gt; How you managed to miss these in the article, I&#xD;
do not know. The subtext is crystal clear. It's not even&#xD;
subtext. It's apparent text. Men hold the technical&#xD;
knowledge, women lack it and need to have it made-to-work or&#xD;
explained-to-them by men. Women are grandmothers, mothers,&#xD;
girlfriends and &lt;i&gt;other&lt;/i&gt;. Not &lt;i&gt;us&lt;/i&gt;.&#xD;
&#xD;
&lt;p&gt; This attitude is apparent in every corner of discourse I've&#xD;
ever seen in this community. It's broken beyond belief&#xD;
in this regard. Many people, men and women alike, have a&#xD;
hard time with the social environment. I am one of these&#xD;
people. These days I'm usually too repelled by the social&#xD;
environment to participate. If you ever felt I might have&#xD;
been a valuable contributor to anything, consider that fact.</description>
    </item>
    <item>
      <pubDate>Wed, 18 Mar 2009 13:26:38 GMT</pubDate>
      <title>18 Mar 2009</title>
      <link>http://www.advogato.org/person/graydon/diary.html?start=120</link>
      <guid>http://www.advogato.org/person/graydon/diary.html?start=120</guid>
      <description>Chalst: Oh, I didn't mean to imply the runtime costs&#xD;
&lt;em&gt;end&lt;/em&gt; with the set of runtime sertives. I'm well&#xD;
aware that every backend "solution" for a compiler-writer&#xD;
imposes some constraints on the form of the translation, and&#xD;
hence a set of performance taxes itself. In LLVM's case, for&#xD;
example, it seems to want a free hand in managing your&#xD;
frames, and it can't guarantee you tail calls. So anything&#xD;
not-C-like in the control-abstraction or&#xD;
calling-convention requirements -- common-ish in FP -- is&#xD;
probably going to require more explicit heap representations&#xD;
of frames, or old-skool trampoline helper functions or such.&#xD;
These costs might be acceptable, but they're similar to the&#xD;
costs you face when translating many languages via C itself. </description>
    </item>
    <item>
      <pubDate>Tue, 17 Mar 2009 19:32:35 GMT</pubDate>
      <title>17 Mar 2009</title>
      <link>http://www.advogato.org/person/graydon/diary.html?start=119</link>
      <guid>http://www.advogato.org/person/graydon/diary.html?start=119</guid>
      <description>Chalst: Certainly he could target Clojure at LLVM; he'd just&#xD;
have to cook up a big elaborate runtime to replace &lt;a href="http://hg.openjdk.java.net/icedtea/jdk7/hotspot/file/tip/src/share/vm/" &gt;all&#xD;
the runtime services&#xD;
the JVM is providing for him now&lt;/a&gt;. LLVM gives you pretty much&#xD;
nothing runtime-y. At best it is going to give, say, GC hooks&#xD;
or profiler hooks, or stack-management hooks to an unwinder&#xD;
library; in general &lt;a href="https://llvm.org/svn/llvm-project/llvm/trunk/runtime/" &gt;it's&#xD;
runtime library is totally minimal&lt;/a&gt;. This is not a&#xD;
criticism: LLVM is great, it's just not a runtime system.&#xD;
It's a code&#xD;
generator / compiler backend.&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; What he wrote was this:&#xD;
&lt;blockquote&gt;&#xD;
I&amp;rsquo;d like to pick my VM for its security, footprint,&#xD;
handling&#xD;
of parallelism and messaging, and run-time appropriateness.&#xD;
This would let me choose Lisp, Haskell, Python or C++,&#xD;
depending on the skillset of engineers available to me; and&#xD;
the JVM, .NET platform, or LLVM, depending on how I meant&#xD;
the code to be used.&#xD;
&lt;/blockquote&gt;&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; To me this shows a pretty broad misunderstanding of the "VM"&#xD;
suffix shared by JVM and LLVM. They're different layers in&#xD;
the language implementation stack. There &lt;em&gt;is no&lt;/em&gt;&#xD;
run-time component to LLVM to speak of; nothing on the scale&#xD;
of the services offered by a JVM. No "parallelism and&#xD;
messaging" system, no verifier, no security system, no&#xD;
reflection&#xD;
services, no dynamic loading services beyond the OS loader,&#xD;
no adaptive inlining or specializing by the JIT as the&#xD;
program's running, no complete GC, &#xD;
etc. etc. I'm not particularly keen on the JVMs flavours of&#xD;
all these services, but they're nontrivial. If you're&#xD;
writing a language that wants any of&#xD;
that stuff, and you want to "target LLVM", you're going to&#xD;
be writing a lot more of your own runtime services. Even&#xD;
getting GC&#xD;
working in an&#xD;
LLVM-targeted language involves &lt;a href="http://llvm.org/releases/2.5/docs/GarbageCollection.html" &gt;nontrivial&#xD;
user-written parts&lt;/a&gt;.&#xD;
&#xD;
&lt;p&gt; About your example: GCJ does not compile Java "to&#xD;
the GCC runtime". The GCC runtime is roughly "libgcc and&#xD;
libc". GCJ compiles &lt;em&gt;using&lt;/em&gt; GCC's infrastructure, sure,&#xD;
but its runtime library is &lt;a href="http://gcc.gnu.org/viewcvs/trunk/libjava/" &gt;quite&#xD;
substantial&lt;/a&gt; on its own.&#xD;
&#xD;
&lt;p&gt; &lt;p&gt; (Appropriately enough, a moment of searching turns up the&#xD;
fact that there is&#xD;
also &lt;a href="http://vmkit.llvm.org/" &gt;an LLVM&#xD;
sub-project&lt;/a&gt; to provide the JVM and .NET runtime services&#xD;
&lt;em&gt;on top of&lt;/em&gt; LLVM. Heh.)</description>
    </item>
    <item>
      <pubDate>Tue, 17 Mar 2009 15:13:42 GMT</pubDate>
      <title>17 Mar 2009</title>
      <link>http://www.advogato.org/person/graydon/diary.html?start=118</link>
      <guid>http://www.advogato.org/person/graydon/diary.html?start=118</guid>
      <description>Chalst: as far as I know that &lt;em&gt;is&lt;/em&gt; one of the&#xD;
objections many people have to working in haskell, or any&#xD;
language with a particularly "high level" semantic model&#xD;
sufficiently divorced from machine-parts. A correct and&#xD;
performant implementation of the language&#xD;
requires a large and complex runtime, often with a heavy set&#xD;
of automatic services, auxiliary data structures,&#xD;
and nontrivial compiler activity. This&#xD;
forces the programmer to give up a degree of&#xD;
control and predictability, and sets up a general&#xD;
performance tax / performance ceiling for the whole program. &#xD;
&#xD;
&lt;p&gt; It's rather the same objection asm programmers make when&#xD;
choosing against C or C++. The comparison&#xD;
extends, in fact, to the counter-arguments made by the&#xD;
high-level system defenders: that the C compiler (or JVM&#xD;
runtime as the case may be) is capable of automatic&#xD;
optimizations far beyond the "intention and control" of the&#xD;
lower-level hacker.&#xD;
&#xD;
&lt;p&gt; Strangely, media codecs and arithmetic libraries still get&#xD;
some of their cores written in asm, and OS kernels, graphics&#xD;
libraries, network stacks, servers, games and desktop&#xD;
applications&#xD;
still get written in C. I think&#xD;
a bit of the "automatic-optimization better than any human"&#xD;
story is overreaching, doesn't happen as often as the&#xD;
defenders wish, or enough to make up the difference for the&#xD;
systemic taxes.&#xD;
&#xD;
&lt;p&gt; The OP's notion that he'll someday be able to "choose"&#xD;
between LLVM and a JVM as backend is meaningless, alas,&#xD;
apples-to-oranges. LLVM is a lower-level component (compiler&#xD;
backend); you could implement a JVM &lt;em&gt;using&lt;/em&gt; LLVM, but&#xD;
the complexity of a JVM comes from the abstract semantics&#xD;
&lt;em&gt;required by the Java language spec&lt;/em&gt; (which includes&#xD;
a VM spec), not any particular implementation substrate.</description>
    </item>
    <item>
      <pubDate>Wed, 23 Feb 2005 16:59:09 GMT</pubDate>
      <title>23 Feb 2005</title>
      <link>http://www.advogato.org/person/graydon/diary.html?start=117</link>
      <guid>http://www.advogato.org/person/graydon/diary.html?start=117</guid>
      <description>jedit's main text pane now seems to work, and all the gui-branch work is merged back to the gcc trunk in time for the 4.0 branch. if you download trunk, configure it with the cairo 0.3.0 snapshot, and run

&lt;p&gt; &lt;pre&gt;
gij -Dgnu.java.awt.peer.gtk.Graphics=Graphics2D -jar jedit.jar
&lt;/pre&gt;

&lt;p&gt; you should get something like &lt;a href="http://people.redhat.com/graydon/jedit-on-gij-trunk-feb-23-2005.png" &gt;this&lt;/a&gt;.
 </description>
    </item>
    <item>
      <pubDate>Sat, 22 Jan 2005 07:04:58 GMT</pubDate>
      <title>22 Jan 2005</title>
      <link>http://www.advogato.org/person/graydon/diary.html?start=116</link>
      <guid>http://www.advogato.org/person/graydon/diary.html?start=116</guid>
      <description>&lt;b&gt;free swing&lt;/b&gt;

&lt;p&gt; today &lt;a href="http://people.redhat.com/graydon/free-swing-jedit-jan-22-2005.png" &gt;jedit started working&lt;/a&gt; on free swing. it's a bit ugly and slow, but it's by far the largest free swing GUI we've constructed yet. that's rendering on &lt;a href="http://www.cairographics.org" &gt;cairo&lt;/a&gt;, which seems to be maturing nicely. I also taught the imageio system to use gdk-pixbuf, so now we can load and save most major image formats.

&lt;p&gt; &lt;b&gt;monotone&lt;/b&gt;

&lt;p&gt; we've upgraded to &lt;a href="http://www.sqlite.org" &gt;sqlite&lt;/a&gt; 3.0, which does away with most real size restrictions. I put some of my ogg files and digital camera images in it. seems to work. also the current head supports "single file" diffs, commits, reverts, etc. many active development branches now; people are adding features faster than I can keep track. that's quite satisfying.</description>
    </item>
    <item>
      <pubDate>Wed, 24 Nov 2004 18:39:55 GMT</pubDate>
      <title>24 Nov 2004</title>
      <link>http://www.advogato.org/person/graydon/diary.html?start=115</link>
      <guid>http://www.advogato.org/person/graydon/diary.html?start=115</guid>
      <description>&lt;b&gt;free runtimes summit&lt;/b&gt;

&lt;p&gt; &lt;p&gt;Red Hat had a little summit which I attended last week, showing off the &lt;a href="http://people.redhat.com/~graydon/free-swing-nov-11-2004/" &gt;excellent work&lt;/a&gt; our free java hackers have been up to lately. But it was not all show and tell; an important theme to this meeting was getting various disagreeing people to talk face to face, with civility, rather than fighting through email.

&lt;p&gt; &lt;p&gt;Personally I don't like fighting much anymore. I'm particularly uninterested in the java and C# fight. So I wrote up &lt;a href="http://people.redhat.com/~graydon/csharp-java/" &gt;a little exploration&lt;/a&gt; of the differences, to see if we can't just learn to live with them as minor dialects of the same basic language.

&lt;p&gt; &lt;b&gt;statistics and information theory&lt;/b&gt;

&lt;p&gt; &lt;p&gt;I got a couple nice books recently:
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://omega.albany.edu:8008/JaynesBook.html" &gt;Probability Theory: The Logic of Science&lt;/a&gt;
&lt;li&gt;&lt;a href="http://www.inference.phy.cam.ac.uk/mackay/itprnn/book.html" &gt;Information Theory, Inference, and Learning Algorithms&lt;/a&gt;
&lt;/ol&gt;

&lt;p&gt; &lt;p&gt;Both these books are important to me, because the little statistics I tried to learn in university &lt;em&gt;didn't make any sense&lt;/em&gt;. It wasn't for fear of math. I studied math.  The stats I learned made vague sense when discussing uniform and discrete problems, but seemed increasingly mysterious as continuous non-uniform distributions were introduced: the justification for assigning a particular process to a particular distribution never seemed very clear, and the flow of information between knowns and unknowns, data and hypotheses, and the meaning of "randomness", became increasingly muddled. It resisted my ability to understand.

&lt;p&gt; &lt;p&gt;These books -- especially the former -- seem to place all that muddle in the context of a titanic struggle between Bayesian and Frequentist philosophical perspectives. Which is good. It's actually very important to me to see that there &lt;em&gt;has been&lt;/em&gt; meaningful digression into the deeper epistemology of probability, because most statistics textbooks just pressure philosophical questions about the reasoning framework into humiliation and silence. These books come out plainly in favour of the Bayesian (knowledge-representation) view of probability, and give a pleasant contextualization of classical information theory in these terms. But they also spend a good deal of time discussing how a probabilistic reasoning process can be thought to &lt;em&gt;make sense&lt;/em&gt; -- to be well-motivated and executed with confidence -- from the pragmatic needs of a creature needing to perform some uncertain reasoning.

&lt;p&gt; &lt;p&gt;I've heard people describe Bayesian inference as a cult. I'd be curious to hear that side of the argument distilled; so far it just seems like refreshingly clear thinking (similar to the clarity of thinking in &lt;a href="http://www.cs.auckland.ac.nz/CDMTCS/chaitin/ait/" &gt;Exploring Randomness&lt;/a&gt;, another one I've recently enjoyed).

&lt;p&gt; &lt;b&gt;cool language of the week&lt;/b&gt;

&lt;p&gt; &lt;p&gt;&lt;a href="http://www.eecs.harvard.edu/~avi/IBAL/" &gt;IBAL&lt;/a&gt; is a nice language for playing with inference in a way which is easy for programmers. Perhaps the future will see more such languages</description>
    </item>
    <item>
      <pubDate>Thu, 19 Aug 2004 18:28:52 GMT</pubDate>
      <title>19 Aug 2004</title>
      <link>http://www.advogato.org/person/graydon/diary.html?start=114</link>
      <guid>http://www.advogato.org/person/graydon/diary.html?start=114</guid>
      <description>&lt;b&gt;hashes&lt;/b&gt;

&lt;p&gt; depending on how you view the state of cryptographic research, the &lt;a href="http://www.mail-archive.com/cryptography@metzdowd.com/msg02554.html" &gt;results&lt;/a&gt; from &lt;a href="http://eprint.iacr.org/2004/199/" &gt;this week&lt;/a&gt; are either very good or very bad. in the short term it probably means not much; in the slightly longer term it probably means we have a lot of replacing and upgrading to do.

&lt;p&gt; this incident points out two facts:
&lt;ul&gt;
&lt;li&gt;cryptography is an arms race and you need to keep spending money on it as long as your opponents are
&lt;li&gt;the ability to extend, augment, or replace algorithms in the field is an important feature for a security system
&lt;/ul&gt;

&lt;p&gt; there will inevitably be an increase in pointers to &lt;a href="http://www.usenix.org/events/hotos03/tech/full_papers/henson/henson_html/index.html" &gt;henson's paper&lt;/a&gt;. beyond the preceding two points, the paper makes a valid argument that input or algorithm randomization can help turn permanent failure cases into transient ones. however, it extends these points, I think unfairly, into an attack against the whole concept of cryptographic hash functions (CHFs). that's a mistake, and really involves a lot of glossing over of what a CHF is and why we need them:

&lt;p&gt; &lt;ul&gt;
&lt;li&gt;difference detection is the principal task of data integrity
&lt;li&gt;humans can see big differences but not small differences
&lt;li&gt;the meaning of "big" and "small" can be changed, depending on the type of lens you use
&lt;li&gt;a CHF is a lens which enlarges some differences and shrinks others
&lt;li&gt;integrity systems should always use as many lenses as they can afford to
&lt;li&gt;working with "no lenses" is a meaningless concept: computers produce derived images of data all the time. even loading and storing bytes from memory is a copying operation, and there is always -- even with no attackers -- a certain probability that any bit in a string will flip.
&lt;li&gt;CHFs produce good value for the money: you spend a little bit of money on R&amp;amp;D, a little bit of CPU time calculating, and a little bit of disk space for storing; you get a lot of integrity. that's the equation. 
&lt;/ul&gt;

&lt;p&gt; I agree with the point about hash randomization, but tossing out CHFs as a concept is a serious mistake. coding theory, along with say binary search, is one of the exceedingly few sources of computers' &lt;a href="http://www.realultimatepower.net/" &gt;Real Ultimate Power&lt;/a&gt;.
</description>
    </item>
  </channel>
</rss>
