24,710 reputation
14992
bio website thehungersite.com
location United Kingdom
age 46
visits member for 3 years, 11 months
seen 9 hours ago
experienced software engineer with many years in the industry, mostly c++ for large-scale, high-reliability systems.

1d
comment Concurrent collections, should read methods allow multiple threads at one time?
@MikeNakis in C# - try the ReaderWriterLockSlim class that is in .net framework since 2.0 IIRC.
2d
comment Is there some way to mark which branch is the latest in subversion?
You can script modification of the SVN urls, create new jo9bs based on a set of templates, or look into plugins like FeatureBranchNotifier but I think that only works with Mercurial currently.
2d
comment Does code generation increase the code quality?
I disagree that the code generator should be flexible. It needs to be targeted - do one thing well, not lots of things. It should take a small, well defined input and write a chunk of code for you. When it starts to be the program, its headed for failure.
2d
comment Does code generation increase the code quality?
Ooh, +1 or -1.... on one hand code generation is very useful to remove boringly repetitive code where you have a definition that is simply expanded into code, but then you're right that it gets overused into all manner of 'time saving' complexity that ends up an an anti-pattern in itself.
2d
comment Checked vs Unchecked vs No Exception… A best practice of contrary beliefs
I'd rather my heart pacemaker was written in a language that did not have exceptions at all, and all lines of code handled errors through return codes. When you throw an exception you are saying"its all gone wrong" and the only safe way to continue processing is to stop and restart. A program that so easily ends up in an invalid state is not something you want for critical software (and Java explicitly disallows its use for critical software in the EULA)
2d
comment Development Time: sql in UI code vs domain model with datamapper
If you want faster mapping of SQL queries, use an ORM like Entity Framework. Don't worry about your speed, learn to be good and then get a new job where professionals work.
Mar
25
comment How would a one man team benefit from a continous integration setup?
Try jenkins - it is really easy to set up, keep up to date, and configure. If you have scripts that do your deployment (surely you do...) then it can checkout and run them for you. The big deal about doing this, is that it forces you to make your deployments repeatable. Can you revert a deployment to production without a load of manual steps? If your process was automatic then you would be able to quite easily. Things like this are the difference between an amateur and a professional.
Mar
25
comment How would a one man team benefit from a continous integration setup?
there may not be a compile step, but there's more you can do in a build phase such as run tests, analysis and/or document generation.
Mar
24
comment Better to write your .NET library with COM limitations in mind, or separate your .NET library from Interop?
@MasonWheeler you mean like that legacy .NET stuff, aren't we supposed to be writing Universal Apps with the WinRT API nowadays? What I think: everything is legacy.
Mar
24
comment Better to write your .NET library with COM limitations in mind, or separate your .NET library from Interop?
+1. Whilst I love the beauty of black buttons on a black box practicalities are significantly more important.
Mar
24
comment Abstracting the data in a relational database.
The best way is to stick with the native access for DBs - SQL queries. Everything else is just trying to force a square hole to be round.
Mar
24
comment How “viral” is the Affero GPL?
now if only the AGPL made clear what is and is not a derived work, like mongodb guys have done, then maybe we'd see more adoption of AGPL as it'd replace GPL for people who use a service or library without having to 'taint' their own work.
Mar
24
comment How do tools facilitate writing functional specifications?
Quite true, but then we found a set of post-it notes were better than some really expensive requirements management tools we used :) I typically use a requirement 'bug' as a source that other implementation 'bugs' are associated with so they can be traced without directly being part of the workflow. Some tools are better than others in their reporting capabilities though, but if you cant afford the expensive tool then this is better than not tracing requirements at all. (and even if you can afford them, its still often better)
Mar
24
comment How do tools facilitate writing functional specifications?
My preference after having used DOORS and another, significantly worse one, is to put requirements in a bug tracker - these are very much geared to linking code, history and releases to 'bugs', so using a new type of bug called requirement is the easiest and most user-friendly way of handling them and getting really good traceability.
Mar
23
comment Getting to know my way around a database with hundreds of tables
Documentation? Its no different to any other large system. You just have to get in there and understand it, bit by bit, until you're an expert too.
Mar
23
comment how can i make a program written in c++ with qt to text and graphic mode?
Usually they're different executables, the GUI one wrapping either the command line app or a shared library that does the work.
Mar
17
comment Two Database Architecture : Operational and Historical
@Gudradain hence you have 2 sprocs for these 2 use-cases. They're typically not 'code', its more like relocating the SQL for the queries from client code to DB, instead of calling "select x" you call "exec sproc x". Effectively no difference in maintenance, especially in the context of your original question. I think, at this point, you need to try it to get a good understanding of the concept and use.
Mar
17
comment Two Database Architecture : Operational and Historical
@Gudradain yes it does as "many different applications" are happily using the same tables and data. Think of a sproc as a different form of table rather than client logic pasted into the DB layer. You can still call them via your ORM, and if you really want many different applications to use them, you use schemas to isolate them - making your DB application-specific which is really good for security and maintenance (as 1 app can then change its data API without affecting other applications). Sprocs are best practice, client code might forget to add "is deleted", sproc ensures it.
Mar
16
comment Evaluating productivity differences in different work stations
We literally spend 30 seconds to a minute just walking to the toilet, compared to at home where the toilet is right behind me - first world problems dude, I feel your pain, having to get up and walk for a minute to go for a piss.
Mar
16
comment Two Database Architecture : Operational and Historical
Limitations are good, its like saying "local variables in objects limit me from using globals". Restricting your data access surface means its more secure and you have to design better. These are good things. The links: views are limiting, they're not designed to be replacement tables. A sproc you can't join on means you need a different sproc. Writing your SQL in sprocs is no worse than writing them in client-side code, you maintain that perfectly well so you can maintain your sproc code just as easily.