6,421 reputation
32029
bio website marjanvenema.com
location Netherlands
age 52
visits member for 3 years, 10 months
seen Jul 7 at 17:17

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
14
revised Do I have to be skilled in advanced theoretical problem solving to become a good programmer?
added 61 characters in body
Dec
14
comment Do I have to be skilled in advanced theoretical problem solving to become a good programmer?
@Dunk: yes UI design is hard and shouldn't be left to developers. But I wasn't talking about UI design, I was talking about UI implementation.
Dec
14
comment Do I have to be skilled in advanced theoretical problem solving to become a good programmer?
@SK-logic I wasn't talking about UI design. I was talking about UI implementation.
Dec
14
comment Is rotating developers on a project a good or bad idea?
@Dunk: I don't know that it would. Cross training doesn't have to go as far as making the cross trained an expert in the field that isn't directly his/her own. It only needs to go as far as to ensure that the business wouldn't immediately be in a pickle and at risk of losing clients when the field experts leave causing the development in that field to grind to a halt. Nobody is irreplaceable, but business' do run risks when important knowledge or skills are restricted to very few people. And the costs of that risk becoming a reality can be very, very high indeed.
Dec
14
comment Why do programming languages encompass so much?
True enough. And I doubt that we would actually want everything to run on .Net. Nothing like real competition to keep a company alert and responsive to its customers' needs.
Dec
14
comment Why do programming languages encompass so much?
Uh, wasn't .Net intended to do just that: allow assemblies written in a multitude of languages operate together to create an application? F#, C#, VB.Net, and a couple of others all interoperate very nicely using the .Net framework?
Dec
14
revised Do I have to be skilled in advanced theoretical problem solving to become a good programmer?
added 607 characters in body
Dec
14
answered Do I have to be skilled in advanced theoretical problem solving to become a good programmer?
Dec
14
comment Is there already a commonly known name for the 'ensure pattern'?
We tend to call it GetOrCreate. @JensG I don't think assertions are going to help here. I think the description makes it pretty clear that he wants to return a specific instance - and if it doesn't exist already - create it first. A sort of lazy instantiation, but in this case the database plays a role in it as well.
Dec
11
comment How can I write complex validation and business logic that can be reused in both direct data model changes and pending dialog changes?
Create separate validation classes that take the instance to be validated in their constructor and return or fill (a list of) errors. Have some sort of DI to get the validator instance for a given class(type) and/or other arguments needed to identify the use case. If needed, have a validator class that can contain other validators so each validator can be very specific and narrow in scope, while allowing complex validation to be built up from the simple ones. Now you have a validation framework that can be used both ends, and can even be configured differently on both ends if you want/need to.
Dec
11
comment Does Abstract Factory Pattern scale?
@Euphoric: probably a mixture of several different patterns :-)
Dec
11
comment Does Abstract Factory Pattern scale?
@Euphoric: Not necessarily. You could just have to add a factory class and register that with the abstract factory. May seem a little nitpicky, but for scaling and SRP I find adding a bit less troublesome than changing.
Dec
10
revised Design Application to “Actively” Invite Users (pretend they have privileges)
added 6 characters in body
Dec
10
comment Understanding bitmap logic
@AniketThakur: as N = 7 you only need 7 bits, the first zero moght be left padding to store it into a byte (8 bits).
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).