Technical example of modeling a domain with OOD?

Considering favoring composition over inheritance and looking at various design patterns there are multiple approaches to modeling a domain. Say you have some Entities which are very similar in some respects, yet differ widely when it comes to technical implementations. To try portray the scenario here is the classic car example.               (Vehicles)     Car     Truck     Van      From a user perspective, they are all pretty much the same (all vehicles). From a **DDD** perspective, car, truck, van all share certain common state (number of tires, engine, ...) and certain behaviors (steering, changing speed, ...). However, they also have various state and behavior that is unique such as the Truck's bed, the van's internal storage, or the cars 5 seats. As time progresses there will be a fair amount of change. Validation would be different for certain things, and similar for others. Change speed, steer, etc. are similar, yet pull trailer is optional and even that differs between e.g. the Van and Truck. How would you design this to cope with change, yet remain DRY and adhering to the **DDD** mindset? Please explain how you would go about it (pseudo code?) and mention any design patterns or strategies you would try implement to model this (simple, yet dynamic) domain and which OO principles are being applied etc.


Understanding Tarjan's Bridge-finding algorithm

Tarjan's algorithm for finding bridges in a graph is found here: http://en.wikipedia.org/wiki/Bridge_(graph_theory)#Tarjan.27s_Bridge- finding_algorithm. However, I don't understand the condition for checking if an edge is a bridge. I get that L(w) = w is a necessary condition, but I think that the condition for H(w) < w + ND(w) is redundant, since you're always guaranteed for that to be true (when doing the pre-order traversal, all the vertices in the subtree of w are visited consecutively and are numbered consecutively, and H(W) has to be in the subtree of w, making H(W) < w + ND(W) always true). So I'm curious if the H(W) < w + ND(W) condition is even necessary, and if so, can you provide an example case where it is needed?


acceptance test driven development in c++

Was put on hold at stack overflow: hopefully it has value here. I want to use a BDD / TDD / ATDD approach in c++. However I really want to emphasize vertical slices of end to end functionality rather than unit tests. There are plenty of unit testing frameworks. How would you go about in c++ authoring an approach that emulates a user story based testing framework. If you can avoid reinventing the wheel great otherwise i have no idea how to go about writing one from scratch. An example from another language would be specflow. The specific question is - if someone has done it lets use their work - otherwise how would you go about writing a framework like specflow in c++?


For professional designing company, what is the key to design an app elegantly?

I am coding and found it's pretty hard to come up with an elegant design for my app at the first attempt.   * First time I'm only about 40% happy, then I refactor it to code the same app a second time (almost start from scratch).   * Second time coding, I'm only happy about 60% happy, so I refactor it once more to code the same app a third time (not start from scratch but I made a lot of changes).   * Third time coding, I'm only happy about 80%. Here I am quite happy but I think if I can start over I can do much better and it should be very solid. But I am running out of time now. So I just leave it like it is. 80% Happy.  So my key word is " **to keep re-factoring** ". But this is my point of view as an indie developer so I don't know how a design company would design an application. Suppose I give my idea to a professional designing company, will they keep refactoring like that many times to achieve an elegant design? Or because they are a big design company, are they able to design everything well at the first attempt? Do you work for a software design company? If you do then how does the professional designing company design applications elegantly?


How to devise instruction set of a stack based machine?

Stack based virtual machines like CLR and JVM has different set of instructions. Is there any theory behind devising the instruction set while creating a virtual machine? e.g. there are JVM instruction sets to load constants from 0-5 onto the stack               iconst_0     iconst_1     iconst_2     iconst_3     iconst_4     iconst_5      whereas in CLR there are instruction set to load number from 0 to 8 onto the stack as follows               ldc.i4.0     ldc.i4.1     ldc.i4.2     ldc.i4.3     ldc.i4.4     ldc.i4.5     ldc.i4.6     ldc.i4.7     ldc.i4.8      why there is no ldc.i4.9 and if ldc.i4 is there why we need the above opcodes? And there are others like these. I am eager to know what is the reason behind this difference between opcodes of different VMs? Is there any specific theory to devise these opcodes or it is totally driven by the characteristics of the VM itself or depends on the high-level language constructs?


Why is HTML/Javascript minification beneficial when the HTTP protocol already supports gzip data compression? I realize that Javascript/HTML minification has the potential to significantly reduce the size of Javascript/HTML files by removing unnecessary whitespace, and perhaps renaming variables to a few letters each, but doesn't the LZW algorithm do _especially_ well when there are many repeated characters (e.g. lots of whitespace?) I realize that some Javascript minification tools do more than just reduce size. Google's closure compiler, for example, also tries to improve code performance by inlining functions and doing other analyses. But the _primary_ purpose of Javascript minification is usually to reduce file size. I also realize there are other reasons you might want to minify aside from performace, such as code obfuscation. But again, that reason is not usually emphasized as much as performance gain and file size reduction. For example, Closure Compiler is not advertised as an obfuscation tool, but as a code size reducer and download-speed enhancer. So, how much performance do you really gain from Javascript/HTML minification when you're already _significantly_ reducing file size with gzip compression?


After how much line of code a function should be break down?

While working on existing code base, I usually come across procedures that contain **Abusive use of IF and Switch statements**. The procedures consist of **overwhelming code** , which I think require re-factoring badly. The situation gets worse when I identify that some of these are **recursive** as well. But this is always a matter of debate as the **code is working fine** and no one wants to wake up the dragon. But, everyone accepts it is very expensive code to manage. I am wondering if are any recommendations to determine if a particular Method is a culprit and needs a revisit/rewrite , so that it can broken down or polymophized in an effective manner. Are there any Metrics (like no. of lines in procedure) that can be used to identify such segment of code. The checklist or advice to convince everyone, will be great!


Why is the formal definition of Big O notation formulated as such?

Consider the formal definition: > f(n) = O(g(n)) Why is it not: > f(n) = O(f(n)) or > f(n) = O(c*f(n)) since for the Big O analysis, `f(n)=2n` and `g(n)=n` are identical? I am confused by the function `f(n)` using another function. * * * ### Update Why isn' t the definition as follows: > f(n) <= c*abs(g(n)) What does the formal `O(g(x))` add to the definition? It seems like it overcomplicates things.


Why do some embedded projects shun cross-compiling?

As I've been getting into embedded systems I've noticed that some projects (Arch Arm and OpenBSD for example) frown upon cross compiling. What is the reasoning for this? Is a cross-compiled binary somehow different from a natively compiled one? OpenBSD suggests that building on the hardware ensures that the system is fully functional (and also self-hosting) and that makes complete sense. But do people actually develop and compile kernel drivers on the hardware they are developing for? It sounds very time consuming. **From OpenBSD FAQ:** "Cross-compiling tools are in the system, for use by developers bringing up a new platform. However, they are not maintained for general use." -http://www.openbsd.org/faq/faq5.html#ProbXComp I'll see if I can hunt down the IRC log where a developer from ArchLinux Arm told me that they don't cross compile, though they seem to have updated their info on cross-compiling with DistCC: http://archlinuxarm.org/developers/distcc-cross-compiling


How to create a cool user interface for an excel file in java or C#?

I have an excel file with many sheets and relations between theme (ie, formulas that relates sheets to each other). I wanna create the user interface for this excel file.in other words I wanna create desktop application that has many tabs and menus and user by selecting tabs or menus,sees corresponding sheet from excel file in the form (in the application interface) and can data entries and see the results in other tabs from other sheets.also I wanna create cool ui for the application. How I can do this? Note: I am using Eclipse-jee-indigo for java and Microsoft visual studio 2010 for C#. Microsoft visual studio has also toolbox to create GUI for C# applications. and also there are many GUI designer like jgoodies as eclipse plugin and dotnetbar for C#.


Best Practices when extending a project

I have to extend a web application for a customer, there is no documentation of the current app, no analysis and even worse, there is no technical support or management. The client gives me a list of his expectations and nothing more. What's best practice to begin such a project?


Search technique - multiple hits, prioritise results

I have developed a search algorithm, which basically matches records on 3 different criteria types. Name, Address, and Keyword(s). "doh" , will find:   * Name: doh    * Address: re    * Keywords: me * * *   * Name: re   * Address: doh    * Keywords: me * * *   * Name: re   * Address: me   * Keywords: doh Now, when two or more records have a match, I am basically prioritising a single found entity, by means of checking how many times it was found. My problem is, a single query will always only find one record, even it it matches on more than one criteria, so no prioritization can take place. I am currently building a single query, including all the keywords, for all 3 criteria fields. (Multiple `AND / OR` statements) My current query looks like this: **Search Term:** something somewhere shiny **Formulated Query:**               select * from table where ((cl_address LIKE @something OR cl_name LIKE @something     OR cl_key_words LIKE @something) OR (cl_address LIKE @somewhere OR cl_name LIKE     @somewhere OR cl_key_words LIKE @somewhere) OR (cl_address LIKE @shiny OR cl_name LIKE      @shiny OR cl_key_words LIKE @shiny))      To solve this, I would have to run a query for every criteria, for every keyword, for every address field, for every name... This can result in multiple of 10 queries per search... although it "would" work... How do the big boys do this? P.S. The above is my own brain child... and not based on anything other than my own logic.. which may, or may not, be flawed :-)


Is it a row or a record (or a tuple)

1. If I look at a database table for editing - is it made up of rows or records?   2. If I write some sql and then look at the result is this made up of the same elements as the answer to 1.?   3. Is it the case that they are all rows but in very specific circumstances they are also records? * * * **EDIT**   A recent article by Itzik Ben-Gan prompted my question and I see quite a **_discussion on dba.stackexchange_**. In that article Aaron Bertrand brought up the same Itzik quote from his "Training Kit (Exam 70-461): Querying Microsoft SQL Server 2012" > As an example of incorrect terms in T-SQL, people often use the terms > “field” and “record” to refer to what T-SQL calls “column” and “row,” > respectively. Fields and records are physical. Fields are what you have in > user interfaces in client applications, and records are what you have in > files and cursors. Tables are logical, and they have logical rows and > columns.


