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

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


Sep
30
comment Advantages of object-oriented programming
"Object-oriented programming is an exceptionally bad idea which could only have originated in California." -- Edsger Dijkstra <-- do you think he said that after Alan Kay's OOPSLA 1997 speech? (youtube.com/watch?v=s7ROTJKkhuI)
Sep
29
comment What hat should a programmer not wear?
Regarding point 2, there's at least one company who has as a founding principle that the person writing the code should be talking directly to the customer: disintermediation has its advantages.
Sep
29
comment Do libraries and frameworks swing more on the GPL or MIT side?
I'm not trying to scare anyone away from anything. Yes, I prefer MIT, because I am happy for you to make money with things I give away for free. However, if you do choose GPL, you should know the knock-on effects of the licence. It doesn't play nice with other open source licences, and it has surprising properties for image-based systems, as described above.
Sep
29
comment Do libraries and frameworks swing more on the GPL or MIT side?
Thanks for pointing out the flip side of the MIT licence. Yes, if you want to attach conditions to what you give away, then yes, GPL might well be what you want.
Sep
28
comment How to reduce the number of bugs when coding?
And if you're so sure that condition X will never happen... use an assert to make sure that when condition X happens, you'll know about it (through an exception, or logging, or whatever).
Sep
28
awarded  Nice Answer
Sep
28
answered Do libraries and frameworks swing more on the GPL or MIT side?
Sep
28
comment Are long functions acceptable if they have internal structure?
Two possible reasons: cluttering the namespace, and what I'll call "lexical proximity". These might be good or bad reasons, depending on your language.
Sep
28
comment Are long functions acceptable if they have internal structure?
Unless you're not writing in an OOPL, in which case maybe not :)
Sep
28
answered What would be a few ideas/concepts from programming that I can have on paper and hang on a wall as art?
Sep
27
comment Does OOP fulfill the promise of code reuse? What alternatives are there to achieve code reuse?
But it's a duplicate: programmers.stackexchange.com/questions/1059
Sep
27
comment Why are there so many programming languages? Why are new languages still being made?
What's interesting about Erlang is that it's a "clean room reinvention" of the Actor model. When Armstrong and friends developed Erlang they didn't know about Hewitt et al's work on the Actor model!
Sep
27
comment What natural language has the advantage when it comes to programming?
Apparently Smalltalk's syntax is even closer to Turkish than it is to English: smalltalk.gnu.org/blog/zuluuuuuu/smalltalk-and-turkish
Sep
27
answered What programming language and framework has best support for agile web development?
Sep
26
answered What natural language has the advantage when it comes to programming?
Sep
24
comment What syntax element do you hate most in a programming language you use frequently?
@greyfade: Delphi gets around the multiple value issue by simply allowing multiple indices in the case: case Foo of 1,3: Result := 'odd'; 2,4: Result := 'even' end;.
Sep
24
comment What security practices should you be aware of when writing software?
But the solution's so easy: use a language that doesn't allow this. (That's what makes this exploit so tragic.)
Sep
24
comment Am I a bad programmer, or does everyone have this feeling?
This came up in my martial arts class the other day: it's precisely when you feel like you're never going to get it that you're probably learning the fastest.
Sep
24
comment Does open source licensing my code limit me later?
+1 especially for showing how to handle contributions from other authors.
Sep
24
comment Killer semi-unique programming language features
Delphi extended its record syntax to support unions: in_addr = record case integer of 0: (S_un_b: SunB); 1: (S_un_w: SunW); 2: (S_addr: u_long); end;