13,077 reputation
63173
bio website lshift.net
location London, United Kingdom
age 39
visits member for 3 years, 10 months
seen 10 hours ago

Delphi/Objective-C/C#/Ruby/Scala programmer by day, Lisper/Smalltalker by night.


May
14
comment Do you really have to do BDD/TDD in a test first manner?
Feel free to substitute "test" with "behaviour". I haven't seen anything to convince me that, at heart, there's much difference between TDD and BDD. Focus, maybe. But the core idea? Not so much.
Jan
18
comment Looking for Case Studies of How TDD Improved Quality and/or Speed of Development
@user1249 TDD doesn't say "write all the tests before writing any code". It says "write a single test that fails, and a single thing to make it pass; repeat as necessary". If you write all your tests first you lose the tight feedback loop between test and production code, which is one of the very reasons to use TDD in the first place.
Jan
8
comment What do you deliver in the first couple of iterations in Agile?
"Set up the delivery process" is much harder than people think.
Jan
3
comment What is the relation between clojure reducers and loop fusion
I'm not an expert here, but I think that the reducers library take the separation of concern a bit further. Clojure reducible maps to Haskell's Foldable, but as far as I can tell, the reducing function part doesn't have a direct analogue in Haskell.
Dec
24
comment In C++, how much programmer time is spent doing memory management
@gbjbaanb: I know. Isn't that what I said? When the resource-acquiring stack frame is finally pulled off the stack, C++ ensures all destructors are run. Since the resource is in use based on the lifetime of the stack frame, its lifetime is dynamically scoped.
Dec
23
comment In C++, how much programmer time is spent doing memory management
@Giorgio that's what C# people would recognise as a using statement. It's still lexical resource management. RAII is the dynamically scoped version: a resource is available while the resource-acquiring stack frame's still active. (At least, as far as I understand RAII from arguing with my C++ colleague.)
Oct
1
comment What can Haskell's type system do that Java's can't and vice versa?
Subclassing is not subtyping!
Sep
13
comment SBCL development on Windows, including CFFI
You'd be better off asking this question on an SBCL list, but having said "wrong place" it's an interesting question. Off-hand I don't see any particular difficulties: SWANK is a protocol, so you're fine there, and I didn't have major problems with SBCL on Windows (but I did nothing fancy, and it was years ago).
Sep
5
comment Finding an object on an infinite line
@JanHudec I only referred to the multiplicative factor that made navigation go left or right, since that's what the OP queried.
Sep
5
comment Finding an object on an infinite line
It's an infinite series of the form 1, -1, 1, -1... At the i-th step, the value is (-1)^i.
Jul
3
comment Why not have a High Level Language based OS? Are Low Level Languages more efficient?
Symbolics machines had automatic memory management. Smalltalk did on an Alto. That was in the 80s. A linear type system removes the necessity for GC completely. These are solved problems, if only we could remember that!
May
16
comment What is the name of a grammar which can change its tokenizer in mid parse?
To be picky, a grammar doesn't have a tokeniser. A parser has a tokeniser.
May
13
comment Modern REPL for Haskell - is anybody working on it?
Sounds great! Github is your friend!
May
8
comment Whatever happened to Pascal?
bwk's paper is very, very out of date (and was so at least 15 years ago). It's a nice bit of history, but it has no relevance to modern Pascals.
Apr
19
comment What are the most impressive tricks an IDE could pull off with the code?
I was told once at work, "Friends don't let friends program without ReSharper."
Mar
9
comment Alternative to “Passing/Broken build” indicator?
NUnit has the concept of an ignored test. That might be an alternative: they don't get run so they don't fail, but they're still reported as being ignored.
Mar
9
comment What non-theoretical, practical programming language has no reserved keywords?
Those aren't keywords, they're pseudovariables. "Pseudo" because true, false and nil are well-known values supplied by the environment and self, super and thisContext are variables you can't set but whose values change as a result of execution.
Feb
8
comment Alternative to “Passing/Broken build” indicator?
I still stand by my point: master should always be green, because it's clear and unambiguous. By all means have marker tests failing... in a feature branch. CI can keep reminding people of outstanding bugs.
Jan
23
comment success:/failure: blocks vs completion: block
Sure. You end up writing your code in continuation-passing style, which isn't terribly surprising. (Haskell has its do notation for exactly this reason: letting you write in an ostensibly direct style.)
Jan
23
comment success:/failure: blocks vs completion: block
But how else could you chain async calls?