6,336 reputation
31929
bio website marjanvenema.com
location Netherlands
age 52
visits member for 3 years, 7 months
seen 3 hours ago

Software developer since 1985. Started in Cobol, moved via Clipper/VB to Delphi. Delphi developer since 1998. Sniffing at C# and playing around with javascript and some php for websites. Coaching new employees and less experienced developers. Focused on software architecture and SOLID design. Keenly interested in user experience and usability.

Questions

When you ask a question, show your effort, provide all the details that will help someone to help you and be precise.

Answers

When you answer a question, don't just paste your code. Your answers will be much better when you explain why your code is doing what it does and how it achieves the asker's goal. It makes it a whole lot easier to follow along. As it is I am much more inclined to up-vote answers that have explanatory text about what the code is doing and why it is written as it is.

Answers that just contain links aren't likely to get an up-vote from me either

Other

Obligatory link whenever someone thinks they are improving security by imposing all sorts of rules on password composition: Password strength


Jan
8
comment Were the first assemblers written in machine code?
Have you still got all the phases? I would love to see them, and compare them against eachother. Just to get a feel for the process you went through.
Jan
8
answered Should QA be part of the development department?
Jan
1
comment How does a fresher with a clean slate turn into a good programmer?
+1 especially like your edit. Oh, and I'd forget about anonymous downvoters. In general they have long forgotten their downvote when you comment on the anonymity of it...
Jan
1
comment How does a fresher with a clean slate turn into a good programmer?
+1 Yep, having to extend less than perfect code (even your own from a couple of months back) is a good way to learn what not to do.
Jan
1
comment How does a fresher with a clean slate turn into a good programmer?
+1 for "Really good programmers rarely write clever code."
Dec
30
comment How to reply to incomplete requests from potential customers?
It's awful yes. It works because most people can't think of what they want until they see something concrete...
Dec
28
comment Struggling as a programmer. Need some advice
@JamesGuvnaJeffery: if they don't allow (any) time (at all) for learning during a project, I'd not want to work there because as a developer I would stop improving myself.
Dec
28
answered Simple issue tracker for 1-2 developers
Dec
26
revised How to treat “The field is never used” warnings?
added 60 characters in body
Dec
26
answered How to treat “The field is never used” warnings?
Dec
26
comment Is the “exposer (hack) pattern” a newly identified pattern or does it have another name?
btw I like @gnat 's answer as much as you do...
Dec
26
comment Is the “exposer (hack) pattern” a newly identified pattern or does it have another name?
@Carnotaurus: I am not sure what using an extension method entails... :-) Delphi has class helpers which allow you to bolt on code to an existing class (you can't add data members). They are not recommended (but were needed for Delphi.Net), but they are very useful where you can't use a descendant (when you are not in control of instantiation). However only one class helper (the closest in scope) is available at any time. An interceptor class (where you declare TSomeClass = class(SomeOtherUnit.TSomeClass) could achieve the same, but you have to be careful with the order of uses clauses.
Dec
26
comment Is the “exposer (hack) pattern” a newly identified pattern or does it have another name?
@Carnotaurus: I have found third party component and API implementing library vendors generally very responsive to developer requests. If by "third party API" you mean the ones actually specifying the API (the API providers) you are probably right. Reflection can't do anything for things that don't exist. However, it can get at the private members of any class. It makes it very useful for framework and library development, but is a two-edged sword as it defeats encapsulation.
Dec
26
comment Is the “exposer (hack) pattern” a newly identified pattern or does it have another name?
While it may follow the definition, I don't consider it a design pattern in the sense that in general design patterns are considered "desirable" ways of solving problems. This case seems undesirable, and only to be used if other avenues have been exhausted (like getting the authors to offer other ways of doing what you need to do). Also keep in mind the "Tell Don't Ask" principle. It is usually better to tell a class to do something than to find a way to get at its innards. While Reflection (and similar techniques) are very powerful, I am still in two minds about when it should be used.
Dec
26
answered Is the “exposer (hack) pattern” a newly identified pattern or does it have another name?
Dec
25
comment What visualization method would you recommend for event driven programs?
@SamanthaCatania: if what you are trying to do is add/link business logic flow charts to your documentation that sounds okay. Otherwise, I am unsure about what you are trying to achieve.
Dec
25
answered What visualization method would you recommend for event driven programs?
Dec
25
comment Why is there both a short-circuit OR as well as unshort-circuited variation of that operator in C#?
+1 But I'd like to add that apart from using functions to indicate success or failure (as in your example): functions with side effects should generally be avoided...
Dec
16
comment Will taking up a job in the enterpise s/w domain reduce my chances of later shifting to consumer software?
I don't get it. Clients aren't people?
Dec
14
comment Why are SQL databases still used with ORM?
@CraigJ: You do realize that ORM stands for Object Relation(al) Map(per)? ORM's were designed to bridge the gap between an Object Model and the restrictions of a Relational Model. Persistence ignorance was coined as a term to convey that using an ORM meant that you didn't have to worry about which relational database was used to persist your objects. Persisting to other storage means, like xml files was added to support the briefcase model. ORM's may have outgrown their original design intention, but that doesn't invalidate the usefulness of relational databases.