Why can't a User Story be attached to more than one Feature?

I'm using Features to document the features as we originally communicated them to our client at proposal stage. I now want to create User Stories that relate to the features so that I can easily map our stories back to the proposal. Many of the stories naturally map across features, but Team Foundation Server (TFS) doesn't let me give a Story more than one Parent feature. Is this because I'm "doing it wrong" or is it more a limitation of TFS at the moment?


What are arguments for Commercial Off the shelf (COTS) products?

* Why should a company invest in a Commercial Off the shelf (COTS) product?   * Is it the cost of in-house development, support or are there other reasons to not buy an COTS product?  By Commercial Off the shelf (COTS) products I mean products such as SharePoint, SAP, MS Dynamics. Not Word/Excel/Outlook. By company I refer to a large enterprise.


Is a programmer professionality bound to the language?

I hear people saying that _"a true programmer is not bound to a programming language, because programming goes beyond that"_ , and albeit agreeing on the premise, i consider my professionality pretty bound to the languages i know. So i would say that this statement is practically false. Before this question goes closed, what is your opinion?


Are programmers tied to their code?

Assuming you are working for a company or in a team of developers, is the code bound to the person who did it? When someone develops a particular functionality or an area of the application, is this person the only one who can, is allowed or is just able to make changes to it? I personally think that a well-done piece of code or program should be easily modified by any programmers, but what about what you see in your environment? At my work, I'd say that the majority of the code can be modified by anyone (that's what coding standards are for right?). There are some things though that are 'property' of some coworkers like the module that handles the pay or some important functionality of the production module (we are developing an ERP system). What about your work place? Am I the only one living this?


Grid Game Algorithm

Problem Link - http://www.iarcs.org.in/inoi/2009/zco2009/zco2009-1a.php You have to find the path with the maximum weight, from the top-left cell to the bottom-right cell. It could've been solved with a simple Dynamic Programming approach, if it were not for the special condition - you are allowed at most one move that can be either to the left or up. How do I now approach the problem with this special case? Also, I'm looking for a time-efficient approach. Thanks!


Why are .NET ports called Iron*?

The C program Prog when ported to Java would be called JProg, a port to C++ would be Prog++ and a port to Python would be called PyProg. These names are all quite obvious. But the C# port would be called IronProg, which strikes me as strange. Why is it that programs ported to Visual Basic or C# are often called Iron*? Examples: IronPython, IronScheme, IronRuby, etc.


Do you find references invisible when you scan code, and are there any coding guidelines for their usage?

I have developed a habit of using safe C++ constructs where possible, but there is one place where I'm always not sure if it's better to use references or resort to good ol' pointers. Example code:               int FillFancyPointer(char *&ptr)     {         ptr = NULL;              char *tmp_ptr = static_cast<char*>(calloc(...));         if(!ptr)             return -1;             ptr = tmp_ptr;        return 0;     }      Later in code:               char *ptr = nullptr;     if(FillFancyPointer(ptr)>=0 && ptr)        Nice();      The problem with this, IMHO, is that the ptr appears to be read only variable when looking at the code, while in reality it is modified. The COM approach `ISmthn *ptr;`, `CoCreate(..., &ptr)` seems more pronounced. But it's also more error prone, as there is this `**` stuff everywhere. Come to think of it, output variables like `std::string` will also be masked with such approach. `int Foo(const string &in, string &inout)` Do you find references confusing in such places?


Online stores service design

I am designing an online store service app with rails. Everyone who wants to make his/her own store can do it with this app by just signing up and choosing a domain. I want to make it as SaaS as it can be. Should I copy all store's files every time someone creates a new shop, or can I somehow keep these files in one place and just let every new store access them?


How to structure integration tests per environment

I have a set of integration tests written using MSTest. I want to deploy my application to various environments and run my integration tests on that environment. There are certain configuration values that change per environment which are not contained in a config file. I am delivering a COM component on a legacy machine that doesn't support per application config files. I had thought to use TestCategories to split the tests into their various environments, and only running the tests in the appropriate category. However, I am running into difficulties when attempting to set up my test dependencies with the appropriate configuration values. For instance, I have the following code in my test class:               Private Property ObjectToBeTested as BusinessObject          Protected Sub New()         ObjectToBeTested = New BusinessObject("URL to my web service.")     End Sub      Then my tests are split up like this:               <TestMethod()>     <TestCategory("DEV")>     Public Sub MyDevTest()         ' code here     End Sub          <TestMethod()>     <TestCategory("SIT")>     Public Sub MySitTest()         ' code here     End Sub      But doing it this way I have to change my URL and recompile for each environment I want to test in. I'm trying to figure out a better approach. I've thought to somehow use ClassInitialization, but I can't determine if I'm in a DEV or SIT test at that point. I'd like to have the initialization take place once at the class level based on the environment I'm in. Thoughts?


Quantum computers and Turing Machine

As far as I know, a Turing Machine is the widely used model in computational theory to know whether something could be computed and if computed can they can be computed in finite time (P, NP, NPSpace). But I have the following doubts:   1. Is a Turing Machine essentially a black-box model where a set of inputs give a set of outputs such that there could be no interaction during computation? By no interaction, I mean that during computation the variables wouldn't be altered by an external factor.   2. As an extension to the above question, are non-deterministic functions Turing complete?   3. Is Turing Machine an efficient model for Quantum Computing? Going by what I have learned so far, my answers are:   1. Turing Machines cannot handle interaction and random behavior and it's not guaranteed even by Turing in his original paper.    2. Non-deterministic functions may bring Turing machines to a halt.   3. No since Turing machines cannot efficiently support the superposition of bits. **Note** I am not well-versed in either Computational Theory or Quantum Computing. So a lot of links and some beginner's stuff would be a lot helpful and reading this article inspired this question.


Is it normal for developers to suggest feature ideas to product owners?

I've started working as a developer fairly recently, having worked as a systems administrator before. My understanding of how a software development team using Agile functions is that the "what we need to implement" communication happens mostly in one direction, from the product owner to the developers. Developers can express their concerns to the product owner about technical debt, but coming up with feature ideas should not be one of their main responsibilities. The company I'm working at has a different view. To them, developers should not only go to the product owners of their own team to suggest feature ideas, but also to the product owners of other teams if they think they have something to contribute to that team's product. The idea is that we're all one big Team <company name>, and all developers should use their expertise to push features they think will be useful. Is such an approach "normal", for lack of a better word? Am I being too passive, should I take the initiative and start pushing ideas to product owners? Conversely, has the company got it completely wrong and I should look for employment elsewhere?


Is it appropriate to offer a "finders' fee" to existing staff when looking for new staff?

A lot of big companies use recruiters to find new hires, and there's obviously an associated cost. Existing staff are likely to know people looking for work through their professional networks. The company could potentially save significant money if they found people this way. Obviously there are conflict-of-interest concerns to consider, but in general, **do you think it's appropriate for a company to offer a finders' fee for referring new hires?**


Using "off-paradigm" coding practices in an existing codebase

Let's assume, for a second, that you're "the boss", or architect, or whatever position would permit you the authority to decide on the following question: You work on a product that's existed for a number of years and it's developed entirely in an imperative style/language. Let's also say that there is a feature or subsystem to be implemented that would benefit from a functional language/approach. A hypothetical example might be that the product is implemented in C# and the subsystem/feature could be implemented in F#. So your dev, who's a proficient F# developer, comes to you and says "I want to write this subsystem/feature in F#". Do you say yes, or no? Why or why not?


What kind of degree do I need to become a mobile application developer?

I am interested in changing careers and becoming a mobile app developer. I've been trying to teach myself how to build mobile apps using HTML5, jQuery Mobile, and appmobi. I really want to become a mobile application developer, but need some guidance as to what kind of degree and/or certificate I should get in order to get a good job. I already have an undergraduate degree - Bachelors of Science in Experimental Psychology.


How useful is UML if you are a developer working alone in a project?


Which layers should reflect the domain language (if a domain language can strictly exist)?

This question relates to a one I asked earlier: http://stackoverflow.com/questions/5448574/under-what-conditions-could-we- justify-an-attempt-to-introduce-a-one-size-fits-al When re-reading "Domain-Driven Design: Tackling Complexity in the Heart of Software" by Eric Evans, I noticed that the possibility of achieving a common terminology (domain language) is taken for granted. Where does a domain language begin? Which code layers (or whatever the grouping) should reflect this domain language?


What are the advantages of using eScrum?

Why should I use this software instead of, say, Microsoft Project? What kind of level of familarisation with TFS does it demand? Is there anything similar I could use with SVN instead?


If an "either/or" algorithm is "Boolean", what's a "zero, one, or many" algorithm?

In programming what do you call a choice that is not Boolean? ie. a Boolean condition is a true/false, either-or possibility. What do you call a condition with one or more possibilities? And, is there any difference if the condition is zero or more versus one or more? Thanks! \--EDIT-- To add some clarity: Specifically I'm having a hard time when describing certain types of algorithms to non-programers. I'm a hobbyist programmer so I lack a lot of the vocabulary that comes with a computer science degree. If I present a user with an "either-or" choice, I find the users understand what I mean if I call this a "boolean" choice, even if it has more than two possibilities. For example: "Pick a color: red, yellow, green, or blue." If I have something that's a "one or more" choice I don't know what to call that. For example: "Select any colors that you like: red, yellow, green, blue." How do you (knowledgeable programmers) refer to these kinds of choices when you talk about them? \-- SECOND EDIT -- As was pointed out in the comments I shouldn't even be saying "Boolean", I should be saying "Binary." That makes perfect sense... So, is there such a thing as "polynary"?


