January 2018

S M T W T F S
  123456
78910111213
14151617181920
21222324252627
28293031   

Style Credit

Expand Cut Tags

No cut tags

March 29th, 2007

pozorvlak: (Default)
Thursday, March 29th, 2007 12:10 pm
Friends! I am returned from the 85th Peripatetic Seminar on Sheaves and Logic, which was held in balmy Nice. Well, the second day was held in balmy Nice - the first day was held in wet and slightly cold Nice. But we were inside talking about higher category theory, so that wasn't too much of a problem.

My talk, internally, felt like a disaster - the guy on immediately before me said a lot of the stuff I was going to say (although motivated by general 2-categorical concerns, rather than the ad-hoc "well, it kinda seems to work" approach I was taking), and this put me off-balance rather. He didn't state the theorem I was presenting, which still seems to be new, but there's a deeper way of understanding the definition I'd come up with ad-hoc. I could have taken advantage of this if I'd kept calmer, but I didn't. Gah. The doubly annoying thing is that I'd seen the 2-categorical stuff before and not understood it - maybe having re-invented that particular wheel will give me greater understanding in future. Anyway, I babbled, dropped things, forgot what I was saying, and generally didn't perform at my best. But people seemed to grasp the take-home message, so I guess it could have been worse. Some reviews:

"You need more stage presence. Put a bit more Shatner into your performance."
"You didn't make the usual graduate student mistake of preparing everything in far too much detail, going over the first two pages of notes slowly and rushing at the end. You've just got to have the confidence to let the words flow"
"Did you write everything out in detail? Because if not, you should consider doing that. Put everything on slides, so you don't get lost."

In fact, I did write everything out in detail, and it came to under two pages, but I kept getting lost on the page, largely due to nerves. My tiny handwriting doesn't help here. I think the thing to take from the last two comments (which are, as you can see, contradictory, and which came from equally good speakers) is "find out what works for you". What I'm doing now (blackboard + notes) doesn't, it seems.

BTW, [livejournal.com profile] michiexile, here's my current understanding of the relationship between operads and monads:

Never mind the width, feel the quality! )
pozorvlak: (Default)
Thursday, March 29th, 2007 03:19 pm
chromatic, in a conversation about domain-specific languages in Perl 6, put something I've been trying to say for a while into the correct words that would never quite come for me.
I can decipher and fix bad Ruby code, for example, because I know the underlying language.

You know Ruby's syntax maybe, but who says you know the domain of the business problem the code attempts to solve?

I maintain that that is much more important than syntax--and if you have undisciplined, barely-competent monkeys who cannot or will not write maintainable code, then your biggest risk is not that they might use powerful language features to do bad things that are hard to unravel.

Your biggest risk is that they will do anything. It doesn't matter what they do, if they have access to your source code. They may never know about symbol tables or run-time code evaluation or method aliasing or macros or code generation or monkey patching, but you can be sure that they'll pull a stupid trick such as writing files and reading them in line by line because they don't know how to use arrays.

They're barely competent! They're undisciplined! They're monkeys! Want to fix your coding problems? Start by getting rid of monkeys, not by complaining about powerful tools that competent developers might be able to use productively.
From what I've seen, all the safety features in the world will not prevent monkeys from shooting themselves and others in the foot. Paw. Whatever. Whereas good, disciplined programmers will be able to get great mileage out of supposedly dangerous features, by using them correctly (note that "using them correctly" includes not using them in cases where it's not a good idea). I might, of course, be wrong, but this has been my experience thus far, and this is why I'm finding it such a big adjustment to come to a language community that seems to believe the opposite.

[Remember that crack I made a while ago about how, in the limit case, the "guarantees over expressivity" philosophy would lead to preferring guaranteed termination over Turing-completeness? It seems someone actually does believe that. Disclaimer: I've only skimmed the paper.]

By the way, I came across chromatic's post from Piers Cawley's post DSLs, Fluent Interfaces, and how to tell the difference, which says something I've long suspected: that this whole (embedded) DSL business is mostly just a buzzword slapped on a lot of fairly straightforward and common practices.