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


Dec
4
comment What is the real responsibility of a class?
"...because it depends so much on how you formulate a sentence." Yay! Oh and I do love your banking example. Never knew that all the way back in the eighties I was already taught functional programming :) (data centric design and time-independent storage where balances etc. are computable and should not be stored, and someone's address should not be changed, but stored as a new fact)...
Dec
4
comment Considerations before rewriting a software component from scratch?
How To Survive a Ground-Up Rewrite Without Losing Your Sanity
Dec
1
comment How to unit test a web client?
@Eru: you can by stubbing out the webservice. The client needs to be tested to ensure that it properly passes the necessary information and reacts appropriately to the responses it receives. The stub class taking the role of the webservices can and should be as simple as possible, preferably without any further dependencies, as it sole goal is to support the testing of the client. In other words: where you w/should normally never rely on hard coded values, it is ok to do so in a test stub.
Dec
1
comment Thoughts on refactoring a generic DAO
Scott Ambler's paper on mapping objects is a great read for anyone trying to design a generic data access layer. As is his paper The Design of a Robust Persistence Framework for Relational Databases Available as a pdf from that page.
Dec
1
comment Thoughts on refactoring a generic DAO
When you see a switch/case statement, think "opportunity for polymorphism". An enum on table names will not scale very well. This is an opportunity for a register where you register the tables and any specific classes/closures that need to be called for that table. Also try to keep the registration to a minimum. You should be able to handle most tables in a very generic manner and would benefit greatly from using run time type information (Reflection, RTTI or ... in other languages, don't know Java so don't know whether it has this or what it is called).
Nov
20
comment Would using rainbow tables to detect weak user passwords feasible?
@Mike: obligatory link whenever someone mentions password restrictions: Password Strength
Nov
20
comment What does Dependency Injection mean by saying it can inject on runtime?
@KirkWoll: You can reap many benefits of DI without going with a full-blown DI framework/container which brings its own dependency into the picture. A simple factory and/or builder pattern will do nicely.
Nov
15
comment How to configure these REST API Resources
@Thijs Hmm, yes, I didn't go into any other uri's OP's application could support. URI's shouldn't be created just because they are possible or might be needed. They should serve a real business need. For example /users/{user_id}/reservations, could serve the needs of a customer service rep needing to get the reservations of someone they are talking to on the phone. If there is such a need, consider creating that URI, but also consider whether the business need is already served in another way (ie general search). I see no point in creating additional URI's just for the sake of purity.
Nov
11
comment How to identify potential for becoming a programmer
Hmm, don't think so, they were not in it for the research... If you send me an e-mail, I'll be happy to give you more details about the company involved and the process we were put through (as far as I can remember of course). E-mail is my first name (marjan) at my site (see profile).
Nov
10
comment How to identify potential for becoming a programmer
Yes it can. See my comments on @BrianDHall's answer.
Nov
10
comment How to identify potential for becoming a programmer
When hired you were put through a 2-3 month self-paced intense training course. This period was basically used as additional screening of the initial test results. People fell by the wayside every week (during the probation period where you can end employment without notice). But the ones that remained were generally very successful as developers and in their further careers. And the ones that remained included people from all sorts of backgrounds as well. Made for interesting conversations during lunch breaks :-)
Nov
10
comment How to identify potential for becoming a programmer
Back in 1985 the largest software company in the Netherlands made it a point to hire inexperienced people from all backgrounds and train them. Everybody had to do an initial test. The standard IQ stuff, but in addition to that you had to create a flow chart using a deck of cards with the symbols and "statements" in them. Can't remember the problem for which you had to create the chart, but I imagine it was general enough. I had colleagues from all walks of life/university (people trained as philosophers, medical doctors, psychologist, historians, technicians, theoretical physicists etc)
Nov
9
comment Is there a difference between iterable and enumerable?
D'oh, ya, I'd say so. I got my chicken and egg the wrong way round :-)
Nov
9
comment Is there a difference between iterable and enumerable?
+1 why do you mention enums though? The enum as a structure would be ortoghonal to enumarability? Though I guess you could say that the nature of an enum would be "giving each constant in a set an ordinal number, one by one"... :)
Nov
6
comment How can I tell if I am overusing multi-threading?
OT: I love your avatar. Makes me smile.
Nov
5
comment Should you always pass the bare minimum data needed into a function
@BenLee: probably not, at least not without a face-to-face over drinks :-)
Nov
5
comment Should you always pass the bare minimum data needed into a function
@BenLee: The system should always be independent, regardless of its complexity. It has nothing to do with over-engineering and everything to do with segregation of responsibilities. No matter how simple the security/permissions system, it is always a combination of user plus context and therefore should not be part of the user class.
Nov
5
comment Should you always pass the bare minimum data needed into a function
@EamonNerbonne: I never said that there should be more than just a distinction between admins and others, just that it shouldn't be in the user class as a user class should not be responsible for permissions.
Nov
5
comment Should you always pass the bare minimum data needed into a function
@EamonNerbonne: Oh, you might be interested in the question that Glen posted as a result of my comment (which was repeated under his answer): programmers.stackexchange.com/questions/216443/…
Nov
5
comment Should you always pass the bare minimum data needed into a function
@EamonNerbonne: Cargo cultish? Really? Having proper separation of reponsibilities will always aid in keeping things clean and even facilitate the refactorings needed as a result of KISS and YAGNI. Also, there is a major difference between YAGNI and knowing something is in the pipeline but ignoring it because it isn't here yet...