Þ   briarpig  » letters


Email rules are explained on the about page; be sure to read it. All email to briarpig waives any privilege of privacy. Email sent elsewhere, say directly to me (if you can find me), is still private, but risks being ignored.
Since I'm sensitive to astroturfing, email will get back-paged (and censored) if it smells even slightly like an attempt to get something mentioned. Don't even try to name a software giant or it's languages.

25jul07 virtual ski resorts

from: Zooko Wilcox-O'Hearn « zooko/zooko/com »
subject: three ring binder business model


I saw [name] on LtU, clicked, and found briarpig.com. Hooray!

     LtU is the main link between briarpig and my name; I leave it to ensure a link's not hard to find. (On this site my name only appears when I quote myself as I quote others, because I don't want to be a public person.)

Maybe I'll find time for some relaxed reading. Right now, it's off to my other stuff, of course. I get paid to hack on Free Software!

     Thanks for the enthusiasm. :-) I'm unsure there's much relaxed reading here; don't feel obligated to read. It's very cool you're paid to hack free software, though. That's a good deal when it comes your way.

     I poked around in the wiki and found architecture.txt, which has a nice high level description I haven't studied closely yet. But so far I like what I see in terms of clean model. I like versioning large graphs of data by versioning individual immutable pieces replaced with new immutable substitutes. It's a nice standard functional technique.

     You used a good way to get non-progamming language links on my site: show me what you're doing if it's a topic I've pursued before, and avoid asking what I think of it so I don't feel put upon. There are web app architecture aspects in there relevant to my interests. (Other folks might be surprised when I use [link] to replace less relevant links in email. I hope no one thinks I'm a good source of web traffic lately — not right now.)

     I see the code looks all Python, which is on my list of languages I'd like to implement, albeit third. If I get a Python implementation done enough to test, your system might be a good one to try as a challenging test bed. Only gnarly applications are very convincing proofs of concept to me.

     I've no idea whether my (future pie-in-the-sky) version of Python will run fast enough to be a draw; it's one thing I plan to discover. If it's not especially fast, it might only be useful as a bridging mechanism from other languages (write in some other language but still use Python based libraries).

Paid well, too. And check out the licence. It is my own invention and I love the idea. No pudding yet to taste for proof (e.g. a cooperator/competitor who would use our source code and thus be obligated to share theirs with us after profiting).

     Getting paid is excellent! It's hard to write software if you don't make enough to stay alive. (Staying afloat is harder with parasites siphoning off most after tax income.)

     Your GPL license with twelve month delay in obligation to publish is very inventive and suggests similar good ideas I might try. I'm unlikely to use GPL in anything myself except code bridging to GPL based systems as alternatives for parts.

     It'll be interesting to see if I can make a license that plays with GPL; I suspect that'll be hard. Since my goal will be to repress forks and GPL is pro-fork, there might be no way to dovetail code written to both. I don't see it as much of a problem, since I won't want my code pasted into GPL systems.

I remember chatting with you about C and arithmetic overflow years ago. Recently, after years of struggle, I finally wrote a C macro which evaluates to true if and only if adding the two integer arguments would cause an overflow. :-)

     Yeah, we started that discussion in the context of error checking inputs to database routines, when the addition of offset and length might exceed max integer size. I still worry about overflow in things like text to integer conversion routines. I might write about that in my log.

     When I had such an overflow macro in C, it checked for a sum less than either input, judging this result as overflow. It's simplest to add the two integers then use a macro taking all three values to make an overflow call or not. Of course I wonder how your macro reads. :-)

     My Lisp reader has a piece of code I wrote around 1993 or so which checks if adding one more digit in base B to an existing value might overflow the max integer representation. (Big integer format is adopted if it occurs.) It's made complex when generalized for any base B chosen dynamically. The technique involves calculating max new high bits that can appear when adding a digit, then subtracting that much from max int to find an overflow test threshold. I support Smalltalk syntax letting you choose an arbitrary radix, even for floating point.