IT Consulting from US and German VAT Tax

I'm an independent IT consultant in the US, and I just completed some work for a German company, all done remotely from the US. I've sent them an invoice, but they are now asking if I have a VAT registration ID, which I don't have of course not being in Europe. Do I have to do anything about the German VAT tax? Is it up to the company I worked for to sort this out?


Is outsourcing (offshoring) disloyal?

I ask this from everyone's perspective. If you are in America and you outsource to offshore programmers, are you disloyal to your countrymen? If you are in India and you outsource to offshore programmers, are you disloyal to your countrymen? This question applies to all programmers and people in a position to hire programmers. I happen to be American, and so for me this means outsourcing to other countries like India and Mexico. With unemployment so high here at home, am I being disloyal to my fellow programmers, my countrymen, by outsourcing to other countries? This is a real dillema for me. Yes, either way I am providing for someone's family (either the American's or the Indian's). But if I outsource to offshore programmers, am I contributing to the problems here at home? As my business grows, hiring questions like this are becoming more urgent for me to figure out. I want to do the right thing. Also note that this question is _NOT_ asking "Is outsourcing effective". This question is "all things being equally effective, is it disloyal" . . . Also note that disloyal might not be the best word, but you get my meaning. Feel free to edit or make suggestions to make this question better.


Is it ethical to duplicate user licenses if the same person is going to be using it?

I was talking with someone today and this discussion came up. Suppose you purchase some software and X user licenses for it. You then want to install another instance of the software, however the company tells you that you need to buy another X licenses to use the 2nd installation. Is it ethical to duplicate the licenses since the same X users are going to be using them? (the security on the program we were talking about is not very good) **EDIT** Licenses are per-concurrent-user. In this situation users would (generally) not be logged into both installations at once. Regardless, we would keep the number of users logged in between the two installations limited to the number of licenses we purchased.


Inheritance vs 'specification' by fields

