6,431 reputation
32029
bio website marjanvenema.com
location Netherlands
age 52
visits member for 3 years, 10 months
seen 2 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


Jul
2
awarded  Guru
Jun
28
comment Design Patterns for creating tasks
Oh and using observer would make your observer of the Entity certainly non-anemic... Your Entity class still may or may not be anemic, but the observer certainly won't. The desire not to have anemic classes is very good, but you should still not put code in a class just to make it non-anemic. The code to instantiate the Task indeed does not belong in Entity as it would introduce unwanted (and unwarranted) coupling. Any code added to Entity should be related to Entity.
Jun
28
comment Design Patterns for creating tasks
Perhaps your confusion stems from treating design patterns as code examples. A design pattern may have a code example to explain it, but it is never limited to that example. Design patterns are much more than just code examples. Design patterns are ways of talking about code and talking about general solutions to common problems. It is up to the developer to apply a design pattern to his/her specific problem by amending the explanatory example to his/her specific case.
Jun
28
comment Design Patterns for creating tasks
Whether your classes are anemic has nothing to do with using or not using Observer. Furthermore the Observer pattern is not restricted to passing along just "simple" parameters. The observed can pass along anything you need to the observer. So you could simply pass along the Entity instance that was changed and the observer can pick whatever it needs.
Jun
27
answered Design Patterns for creating tasks
Jun
20
comment Mental Models or Real-World-Metaphors for Functional Programming
@Doval: Thanks for taking the time to explain. Learned something :-)
Jun
18
comment Mental Models or Real-World-Metaphors for Functional Programming
Curious: can I infer from your example that in Haskell "things flow left"? Meaning that execution starts at the right end of the statement and results of the right most function are input for the one to its left? That would present an interesting challenge for someone used to OO fluid coding where each method of a class returns the instance it worked on as its result (including its now changed state), which means that "things flow right". Meaning that in fluid coding your examples would become smallest = SomeInstance.Sort.Head and smallestEven = SomeInstance.FilterEven.Sort.Head.
Jun
15
comment Is method overriding always a violation of Liskov Substitution Principle?
@Phoshi: Ah that's what you were getting at. Yes, indeed, I just responded to the "is overriding always a violation of LSP". And for me overriding is linked to classes... I trust you upvoted DocBrown's answer then :)
Jun
13
comment Simplifying data search using .NET
Use SOLR?
Jun
12
comment Is it customary for software companies to forbid code authors from taking credit for their work? do code authors have a say?
Would you like to be called/mailed by your company's customers to provide support even after you have left that company? And don't think they wouldn't be able to contact you if the source doesn't contain an (e-mail) address or other contact information. I wouldn't like it. And therefore I'd be more than happy to remove my name if and when my employer decided to provide the source with their software.
Jun
12
revised Is method overriding always a violation of Liskov Substitution Principle?
added 383 characters in body
Jun
12
comment Is method overriding always a violation of Liskov Substitution Principle?
@Phoshi: Yes, so? That doesn't preclude cases where you do have base behavior and descendants can add to it as necessary. After all a class is a type. Calculations in payment and salary programs for example. The ancestor will do the basic calculations, descendants may add extra's, effect different values for parts of the calculation depending on whatever. Of course in any salary program the calculations may well be an amalgamation of Strategy patterns and each may in effect have its own inheritance hierarchy to deal with all variables and variations.
Jun
12
comment Is method overriding always a violation of Liskov Substitution Principle?
@jk. How? Augmented behavior in payment programs could be a getting a value from somewhere for the calculation of rebates, an additional rebate, ... whatever ... all variations on calculating (base) rebates from the ancestor, all still within SRP.
Jun
12
answered Is method overriding always a violation of Liskov Substitution Principle?
Jun
9
comment Access Token Verification
@DecafCoder: no re-login after a restart, regardless of the reason, sounds like a security risk? And if that is what you are after then the token becomes more of an API key than an access token. Access tokens by their nature need to have a limited life time? You may also want to check out Information Security.
Jun
9
comment Access Token Verification
@miraculixx: I am no hashing expert, but wouldn't hashing the (referring URL, source IP and day of the year) limit the validity of the token to a single session on a single day?
Jun
8
comment Access Token Verification
Why would it need to store the token in a database? Wouldn't it be perfectly acceptable to store it in memory and accepts that if the server crashes or is restarted all tokens become invalid. As sessions don't usually survive a restart why should tokens?
Jun
8
comment Why Beta versions have so many bugs?
@Eugene: wouldn't it be a waste of time to develop a feature, ensure it is 100% bug-free, put it up for beta only to learn that nobody really cares about the feature?
Jun
6
comment is it valid that a state machine can have more than one possible state for some transition?
Perhaps only one type of output, but an item can have one of several states following the current one? Just think of have an issue "in progress". You may decide not to work on it anymore and its state returns to "open". And when you do finish working on it, it's state may become "fixed", or "working as designed", or "cannot reproduce" or... How about the output of working on an issue, given that it can transition to all these states? It may be documentation, a working feature [+ doc], or nothing at all? How would you deal with a "working on an issue" activity to satisfy the one output rule?
Jun
5
comment Should I create separate work and personal GitHub accounts?
@AlmostSurely: Good on you! My concern isn't so much software patents (they seem mostly being (ab)used to prevent competitors from developing similar user interfaces) as it is the research and effort that went into developing a software application. Protecting the knowledge gained and the effort expended from companies wanting to take a shortcut towards developing a competitive product is best served by keeping the source well away from their inquisitive eyes...