menu

     Choose one of these demos for sample code and related docs, developed together to motivate þ C++ code for this purpose.


     mu: toy, peg, imm, tag, box, symbol, token, number, bigint, class, method, reader, writer, eval, env, vm, gc, world, pcode, compiler, asm, lathe, lisp, smalltalk, design, weight, jar, card, harp, debug, profile

     thorn: todo, names, iovec, assert, log, run, hex, crc, buf, in, out, quote, escape, compare, file, deck, cow, arc, blob, tree, slice, rand, time, stat, heap, node, primes, page, book, pile, stack, atomic, lock, mutex, thread, map, meter, list, iter, ctype


     The new mu menu links future toy language pages. Many demos are stubs; see todo for a thorn demo guide, or toy for mu updates. Also see names for an overview of naming schemes.


address obfuscation

     Harvesting resistance includes replacement of both at and dot with slash, so foo at bar dot com becomes foo/bar/com.

subject edits

     Starting with email from Bill Seitz (first post!) I may replace email subject: headers with funny or merely strange subjects, especially if the original means hello or howdy. To avoid this running joke yourself, just ask me not to do it.


29jun07 riddle me this, batman

from: Bill Seitz « bill/fluxent/com »
subject: smell of morning napalm


Given my free associations, feel free to treat any or all of the above as public or private.

     As the about page says, I dislike private email, so I go public when I can. Questions are barely tolerable — only easily when they focus on stuff I say on this site. (If I answer questions about things elsewhere, I'll get more questions — can't have that. :-)

What was in the [company-name] maze?

     I don't know. I'm unsure Yegge described where I worked. In any case, I no longer talk about past or present employers. I put a lot of energy into becoming forward looking again. I recommend it.

And did you find yourself amongst wolves, sheep, guppies, or what?

     Only wolves — no wizards except on my side. A bad wolf and his flunky, and a small cast of extras. I let it go, so I no longer want a pound of anyone's flesh.

I remember your old netscape rants about berkeleydb, so I was... intrigued... to see it "called up" at [company-name].

     The word rant used to mean something colorful, and now it merely means when a blogger expresses an opinion hotter than lukewarm. :-) Only the latter sense applies to my remarks.

     Every technology has a specific context in which it makes the most sense. At Netscape it didn't make sense to impose latency to open many dozens of database index files when launching an mail client.

     These days I prefer not to express opinions about things when I'm not being paid (simply because most folks attach no value to things with no cost).

     If you're looking for a mean-spirited answer, I'll need to write a long blog post soon about the way many developers pursue technology to earn merit badges.

     Please accept my commentary on the past is now done. (But if you want someone else to follow up with pointed questions, the most ugly issue concerns whether D for durable in ACID is actually true.)

What's a good choice for a data store for sparse-matrix data (that can be called easily from Python)?

     I'm the wrong person to ask since I don't currently work on sparse-matrix data, and I won't pose as a pundit on things I'm not doing.

     It's true I used to write a lot about flexible, schema-less data formats specifically suited for sparse matrix data. But I took a lot of guff on the topic, and got little support, so I need a lot of priming to get more out of me.

     How about this: if you can get jwz to retract his slander (good luck) from many places it reached, I'd consider it debt paid on what folks owe me.

     Otherwise you must keep asking whether something like this might show up in what I'm doing. (The answer is apt to remain "maybe" — so you'd need to keep asking about "how to" details, and I'd only consider questions on topic about my efforts.)

