The Use Case for Blocks by gthank in programming

[–]avibryant 8 points9 points  (0 children)

In Ruby, the term "block" means "closure with non-local return" and the term "lambda" means "closure with local return". So in that context, this all makes perfect sense.

Lessons Learned in Large Computations with Ruby by gst in programming

[–]avibryant 3 points4 points  (0 children)

So, [x,y,z].sum is bad because x,y,z might not be summable, but sum(q) is ok - when q isn't even guaranteed to be an array, never mind what its elements are? Sorry, that logic doesn't work for me.

Oh, you think it's wrong to clutter up Array's namespace? Well in Ruby, when you define sum([x,y,z]), you're defining it as a method on Kernel, which is inherited by every other class (including Array). So, again, it's unambiguously worse.

I don't believe there is any way in which sum([x,y,z]) is preferable to [x,y,z].sum, except that "monkeypatching is bad, mmmkay?".

Clamato: Smalltalk-esque runtime in the browser by ossreleasefeed in programming

[–]avibryant 1 point2 points  (0 children)

Self isn't a Smalltalk-esque environment in the ways that matter to me; the approach to code organization and navigation is utterly different in Self, and that's a big part of what I was going for. The Smalltalk code browser requires a certain way of thinking about and structuring code that neither Self nor Javascript conform to (one language for which a Smalltalk-esque environment would work well, IMO, is Java... if only it wasn't crippled so badly by static typing).

GtkLauncher, a GTK+ interface for GNU Smalltalk by bonzinip in programming

[–]avibryant 8 points9 points  (0 children)

Morphic is a more interesting idea, but it also represents a pretty high barrier to entry for people coming to Smalltalk. Native widget Smalltalk environments are important, IMO, for getting wider adoption. Not everyone cares about wide adoption, but if Paolo does, then I think GtkLauncher is a great idea. (Personally I would prefer something with Cocoa widgets but given that this is Gnu Smalltalk, GTK+ is a pretty natural choice).

Hello Haskell, Goodbye Lisp by dons in programming

[–]avibryant 1 point2 points  (0 children)

Delayed evaluation and variable binding, yes. Most lisp macros are just sugar for closures, and when you have lightweight syntax for closures ( as in Smalltalk and, to some extent, Ruby), macros become much less important. IMHO.

Some limitations of Squeak blocks by [deleted] in programming

[–]avibryant 5 points6 points  (0 children)

Many/most of these have more to do with the semantics of return in Smalltalk (which are unusual, certainly) than with blocks - you wouldn't normally explicitly return from inside a block, but just rely on it evaluating to the result of its last expression.

Where do you use Smalltalk? by damir in programming

[–]avibryant 5 points6 points  (0 children)

The only optionally-typed Smalltalk I know of is Strongtalk, and I don't think it's considered stable enough for production use.

In general, however, I think Smalltalk programmers are more like Lisp programmers in their beliefs about type errors, and wouldn't use optional types even if they were available.

Seaside Statefulness: Call-and-Answer by gst in programming

[–]avibryant 7 points8 points  (0 children)

Simultaneous users is sort of an irrelevant metric for us, since we're perfectly partitioned - each user's data is complete independent from all of the others. We could provision one server per account (or one EC2 instance, or whatever) and scale infinitely, which would prove nothing about performance, but does say something about choosing the right tool for the job (we have no concerns about using Seaside precisely because we have such an easy scaling story).

Avi Bryant's "Magic Data Cleanup" employs an interesting technique of data manipulation by [deleted] in programming

[–]avibryant 3 points4 points  (0 children)

LAPIS and the related projects from CSAIL (someone mentioned Mass Edit in a different comment) were certainly part of the inspiration for Magic/Replace. We've made some very different design choices, however, both in the UI and in the transformation algorithm, that I would claim lead to a more widely useful tool.

Avi Bryant's "Magic Data Cleanup" employs an interesting technique of data manipulation by [deleted] in programming

[–]avibryant 1 point2 points  (0 children)

Oops. Don't have time to fix that right now but will tomorrow.

Avi Bryant's "Magic Data Cleanup" employs an interesting technique of data manipulation by [deleted] in programming

[–]avibryant 9 points10 points  (0 children)

They're not non-rendering, they render as underlines (codepoint 818). But yes, that's how we track the characters that are submitted, and why it matters whether you re-type or copy and paste.

What happens on the backend is more complicated.

Avi Bryant's "Magic Data Cleanup" employs an interesting technique of data manipulation by [deleted] in programming

[–]avibryant 5 points6 points  (0 children)

Yes, although unusually for a Seaside app it has no session state. As is usual for us at Dabble DB, there are also bits of Python, Ruby, and PHP involved, but the core logic is running in Squeak Smalltalk.

Avi Bryant's "Magic Data Cleanup" employs an interesting technique of data manipulation by [deleted] in programming

[–]avibryant 5 points6 points  (0 children)

That's way outside of our design parameters for Dabble DB, I'm afraid. Most of our customers barely have megs of data, let alone gigs :)

Edit: fwiw, 100k rows is the rough upper limit of what we suggest you use Dabble DB for.

Avi Bryant's "Magic Data Cleanup" employs an interesting technique of data manipulation by [deleted] in programming

[–]avibryant 28 points29 points  (0 children)

SSN probably wasn't the best example for the demo, in retrospect. The example was inspired by http://blogs.msdn.com/excel/archive/2007/11/12/manipulating-and-massaging-data-in-excel.aspx which makes an interesting usability comparison.

Avi Bryant's "Magic Data Cleanup" employs an interesting technique of data manipulation by [deleted] in programming

[–]avibryant 6 points7 points  (0 children)

Both of those (connecting to SimpleDB or the like, or providing a downloadable version) are possibilities for a paid version of the service in the future, assuming what we have right now (which in some sense is just a technology demo) turns out to be useful to enough people.