141 reputation
6
bio website none
location West Allis, WI
age 36
visits member for 2 years, 6 months
seen 18 hours ago

Martin started writing programs in GW Basic on a Tandy 1000 TL/2 in 8th grade, but did not really learn anything about software design until after highschool when working in LP-C on the LP-Mud Nightmare. He spent too many years writing software just for fun on the side while working retail to pay the bills.

Martin picked up professional experience working as a private contractor for Nocturnal Entertainment Australia on the Game Boy Advance title Ultimate Arcade Games. With a shiped title under his belt he attempted to move into a full time position in the industry but ultimately fell short. Disappointed, Martin decided to return to school to flesh out his skill set. In the process he discovered he enjoyed the problem solving and design of complex systems more than the game development. He graduated at(or nearly so) the top of his class at University of Wisconsin-Milwaukee with a degree in Computer Engineering.

Today he works on the Enterprise Management Technologies team at Quad/Graphics.


Apr
8
revised How To Invoke A Method When It's Class is Accessed (Any Method) - “OnClassEnter”
updated in light of only one I2CDevice instance existing in the program.
Apr
8
comment How To Invoke A Method When It's Class is Accessed (Any Method) - “OnClassEnter”
I would not pass this class into each class (you would want/need one wrapper deviceconfiguration. The wrapper as an abstract base for each of your device classes would work, or the wrapper as a private member of one of your device classes.I'll add an example.
Apr
8
revised How To Invoke A Method When It's Class is Accessed (Any Method) - “OnClassEnter”
updated in light of only one I2CDevice instance existing in the program.
Apr
8
comment How To Invoke A Method When It's Class is Accessed (Any Method) - “OnClassEnter”
@GisMofx I misread/misunderstood part of your original post. Namely that you have one instance of I2CDevice. In that case, thw wrapper should not create its own or manage the life, but it should also be passed into the constructor. How were you originally planning to pass ic2bus to your Device1, Device2 classes?
Apr
8
awarded  Editor
Apr
8
revised How To Invoke A Method When It's Class is Accessed (Any Method) - “OnClassEnter”
added example wrapper
Apr
8
answered How To Invoke A Method When It's Class is Accessed (Any Method) - “OnClassEnter”
Apr
8
comment How To Invoke A Method When It's Class is Accessed (Any Method) - “OnClassEnter”
if you are returning function(device) should make that T With(DeviceConfig config, Func<Device, T> function)...
Apr
8
comment How To Invoke A Method When It's Class is Accessed (Any Method) - “OnClassEnter”
You might want to look into Aspects. Also, have you considered writing a wrapper for I2CDevice, and using that in your classes instead. The wrapper would take your configuration as constructor parameter. For each of the I2CDevice methods, the wrapper has its own version which applies its configuration before calling the I2CDevice version.
Mar
7
comment Can a system be 100% Data Driven?
@JeremyStein beat me to it. I was going to say my data was stored in Subversion, and changes to my 'configuration' are applied through the continuous integration system, and other deployment processes.
Feb
25
comment How to address the concerns of the software architect but still maintain collective code ownership?
@Gangnus: I agree they are not enough. Here we minimally should also have unit tests and some level of automated integration testing, and long term probably re-architecting to reduce/remove the interdependency. I read your previous comments not as 'worthwhile, but not enough on its own', but as 'Not enough, so no point'
Feb
25
comment How to address the concerns of the software architect but still maintain collective code ownership?
@Gangnus: Even with the worst architected project, code reviews can only help move it in the right direction. If the reviewers are chosen randomly a given developer may not be the ideal person to catch a particular problem, but over time, all developers would become more familiar with all aspects of the project and become better at identifying problems. Not an immediate fix, but with large tangled messes there usually are none. Also, how do you carefully choose reviewers? If you don't know the problems a change may cause in the first place, how do you pick people to look for those problems?
Nov
14
comment Is there any “real” reason multiple inheritance is hated?
At what point could a compiler ever assume that variables of the same name from different parent classes are safe to combine? What guarantee do you have that caninus.diet and pet.diet actually serve the same purpose? What would you do with function/methods with the same name?
Sep
14
awarded  Custodian
Sep
14
reviewed Approve suggested edit on Is over-engineering a warning sign?
Sep
14
comment Why can't SQL return joined tables in a nested format?
@RBarryYoung you should write that up as an answer.
Sep
14
comment Why can't SQL return joined tables in a nested format?
@MarkJ you should write that up as an answer.
Sep
13
comment Why can't SQL return joined tables in a nested format?
This seems to be the closest solution (in SQL) to what the OP is attempting to do. He will potentially still have to do client side processing to break the EmailAddresses and PhoneNumbers results into lists.
Sep
13
answered Is over-engineering a warning sign?
Sep
5
comment How can designing for inheritance cause extra cost?
let us continue this discussion in chat