I'm currently reading 'Head first design patterns', and already the first chapter threw some questions towards me. This chapter introduces the 'prefer composition over inheritance' design principle, by explaining the 'Strategy- Pattern'. My question isn't about the pattern, but about a much more 'simple' thing. In the book there is an abstract Duck class, from which a hand full of other duck classes are (like e.g. 'Rubber-' or 'Redhead-Duck') inheriting. All of these ducks got a 'display' and 'quack' method. The 'display' method is what should be differernt in every special duck class (because every duck looks different, as the book says).               abstract class Duck     {         public void display();         public void quack()         {             //Quack here         }     }          class RubberDuck extends Duck     {         @Override         public void display()         {             //Display a 'Rubber-Duck'         }     }          class RedheadDuck extends Duck     {         @Override         public void display()         {             //Display a 'Redhead-Duck'         }     }      But my question is: Wouldn't it make much more sense to have a field inside a (non-abstract) Duck class, which contains the displaying information (a picture or a 3D-model for example) rather than inheriting from an abstract duck class?               class Duck     {         private String duckName;         private Picture duckPicture;              public Duck(String name, Picture picture)         {             this.duckName = name;             this.duckPicture = picture;         }              public void quack()         {             //Quack here         }         public void display()         {             //Show duck here, according to the 'duckPicture' field         }              //More methods here, maybe a getter for the 'duckName' field     }      What do you think about this? Does it make sense to have a abstract duck class and inherit from it or would you prefer my second attempt?


Would you keep convincing your management some better practices if he keeps screwing things up

My manager, an enthusiastic programmer, is full of good energy to program. But he has a ... habit were he will be negligent in meetings if he can't understand the issue or argument. As a result, he screws up a couple of things. For example: * * * When we were talking about the design process for REST web services, I suggested that we write down the specification of REST web services first and then start implementing. He insisted that if we could use JAX-RS to implement the reusable component, then documentation for the specification would not be a priority. I said that reusable components would be a problem if we changed the specification of REST web service and tried to upgrade the systems which uses these components. He didn't understand or care what I was talking about. After the JAX-RS API was released and used in other projects, he realized that something was wrong in design of the Java classes. He wanted **to change the Java interface of the client API (annotated with JAX-RS)** but didn't know how to upgrade systems that used it, so he decided to write a whole new API. The new API was a disaster because of lack of documentation and building with his intuition. Finally, the API of REST web service he finished did not correspond with the specification of REST web service on the server. We modified our projects to use the new API. Our projects broke, we found the problems and he fixed them; end of story. * * * This may be a problem of communication (always communication), but he doesn't care about technical things that he is not familiar with - yet he used to write code intuitively. Should I keep convincing him of better practices I am experienced with or just do my work? This is not an isolated incident.


Why isn't there a typeclass for functions?

In a learning problem I've been messing around with, I realised I needed a typeclass for functions with operations for applying, composing etc. Reasons...   1. It can be convenient to treat a representation of a function as if it were the function itself, so that applying the function implicitly uses an interpreter, and composing functions derives a new description.   2. Once you have a typeclass for functions, you can have derived typeclasses for special kinds of functions - in my case, I want invertible functions. For example, functions that apply integer offsets could be represented by an ADT containing an integer. Applying those functions just means adding the integer. Composition is implemented by adding the wrapped integers. The inverse function has the integer negated. The identity function wraps zero. The constant function cannot be provided because there's no suitable representation for it. Of course it doesn't need to spell things as if it the values were genuine Haskell functions, but once I had the idea, I thought a library like that must already exist and maybe even using the standard spellings. But I can't find such a typeclass in the Haskell library. I found the Data.Function module, but there's no typeclass - just some common functions that are also available from the Prelude. So - why isn't there a typeclass for functions? Is it "just because there isn't" or "because it's not so useful as you think"? Or maybe there's a fundamental problem with the idea? The biggest possible problem I've thought of so far is that function application on actual functions would probably have to be special-cased by the compiler to avoid a looping problem - in order to apply this function I need to apply the function application function, and to do that I need to call the function application function, and to do that... **More Clues** Example code to show what I'm aiming for...               {-# LANGUAGE MultiParamTypeClasses #-}     {-# LANGUAGE FlexibleInstances #-}     {-# LANGUAGE GADTs #-}          --  In my first version, Doable only had the one argument f. This version     --  seemed to be needed to support the UndoableOffset type.     --     --  It seems to work, but it also seems strange. In particular,     --  the composition function - a and b are in the class, but c isn't,     --  yet there's nothing special about c compared with a and b.     class Doable f a b where       fwdApply :: f a b -> a -> b       compDoable :: f b c -> f a b -> f a c          --  In the first version, I only needed a constraint for     --  Doable f a b, but either version makes sense.     class (Doable f a b, Doable f b a) => Undoable f a b where       bwd      :: f a b -> f b a            bwdApply :: f a b -> b -> a       bwdApply f b = fwdApply (bwd f) b          --  Original ADT - just making sure I could wrap a pair of functions     --  and there were no really daft mistakes.     data UndoableFn a b = UFN { getFwd :: a -> b, getBwd :: b -> a }          instance Doable UndoableFn a b where       fwdApply = getFwd       compDoable f g = UFN ((getFwd f) . (getFwd g)) ((getBwd g) . (getBwd f))          instance Undoable UndoableFn a b where       bwd f    = UFN (getBwd f) (getFwd f)       bwdApply = getBwd          --  Making this one work led to all the extensions. This representation     --  can only represent certain functions. I seem to need the typeclass     --  arguments, but also to need to restrict which cases can happen, hence     --  the GADT. A GADT with only one constructor still seems odd. Perhaps     --  surprisingly, this type isn't just a toy (except that the whole thing's     --  a toy really) - it's one real case I need for the exercise. Still a     --  simple special case though.     data UndoableOffset a b where       UOFF :: Int -> UndoableOffset Int Int          instance Doable UndoableOffset Int Int where       fwdApply (UOFF x) y = y+x       compDoable (UOFF x) (UOFF y) = UOFF (x+y)          instance Undoable UndoableOffset Int Int where       bwdApply (UOFF x) y = y-x       bwd (UOFF x) = UOFF (-x)          --  Some value-constructing functions     --  (-x) isn't shorthand for subtraction - whoops.     undoableAdd :: Int -> UndoableFn Int Int     undoableAdd x = UFN (+x) (\y -> y-x)          undoableMul :: Int -> UndoableFn Int Int     undoableMul x = UFN (*x) (`div` x)          --  With UndoableFn, it's possible to define an invertible function     --  that isn't invertible - to break the laws. To prevent that, need     --  the UFN constructor to be private (and all public ops to preserve     --  the laws). undoableMul is already not always invertible.     validate :: Undoable f a b => Eq a => f a b -> a -> Bool     validate f x = (bwdApply f (fwdApply f x)) == x          --  Validating a multiply-by-zero invertible function shows the flaw     --  in the validate-function plan. Must try harder.     main = do putStrLn . show $ validate (undoableAdd 3) 5               putStrLn . show $ validate (undoableMul 3) 5               --putStrLn . show $ validate (undoableMul 0) 5               fb1 <- return $ UOFF 5               fb2 <- return $ UOFF 7               fb3 <- return $ compDoable fb1 fb2               putStrLn $ "fwdApply fb1  3 = " ++ (show $ fwdApply fb1  3)               putStrLn $ "bwdApply fb1  8 = " ++ (show $ bwdApply fb1  8)               putStrLn $ "fwdApply fb3  2 = " ++ (show $ fwdApply fb3  2)               putStrLn $ "bwdApply fb3 14 = " ++ (show $ bwdApply fb3 14)      The application involves a kind of unification where unified values aren't equal, but are related via those invertible functions - Prolog-style logic but with `a = f(b)` constraints rather than `a = b`. Most of the composition will result from optimizing a union-find structure. The need for inverses should be obvious. If no item in a unified set has an exact value, then a particular item can only be quantified relative to another item in that unified set. That's why I don't want to use "real" functions - computing those relative values. I could drop the whole function aspect and just have absolute and relative quantities - I probably only need numbers/vectors and `(+)` \- but my inner architecture astronaut wants his fun. The only way I break the links apart again is via backtracking, and everything is pure - union-find will be done using keys into an `IntMap` as "pointers". I have simple union-find working, but as I haven't added the invertible functions yet, there's no point listing it here. **Reasons I can't use Applicative, Monad, Arrow etc** The main operations I need the function abstraction class to provide are application and composition. That sounds familiar - e.g. the `Applicative` `(<*>)`, `Monad` `(>>=)` and `Arrow` `(>>>)` are all composition functions. However, the types that implement the function abstraction in my case will contain some data structure that represents a function, but which isn't (and can't contain) a function, and which can only represent some limited set of functions. As I mentioned in the explanation of the code, sometimes I can only quantify one item relative to another because no item in a "unified" cluster has an exact value. I want to be able to derive a representation of that function, which in general will be the composition of several provided functions (walking up to a common ancestor in the union/find tree) and of several inverse functions (walking back down to the other item). Simple case - where the original "functions" are limited to integer-offset "functions", I want the composed result as an integer-offset "function" - add the component offsets. That's a big part of why the composition function needs to be in the class as well as the application function. This means I cannot provide the operations `pure`, `return` or `arr` for my types, so I can't use `Applicative`, `Monad` or `Arrow`. This isn't a failure of those types - it's a mismatch of abstractions. The abstraction I want is of a simple pure function. There's no side-effecting, for example, and no need to build a convenient notation for sequencing and composing the functions other than an equivalent of the standard (.) that applies to all functions. I _could_ instance `Category`. I'm confident that all my functiony-things will be able to provide an identity, though I probably don't need it. But as `Category` doesn't support application, I'd still need a derived class anyway to add that operation.


Template Functions and Function templates in C++

I came across a question which asked the difference between Function Templates and Template Functions in C++ and also Template Classes and Class Templates. I was under the impression that Function Templates and Template Functions were the same thing. Is there any difference between the two, if so what is it?


How To Choose Between Different Methods of Handling/Raising Events?

In situations where I need to write observer/subscriber code, how would I choose between the following approaches? A) Declaring an event that simply notifies a client something happens but requires the client to make a query for data e.g.               class SoothSayer{              int DaysUntilApocalypse{get;}              event EventHandler<EventArgs> TheEndIsNigh;          }      B) Declaring an event with specific _XXXEventArgs_ containing the event data e.g.               class SoothSayer{              event EventHandler<ApocalypsePendingEventArgs> TheEndIsNigh     }          class ApocalypsePendingEventArgs:EventArgs{         int DaysLeft{get;}     }      C) Using a callback rather than an event e.g.               class SoothSayer{              public SoothSayer(Action<int> endIsNighCallback){             _endIsNightCallBack = endIsNighCallback;         }     }


Filesystem like permissions for C++ type-members

## Abstract ( **tl;dr** ) _Please read the full question, this is awfully simplified:_   How can unix file permission style restrictions be applied to inter-type data/control flows, allowing fine-grained access to some class-members for some groups of classes? ## Background information If you think about unix file systems and permissions, there is a diverse way of encoding file-access privileges of users (especially if you also consider FACL). For example, if a directory contains 3 files, they could belong to several users, and different other users may have restricted permissions:               -rwxr-xr--  jean-luc  staff    engage.sh     -rw-r-----  william   crew     roster.txt     -rw-------  beverly   beverly  patients.txt      ## Core idea As you can see, depending on the groups a particular user is in, different access levels are allowed. For example, `crew`members are allowed to read `roster.txt`, which belongs to `william`, but guests who presumably do not belong to `crew` cannot. More importantly, the group `crew` can contain many people. So I was thinking that there is some similarity to access permissions inside object oriented languages like C++ if you think of types (classes) as users. Although a function can only be executed, but not read, the `rwx` flags represent meaningful descriptions for class members. A data member can be read (`r`) and written (`w`) to, perhaps via accessors, while member functions may be executed (`x`) or not. However, in C++ and other object oriented languages (I know of), this is more or less an all or nothing thing, if we leave out inheritance for a second; If class `William` makes his member `Txt roster;` public, everybody will see it. If he makes it private, nobody except himself will see it. He may add one or more friends, `friend JeanLuc;` but then they will see all his private members (the equivalent of granting `user:jean-luc:rwx` to all his files, in FACL lingo).   This is entirely orthogonal to inheritance -- `JeanLuc` and `William` are not part of the same hierarchy, they are not related. **So the main idea would be to allow group-based access restrictions, as a generalisation of private/public. Allowing finer grained inter-class access to member functions and member data.** I believe this idiom could help maintainability/readability, as it adds additional facets to restrict interaction permissions. As with operating systems, where this adds an important layer of security to the system, the same familiar pattern could add safety to a C++ project. ## Thoughts about representation in C++ However, I'm at a loss of thinking of a good way to represent this. You could decompose `William` objects into several objects of subtypes: `William_Crew`, `William_William` and so forth, representing the respective groups. This seems to be horribly ugly. Another idea could be dedicated types with forwarder functions, representing the individual groups, like this:               class Crew { // group class       // in this group are:       friend JeanLuc;       friend Geordi;       friend Beverly;       // ...       static Txt getRoster(William*);     };     class William {       friend Crew; // Problem: Crew has full access (rwx)       Txt roster;     };      But each group would have to be tailored to a particular class to be used with, which would seem to be massively redundant, if the group is used by several users/classes. ## Question The approaches I provided are not great (to put it mildly), and I'm sure they wouldn't work as intended. I'm not sure if this is a novel/stupid/well-known idea, but **I wonder how you could implement this with the features provided by the C++ language**. Are there objective arguments why this would or would not be useful/helpful?


How much does your company spends on books?

It seems to me that buying and reading books is one of the most important investments a developer can make, and one of the most important investment a company can spend on a developer. There were a lot of times when I was confronted with a tricky problem, and what I did was to flip through an algorithm book and I would stumble upon an answer. And there were a lot of times when I tackled a problem head-on without first doing a literature search, only to find out later that my solution sucked and a proper solution had already been written down elsewhere. But it also seems to me that a lot of companies view books as an expense and thus must be cut down and "budgeted". Sad, but true. How much your company spends on books?


How to refer to <% in asp.net

I've realized that I refer to `<%@` as 'angle bracket percent at' and `<%$` as 'angle bracket percent dollar', But this is very clumsy. I think `<%$` should be referred to as some sort of bind, I'm not 100% sure what `<%@` does, and Google doesn't like that as a search term. How do programmers normal label these terms?


Interfacing application code with unit tests

I am working on a project in which we have to implement and unit test some new module. I had a quite clear architecture in mind so I quickly wrote down the main classes and methods and then we started writing unit tests. While writing the tests we had to make quite a few modifications to the original code, such as   * Making private methods public in order to test them   * Adding extra methods to access private variables   * Adding extra methods to inject mock objects that should be used when the code runs inside a unit test. Somehow I have the feeling that these are symptoms that we are doing something wrong, e.g.   1. the initial design was wrong (some functionalities should have been public from the beginning),   2. the code was not designed properly for being interfaced with unit tests (maybe due to the fact that we started to design the unit tests when quite a few classes had been designed already),   3. we are implementing unit tests the wrong way (e.g. unit tests should only directly test / address the public methods of an API, not the private ones),   4. a mixture of the above three points, and maybe some additional issues I have not thought about. Since I have some experience with unit testing but I am far from being a guru, I would be very interested to read your thoughts regarding these issues. Beside the above general questions, I have some more specific, technical questions: **Question 1.** Does it make sense to directly test a private method m of a class A and even make it public in order to test it? Or should I assume that m is indirectly tested by unit tests covering other, public methods that call m? **Question 2.** If an instance of class A contains an instance of class B (composite aggregation), does it make sense to mock B in order to test A? My first idea was that I should not mock B because the B instance is part of the A instance, but then I started to doubt about this. My argument against mocking B is the same as for 1: B is private wrt A and only used for its implementation, therefore mocking B seems like I am exposing private details of A like in (1). But maybe these problems indicate a design flaw: maybe we should not use composite aggregation but a plain association from A to B. **Question 3.** In the above example, if we do decide to mock B, how do we inject the B instance into A? Here are some ideas we had:   * Inject the B instance as an argument to the A constructor instead of creating the B instance in the A constructor.   * Pass a BFactory interface as an argument to the A constructor and let A use the factory to create its private B instance.   * Use a BFactory singleton that is private to A. Use a static method A::setBFactory() to set the singleton. When A wants to create the B instance it uses the factory singleton if it is set (the test scenario), it creates B directly if the singleton is not set (the production code scenario). The first two alternatives seem cleaner to me, but they require changing the signature of the A constructor: changing an API just to make it more testable seems awkward to me, is this a common practice? The third one has the advantage that it does not require changing the signature of the constructor (the change to the API is less invasive), but it requires calling the static method setBFactory() before starting the test, which is IMO error-prone (implicit dependency on a method call for the tests to work properly). So I do not know which one we should choose.


How does TDD address interaction between objects?

TDD proponents claim that it results in better design and decoupled objects. I can understand that writing tests first enforces the use of things like dependency injection, resulting in loosely coupled objects. However, TDD is based on unit tests - which test individual methods and not the integration between objects. And yet, TDD expects design to evolve from the tests themselves. So how can TDD possibly result in a better design at the integration (i.e. inter-object) level when the granularity it addresses is finer than that (individual methods)?


Entity Framework and distributed Systems

I need some help or maybe only a hint for the right direction. I've got a system that is sperated into two applications. An existing VB.NET desktop client using Entity Framework 5 with code first approach and a asp.net Web Api client in C# that will be refactored right yet. It should be possible to deliver OData. The system and the datamodel is still involving and so migrations will happen in undefined intervalls. So I'm now struggling how to manage my database access on the web api system. So my favourd approch would be us Entity Framework on both systems but I'm running into trouble while creating new migrations. Two solutions I've thought about: **Shared Data Access dll** The first idea was to separate the data access layer to a seperate project an reference from each of the systems. The context would be the same as long as the dll is up to date in each system. This way both soulutions would be able to make a migration. The main problem ist that it is much more complicate to update a web api system than it is with the client Click Once Update Solution and not every migration is important for the web api. This would couse more update trouble and out of sync libraries **Database First on Web Api** The second idea was just to use the database first approch an on web api side. But it seems that all annotations will be lost by each model update. Other solutions with stored procedures have been discarded because of missing OData support and maintainability. Does anyone run into same conflicts or has any advices how such a problem can be solved!


Structuring a rails application with static data

I'm working on a rails application, and so far I've focused on the api and the functionality. But now I'm more and more reaching a point where I will want to add static content, descriptions of the software and help information. Information that is generally in a CMS system. How do I in the best way structure this so I can still work with the application. Yet maintaining the look and feel of the rails application? Do write a CMS in my app? That seems a bit far fetched. Are there any Gems that do this? What is the de facto standard for architecting this scenario?


Is programming in Python faster than in C, C++ or Java?

There's a widespread belief among programmers that the more dynamic and loosely typed the language, the more productive the programmer will be in it. Guido van Rossum wrote about programming productivity using python in 1998 and searching around the web I still see people referencing this exact claim: > Syntactically, Python code looks like executable pseudo code. Program > development using Python is 5-10 times faster than using C/C++, and 3-5 > times faster than using Java. In many cases, a prototype of an application > can be written in Python without writing any C/C++/Java code. Often, the > prototype is sufficiently functional and performs well enough to be > delivered as the final product, saving considerable development time. Other > times, the prototype can be translated in part or in whole to C++ or Java -- > Python's object-oriented nature makes the translation a straightforward > process. Has this issue been properly scientifically evaluated? If not for python then perhaps for sibling scripting languages like ruby, perl or php? I'm not looking for rationalizations, analogies, or explanations why it could potentially be hard to answer, unless it's the opinion of researchers or experts that has taken the time to look into the issue. I initially asked this question over at skeptics.SE, and someone suggested I should ask it here too.


Where does a scrum master draw the line with blocking issues?

I understand the concept that a Scrum Master should remove impediments. However I'd like to know where exactly the line should be drawn. For example a team member might have an impediment whereby they need to get support to log onto a live server and get some details. They can't progress a bit of work until this is done. Its a blocking issue essentially. But should it be the Scrum master that goes to the Ops department and does this for the developer or if the developer can do it themselves should they just do it themselves. At what point does an issue become a blocking issue?


How good is The Algorithm Design Manual 2nd edition compared to the 1st edition for a beginner?

I'm looking for a good book on algorithms and data structures for a beginner. I was reading some reviews of these two books: Introduction to Algoritms and The Algorithm Design Manual. Introduction to Algorithms is widely recognized but at the same time many people consider a great book but only as a bible/reference/encyclopedia. The Algorithm Design Manual seems to be considered too basic, "a shopping catalog of algorithms" and some people recommend against it. The thing is those kind of opinions seems to be based on the 1st edition. According to author of the book: > "This newly expanded and updated second edition continues to take the > "mystery" out of designing algorithms, and analyzing their efficacy and > efficiency. Expanding on the first edition, the book now serves as the > primary textbook of choice for algorithm design courses while maintaining > its status as the premier practical reference guide to algorithms for > programmers, researchers, and students." > > "The second edition contains enough material to serve as the textbook for a > standard Introduction to Algorithms course. I assume the reader has > completed the equivalent of a second programming course, typically titled > Data Structures or Computer Science II." So my question is, what do you think about The Algorithm Design Manual 2nd edition for a beginner that wants to learn about algorithms and data structures? Is it actually better than the 1st edition for the task? Or do you think CLRS is a better option?


Ways to break the "Syndrome of the perfect programmer"

I am probably not the only one that feel that way. But I have what I tend to call "The syndrome of the perfect programmer" which many might say is the same as being perfectionist but in this case it's in the domain of programming. However, the domain of programming is a bit problematic for such a syndrome. Have you ever felt that when you are programming you're not confident or never confident enought that your code is clean and good code that follows most of the best practices ? There so many rules to follow that I feel like being overwhelmed somehow. Not that I don't like to follow the rules of course I am a programmer and I love programming, I see this as an art and I must follow the rules. But I love it too, I mean I want and I love to follow the rules in order to have a good feeling of what im doing is going the right way.. but I only wish I could have everything a bit more in "control" regarding best practices and good code. Maybe it's a lack of organization? Maybe it's a lack of experience? Maybe a lack of practice? Maybe it's a lack of something else someone could point out? Is there any way to get rid of that syndrome somehow ?


using ant colony algorithm to create cross word game

I have difficulty to learn about ant colony algorithm (ACO), I have read about generating crossword game using (genetic algorithm) GA.I Know both of GA ant ACO usually used for optimization, but my question is Is possible if create crossword game generator using ACO and how it can work for optimization in this case?


Problems for Sample Code

I was recently asked to write some sample code that solves a difficult technical problem. I've been mulling over what kinds of problems might be good to solve in code to demonstrate my skills in such a situation. I've seen similar posts discussing what reviewers are looking for in the context of code interviews, but I'm interested in the specific problems that might be good to solve. For example, this blogger offers the following sample code ideas:   * A utility class for logging events and errors either to a file or the system event logs with a configurable level of verbosity.   * A set of stored procedures for maintaining and searching data in a hierarchical tree structure.   * An implementation of the singleton design pattern to serialize access to a resource file.   * A calculator function that takes a single string of input that includes numbers and operators and returns the numeric result of the equation. Don’t forget input validation, error handling (divide by zero), and operator precedence concerns!   * A method that takes a URL to a web site and a local path and downloads all image files based on tags.   * Create a method that takes a keyword, message, and login credentials and uses the Twitter API to respond to post the message as response to any friends of the account specified. I'd like to see these types of examples, perhaps with a harder technical problem. Ideally example problems would support demonstrating understanding of Java constructs/data structures and the Mode-View-Controller (MVC) paradigm. **UPDATE** I was able to find a nice website called Project Euler which has all kinds of neat problems, many of which could fit this need. It has some great brain food to go along with whatsisname's answer. Obviously the goal here is to find samples of the kinds the problems that would be good to solve in this situation, _not_ to copy and paste code (especially if it is not yours!).


How do I document necessarily complex code structures?

If I have a piece of code that is mathematically or structurally quite complex and irreducibly so, how would I go about documenting this piece of code? In particular, how can I ensure that someone who may not have the mathematical or architectural skills that I do can understand it from the documentation? Should I document all of the math too? Link to a tutorial? Do some visual aid linkage in the case of complex structures?


Are comments considered a form of documentation?

When I am writing small scripts for myself, I stack my code high with comments (sometimes I comment more than I code). A lot of people I talk to say that I should be documenting these scripts, even though they are personal, so that if I ever do sell them, I would be ready. But aren't comments a form of documentation? Wouldn't this:               $foo = "bar"; # this is a comment     print $foo; # this prints "bar"      be considered documentation, especially if a developer is using my code? Or is documentation considered to be outside of the code itself?


Good techniques to speed up database execution

I have an ASP.Net application that is using a MySQL database. My queries are not executing as fast as I would like them too. Are there some standard ways to increase the speed of a MySQL database short of putting it on a faster PC. For example, (I'm not sure if these are true or not) using prepared statements over transactional SQL. Using foreign keys if applicable? Things along those lines. EDIT: The database is on a remote machine


Is CRTP used much? and why it is/isn't?

I'm thinking about curiously recurring template pattern. I find it quite useful, and it's pretty well adjustable for many tasks. But I have to admit, I don't see much of CRTP code in the wild. Is it hard to grasp? Are virtual functions easier overall? Shouldn't it be used for 90% of cases where virtual keyword appears?


SOA - The four tenets

I'm reading about SOA and the four tenets required to make a SOA application. I have tried different sources, but the explanations are twisting. I'm searching for something that is a bit less abstract. Is my interpretation correct? The four tenets is:   1. Services have explicit boundaries   2. Services are autonomous   3. Services share schema and contract, not class   4. Services interoperate based on policy My interpretation is:   1. The methods that a client may use shall be easy to use and well defined.   2. Services shall not be dependent on others. Change of one service shall not affect another in any way.   3. A scheme represent the data that will be sent, contract contains the defined methods for a service. To make a system loosely coupled, you share scheme and contract instead of classes and objects.   4. A policy to use a service may be that a particular type of binding is required so it may be used. Anyone that wants to use this service must connect to it with this type of binding.


Approach to use for user email address change in application?

As the title says, if the user wants change their email address in the application, in terms of programming, what approach (process) to use? Where do you store the new email address until the user will confirms it?


Why are programming salaries higher than most other common "educated" careers?

I have wondered about this for a long time, and I haven't been able to find a suitable answer, even on this website. When comparing an average programmer's salary to other common careers, where education is mostly required, the salaries programmers receive is usually much higher. At least in the entry & mid-levels of the job scale. Even for programmers which don't have any sort of academic degree, the salary is very high. Try to compare it to beginning & mid-experienced lawyers, doctors, and teachers, for example. And it's not that programmers are a rarity nowadays. Programming resources are much more abundant than Law and Medicine. What do you think is the cause of this? ## EDIT: Just some statistics to backup my statement. **Please try to write a full, thorough answer, and not just "ROI" or "Supply- and-Demand". These simple answers don't cover the whole issue.**


What is the etiquette in negotiating payment for a software development job?

The reason I'm taking a general business question and localize it to software development is that I'm curious as to whether there are certain trends/etiquette/nuances that are typical to our industry. For example, I can imagine two different attitudes employers may generally have to payment negotiations:   1. we'll give you the best offer so we can't really be flexible about it because we already pretty much gave you everything we can give you,      2. we'll give him an average offer and give in to a better one if forced to.  If you try to play hard ball in the first attitude it'll probably cost you the job because you ask for more than they can give you, however if you don't insist on better payment in the second one you'll get a worse offer. In short, when applying to a typical job in our industry what are the typical attitudes from employers on the offers they give, what is the correct way to ask for a better payment, do these things differ between different types of companies (for example startups vs well entrenched companies), and how do these things differ between different kinds of applicants (graduate vs student)?


What to do when your "failing" project is actually "successful"?

What would you do if you were in a situation where the project you are working on is obviously built poorly and will have failures in the future and be a nightmare to maintain...but it is considered a "success" by management because the clients are happy? Should I just not care? Is it ok that the clients don't even realize they could have a better application than this? At what point do I stop caring about building it right and just go with the flow?


How do I integrate a browser-based JavaScript unit testing framework into my workflow?

I'm wondering how I seamlessly include a JavaScript unit testing framework into my workflow. The context is, we have an existing data processing algorithm + webapp to display it, with no automated testing or continuous integration. We use Eclipse as our IDE. For the webapp JavaScript modification, it would be nice to add some unit tests, and qUnit looks straightforward, plenty of community support etc. Here's how I'm currently thinking the workflow would go:   * Branch the JavaScript code, check it out, modify it. Refactor it to make it more testable if needed.   * Write qUnit unit tests in accordance to the above tutorial.    * Start Tomcat in eclipse, run the qUnit test page.    * Open the browser, check that all the tests have passed.   * Commit the code back to the branch.    * Merge the branch back into to trunk.    * At this point there might have been a merge conflict, and so unit tests would need to be run again for the trunk to check that they're still working.  The issue here, it still seems a little cumbersome to be running the unit tests, several clicks involved to run and check the results. Now with the merge back to trunk issue, clearly a continuous integration solution like Jenkins would be good here, but given that that's out of the question for now, let's just focus on how we can make it easy to run the tests as a developer. Do you think I'm missing something here, or is what I'm proposing reasonable sensible?


Distributed Issue Tracking

Distributed issue tracking seems like a belting idea to me, but it has never really taken off in a big way. Is there a good reason for that? ## I am aware of:   * bugz everywhere      * too complex to set up     * too many requirements     * reasonably successful, used by some large projects   * fossil      * tries to integrate too many things, and ends up being a slightly worse version of all of them - except maybe for the distributed issue tracking part, which is decent (probably best I have seen)   * several other smaller projects      * none of which have gained any traction I am thinking about making my own, but before I begin, I would like to know why none of the others have taken off in a big way. ## Anticipated issues: (I think they can all be overcome)   * merging distributed issues as they are updated is complex, as is merging any code files   * conversation continuity can be destroyed, as comments can come in at any time, perhaps not in the correct flow   * expectation of central server with issues up-to-date


How to Properly Make use of Codeigniter's HMVC

I have been having problems wrapping my brain around how to properly utilize the modular extension for Codeigniter. From what I understand, modules should be entirely independent of one another so I can work on one module and not have to worry about what module my teammate is working on. I am building a frontend and a backend to my site, and am having confusion about how I should structure my applications. The first part of my question is should I use the app root controllers to run modules, or should users go directly to the modules by urls? IE: in my welcome.php               public function index()     {       $this->data['blog'] = Modules::run( 'blog' );       $this->data['main'] = Modules::run( 'random_image' );       $this->load->view('v_template', $this->data);     }          public function calendar()     {       $this->data['blog'] = Modules::run( 'blog' );       $this->data['main'] = Modules::run( 'calendar' );       $this->load->view('v_template', $this->data);     }      My second part of the question is should I create separate front/back end module folders               -config     -controllers       welcome.php       -admin         admin.php     -core     -helpers     -hooks     -language     -libraries     -models     -modules-back       -dashboard       -logged_in       -login       -register       -upload_images       -delete_images     -modules-front       -blog       -calendar       -random_image       -search     -views       v_template.php       -admin         av_template.php      Any help would be greatly appreciated.


Is a Ruby 'Web App' designed differently than a PHP 'Web Site'?

From my understanding, Ruby is a language that can be used to creat desktop applications. How does this get converted into a 'Web App' - and is a 'Web App' really any different than a Web Site with interactivity?


How do build time and unit test time compare?

Does this depend heavily on the type of project (e.g. scientific software vs banking system vs game)? If so, in which areas is the difference the highest and lowest? In your experience, is it safe to say that as a rule, the time it takes to run unit tests is at least one order of magnitude larger than that of building the software in the first place?


What does Symfony Framework offer that Zend Framework does not?

I have professionally working with Zend Framework for about a year. No major complaints. With some modifications, it has done a good job. I'm beginning to work on a side project where I want to heavily rely on MongoDb and Doctrine. I thought it might be a good idea to broaden my horizons and learn another enterprise level framework. There seems to be a lot a buzz about Symfony. After quickly looking over the site and documentation, I must say I came away pretty underwhelmed. I'm woundering what, if anything, Symfony has to offer that Zend doesn't? What would the advantage be in choosing Symfony?


Should universities put more emphasis on teaching their students about design patterns?

While I've heard about design patterns being mentioned in a few courses at uni, I know of only a single course which actually teaches design patterns. In almost all other areas (algorithms, parallelism, architecture, dynamic languages, paradigms, etc), there are several, often a basic course and an advanced course. Should universities put more emphasis about teaching their students about design patterns and provide more courses in design patters? Are lack of knowledge about design patterns common in just-graduated junior developers?


Feeling a bit... under-challenged in my university course

I'm currently a sophomore at my university, majoring in Computer Science. Obviously, there are some programming courses as part of my curriculum. However, I'm feeling very underwhelmed by its progress. I've self-taught myself a lot and like to code in my spare time as a hobby. I'm currently in Computer Science II. I never took CS 1 because it seemed rather basic -- I asked someone in the department if they would override my CS 1 requirement if I passed their final (which I did with flying colors). Anyway, the class is going by quite slowly. It seems like the rest of the class has a hard time understanding some basic concepts, which the professor needs to keep going over to help them understand. Is this normal? Looking at the class schedule, I seem to know everything except for one or two things near the very end of the semester. Is there a different perspective I can look at this through so it doesn't seem so boring?


Microsoft SDE Interview vs Microsoft SDET Interview and Resources to Study

I have always heard that SDE interviews are much harder to crack than SDET. Is it really true? I have also heard that if candidate doesnt do well in SDE interview he is also sometimes offered SDET position. How much truth is there into these talks? I would highly appreciate if someone would put good resources and guidelines for how to prepare for Microsoft interviews..which books to read, which notes, online programming questions websites, etc. Give as much info as possible. Thanks in advance to everyone for your valuable help and contribution.


Relation between projects and solutions in VS

We're about to start with a new software and there are mixed opinions on the organization of software. I'd be delighted to hear what others might have to say in regard to the presented options as well as what other consideration one might refer to when making such a decision.   1. Hierarchical approach   2. Interchangeable approach Approach #1 would consist of a single solution in VS with a number of projects connected to it (such as _Utilities_ , _Service_ , _Exporter_ , _Gui_ etc.). Everything would be in a single collection and the same root directory (for the solution file) and subdirectories (for the project files), so to speak. Approach #2 would be constituted primarily of a set of projects, not related to each other (other than the references, of course), while the solution's (or solutions', would we desire to create different setups for different deliveries) purpose would be solely to refer to the (external) projects collecting them in the GUI. There would be n+1 directories (one for each project's file and an additional one for the solution's file, or solutions' files later on). We've discussed the matter and listed the advantages of each approach and, although agreed on the facts, the team's members are not on the same page regarding which one to choose. We're a very democratic organization, so the decision needs to be persuasive to everybody (or at least a vast majority) and there won't be any from-above order from the boss. There's no prior code base and the financial consideration needs not to be addressed. Which approach is preferable? Which is more of a commonly applied standard in the industry? What considerations might one take to ensure the rigidity of the choice? # Edit It's also fully possible that our current project will be subject to the situation described in this question \- both being the one that "borrows" projects from elsewhere as well as being the one that the projects are "borrowed" from.


Design Pattern Books, Papers or Resources for Non-Object Orientated Paradigms?

After viewing this video on InfoQ about functional design patterns I was wondering what resources are out there on design patterns for non-object orientated paradigms. There are plenty out there for the OO world (GOF, etc, etc) and for architecture (EoEAA, etc, etc) but I'm not aware of what's out there for functional, logic, or other programming paradigms. Is there anything? A comment during the video suggests possibly not - does anyone know better? (By the way, by design patterns I don't mean language features or data structures but higher level approaches to designing an application - as discussed in the linked video)


In Perl, best way to insert a char every N chars

I would like to find the best way in Perl to insert a char every N chars in a string. Suppose I have the following :               my $str = 'ABCDEFGH';      I would like to insert a space every two chars, so that I get:               my $finalstr = 'AB CD EF GH';      The innocent way would be:               my $finalstr;     while ($str =~ s/(..)//) {         $finalstr .= $1.' ';     }      (But the last space does not make me happy.) Can we do better? Is it possible using a single substitution pattern s///, especially to use that same string $str (and not using $finalstr)? * * * The next step: do the same but with text before and after patterns to be cut (and to be kept, for sure), say for example '<<' and '>>':               my $str       = 'blah <<ABCDEFGH>> blah';     my $finalstr1 = 'blah <<AB CD EF GH>> blah';     my $finalstr2 = 'blah << AB CD EF GH >> blah';  # alternate


JAVA IDE - Conditional Breakpoints

Does anyone know if there are any IDE's that can hit breakpoints on a condition? For example, if I'm looking through a large list or iterating through a map or something, I may want to only suspend execution when an ID == "foo" 1.) Is this even possible to implement for IDE's   2.) Are there any plugins available for Eclipse to do this now?


Is recursive forking considered an anti-pattern?

I'm starting to tinker with process forking, just to get a feel for it. I thought I'd write an example where work is distributed among child processes and the results handed back to the parent; this way, it could be run in parallel on several processors. In my first attempt, I'm forking in a loop, which means that each time through, all the existing processes (the original, children, grandchildren, etc) produce another fork. This is causing me problems (memory consumption, rapid growth of the number of processes, keeping track of the pipes to hand data back up the chain, etc), and I'm wondering if I've stumbled on an anti-pattern. I **could** simply fork N children directly from the parent. I realize that it's common to fork and exec multiple times; for instance, terminal forks a shell, and the shell forks an editor. But **is it considered bad practice to fork "recursively" when the children are all of the same type?**


Emacs-as-OS: obsolete?

In an attempt to reach at least beginner status with such a legendary editor, I have been coding in Emacs for the last two months. I try to keep an open heart, but I find myself continally disagreeing with one core design choice: that Emacs allow its users to never have to leave. In a 2010 world, I just think that every side feature of Emacs is hopelessly behind dedicated software:   * I would never use its built-in browser; Chrome is years ahead.   * I would never use its dired feature; Path Finder (Mac OS X) suits my needs.   * I would never use its built-in email; the Gmail web interface has more relevant features like Priority Inbox.   * Etc. Sure, I might occasionally dip into Emacs to use regexps, etc. for one of the above tasks, but other than regexps, I really see no reason to ever touch those side features. I'm a completely newbie, yet I have a strong gut feeling that Emacs-as-an-OS is obsolete. Emacs experts, do you think that Emacs' choice to be a comprehensive environment is the right choice for 2010 and the future? Are there particular peripheral features that are still at or ahead of their time compared to alternatives?


What are your suggestions on learning how to think?

First of all, this is not the generic 'make me a better programmer' question, even though the outcome of asking this question might _seem_ similar to it. On programmers.SE, I've read and seen these get closed here, here, here, here, and here. We all know there are a multitude of generic suggestions to hone your programming skills (e.g reading SO, reading recommended books, following blogs, getting involved in open-source projects, etc.). This is **not** what I'm after. I also acknowledge the active readership on this web site and am hoping it works in my favour by yielding some great answers. From reading correspondence here, there appears to be a vast number of experienced people who are working, or have worked, programming-related fields. And most of you can convey thoughts in an eloquent, concise manner. **I've recently noticed the distinction between someone who's capable of programming and a programmer who can _really_ think**. I refuse to believe that in order to become great at programmer, we simply submit ourselves to a lifetime of sponge-like behaviour (i.e absorb everything related to our field by reading, listening, watching, etc.). I would even state that simply knowing every single programming concept that allows you to solve problem X faster than everyone around you, if you can't _think_ , you're enormously limiting yourself - you're just a fast robot. I like to believe there's a whole other face of being a great programmer which is unrelated to how much you know about programming, but it is how well you can intertwine new concepts and apply them to your programming profession or hobby. I haven't seen anyone delve into, or address, this facet of the human mind and programming. (Yes, it's also possible that I haven't looked hard enough too - sorry if that's the case.) So for anyone who has spent any time thinking about what I've mentioned above - or maybe it's everyone here because I'm a little behind in my personal/professional development - **what are your suggestions on learning how to think?** Aside from the usual reading, **what else have you done to be better than the other people in your/our field?**


How to layout class definition when inheriting from multiple interfaces

Given two interface definitions ...               IOmniWorkItem = interface ['{3CE2762F-B7A3-4490-BF22-2109C042EAD1}']       function  GetData: TOmniValue;       function  GetResult: TOmniValue;       function  GetUniqueID: int64;       procedure SetResult(const value: TOmniValue);     //       procedure Cancel;       function  DetachException: Exception;       function  FatalException: Exception;       function  IsCanceled: boolean;       function  IsExceptional: boolean;       property Data: TOmniValue read GetData;       property Result: TOmniValue read GetResult write SetResult;       property UniqueID: int64 read GetUniqueID;     end;          IOmniWorkItemEx = interface ['{3B48D012-CF1C-4B47-A4A0-3072A9067A3E}']       function  GetOnWorkItemDone: TOmniWorkItemDoneDelegate;       function  GetOnWorkItemDone_Asy: TOmniWorkItemDoneDelegate;       procedure SetOnWorkItemDone(const Value: TOmniWorkItemDoneDelegate);       procedure SetOnWorkItemDone_Asy(const Value: TOmniWorkItemDoneDelegate);     //       property OnWorkItemDone: TOmniWorkItemDoneDelegate read GetOnWorkItemDone write SetOnWorkItemDone;       property OnWorkItemDone_Asy: TOmniWorkItemDoneDelegate read GetOnWorkItemDone_Asy write SetOnWorkItemDone_Asy;     end;      ... what are your ideas of laying out class declaration that inherits from both of them? My current idea (but I don't know if I'm happy with it):               TOmniWorkItem = class(TInterfacedObject, IOmniWorkItem, IOmniWorkItemEx)     strict private       FData              : TOmniValue;       FOnWorkItemDone    : TOmniWorkItemDoneDelegate;       FOnWorkItemDone_Asy: TOmniWorkItemDoneDelegate;       FResult            : TOmniValue;       FUniqueID          : int64;     strict protected       procedure FreeException;     protected //IOmniWorkItem       function  GetData: TOmniValue;       function  GetResult: TOmniValue;       function  GetUniqueID: int64;       procedure SetResult(const value: TOmniValue);     protected //IOmniWorkItemEx       function  GetOnWorkItemDone: TOmniWorkItemDoneDelegate;       function  GetOnWorkItemDone_Asy: TOmniWorkItemDoneDelegate;       procedure SetOnWorkItemDone(const Value: TOmniWorkItemDoneDelegate);       procedure SetOnWorkItemDone_Asy(const Value: TOmniWorkItemDoneDelegate);     public       constructor Create(const data: TOmniValue; uniqueID: int64);       destructor Destroy; override;     public //IOmniWorkItem       procedure Cancel;       function  DetachException: Exception;       function  FatalException: Exception;       function  IsCanceled: boolean;       function  IsExceptional: boolean;       property Data: TOmniValue read GetData;       property Result: TOmniValue read GetResult write SetResult;       property UniqueID: int64 read GetUniqueID;     public  //IOmniWorkItemEx       property OnWorkItemDone: TOmniWorkItemDoneDelegate read GetOnWorkItemDone write SetOnWorkItemDone;       property OnWorkItemDone_Asy: TOmniWorkItemDoneDelegate read GetOnWorkItemDone_Asy write SetOnWorkItemDone_Asy;     end;      As noted in answers, composition is a good approach for this example but I'm not sure it applies in all cases. Sometimes I'm using multiple inheritance just to split read and write access to some property into public (typically read-only) and private (typically write-only) part. Does composition still apply here? I'm not really sure as I would have to move the property in question out from the main class and I'm not sure that's the correct way to do it. Example:               // public part of the interface interface     IOmniWorkItemConfig = interface       function  OnExecute(const aTask: TOmniBackgroundWorkerDelegate): IOmniWorkItemConfig;       function  OnRequestDone(const aTask: TOmniWorkItemDoneDelegate): IOmniWorkItemConfig;       function  OnRequestDone_Asy(const aTask: TOmniWorkItemDoneDelegate): IOmniWorkItemConfig;     end;          // private part of the interface     IOmniWorkItemConfigEx = interface ['{42CEC5CB-404F-4868-AE81-6A13AD7E3C6B}']       function  GetOnExecute: TOmniBackgroundWorkerDelegate;       function  GetOnRequestDone: TOmniWorkItemDoneDelegate;       function  GetOnRequestDone_Asy: TOmniWorkItemDoneDelegate;     end;          // implementing class     TOmniWorkItemConfig = class(TInterfacedObject, IOmniWorkItemConfig, IOmniWorkItemConfigEx)     strict private       FOnExecute        : TOmniBackgroundWorkerDelegate;       FOnRequestDone    : TOmniWorkItemDoneDelegate;       FOnRequestDone_Asy: TOmniWorkItemDoneDelegate;     public       constructor Create(defaults: IOmniWorkItemConfig = nil);     public //IOmniWorkItemConfig       function  OnExecute(const aTask: TOmniBackgroundWorkerDelegate): IOmniWorkItemConfig;       function  OnRequestDone(const aTask: TOmniWorkItemDoneDelegate): IOmniWorkItemConfig;       function  OnRequestDone_Asy(const aTask: TOmniWorkItemDoneDelegate): IOmniWorkItemConfig;     public //IOmniWorkItemConfigEx       function  GetOnExecute: TOmniBackgroundWorkerDelegate;       function  GetOnRequestDone: TOmniWorkItemDoneDelegate;       function  GetOnRequestDone_Asy: TOmniWorkItemDoneDelegate;     end;


Test a simple multi-player (upto four players) Android game in single developer machine

I'm working on a multi-player Android game (very simple it is that it doesn't have any game-engine used). The game is based on Java `Socket`. Four devices will connect the game server and a new thread will manage their session. The game server will server many such sessions (having 4 players each). What I'm worried about is the testing of this game. I know it is possible to run multiple android emulators, but my development laptop is very limited in capabilities (3 GB RAM, 2 Ghz Intel Core2Duo and on-board Graphics). And I'm already using Ubuntu to develop the game so that I have more user memory available than I'd have with Windows. Hence, the laptop will burn-to-death on running 4 emulator instances. I don't have access to any android device, neither I have another machine with higher configuration. And I still have to develop and test this game. **P.S. :** I'm a CS student, and currently don't work anywhere, and this game is college project, so if there are any paid solutions, I cannot afford it. What can I do to test the app seamlessly? ability to test even only 4 clients (i.e. only 1 session) would suffice, its alright if I can't simulate real environment with some 10-20 active game sessions (having 4 players each).


Unit testing - getting started

I am just getting started with unit testing but I am not sure if I really understand the point of it all. I read tutorials and books on it all, but I just have two quick questions:   1. I thought the purpose of unit testing is to test code we actually wrote. However, to me it seems that in order to just be able to run the test, we have to alter the original code, at which point we are not really testing the code we wrote but rather the code we wrote for testing.    2. Most of our codes rely on external sources. Upon refactoring our code however, even it would break the original code, our tests still would run just fine, since the external sources are just muck-ups inside our test cases. Doesn't it defeat the purpose of unit testing? Sorry if I sound dumb here, but I thought someone could enlighten me a bit. Thanks in advance.


Typically how many programmers on svn?

I've started implementing svn in my school projects. In the industry, typically how many programmers are sharing the same svn? Are the version numbers related to how many programmers are working on a program? Also, would svn be considered to be a part of Agile development?


Is it bad coding practice to create something in a get if it does not exist?

So I have a webservice that has something like a `getAccount` where it would return an identifier to the account if it got it, else throw an exception. The client will always want to create an account if an exception is thrown with the same info the get is done with. I am creating a convenience library for clients that will be handling all of the webservice calls inside so they don't need to know how to do the calls themselves. What I am wondering is in this library if I were to create a `getAccount(accountName)` that will get the account if it exists, and if it does not then create it and return the info, is that a bad thing to do? Should I leave it to the client to handle the exceptions or simply name it something like getOrCreateAccount? Does it matter? Is it bad practice to create something in a get operation?


Is functional spec a "design document"?

So I have been a bit lost in the terms, so first of all I present you what I have learned so far:   System requirements specification - what users want, what the system should do Functional requirement - how the things, which users want, will actually work in the application Also I would say that the latter is a design document. Is that right or is there another document in addition to these?


Using WCF as an API for Database access by the GUI, or no?

Originally I asked this question on Stackoverflow but I was suggested to move the question here. I've asked this question a while ago in MSDN forums but I'd like a second opinion from StackOverflow since I tried this route and found some CONS, but I'd like to hear more opinions as well. Scenario: I have a windows service program, extracting data from files and inserting the extracted data into a MS SQL database. There is a GUI program which does some filtering and calculations and displays the SQL data in realtime. So the GUI basically displays selective records from the database at any moment. It should be also possible for the GUI to insert and update records based on rules. Also The data fetched from the Database can be huge and it would be also nice to allow remote access to the data by the GUI (not critical) So my question in more details: 1 - should I create a WCF service in my Service program which provides some API to the GUI to access and update records? PROS:   * I can change the backend database and wouldn't need to update the GUI app.   * The GUI would be sql free.   * allow the GUI to directly access the Database and fetch and update itself. 2 - allow the GUI to directly access the Database and fetch and update itself. PROS:   * security already in place faster than option 1 easier to implement   * changed in records can trigger data change rather than polling for new data for real time display.   * The GUI can access data remotly if SQL database access is setup to be accessable remotely (a possible security risk?) here is the original question: http://social.msdn.microsoft.com/Forums/pl- PL/architecturegeneral/thread/8ef537c5-9a79-42b5-a6a0-f7278d3f506e


How can I re-use object from another project?

I have a first project has a feature to viewing, inserting and updating an employee record, with this possibly I will create a java class for the UI and another for the database connection with commands for viewing, inserting and updating a record. Then I have a second project that will compute the salary of employee. How can I re-use object from the first project? Should I get the Java or the class file or both of the first project and saved it to the project folder of the second project? How can add a feature of object from the first class?


git, maven and jenkins - versioning, dev and release builds workflow

What is the preferred way to do the following with git, maven and jenkins: I am developping an application, which I would like to maintain "dev" and "release" branches. I would like jenkins to build both. It could be so that the release-artifacts would have versions like 1.5.2 and the dev-builds would just be 0.0.1-SNAPSHOTs. I would like to not have to have 2 different pom.xml files. I looked into profiles, but they don't seem to be able to change artifact versions. One way I looked at could be adding a 'qualifier' to the test- builds. Of course I could just rename the file, because the real artifact- information on this is not important, because the app is a standalone one. What would be the preferred way to doing this? Or how would you do this?


Boss Asking To Work Overtime But Under the Radar

So the other day my boss (let's call him Colfax) asked me to work on a project, but that I should not discuss it with anyone (including the other programmers on my team) and that it would have to be done outside of normal work hours. In exchange, Colfax offered me "off-the-book" vacation days equal to the hours spent on the project. When I asked Colfax if his boss (let's call him Schuyler) knew what he was offering, Colfax said that Schuyler does not know and implied that he (Colfax) would get into trouble if Schuyler found out. My boss also said that if I were to go along with this, my efforts would be remembered for "future consideration". The work is for our employer so everything there is on the up-and-up. However, I have an uneasy feeling about the whole thing. Part of me wants to work on the project -- as it's you know -- coding and coding something cool and fairly simple. On the other hand, the whole thing seems seedy and underhanded. Would I be a "bad employee" for refusing extra work? Or am I morally justified to not do the work? **UPDATE** I know it's been a while since I posted this question, but I thought the folks who participated in the discussion might be interested to know that Colfax quit a couple of months after this conversation. So, if I had followed along, it would have probably been for nothing. Regardless, thanks for the comments everyone.


Recommended process for code reviews with mercurial

We typically used Perforce and SmartBear's Code Collaborator at `Big Corp` and now we're also going to be using Mercurial for certain projects. Code Collaborator support Mercurial (we are using version 5) and I'm trying to determine when the best time (during the commit/push to server) process is the best/efficient time for a code review thanks


Alternatives to oDesk.com for contract work? or is oDesk already one of the best?

> **Possible Duplicate:**   >  Where can I find programming work online? I saw oDesk.com being mentioned in one thread here for contract work and freelance work, and the people listed for hire is asking for $15/hour and up to $80 or $100/hour -- of the ones that I saw for development jobs. I wonder what alternatives there are besides using oDesk.com for programming contract work? (The fee it charges seems somewhat high, that for $80 / hour that I bill, it charges $8.89 / hour to the employer, so the employer needs to pay $88.89 / hour.)


How should I start with Lisp?

I've been programming for years now, working my way through various iterations of Blub (BASIC, Assembler, C, C++, Visual Basic, Java, Ruby in no particular order of "Blub-ness") and I'd like to learn Lisp. However, I have a lot of intertia what with limited time (family, full time job etc) and a comfortable happiness with my current Blub (Java). So my question is this, given that I'm someone who would really like to learn Lisp, what would be the initial steps to get a good result that **demonstrates the superiority of Lisp in web development**? Maybe I'm missing the point, but that's how I would initially see the application of my Lisp knowledge. I'm thinking "use dialect A, use IDE B, follow instructions on page C, question your sanity after monads using counsellor D". I'd just like to know what people here consider to be an optimal set of values for A, B, C and perhaps D. Also some discussion on the relative merit of learning such a powerful language as opposed to, say, becoming a Rails expert. Just to add some more detail, I'll be developing on MacOS (or a Linux VM) - no Windows based approaches will be necessary, thanks. **Notes for those just browsing by** I'm going to keep this question open for a while so that I can offer feedback on the suggestions after I've been able to explore them. If you happen to be browsing by and feel you have something to add, please do. I would really welcome your feedback. **Interesting links** Assuming you're coming at Lisp from a Java background, this set of links will get you started quickly.   1. Using Intellij's La Clojure plugin to integrate Lisp (videocast)   2. Lisp for the Web   3. Online version of Practical Common Lisp (c/o Frank Shearar)   4. Land of Lisp a `(+ (+ very quirky) game based)` way in but makes it all so straightforward   5. Install Clojure and Sublime 2 on MacOS an **excellent** getting started guide   6. Look at the Clojure in Action book. Worked for me.


How to manage an issue tracker's backlog

We've been dutifully using Trac for several years now, and our "active tickets" list has grown to almost 200 items. These include bugs that are too low priority and too complicated to fix for now, feature requests that have been deferred, issues that have never really generated complaints but everyone agrees ought to be fixed someday, planned code refactorings and other design infelicities that we don't want to lose track of, etc. As a result, with almost 200 of these issues, the list is almost overwhelming; it's no longer useful as a source of what needs to be worked on right now. What's the best way to keep track of issues of this sort? Part of the problem is that some of these issues are such a low priority that they may never get done. I hate to lose track of these items (similar to not wanting to throw something out of my house in case I might need it someday); do I need to throw them out regardless (by marking them as wontfix) and assume I can find them in the future if I ever do need them?