6,531 reputation
32129
bio website softwareonastring.com
location Netherlands
age 52
visits member for 4 years, 2 months
seen Nov 22 at 18:59

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
9
comment Split skilled Scrum team
Let's hope he's agile in fixing it...
Dec
6
comment Will loop constructs become obsolete?
Out of curiosity: how do these languages/constructs process two parallel collections/array, especially where the "index" of a member in one dictates the position in the other? Example: two arrays that I want to process matching elements on their index in the array - iow arrayA[i] and arrayB[i] should be processed together. For each over either array is not going to cut it as I would have to maintain a current index myself to access the other array. Am I simply missing a construct or data structure that is available for this in more functional languages?
Dec
6
comment Greek philosophers, stone tablets and dumb slaves problem
By the way: you really think that in ancient Greece there was no concept of time? Come off it please. Time as a concept is far more ancient than even ancient Greece.
Dec
6
comment Greek philosophers, stone tablets and dumb slaves problem
I think dumb in this case may mean "unable to speak" (as in deaf and dumb) and not have anything to do with their level of intelligence? Of course that still means that in this scenario you cannot rely on the slaves to report something in another way than carrying a (written) message or some other token back to the sender.
Dec
6
comment Should I write an interface API before an implementation?
+1 Writing against interfaces or abstract classes is a good way to get the organisation right. For API's this is especially important as an API is the part that "gets out" to your clients. Did you see How to Design a Good API & Why it Matters? You are very much in line with it :-)
Dec
6
comment Should I write an interface API before an implementation?
@DanPantry: Wrapping third party libraries isn't a YAGNI violation, but a much needed protection against "third party library infestation of your own code". It is not just about being able to swap out a library, but as MetaFight also says a defense against changes in newer versions of the library which would otherwise require changes throughout your own code. By wrapping the library (and especially its specific types: classes, enums, structs etc), you insulate your own code and have a single point to change when the library changes (for whatever reason).
Dec
6
comment Should I write an interface API before an implementation?
Yes, and program to the interfaces (or abstract classes for that matter) before you implement them. It helps getting the message flow from client to server and vice versa "right" before being bogged down (and invested in) implementations. Very good slide show on the matter: How to Design a Good API & Why it Matters
Dec
5
comment is using a PUT with side affects acceptable (REST)
Yep, idempotency is about the state of the resource being put, not about any other server/service state that is affected by the act of the PUT.
Dec
5
comment is using a PUT with side affects acceptable (REST)
No side effects on the resource being put, but any number of side effects on other stuff (counters, logging, audit traces, ...) are perfectly acceptable.
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
14
answered How to configure these REST API Resources
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.