Something smells ugly about the approach of having a tuple-store on top of an RDBMS, but I don't have the chops to be certain of that. Have you looked at [product-name]'s approach?

     I hadn't noticed them before you asked; I don't follow tech news. Their web site is singularly unclear about specifics, but I gather (from guessing and seeing it confirmed on other sites) it's an online storage system. I'd find the business model odd for both supplier and consumers. (But I'm not a pundit or storage guru.)

     I'm going to plead ignorance about questions regarding tech of other folks, unless it has something to do with programming languages. I don't have my storage shingle up for business these days. (There are too many wannabe's with obnoxious opinions.)

     I don't tell employers I'm good at that sort of thing unless I get boxed in a corner. I'm currently writing a multi-threaded page cache at work, to replace memory mapped VM under Linux for file i/o, but it took some doing for them to get me to sign up, as a last resort.

Rotating a bit of the topic-rubix-cube again: is there anything new you've seen in the last year+ of tech stuff that impresses you?

     No, not a single thing. Okay, I'm kidding, but only barely. My "impressed" bar is pretty high — much higher than merely interested. If I listened to music at all, I might care about iPod news. But I'm only a hair away from tone-deaf, so I pay no attention to music.

     I'm primarily interested in platform technology, which is currently stagnant. Recently I'm interested in the iPhone as a delivery platform for cottage software. If there's a path for me to develop (if it's not closed) then I might cross compile from my platform to that one, for both client and server code. (I'm a server weenie again these days.)

     In programming languages, I became impressed by Erlang during the last year when I finally noticed it after Patrick Logan kept talking about it. Erlang's style of avoiding shared mutable memory for scaling logical processes is nice, and maps well onto the style of runtime I started talking about a few years ago (and which I'm now earnestly developing).

     Can we go easy on questions? :-) I'm not a pundit. There's no way I can benefit from expressing opinions about things I'm not doing. And if I answer questions, it enables an easy denial of service tactic for wolves.


from: Bill Seitz « bill/fluxent/com »
subject: call of cthulhu


Good to see your re-appearance on the web.

     I think I'm glad to be back. I'd make my name harder to guess, but then it'd be secret — which it's not. This site's not about me any more than necessary to explain my background in languages, or my approach to related tech. I hope folks do not attach my name to briarpig links. (Please.)

     I may embellish published responses. I intend this as a slow blog comment mechanism where I review and edit.

If you'd like me to edit my wikilog linking you, say the word and I shall do so without annoyance or other side-effects.

     I hate to request edits, and your wikilog at least put a space between Briar and Pig, which might help stall searches. I'm hoping for more future privacy.

Publication is fine, though I hope others have something more interesting to say.

     Interesting is subjective; you have good grace and tone. Maybe other folks will write now you've broken the ice.

     I can jazz up the subject if you've no objection. :-) I'd love to start a running joke that all email subjects become something strange or irrelevant, just for amusement.

That would be fine. Perform random acts of interesting-ization. (Now if only someone would do that to Harry Potter books and Executive Orders.)

     It now appears you wrote me about a fun Lovecraftian role-playing game set in the 1920s, featuring characters who slowly lose their wits (sanity points) after exposure to macabre supernatural creatures. If your sanity hits zero you're garbage collected and the gamemaster plays your character.

     I know, I must stop making jokes like this. It'll bite me.

Free association - some sf I read recently said that the Internet had achieved sentience through co-evolution of spam filters and spam generators, an escalating turing-test war.

     This response is being generated by a bot I whipped up with my recent language efforts. (This is a CS joke.)

What *are* you calling yourself these days?
I noticed the lack of first name on the LtU pages.

     Same as usual: the very name you asked (which I cut). The private briarpig address is just light misdirection. It's not on LtU to reduce hits from searches on my name, for privacy.

     You might find these Welsh language dictionary entries of interest, since this is where I found inspiration for my name several years ago. (See the fourth line.)

dadrys [dadrys-] - (v.) decipher
datrys [datrys-] - (v.) solve, disentangle
drysfa [drysfeydd, f.] - (n.) maze, labyrinth
drysi%en [drysi, f.] - (n.) thorn, brier (briar); (n.pl.) jungle
dyrys - (adj.) tangled, complex, intricate, mazy; difficult, abstruse, recondite; perplexing
ymgiprys [ymgiprys-] - (v.) scramble

     That has an unfortunate side effect of making the name of my library egotistical if you assume I named it after me, rather than myself after it. I named both after the concept.