|
Þ briarpig |
news?
try: log
focus?
try: qi |
This new column shows recent log page blog posts.
qi
site focus ¶ Starting 28feb2009, the new programming language focus of this site appears on the new qi page. But the usual sort of stuff will keep appearing here as always. The log — whose recent entries appear below — remains a compost heap of whatever strikes my fancy. The qi page will focus on getting stuff done in code (bleeding over to the log). 26jun09
¶
consolation prizes
edges ¶ One of the things I do in my day job is closely related to edge detection: finding boundaries in content so components can be identified. When working in dedup systems, what you really want is fewer edges, because then fewer components are identified and less work is necessary. In particular, if content changes, you want to find the same old edges if possible. When you perturb old content by inserting or deleting new content, it would be nice to find the same old edges in content that hasn't changed. This is hard to do since fast algorithms to find edges in linear content are slightly sensitive to content offsets. What you want is offset-independent edge detection. Last winter I found a really good way to do this; my search for an ideal algorithm turned up a scheme of edge detection that re-synchronizes on the old stream of edges after a content perturbation. As a main effect, this reduces indexing costs. But I'm not going to tell you how it works. I'm also not quite going to define what I'm talking about either. Half the problem is specifying the problem very clearly, so you can write code that carefully measures whether you hit the target. games ¶ I beat inFamous twice, once with good karma and once with evil karma. It's a lot of fun. I spent more time playing this game than any I've played before. (Most video games don't seem very interesting to me.) Something interesting happened to the way my eyes scan in dreams; the effect was really intense a couple weeks ago when I was ill. In rapid eye movement dreams, and in half awake transitions into and out of sleep, my eyes jerked back and forth horizontally much more than usual in aggressive environment scanning. The effect was mildly disorienting, like watching a Michael Bays movie with whipping camera movement. Anyway, it's odd to see my brain try out very different seeing strategies at my age. vacation ¶ I think I already mentioned I'm on vacation. By that I mean I'm not working much on hobby project code this summer. And this month I've taken paid time off each Friday for three day weekends. But I've been trying to frame how I want to resume hobby code. So, what am I planning? As many folks have noted before, complex systems that work invariably derive from simpler versions. (Yes, yes, I cited a platitude to speed things up.) So I want to simplify what I've been doing before making it more complex again. To do this, I plan to remove some choices in infrastructure, so fewer degrees of freedom distract less. In part this stems from my dislike of writing systems in C. I prefer to use C++, because slightly higher level is helpful when doing hairy systems with complex memory management issues. After finishing some edge detection upgrades in old systems at work, I returned to the simulation of new designs still in progress. Trying to re-find my mental context was hard, and I was more than a little aware how complex my simulation's first draft had progressed to date. It was obvious I had made something more complex than necessary. But it took me a while to clarify my mistake. Half my mistake was using an api specified in C, with very few organizational guarantees. A C api was strongly desired by folks who want a system I'm prototyping. So I catered to wishes by first drafting a C api, but this made things harder than necessary, and now everything has too many moving parts. What should I have done instead? First, I should have started with a api in plain English, with a strong mathematical flavor: a very high level spec. And then I should have done a C++ api with as high level an api as I could specify while still matching the api with a math focus. Then after getting a prototype to work, a C api could be exposed, making the end result more complex—but only after I reached a simpler working version. While thinking about how I should have approached this task at work, I decided when I resume my programming language project—and the simulation runtime infrastructure—I should cater to as few nice end qualities as possible at first. Maybe my next update will include more detail. It's time to call it a day and wrap up this post. 19jun09
¶
twilight visibility
math teachers ¶ Sometimes I puzzle over how my sons are not as good at math as I was. Now and then I suppose the problem was my ex, who wasn't very bright. (Yes, in retrospect I wish I had held out for a woman who was either bright or good-looking—or good natured for that matter; I sold myself very cheaply.) It's tempting to pat myself on the back and tell myself I was a prodigy, but I know teachers make a difference. I think I was lucky to be gifted with good math teachers. They were available to teach math for the same reason I had rotten options after high school: there wasn't a lot else to do in Iowa back then. Today they'd all be working in high tech. For two years in high school I had Mr. Carroll, who was a very smart man—in fact, a math geek. He knew exactly what he was about at all times, and he studied you carefully as he spoke, to see how closely you were following his current line of explanation. He was as good as me at math. From what my sons report, none of their math teachers are any good. The best of them are droning robots, who parrot without concern for ideas. The worst don't even explain subject matter. My younger son is in advanced math (he placed first among several schools on a test last year) and his teacher sounds like my 7th grade math teacher. What was wrong with her? My 7th grade teacher gave the entire class an identical math test at the start of the year, and again at the end. All of our scores fell by the time the test was repeated at year's end. She harangued us for an hour, furious that we would make her look bad. Finally she looked near head-in-hands weeping at her desk. But after my 7th grade year, all my math teachers were men—very smart men, typically, who today you'd never catch in a classroom. In 8th grade we actually had a team of male teachers who taught math like it was a show choreagraphed to entertain. In my freshman high school year I had Mr. Rash for algebra, who was young, dynamic, and funny like Robin Williams, down to incredibly furry forearms. (He predicted I'd become a nuclear physicist; it was the only thing he felt was a good use of math.) What? Did I imply men might be better at teaching math? It wouldn't be politically correct to say that, now would it. What I really mean to say is this: math should be taught by folks who rank in the top several percent of their class in math talent. (If this is men now, that's not my fault.) But I suspect it's untrue today. This last year I helped my younger son with math homework every week for a few months, and I often expained how things worked, when his teacher had said nothing at all. She didn't cover examples in class; how can kids learn math from nothing but a book? grandfather ¶ I guess my talent in math comes from my mother's father. It's funny, but as I get older, I can look back and read adults now in hindsight who, as a child, I watched without seeing anything but an adult. My maternal grandfather was an interesting guy, and his sons where joke-cracking live wires. His nickname was Woody. Everyone made a point of noticing how I took after him. At the time I thought this meant I looked like him, which I did. But maybe it was more than that, since by grade school my parents expected me to solve puzzles easily. Woody worked in the local meat packing plant. (This was Iowa, remember?) I'm not sure of his job title, but he made things. When we visited my grand parents, Woody was usually in his garage workshop, tinkering away at something. One year he built his own vacation home trailer, from scratch. He was a tinker, and had perennial hobby project syndrome. His eyes were always far away, thinking about something. And when he talked to others, it was only incidentally related to what he thought about, as if he didn't expect anyone to follow what he was working on; or maybe he learned others grew bored easily. He seemed to drink a lot when he was older, trying to drown out something that hurt. I thought he was charming when I was a kid. But now I can see he was profoundly stir crazy in an environment where ambition had nowhere to go, and now it seems sad more than anything else. |
the new site explanation
The new focus of this website appears on the qi page: dialogs exploring a Lisp variant named Lathe which Wil plans to turn into a toy for unit testing purposes.
the old site explanation
The main purpose of this site is to describe
some open
software I'm writing — so that it's documented —
and to apply some code here experimentally, so I have proof of
concept, and so I can teach my kids to code in real web contexts,
using dynamic languages.
For clarity, and for my sons' sake, part of this is an experiment in literate programming. But instead of mixing code and docs in files, I plan to mix them in the pages of the site. Eventually how the site works ought to be (approximately) self describing. license What I publish here will use some open software license† minimizing my exposure to nuisances, among which I number corporate patents and open source community code forks. What's sure to annoy me? Racing ahead, using what I make to put social and/or legal roadblocks in my path. costs What's this costing me? Not much in dollars. But writing in plain language will seriously eat into my free time to code, which interests me considerably more. I'm eager to avoid seeing the cost balloon as a result of more email. (Publication of email is partly deterrent.) It might seem I'm spending energy on appearance, with nice page formats and color, etc. But this is really easy after long practice, and the clarity of the result is at least as important as the words. benefits What do I stand to get out of this? As much as I enjoy just coding for fun, it still must justify the time to me by providing value someday, by shrinking or streamlining something I do professionally, eventually. Code that's undocumented is hard to use industrially. I hope the amount I document here later opens doors for professional use, in a more comprehensive sense than normal cherry picking over the years. But that's long term. In the short term, I only mean to benefit by seeing my sons have an environment in which they can learn to code by writing software they and their friends might care about. And of course, I expect to enjoy playing with novel web site infrastructure too. attitude Though I want to have my say here, it doesn't mean I suppose you care. I'd be surprised if you did. Most folks who keep a blog hope to be read, but I expect little. Starting February 2008, I expect to write more fiction in the third person about imaginary developers who sometimes discuss ideas, games, and charades in some mix of boring technical programming chatter and slightly interesting science fiction and fantasy. (Short named characters are virtual personas.) hand images The hand images on some pages only mean to provide visual cues to reinforce perception of place. (I made several dozen of these a couple years ago in the same format, but never used them until now.) briars & thorns Thorn imagery and a briar patch metaphor both correctly convey a clue I might be prickly or socially distant toward feedback since my purpose here isn't really social, so peer pressure is moot. peers If you insist on peer pressure, here's what would make you a peer. You need minimally the following: much more than 10 years of professional C++ coding, a focus in memory managment and performance, plus experience coding Lisp and Smalltalk runtimes in assembler, C, or C++. Naturally, I'm likely to appreciate fine technical points from folks who know a lot more than I do about Scheme, Smalltalk, and Python, as long as the perspective favors implementation. If you're a big dynamic language geek or enthusiast, that's great and your interest is welcome, but I'm really trying to get stuff done. No hard feelings. I just want to keep working without frittering away much time. I've no time at all for politics or pep rallies. Just because C++ is my tool of choice to be productive today, that doesn't mean I'm wed to it, or that I want code & libraries properly styled in C++ fashion or religion, or that I seek existing tools. I just need total runtime control. competition Many software developers are competitive to the point of sociopathy. There's a good chance something about what I'm doing will stick in someone's craw because I encroach some territory, even if I don't undermine a business model with my alternative. I'm not competing, and I'm not out for your kudos, territory, money or whatever. I'm not parading my chops, or advertising or selling anything. Whatever you need to be best at — terrific, you win. Cut me some slack, I'm not in the game. identity I'm no one of consequence. This isn't one of those masked man fighting for justice things, nor is it a Dread Pirate Roberts thing. Just think of me as that one guy — yet another geeky engineer. (On pseudonyms: if a message is missing my name or briarpig, then I didn't write it.) contact david (at) briarpig (dot) com — I seldom respond to email, but it's possible I'll make an exception in your case, if you write something interesting. Questions are rarely interesting, tending to flattery and other forms of shallow antagonism. |
|