title: If you develop with ASP.NET, which other technologies do you use?

text: I wasn't sure if this was more suited to here or StackOverflow. I've always resisted doing web development because the technology stack just seemed a mess. It seems the web has become quite popular so I'm actually going to embrace web development, at least for a little project I'm thinking about. I'm a Microsoft developer, so I'm going to use ASP.NET. I'm familiar with how the web technologies work at a high level, I sort of understand what Javascript can do, I get AJAX (conceptually). CSS and HTML seem ugly but I get what they're for. As an ASP.NET developer do you find yourself working directly with Javascript or HTML? Does AJAX get abstracted away neatly or do you find yourself doing that stuff "by hand"? Are there any other technologies you use? And on a related note, I don't quite see where HTML 5 fits in with ASP.NET, yet. There seems to be a lot of noises from Microsoft that HTML 5 is actually the future of the web as opposed to Silverlight, so do any pro ASP.NET developers understand or use HTML 5 features? I appreciate that's kinda vague, I think a lot of it will become clearer as I get started, but I'd feel more secure if I had some soothing words and pointers from people who have already been through that.


title: how much do I really need to know to become Jr Developer?

text: I believe I have a very good understanding of programming logic fundamentals (passing around variables, nested conditional statements, etc). I am currently going through a book on ASP.NET and am pretty much lost on all the Page Rendering Model, Custom Rendered Controls, Composite Controls, etc. I understand how to use the standard controls no problem. Do I really need to understand all those other things to become a junior developer? Any advice is appreciated!


title: What stands out on a Junior's CV

text: I am looking for advice, hopefully from people more experienced that me. I am going to start applying for junior positions for .net development in the summer. At the moment the only thing on my CV is a project I have done for Windows Phone 7 called sprout sms. It allows the user to send webtext as provided by Irish Operators. The app is doing well and is top ten in my local marketplace (Ireland). By trade I am a salesman and that is the extent of most of my employment. I haven't been to college and due to financial commitments I would not be able to go down the road of full time education. I have kept up to date with various .net related tech in a junior capacity and am looking to now change careers. What I am look to see is what stands out on a juniors CV. My lack of education stands against me so I am looking to offset this with practical experience. I am open to all suggestions and from the end of this month I am free to pursue "notches" which will make my CV stand out. So in short if you where hiring a Junior, what would you like to see that would make you take a second look or request an interview? NOTE: I do fear this is a subjective subject, rather than debate what is the best items to have on a Juniors CV I would like to concentrate on what info you would give to a junior who is looking to apply for a job this year. Thanks to all that respond. EDIT: Thanks for all the responses, I would give all the answers a green tick if I could. I awarded the tick based on what I felt I got out of the answer but all are tick worthy. I have upvoted all of the responses that have given good info too. If you feel you can add more to this question / answer it would be very much appreciated. EDIT 2: I just wanted to let everyone know that using the advice given here and some persistence I got my first dev role. The take away? Personal projects or help on other projects matter a lot, be able to talk, defend and concede when discussing them.


title: How easy is it to obtain an entry level programming job?

text: > **Possible Duplicate:**   >  What core skills does a new Computer Science Graduate need to be > employable? So, I'm in my next to last semester as a Computer Science major and I am wondering about jobs as a programmer. How easy is it to obtain a job as an entry level programmer? What skills should I possess?


I really want to ask this questions to my fellow developers here in Programmers.SE because i am hiring freshers for my company.. Even though i know some basic questions that can be asked to a fresher during interview and i want to know, What are the skills you look for when hiring a fresher/newbie for developement?


title: What core skills does a new Computer Science Graduate need to be employable?

text: A computer science degree (like any undergraduate degree) does not prepare you to be productive immediately. And my sense is that employers are less and less willing to provide that initial training. (Or at least if you DO have those **core skills*** , you have a broader selection of "first jobs" to choose from). What skills should a senior focus on to make him/her self more employable? And how might you get those skills? *EDIT: I'm _not talking_ about experience/mastery of _technology_. I'm talking about **core skills** like Source Control (not mastery of a particular SC, but just being able to use _one_ an understanding the concepts) and Unit Testing (having written Unit Tests using at least some famework), etc.


title: Good references on app pricing?

text: Can anyone point me to reference materials on what companies may expect to pay for outsourced apps? I had hoped to find something in a trade publication or the like, but have only turned up two or three quotable articles with any sense of credibility. We are talking to a client about their first app (and ours) and, as neither party knows what sort of number to expect at the beginning of the negotiation, I'd like some ammunition to be able to say, "On the open market, you can expect an app like this to start around..." Any link or even search term suggestions would be appreciated. Thank you, Mary Kroll Post script: I have ready Joel Spolsky's "Camels and Rubber Duckies" and Neil Davidson's "Don't Just Roll the Dice." My focus is more on what is common in the industry, rather than rate x hours, etc.


title: Is the inconvenience about merging in SVN prior to v1.5 obsolete by now when lack of metadata isn't the case anymore?

text: I'm getting started with SVN and so many sources say that merging is very difficult in SVN as compared to DVCS tools. The most recent questions I could find here on SE are from 2012. Sometimes there's a mention that the reason is that SVN prior to v1.5 didn't have metadata, but SVN is at version 1.8.9 now. Given that SVN is now much more mature than v1.5, and especially the fact that we didn't use SVN 1.5 so we don't suffer from the mentioned lack of metadata -- **is there still much validity in those arguments against SVN?** I understand that DVCS has a completely different approach which is often more desirable, but for those who "must" ues SVN for whatever reason, merging isn't really "hell" anymore, is it?


title: Proper sequence of actions for merging using SVN?

text: I'm totally new to CVCS (SVN specifically). I find that most resources focus very strongly on the command-line commands (irrelevant; we use Windows Explorer + TortoiseSVN) and about structure (e.g. projects inside our outside TTB, etc). Here's a thing about merging I'm not sure of: Based on my sandbox testing, I got the understanding that **merging should be done sort-of backwards?** I first thought that merging meant going from the branch into the trunk, but it now seems to me that I should actually merge the trunk into my branch, fix conflicts there, and only _then_ commit my branch into trunk? Let's say I'm responsible for merging a branch into the mainline, and everybody has committed their local changes into that branch. I now switch my working copy to the branch and merge the trunk into my working copy in order to resolve any conflicts locally and tidy things up. When complete, I commit my working copy into the trunk (there should be none or hardly any conflicts in this step).   This is basically also what one needs to do when committing changes from one's working copy into the branch. Right? Wrong? Am I missing some steps? It seems complicated but makes sense. Let's not argue about how merging in SVN is harder than in DVCS's because that's not something I can change.   Also, I'm not asking about the specific command-line actions because we're using TortoiseSVN.


title: planning a full scale web application

text: I've been wanting to build a full scale CMS application that will target certain career workflows but the obstacle that has been in my path is that I would need to sit down and fully learn the career in order to map out and build the application that will help or guide employers already in the environment. This isn't so much a programming question but based on some of your experiences what are some of the things I need to think about before starting on the application? For me here are a few questions I have asked myself:   1. what is the demand for this application?   2. who is the target audience?   3. what is it that I need to learn?   4. is it really worth the time spent on learning?   5. will it cost money and how much?   6. how will the service be provided to the client?   7. Does this application already exist? If yes what features does it have and not have   8. what are clients really looking for in this application that they cannot find. I understand that most of this can be common sense but having some of your input from your own experience can help with questions I probably didn't even think about. I will be using php5 and mysql since that is what I already know. My question basically is, if you were to build a web application say a CMS for bookkeeping and you had no idea on the subject and that it was a very hot project, what would you ask yourself? (that is for example)


title: WYSIWYG Editor - Inline Comments

text: I am working on a user driven cms site. Think of it like stack overflow. The users can write posts, and publish them to the web. I am using a WSGI editor to generate the content. One of the features I am implementing is the ability for users to comment on particular section of a user post. I am trying to think of a clean way to implement this feature. My current plan is to customize the WYSIWYG editor to generate a unique id per `<p>` and then store the comments separately, and when the page loads also read the comments and do some jquery magic. All users that are going to be generating content will be admin users, so I am not afraid of someone messing around with ids. This is one approach I have found, but I was hoping to either get some feedback or alternative ways to accomplish what I need. Another thing I am trying to figure out is how I can handle a user editing a post that has been commented on...


title: Do iterative methods reduce cyclomatic complexity and improve supportability?

text: Do iterative methods such as are commonly found in modern languages such as C#, JavaScript, and (hopefully) in Java 8 reduce cyclomatic complexity's impact on understandability and supportability of code? For example in C# we might have the following code:               List<String> filteredList = new List<String>();          foreach (String s in originalList){        if (matches(s)){           filteredList.add(s);        }     }      This has a simple cyclomatic complexity of 2. We could easily re-write this as:               List<String> filteredList = originalList.where(s => matches(s));      Which has a simple cyclomatic complexity of 0. Does this actually result in more supportable code? Is there any actual research on this topic?


title: How can I convert PPT files to PNG in PHP without COM?

text: I need to convert Powerpoint files to PNG in PHP. I can do the conversion with using COM in PHP but COM is only supported on Windows. I need to do this for both Windows and Linux. I am wondering if someone give me hints about that conversion.


title: Name convention for Reader and Writer

text: I'm trying to name a component that will be capable of both reading from an `InputStream` (file or otherwise), and writing to an `OutputStream`; thus serving both as a `Reader` and as `Writer`. So far the best I've come up with is:   * `ReaderWriter`   * `IOStreamManager`   * `StreamManager` Any good ideas?


title: How is one expected to use open sockets with [delimited] continuations?

text: I'm trying to figure out how an open socket or file handle should interact with continuations. Searching has revealed that `dynamic-wind` is probably part of the solution, but I'm more interested in the methodology rather than the implementation, and all I could find is how to implement it under various conditions. Do programmers even use sockets within continuations in such a way that it is necessary for `dynamic-wind` to close them? Or is it typically just a way to implement a "finally" block if the continuation exits past where the socket is handled? What should happen if a continuation is re-entered after a hypothetical `dynamic-wind` closes the socket?


title: What does "trivial" mean?

text: You often see statements like "all non-trivial software has bugs" or "all non- trivial abstractions are leaky". But what makes a program "trivial" instead of non-trivial? Where is the cut-off line at which we can say that a program isn't trivial and "excuse" bugs? Even something only a few lines long could have bugs. Say you have a simple command line C program that asks "What is your name?", reads a response using scanf or gets, stores it in a buffer and prints back "Hello " + name. That program could easily have a buffer overflow if the input is larger than a buffer, so it could have a bug even though it's only a few lines. But if you ensured that you always allocated eblnough memory or bounds checked, etc, you don't have the bug. So is the program "trivial" or not? It can be buggy or not, but it's small and simple. Can we give any meaning to the idea of a "trivial program" or is it merely an excuse for sloppyness?


title: user security pattern recommendation/best practice

text: I'm looking for good reference on patterns that apply to user security and ACLs for multi-user network applications. I'm re-writing a fairly large application from scratch. Now I'm looking at the user management and security. I'm not so interested in user meta data, but rather ACLs and security. Right now the application has users, groups, and roles. Users and roles have ACLs. Groups do not. A user can belong to none or any number of groups and/or roles. I cannot find a good reason not to combine roles and groups. However, I'd like to hear the various opinions on the subject. It would be nice to be pointed to some design patterns and references on the subject.


title: Technical analysis in software development

text: What should a good technical analysis include in software development? Why do we need a technical analysis? why can't we just start coding? I got this question from a customer who won't pay for the analysis.


title: Which should I be learning, HTML or XHTML?

text: I'm just learning HTML, but some say XHTML is better. The W3C recommends XHTML, and I know W3C is more credible, right?


title: Where can I learn about browser-specific quirks?

text: I am a professional iOS, Java and C# programmer. Now I want to build a website. The problem is I have already started building it and I am finding IE is not rendering it correctly. It is rendering much better in FF however. Where is the best resource for someone in my position? I am a professional programmer but I need something to get me up to speed quickly with the 'quirkiness' if you will, of css and html.


title: How do you sell the idea of sending developers to user conferences?

text: How do you sell to the company management to send developers to user conferences? For now, lets just assume we'd opt for in-country conferences as a start.


title: Historical origins of Scala implicits

text: Scala has been called complex with its rich feature set by many of my colleagues and some even blamed all those _new_ features of it. While most programmers are aware of the OO-features, and at least the decent ones also know about functional programming, there is one feature in particular in Scala for which I am not aware of its historical origins. Given that a major mantra of our profession is to not reinvent the wheel, I am rather confident, that Scala does not have _any_ actual unheard-of-before features, but I stand to be corrected on this one if necessary. To get to the actual question, while I am aware of the origins of most of Scala's features I have never seen something like its `implicit` declarations before. Are there other (older!) languages out there which also provide this feature? Does it make sense to distinguish the different cases of implicits (as they may originate from different sources), namely implict conversions and implicit parameters?


title: How will quantum computing change programming?

text: How is programming a quantum algorithm different? What would a C like language look like if it was designed for qubits? Would types change?


title: What are the complexities of memory-unmanaged programming?

text: Or in other words, what specific problems did automated garbage collection solve? I've never done low-level programming, so I don't know how complicated can freeing resources get. **Update** \- apologies for the unnecessary concision, please let me expand my question: The kind of bugs that GC addresses seem (at least to an external observer) the kind of things that a programmer that knows well his language, libraries, concepts, idioms, etc, wouldn't do. But I could be wrong: is manual memory handling intrinsically complicated?


title: Better approach for updating live website on Server

text: I follow a very raw approach while updating my website on server. The approach I follow doesn't seem right, so I am interested in knowing a recommended way of updating a **LIVE** project, be it on shared host or dedicated server. Right now, for any changes in View, I simply upload and overwrite the view files on server. Similarly for any code changes, I upload and overwrite the .dll and .pdb files. Currently my website doesn't have any traffic so there has been no issue so far. But, Is this a recommended approach for a website with good amount of traffic. And if not, then how should one approach updation on the server.


title: Can manager classes be a sign of bad architecture?

text: Lately I've begun to think that having lots of manager classes in your design is a bad thing. The idea hasn't matured enough for me to make a compelling argument, but here's a few general points:   * I found it's a lot harder for me to understand systems that rely heavily on "managers". This is because, in addition to the actual program components, you also have to understand how and why the manager is used.   * Managers, a lot of the time, seem to be used to alleviate a problem with the design, like when the programmer couldn't find a way to make the program Just WorkTM and had to rely on manager classes to make everything operate correctly.  Of course, mangers can be good. An obvious example is an `EventManager`, one of my all time favorite constructs. :P My point is that managers seem to be overused a lot of the time, and for no good reason other than mask a problem with the program architecture. Are manager classes really a sign of bad architecture?


title: Manuals - How Up To Date?

text: If you have a product that has been in the market for a long time, but it is still in active development daily - how often should the manuals be updated? If your users are constantly updated to the bleeding edge version due to the fact that your organization sees fit that the latest bug fixes are always in the shipped version. Meaning, you could fix a bug one day and next day it is hitting production.


title: Hardware running gpl code

text: Let's say I am selling hardware that uses the linux kernel. Do I have to state somewhere that it is running linux(or other gpl code)? The reason I am asking this is because I bought a television, which I found out is running linux. It doesn't say anywhere it is running linux, which seems to me a violation of gpl. If they don't state anywhere they are using gpl code, how do I know that I have the right to ask for the source? And let's say I want the source code of the kernel, how would I get it? Just go to the company and just demand it?


title: C programming multiple storage backends

text: I am starting a side project in C which requires multiple storage backends to be driven by a particular piece of logic. These storage backends would each be linked with the decision of which one to use specified at runtime. So for example if I invoke my program with one set of parameters it will perform the operations in memory but if I change the program configuration it would write to disk. The underlying idea is that each storage backend should implement the same protocol. In other words the logic for performing operations should need to know which backend it is operating on. Currently the way I have thought to provide this indirection is to have a `struct` of function pointers with the logic calling these function pointers. Essentially the struct would contain all the operations needed to implement the higher level logic E.g.               struct Context {         void (* doPartOfDoOp)(void)         int (* getResult)(void);      }          //logic.h     void doOp(Context * context) {         //bunch of stuff         context->doPartOfDoOp();     }          int getResult(Context * context) {         //bunch of stuff         return context->getResult();     }       My questions is if this way of solving the problem is one a C programmer would understand? I am a Java developer by trade but enjoy using C/++. Essentially the Context struct provides an interface like level of indirection. However I would like to know if there is a more idiomatic way of achieving this.


title: Dependency injection: How to sell it

text: Let it be known that I am a big fan of dependency injection (DI) and automated testing. I could talk all day about it. **Background** Recently, our team just got this big project that is to built from scratch. It is a strategic application with complex business requirements. Of course, I wanted it to be nice and clean, which for me meant: maintainable and testable. So I wanted to use DI. **Resistance** The problem was in our team, DI is taboo. It has been brought up a few times, but the gods do not approve. But that did not discourage me. **My Move** This may sound weird but third-party libraries are usually not approved by our architect team (think: "thou shalt not speak of Unity, Ninject, NHibernate, Moq or NUnit, lest I cut your finger"). So instead of using an established DI container, I wrote an extremely simple container. It basically wired up all your dependencies on startup, injects any dependencies (constructor/property) and disposed any disposable objects at the end of the web request. It was extremely lightweight and just did what we needed. And then I asked them to review it. **The Response** Well, to make it short. I was met with heavy resistance. The main argument was, "We don't need to add this layer of complexity to an already complex project". Also, "It's not like we will be plugging in different implementations of components". And "We want to keep it simple, if possible just stuff everything into one assembly. DI is an uneeded complexity with no benefit". **Finally, My Question** How would you handle my situation? I am not good in presenting my ideas, and I would like to know how people would present their argument. Of course, I am assuming that like me, you prefer to use DI. If you don't agree, please do say why so I can see the other side of the coin. It would be really interesting to see the point of view of someone who disagrees. **Update** Thank you for everyone's answers. It really puts things into perspective. It's nice enough to have another set of eyes to give you feedback, fifteen is really awesome! This are really great answers and helped me see the issue from different sides, but I can only choose one answer, so I will just pick the top voted one. Thanks everyone for taking the time to answer. I have decided that it is probably not the best time to implement DI, and we are not ready for it. Instead, I will concentrate my efforts on making the design testable and attempt to present automated unit testing. I am aware that writing tests is additional overhead and if ever it is decided that the additional overhead is not worth it, personally I would still see it as a win situation since the design is still testable. And if ever testing or DI is a choice in future, the design can easily handle it.


title: How do I set my environment up for TopCoder?

text: I tried out TopCoder today. While I liked the problem, the Java editor didn't work for me. The remote compiling time and the lack of unit tests also made it difficult to complete the task. I ended up coding the solution in Eclipse and the pasting it into the TopCoder window. I tried out EclipseCoder, but it didn't suit my needs either. What tools do you use and how do you hook up your development environment with TopCoder? How does TopCoder handle submissions, and is there any way to speed up the time it takes to process them?


title: How do you keep your customers informed about the exact time you spent on their projects?

text: In my answer of the question about what are the important points to consider when starting your own company, I mentioned the fact that when the customers pay per hour of work, there must be a way for them **to be sure that you don't make them pay for more hours that you actually spent working on a project**. But now that I'm thinking about it, how this can be implemented? In other words, how can you prove that you've worked on a project 32 hours the last week, and not 10 hours? In our company, we use a basic home-made time tracking software which is very helpful but has its limits:   * If the developer is browsing Facebook for the last hour but forgot to notify the application that he's not working on the project any longer, the application will still count the Facebook time as the time spent entirely on the project.   * If an employee of the company has enough permissions on database level, nothing can stop her to modify time records for the last weeks or months (even if it can be more difficult to do with better audit and permissions control). Finally, we don't even give to the customer some of the details about the time we spent.   * In our invoices, there are enough details to know that for a specific part of a project, a developer spent 121 hour working on C#/ASP.NET and 47 hours on CSS/HTML and that a database administrator spent 39 hours designing the database and 11 hours reviewing data access layer and optimizing queries,   * But there are nothing like that on September 24th, 2010, the database administrator was working on database design from 9:34 AM to 11:48 AM, then from 16:01 PM to 16:42 PM, then from 16:50 PM to 17:24 PM, and made two commits to the version control, the first one at 11:47 AM with the number 1234, the second one at 17:24 PM with the number 1239 as a proof. So what is the current practice in other companies? **How do you deal with time management to ensure that customers have enough information to be sure that they pay only for hours/days really spent on their projects?**


title: Way in over my head! (Dealing with better programmers)

text: I've just been hired as a member of a group that is developing in C++. For the last 11 years, I'd been coding on and off at my last job (some C, some Fortran, some C++). The coding I'd done was mostly maintaining and adding new features to one of our systems. The code, being 10 years old, did not contain all the modern C++ stuff. Lo and behold, my new job is filled with programmers with 5-10 years experience of pure coding and they all use the most modern aspects of C++ (C++11, template, lambda, etc, etc). They are expecting someone with that same experience... which I have: I've been working for 15 years total, but when I look at their code, I can't understand half of it! :-| Anyone been in that situation? What would you recommend?


title: How did programmers work back when a computer was very expensive, rare, as big as a room?

text: I assume they weren't able to sit in front of a computer for the whole day like we do today. So how did they write their program? On a piece of paper and type it later when the computer is available? How did they do their testing?


title: Source code vs source files?

text: I'm in a situation with my company where this may be an important distinction. Is there any distinction between "source code" and "source files" in a technical context? Is there any distinction between "source code" and "source files" in a legal context? Thanks. Edit: I saw some close votes on this. I want to note that this is a possible issue between two companies - and where necessary, we'll definitely use legal counsel. I'm asking this because I'm attempting to be prepared if I'm asked for any technical definitions (as the developer role in this).


title: Software without a testable goal

text: I hope you bear with me here. It's difficult to explain this problem, especially so without direct reference to the specific domain. I work on a component of a larger system which performs computationally expensive pre-processing in order that the "real-time" component can perform it's functions quickly. My product effectively creates a big lookup dataset for the main component to query. My product computes the results of a finite set of "scenarios" (a few hundred thousand) any one of which may be performed by a customer. The component uses a k-shortest paths algorithm and a number of rules engines to consider each scenario and build up the lookups, operating on reference data that represents the problem domain. For the scenarios that are very commonly performed by our customers the test cases are easy; the expected outcomes are easy to devise and assert acceptance tests. However, for the scenarios that are not "popular", the expected outcomes are difficult to establish and in any case their outcomes may be changed by changes to the reference data which are virtually impossible to predict. In other words, changes to the reference data changes the inputs to the shortest-path algorithm which in turn may change the output. Creating acceptance tests for these unpopular cases is also tricky, because the business "doesn't know what it doesn't know", and so has no baseline against which it can be tested. Whenever a tester comes back to me with a defect, 99.9% certainty it's because conditions in the reference data have changed, rather than because of any code changes. I therefore spend a load of time chasing defects that are "data issues". I think what confuses the situation is that the reference data is key to the functionality of the system, and the system without a specific set of reference data would produce no results that had any meaning to the business. I could create a set of "fake" reference data against which to test, but any assertion against this engineered reference data would be invalid in the real world. I would be very interested to hear any perspectives on this especially from those who have encountered similar problems. I am anxious not to simply shrug my shoulders and reply "data issue" but get to the root of the problem and work out how to build and test this thing in a reliable, repeatable and valuable way.


title: What is meant by a "First Class Protocol"

text: The Node.js about page describes HTTP as being a "first class protocol" within node.js. What does this mean? http://nodejs.org/about


title: Choice of node.js modules to demo flexibility

text: I'm putting together a presentation to talk about and demo node.js to client- side JavaScript developers. The language concepts and syntax are not an issue for them, so instead I'd like to get right into things and show off node's abilities that differ from client-side JavaScript. There are numerous modules available in the NPM registry and many people have much more experience with the registry than I do. **I'm looking for a selection of node modules based on recommendations** from your experience that show a variety of uses for node that are practical, broadly useful and can be demonstrated with a small code sample without requiring much domain knowledge on behalf of the audience. Neat and impressive is good too - I can throw in a couple of shock and awe items for cool factor. To be fair, top-voted answers will get most consideration for inclusion. My hope is this will result in a well-rounded demonstration of node technology.


title: In a software engineering view, what are all the steps in a state of the art SDLC that I can do?

text: In an hypothetic situation of a company that have infinite resources (time/budget) to develop a product. can someone list me **ALL** possible steps that are required in my system development life cycle to reach the goal, in a **state of the art software engineering view** ? The GOAL of this question is to get a detailed list of all different aspects that i would do in "a state of the art" software development life cycle. I'm not interested in the paths (software development methodologies) but in all kind of steps. * * * Example: Focusing on the **"software test step"** i can test a products to archive different goals:               * 5.1 Test target           o 5.1.1 Unit testing           o 5.1.2 Integration testing           o 5.1.3 System testing           o 5.1.4 System integration testing     * 5.2 Objectives of testing           o 5.2.1 Regression testing           o 5.2.2 Acceptance testing           o 5.2.3 Alpha testing           o 5.2.4 Beta testing          * 6.1 Software performance testing and load testing     * 6.2 Stability testing     * 6.3 Usability testing     * 6.4 Security testing     * 6.5 Internationalization and localization     * 6.6 Destructive testing      And others .. Trying to enumerate all aspects of software testing, what else aspect i need to test ? Do this kind of reasoning to all aspect of software development life cycle.


title: Side Effects Breaking Referential Transparency

text: Functional Programming in Scala explains a side effect’s impact on breaking referential transparency: > side effect, which implies some violation of referential transparency. I’ve read part of SICP, which discusses using the “substitution model” to evaluate a program. As I _roughly_ understand the substitution model with referential transparency (RT), you can de-compose a function into its simplest parts. If the expression is RT, then you can de-compose the expression and **always** get the same result. However, as the above quote states, using side effects can/will break the substitution model. Example:               val x = foo(50) + bar(10)      If `foo` and `bar` **do not** have side effects, then executing either function will **always** return the same result to `x`. But, if they do have side effects, they will alter a variable that disrupts/throws a wrench into the substitution model. I feel comfortable with this explanation, but I don’t fully grok it. Please correct me and fill in any holes with respect to side effects breaking RT, discussing the effects on the substitution model as well.


title: Haskell GUI: how much can be done with Haskell?

text: I've been wanting to try out graphics in Haskell. From what I've seen, the available libraries are either front-ends to C/C++ libraries, or an abstraction of them with minimal features. The high-level libraries do not seem to suit my needs, and so I'm left with lower-level front-ends. **What I need is to render tiles and text** \- basics for a very simple game. I know how to do this with C, and was thinking I could write the graphics in C and interface it with Haskell. The alternative is to write the graphics using a Haskell library. **My question is, can available Haskell libraries achieve what I want?** I do not want to bend over backwards; if C can do it better than I would like to know.


title: Setting up Eclipse IDE for Python and PHP development

text: There are various versions of Eclipse IDE available at Eclipse Download. Since, I am not concerned with Java development, I downloaded the Eclipse Classic 3.7.1. Now, I want my IDE to be setup for Python and PHP development. 1) Have i downloaded the correct version ?? 2) What tools should i download next. NOTE : I haven't installed anything yet, just downloaded the classic version from Eclipse website.


title: If XML is so bad.....why do so many people use it?

text: I understand the purpose of XML, but I always hear people complain about how BAD it is? I don't really understand whats so bad about it? I usually hear the terms "bloated" and "slow" tossed around. But I guess as programmers, what do you mainly use it for? And do you really consider it "bad"....because if it is, an awful lot of people use it for transporting of data...


title: What workflow would be preferable when working with Cloud9 and Git?

text: I'm working with a small team developing a web app. We're using Cloud9 to make collaboration and portability as simple as possible, but it's making it a difficult to determine what would be the best way to integrate that with Cloud9. The way we have it set up at the moment is that there is one owner of the Cloud9 workspace who has granted read/write access to all of the collaborators of the project. This works well for collaboration, but if a collaborator pushes his or her work to the git repository, the commit is credited to the owner of the cloud9 workspace, which isn't ideal. People want credit for their work, and it makes it really difficult to keep track of who's doing what. The other option, as far as I can see, is to have each developer create a clone of the repository in their own cloud9 account and work from there. This solves the git issue, but it would mean not taking as much advantage of cloud9's great collaboration features (line by line authorship credit, file revision history, etc.). It would also mean an extra step to update the workspace for people who aren't very familiar with git. What workflow do you think would be best suited to this situation?


title: ASP.Net MVC 3: multiple versions of the site without changing of URL, is it possible?

text: Our website is written in ASP.NET MVC 3 and we want to change a feature in the core functionality of the site. The problem is not every client can be moved to this new version/format (because of some technical inner restrictions) so it means that we need to keep 2 versions of the same functionality (backend and frontend) simultaneously. We don't want our clients to worry about URLs, so the ideal solution would be keep the same URL but redirect clients to the different versions. The information about clients is stored in database. So the moment when user (client) logs in we know which version of site we should show. I'm thinking about routing and areas but I'm not sure if it's possible for example to have 2 areas with the different versions of the same application. Or is it possible to load the assemblies on the fly? After user is logged in we can decide if (s)he should be redirected to the new or old version. As far as all the clients have been moved to the new version we don't need this system more. How can I do this in ASP.NET MVC?


title: best practice when working with a MySQL database datadir directory

text: At the place I currently work they do some thing I consider strange in the way they work with the MySQL datadir. The directory in which the files that actually store the data are kept. > $ grep datadir /etc/mysql/my.cnf   >  datadir = /var/lib/mysql Where all the .frm .myd .myi files are found. When moving data around on the network or doing client installs they copy these files directly out of the this directory and past them into which ever directory they have set up MySQL to use on the client side. They do the same thing at the office. I was taught as a Database Administrator that you should work with the scripts. Export the data and structure of the database as a SQL script and import it as a SQL script when you want to start working with it. This is to protect the data integrity. As those files can be in a state inconstant with a working copy of the data. As caches may not have been written to the database files on the disk. I see that they stop the MySQL server when doing the copying and pasting so that should prevent the data becoming corrupt. I was wandering what industry best practice is around this issue. It seams strange to me. Considering how they view security, concerning passwords and root access I think they have developed a bad practice and are doing it ignorantly. They don't have a strong understanding of some of the fundamentals of how database systems should work. Am I wrong, should I just go with the flow and not get involved with trying to change these practices.


title: single table w/ extra columns vs multiple tables which duplicate schema

text: I am working on a project where at some point, I needed to make a decision on whether or not, in the database, I should have a single table with multiple columns that not every record uses, or multiple tables with duplicated schema. I am creating a Sports information application which can handle multiple sports. We can handle NBA,NHL,MLB,NFL for example. Each sport has very similar concepts - Teams, Schedules, Injuries, Player info.. Our data source of course does not give us each piece of data in the same schema. Each sport has a different Schema to which we receive data from our vendor. Because there wasn't enough time (client demands) to do upfront analysis of the data feeds to determine commonalities, I hedged my bet and took the 'safe bet' and made individual separate tables for each sport instead of one set of tables that all sports used. The result is duplicated schema in several of the tables, and so duplicated interfaces to the database (e.g. stored procs) as well. I have something like NBA_Game, NFL_Game, NBA_Team,NFL_Team, etc.. each table might have a few properties that the other one doesn't, and several that are shared. it goes on for say 5-10 tables across 4 or 5 sports. I'm still not sure if this is entirely a bad thing - the alternative, having a single set of tables which had properties on it that not all sports would use, might have on its own been unwieldy as well. Has anyone that has done this run into pitfalls of this kind of design and could share their experience here? Things that might help me to know now instead of learning the hard way down the road? Have you done it the other way, having one big table/set of tables, with columns that not every record would use? What pitfalls did you run into doing that? Is there some alternative such as table inheritance that you have used in the past that worked better? Thanks


title: Is it legal to recreate/opensource a program that you previously coded for another company

text: At my previous job I created a generic dashboard for automating tasks and it that turned out to be quite useful - and of course my previous employer owns all the code I wrote while I worked there. Now that I'm no longer there, is it legal for me to recreate that dashboard from memory and open source the code? If I do recreate it, the code (maybe 2k-3k lines) could be almost identical to the original since I have pretty good memory and tend to follow my usual coding style and naming conventions. Edit: a little more background - this is a pretty generic piece of software that's used only internally by a small team (<10) within a global corporation. "The company" is not even aware of this system since it's I create it on my own initiative. It's built on python/django. And by almost identical I mean that for example the django models will have the same name/fields and views will use similar queries to return the same sets of objects.


title: VB for C programmers

text: Can anyone recommend a good guide to VB.Net for someone having experience/comfortable with C? I can find Python/Java/Lua for C programmers had have used them earlier, but am unable to find anything for C programmers moving to VB.Net (I'll be moving from using C/C++ with gcc/g++ to VB.Net on VS 2010)


title: Why does changing from one language to another make a programmer fresher?

text: Right now I have been working on language X for the last 2 years. I am very good at it, but language X is not popular so jobs are not readily available for it. Consequently, I am thinking to change from language X to language Y. But that means I'll be a fresher again. Is making the change worth it? Even if it means losing all the experience I have in the other language?


title: using svn and mercurial in eclipse for same project

text: Is it possible to have in eclipse 2 "team providers" for same project. E.g. svn and mercurial? So svn will be used to commit to central repository, and mercurial only to work on my PC. E.g. when I get updates from SVN, I commit to mercurial, then I work with mercurial. When everything is ready to go to central place, i commit in SVN. There is no need to integrate change history. Yes, ideally it will be just mercurial, and most probably it will happened later. But for now I want to try some dirty and fast solution if it exist :)


title: What can go wrong with composing a method name out of a string?

text: I have a piece of code that composes method name to call from a string parameter. I don't feel it's a good thing to do but I'm not sure what can go wrong with this. Here is a simplified snippet of that code:               switchToFilter = function(filter){         var filterMethod = 'switchTo' + filter;         myObject[filterMethod]();     }


title: How to avoid unmaintainable code when using SQL in an MVC setting?

text: I want to present a list of products to the user. This list is paginated and can be sorted by the user by product ID or product name in ascending or descending order. I am using an MVC setting, where I would like to query the database in the model. **How would I write functions that query the database?** I can think of several options which all have their drawbacks:   1. Have one function for each possible combination of sort columns and sorting directions, each with a different query inside:              func GetProductsOrderByIdAsc() []*Product { … }     func GetProductsOrderByIdDesc() []*Product { … }     func GetProductsOrderByNameAsc() []*Product { … }     func GetProductsOrderByNameDesc() []*Product { … }      This is obviously unmaintainable as it leads to lots of almost-identical SQL queries, aka “duplicate code.”   2. Concatenate strings of SQL:              func GetProducts(orderBy string, orderDirection string) []*Product {         return db.query(`               SELECT id, name, description                 FROM products             ORDER BY ` + orderBy + ` ` + orderDirection + `         `)     }      This is inelegant, unreadable and unmaintainable as it quickly becomes a mess—imagine adding pagination and filtering. Parameter binding won’t work here as these are columns and not values.   3. Sort, filter and paginate in Go instead of in SQL. This would solve the code duplication problem but it can be a performance problem when having gazillions of records. What is the usual _concrete_ way of solving this problem? Ideally there would be no duplicate code, no ugly query synthesis and no major inefficiencies.


title: Single database, multiple system dependency

text: Consider an environment where we have a single, core database, with many separate systems using this one database. This leads to all of these systems have a common dependency, which ultimately introduces coupling between them. This means that we cannot always evolve systems independently of each other. Structural changes to the database (even if only intended for one, particular system), requires a full sweep test of ALL systems, and may require that other systems be 'patched' and subsequently released. This is especially tricky when you want to have separate teams working on different projects. **What is a good 'pattern' to help in avoiding such coupling?** I would imagine that a database should be exclusively depended on by one system. If other systems require data for whatever reason, they should request such from an API service of some kind. A drawback of this approach which comes to mind is performance: routing data between high-throughput systems through service calls is much slower than through a database connection.


title: How do you answer "Rate yourself" questions?

text: I have been frequently asked questions like "Rate yourself in java" It goes like interviewer : Rate yourself in java on the scale of 10 me: 9 interviewer : Rate yourself in J2EE me : 8 .... But really I just come up with arbitrary numbers. Sure I know Java well , but what does it mean to say "9 out of 10" . I think it is a very subjective question, that does not make sense overall. The problem is ,if I say 9 , If I am not able to answer any question , the interviewer might think , "this guy just said 9" . On the other hand If I said 6 , there is a good chance the interviewer might think "He rates himself this low...not good" How do you respond to such questions ?


title: What are some good criteria for using Tracer Bullets?

text: I was recently reading The Pragmatic Programmer for the first time and I came across the concept of Tracer Bullets. I realized that I had coded according to this model in the past and just kind of filed the way I was working away in my brain as "agile". They only give one example of where they had used it in the past. The way the situation was identified to be a good candidate for Tracer Bullets was > There were many unknowns, and many different environments, and no one was > too sure how the GUI should behave. That kind of seems like the way a huge number of projects start, especially when you're working with non-technical people on a typical line of business app for a hedge fund (as an example). I used it because it simply felt right, without really knowing what it was called or having it explained to me. I knew that if I tried to get everyone in a room and got them to spec everything (or at least some things) up front it would be a complete disaster, but again that's a feel kind of thing... Can anyone come up with some more concrete criteria for when this model might be the way to go?


title: Scrum roles mixed up

text: Here at the office our Scrum roles are a bit mixed up, so I would appreciate any advice on how to improve it. We are a small team of 4 developers (one of which is a de facto scrum master) and we also have a line manager and a Product Owner. The line manager simultaneously embraces Scrum and has a hard time "letting go"; he has the Product Backlog in his head and also prioritizes it. A previous attempt to take it out of his head only lead to a short lived up-to-date Product Backlog in Pivotaltracker.com – politically speaking he was de programmer who built the current system 7 years ago. The Product Owner has been in the company for about 2 years and seems to have a clear vision of the product, but he is underpowered by our line manager (who in fact is held responsible for this and other projects). Other than this, our implementation of Scrum is “by the book”. What do you think are disadvantages of this structure we find ourselves into? What could be improved? How would you improve?


title: Is this a correct implementation of an Immutable class in Java?

text: public final class ImmutableClass {              private StringBuffer name;              public ImmutableClass(StringBuffer name) {             this.name=name;         }         public StringBuffer getName() {             return name;         }     }      Points that I have considered:   1. Make the class `final` so that it cannot be extended   2. Do not provide `public` mutator methods   3. Keep the instance variables `private` Are the above mentioned considerations sufficient?


title: SCRUM technical artifacts

text: My company is introducing SCRUM for new software development. I'm currently both Product Owner and a product manager responsible for the technical aspects of the software. The technical manager role is not part of the scrum team. I'm finding there is some desire within the scrum team to treat the software development as a black box ie I should only care about user stories and business benefit. This is an issue as the information needed to inform client discussions about the most appropriate architecture, deployment mechanisms, host system requirements etc isn't available (I'm responsible for this in my manager role). For example, the dev team may develop a system that can only be used with a particular database collation. This isn't something I'd ever anticipate so wouldn't create a user story or discuss with clients but it might be a show-stopper for the product. What documentation and level of transparency is reasonable? The whole team is new to scrum so any advice welcome. PS: I wonder if this dual role is a good idea. I think some team members may think the Product Owner is being a rooster which isn't my intention ;-).


title: How Should I reply to my Manager about my annual review

text: During testing, our software testers reported a NullException error in an application and I was tasked to fix it. I did some investigation, proposed a fix, and sent out a code review to the team. I white box tested my solution by playing around with the application to make sure NullException does not occur any more and possibly something else is not broken either and, to me, it was fine so I sent out the code review. My manager, who is also our lead architect, replied back in an email and told me to avoid sending out code reviews like this and that he will consider this incident in my annual review. I want to reply and apologize for not white box testing it thoroughly before sending the code review and will do my best in future, but I also say something in my defense. I did perform some white box testing on the application, but he has much more knowledge about the application so he can white box it much better than me. Plus, what is the whole point of performing a code review at all?! We perform a code review so other team members can review our code and find out potential issues with our code so we can fix them before shipping the code to the client, so why is he mad? That's why code reviews exist, right? What do you think?


title: Deferred execution of Dispose for IDisposable objects

text: I'm working on an application that does lots of encryption and decryption in- application and this is probably the number-one bottleneck, so I've been spending some time making performance tweaks to it. A lot of this has involved simply caching things in memory (I realize there is something of a security tradeoff in doing that), but I noticed during profiling that Dispose() was a fair amount of the time doing decryption (I believe for .NET cryptography stuff it zeroes over everything so this makes sense). So I came up with this idea: Have a "dispose pool." Instead of using blocks, create objects, use them, return the result, and add them to the dispose pool in the finally block. Internally, the dispose pool uses a queue and a timer and every time the timer fires it dequeues the objects and disposes them. I tried implementing this and it seems to work and improve performance, but then again, profiling it locally is not a really realistic use case. Is this sound? Am I likely to run into runaway performance issues I'm not currently thinking about? I suppose I should add that this is an ASP.NET MVC application so everything revolves around requests.


title: Why doesn't the HTML\DOM specification allow hyperlinks to set an accept header?

text: The purpose of the `Accept` header from the client is to tell the server what kind of data it will accept as a response to its request. We can set this header in asynchronous HTTP calls in Javascript, but not in HTML. For example, consider a link such as `<a href="/some/resource">Get as CSV</a>`. If an attribute like `accept="text/csv"` were allowed, and the browser interpreted that to send an `Accept: text/csv` header with that request, the server could respond to the semantics of the request. Without it, we might create a link such as `<a href="/some/resource?format=csv">Get as CSV</a>`, and the server must respond to the arbitrary query string parameter instead. What are the reasons, both technical and historical, behind the HTML\DOM specification not allowing the setting of an `Accept` header through markup?


title: Backbone.js, Rails and code duplication

text: I'm building a web app and I need a JS framework like Backbone.js to work with my backend provided by Rails that mostly return JSON objects after DB queries. Searching on the web I've discovered Backbone which seems to be complete, quite popular and actively used in development but I've noticed that a lot of things done by Backbone are simply a duplicate of the work done by Rails: for example, validation and models. My idea of "perfect" (for my actual needs) JS mvc (it can't be called mvc but I don't have a better name) is something really simple that has a function for each action in my Rails controller that is triggered by a specific event (user/hash changes, click on a button...) and sends requests to the server that respond with a JSON object then I'll load a template or execute some JS code. **Do you have any concerns about/suggestions for my idea?** **Do you know of some "micro" js framework like what I have described?** **If you have worked with backone.js + rails what can you suggest to me?**


title: I am new to programming and I am interested in jdbc - Tips and Advice needed

text: I am currently acquiring my associates degree in software engineering. I have been told in order to be successful in a computer science field you have to specialized in something. After researching several areas I have decided I want to specialize in Java Database Connectivity. It earns a decent income and seems interesting. I would like to know what the field is like. What the job, bosses/managers, pay, etc...   I just want to know as much as I can first hand from the people that currently work in the field. What are some tips you would give a new-comer in college and what do you wish you had known before getting into the industry?


title: How to introduce Agile to a team that uses rigid non-Agile methods?

text: Consider a company that is proudly certified for some non-Agile methodology, uses it as a selling point to its customers to demonstrate accountability. How do you go about **introducing Kanban or Scrum progressively without breaking their whole system** and still making them confident that it **can still be just as accountable / auditable**? * * * I know this is possibly related to "How would you introduce an agile methodology like Scrum", but here I am wondering about ways to circumvent/work around the fact that the company imposes a certain way of managing the SDLC under the false pretense that it's the only way to have an audit trail.


title: Create and delay task for 24 hours

text: I'm trying to come up with a sane architecture to delay a task for 24 hours. So far I've thought of:   * unix cron job, but this will not be able to take the load we give it, since we will have many thousands of delayed tasks per day   * Use RabbitMQ with dead letter exchange, however, this is a hack and being a hack is riddled with problems - impossible to monitor without mutilating the messages, etc.   * Other solutions I've come up with are poll based, e.g., insert task into MySQL and have a poller responsible   * Amazon SQS only supports up to 15 minute delays. I could write a punt loop for # of delays, btu this is already reinventing the wheel way too much. Plus using SQS this would get expensive as we pay per message.   * Redis possibly...? have not heavily investigated this. I know Memcached is not appropriate as it won't really guarantee persistence that long. What existing technology is good for this? I don't want to reinvent the wheel here, given that I'm pretty sure I'm not working on the first software product that requires performing a task tomorrow. Thus far I've been database driving things.


title: Is it considered a bad practice to add logic in a property setter?

text: I jumped in to a project and I see that the other developers are adding a lot of logic in the setters of synthesized properties. I understand how this works, but I think that it makes it hard to understand the flow of the program; while reading the code, whenever I see `self.something = whatever`, I always check if `something`'s setter is overridden. What are your opinions around this topic? Do you think this is a sign of bad architecture or an elaborate solution? I would be glad to read more on this if you have relevant links/sources, it's just too hard to get good google results so I decided to ask here as well. Thanks for any answer and please note that I'm talking about objective C in case you haven't seen the tag (even though this shouldn't be a language specific issue I guess).


title: Getting over the mental hurdle with Algorithms?

text: I am a strange sort of a programmer. I am a software engineer by profession and I have written programs in more than one language in various capacities. I know quite a bit about various programming languages and software development in general (that comes with experience and active skill building). However, I have a problem. I am _bad_ at algorithms. I have made various attempts to teach myself and finally be able to say, I know this algorithm and can implement it well in a programming language. My attempts sometimes began with preparing for an interview where they would ask such questions and ended with them. I just start and get lost I guess. I know the things to learn from (MIT course on algorithms, and so many other resources there). I know, I should just put my head down, be determined and write algorithms/programs on paper and implement it in practice. But, I just seem to be not able to. I run into the mentality of "I don't need this algorithm in my job, or for some reason in the immediate future, and I am good at few things, so I will learn this when I need to..". I really want to get over this. What is a good time frame to set myself and any advice to how I should approach this mentally and otherwise?


title: In what situations would it be technically 'impossible' to release a system as open source?

text: While there are certainly many economic, social and practical decisions to be made when deciding whether a system should be open source, are there any situations in which it is impossible, purely from a technical standpoint, to open source your code? Essentially; a feature which when the code is made public, invalidates/reduces the functionality of that feature. Some examples I can think of:   * Cheating in Quake \- once the game was released as open source, id had to release a closed-source 'wrapper' to validate client code in order to prevent cheating.   * Reddit - while the majority of the source for social news site Reddit is available, their anti-spam mechanisms are not. If the spammers knew how they worked, they'd be easier to work around. Both security related and both as a result of using implementations security experts would probably frown on (Quake: trusting the client, Reddit: security through obscurity). Whether there are feasible alternatives to these implementations is another matter altogether... What other examples are there of this? Are there any that aren't security related? Are they all due to 'workarounds' in order to make our systems work with the technology we have?


title: PHP common uses for the Command Line

text: I started with PHP a little while ago. I've been doing a lot of tutorials, practice sites, etc. and it's going great. One thing I like about PHP is how easy it is to get started (downloading WAMP and voila). However, up until I learned about PEAR and MVC frameworks, I haven't put much thought in using a command line Interface for PHP development... I've not really used the command line that much and it will take me some getting used to, so a couple of questions I have are: What are the most common uses of the Command Line when developing websites and web applications with PHP? Can you run MVC frameworks such as Zend, CakePHP, etc without ever using it? Besides PEAR, are there any other PHP repositories that use the command line to work? (It seems if you want to avoid using PEAR there are countless other PHP Classes/libraries on the internet that one could download and then simply copy and paste files into your site.)


title: Anemic Domain Model, Business Logic and DataMapper (PHP)

text: I've implemented a rudimentary ORM layer based on DataMapper (I don't want to use a full blown ORM like Propel/Doctrine - for anything beyond simple fetch/save ops I prefer to access the data directly layer using a SQL abstraction layer). Following the DataMapper pattern, I've endeavoured to keep all persistence operations in the Mapper - including the location of related entities. My Entities have access to their Mapper, although I try not to call Mapper logic from the Entity interface (although this would be simple enough). The result is:               // get a mapper and produce an entity     $ProductMapper = $di->get('product_mapper');     $Product = $ProductMapper->find('me@email.com','email');          // could easily be this     // $Product = $di->get('product');     // $Product->load('me@email.com','email');          //.. mutate some values.. save     $ProductMapper->save($Product)          // uses __get to trigger relation acquisition     $Manufacturer = $Product->manufacturer;       I've read some articles regarding the concept of an Anemic Domain model, i.e. a Model that does not contain any "business logic". When demonstrating the sort of business logic ideally suited to a Domain Model, however, acquiring related data items is a common example. Therefore I wanted to ask this question: Is persistence logic appropriate in Domain Model objects? Or rather - what logic goes into the Entity classes once the persistence and relation handling is pushed into the mapper.


title: How to salvage a business model from a mismatched database?

text: There is an application that involves billing enterprise customers for the services their customers utilize. The database schema does not properly reflect the business model. For instance, on a given account, services may become activated and deactivated. There is only a column to represent when the service was deactivated and the code in place just updates that same row if the service is reactivated rather than adding a new row. Ideally, a row would be added when a service activates and updated when deactivated, and there would be a column to represent the activation date. As it stands, there is no solid billing history for these enterprise customers, but there needs to be from here on out. Do we set a "cutoff" for the legacy model that was corrupted and wipe the table clean? Do we add the appropriate column and start working with the table properly and just check for rows that have a 'activated date' of null to detect legacy? There must be several ways of handling this, but I have no experience with this kind of situation and would like to hear out some various approaches.


title: Automated deployment/installation of development tools

text: My team is looking to automate installation/deployment of all of our development tools. The main driver for this is to ensure that everyone in the team has a consistent development environment setup and to also allow a new recruit to get up and running easily. By development environment I mean tools like SCM, toolchains, IDEs etc. and by consistent I mean everyone using the same version of compiler to build code (this is very important!). Here are a few of our requirements –   * Allow unattended (silent) install of our entire dev setup by running a single script   * Ability to be versioned   * Ability to deploy selective updates (new versions) for specific tools   * Ability to report which tools are installed and their specific version numbers   * Must work on Windows (Linux would be a bonus)   * Must be easy to maintain What are some of the tools that you've used to automate such a task?


title: Who does test-driven development?

text: I've been working in the enterprise space for the past 4½ years and have noticed that generally speaking, enterprises are not conducive environments for the test-first style of development. Projects are usually fixed-cost, fixed-timeline and waterfall style. Any unit testing, if done at all, usually comes after development in the QA phase and done by another team. Prior to working for an enterprise, I consulted for many small to medium sized companies, and none of them were willing to pay for a test-first style of development project. They usually wanted development started immediately, or after a short design stint: i.e., something more akin to Agile, though some clients wanted everything mapped out similar to waterfall. With what types of shops, companies, and clients does test-driven development work best? What types of projects tend to be conducive to TDD?


title: 3D tiled space viewed one plane at a time; general concepts to understand while programming this?

text: I am not asking for someone to program this for me, I still would like to do all the programming, however I need some additional mathematical programming background for this kind of stuff because I haven't really dabbled into 3D spaces much and I am thinking lots of potential if-thens and switches could be simplified way down if I think of this concept the right way. I will be using a programming language that supports 2D tiled or text screen output (think Java). I want to know if there are simple ways to program in the viewing, orienting and moving about this virtual space I am about to describe without resorting to lots of switch statements to control i.e. what the screen will be displaying depending on the PC's location, facing direction and rotation. Okay so far I am working out concepts of a way to explore a 3D top-down maze type environment with a procedurally generated voxel landscape and a 1x1x1 player character which can view only the eye level plane and the plane 1 unit below it. the PC can move in the following ways; Please note I intend whichever way the PC considers down to be which direction gravity is acting upon it, (unrealistic):   * Walk forward to another square unobstructed by a wall or cliff   * Turn the face another direction, in which case a different direction becomes the PC's forward face (visually). The PC will always appear to be facing up for the user.   * Start scaling a wall, in which case the previously upward direction (out of the screen, towards the user) becomes forward.   * Climb down and scale the wall of a pit below, in which case the previously down direction become forward.   * Flip upside down and tether off the now ceiling, scaling up or down the tether until the PC hits a floor. in which case it can choose other transportation modes again.   * Each time the PC moves, all other entities get their chance to move in a turn based fashion. This won't be like a Minecraft-esque sandbox, so editing the landscape after generation won't be likely necessary. I will have a screen that views 16x16x2 voxels at a time. I do however like the idea of dynamically allocated chunks. I plan on generating or loading previously generated 16x16x16 chunks of voxels and the adjacent 26 chunks as needed. while unloading out of range chunks and saving them to a file. I want to know the mathematical/conceptual ideas behind generating these chunks and loading already generated chunks. Note I still use the term voxel even though I will only view them as squares on a text screen, because the game space is a 3D grid.


title: Is it bad practice to use the same name for arguments and members?

text: Sometimes I write constructor code like               class X     {     public:       X( const int numberOfThingsToDo ) :         numberOfThingsToDo( numberOfThingsToDo )       {       }          private:       int numberOfThingsToDo;     };      or in C#               class X     {       public X( int numberOfThingsToDo )       {          this.numberOfThingsToDo = numberOfThingsToDo;       }            private int numberOfThingsToDo;     }      I think the main reason is that when I come up with a suitable member name, I see no reason to use a different one for the argument initializing it, and since I'm also no fan of using underscores the easiest is just to pick the same name. After all it's suitable. Is this considered bad practice however? Any drawbacks (apart from shooting yourself in the foot when forgetting the `this` in C#)?


title: substitute for static inheritance

text: I currently have a number of classes (~20) that all do the same thing (abstractly), namely, generate an instance of a particular class from an xml file. The way that they use the content of the xml file varies quite a bit, and the data gets stored into different substructures (fields, groups, etc) that are shared across the classes, so I took all of the parsing and field information out of the files, and created a helper class (as is the final constructed type) All of the above classes and methods are static, as they have no need to contain any state. I then wanted to have all the classes derive from one common class so that I am not referencing a seemingly unrelated class constantly, only to discover that inheritance and static do not work together well. What is the appropriate way of setting this up? Its bascially a large set of factory methods for a type that require no state. **Update:** The control flow is currently as follows:   1. Pick one of ~20 factory methods   2. Read in an XML file (all tags, attributes are the same across the files, but the files are distict across the methods).   3. Convert the content in the XML files to a class that has some data structures as members (`List<Field>, List<Group>, Dictionary<string,string>` etc). These data structures use types that are nested in the helper.   4. Add these collections to the uninitialized object.   5. Return the object to caller. Right now, the 20 factory methods are thier own static classes, and all return objects of the same type, as even though there might be some semantic difference between the "types" all of the memebers and functions are the same. The code that parses the XML file is in a helper, as this logic is common to all of the factory methods. Step 3 has to be different for all the methods, so that part is found in the static classes.


title: Processing a stream. Must layers be violated?

text: Theoretical situation:   One trillion foobars are stored in a text file (no fancy databases). Each foobar must have some business logic executed on it. A set of 1 trillion will not fit in memory so the data layer cannot return a big set to the business layer. Instead they are to be streamed in 1 foobar at a time, and have business logic execute on 1 foobar at a time. The stream must be closed when finished. In order for the stream to be closed the business layer must close the stream (a data operation detail), thus violating the separation of concerns. Is it possible to incrementally process data without violating layers?


title: An alternative to having fields that might not be used in a class

text: I'm writing a card/ board game in Java. Since the game has lots of cards that interact in different ways, my Player class has become sort of bloated with all these different fields used for keeping track of data that specific cards need. However, not every card is used in every game, so many of these fields are not used. Instead of having several fields that probably won't be used a majority of the time, I was thinking of writing sort of a field map class that could dynamically "create" fields when they were needed. If one type of card required each player to store some data in a List, it could just create one and store it in that player's field map. It could get a little messy, though: what types of keys should I use? Strings? Just plain Objects? And the type of data won't always be a List, so it would probably have to be `Map<String, Object>`, and I would have to put in casts. Should the keys be their own class whose identity is based on a String name, but also contain a `Class<?>` field, so that it could cast the result for me? I kind of like this idea, since it means I don't have to mess with the Player class every time I make a new card, but it also seems kind of inefficient and inelegant. Is this a terrible idea?


title: How to become more productive in design and programming

text: Usually whenever I see tutorial videos (apart from the main subject) I learn a lot from their working habits, for example; they way they have set up their folders, what shotcuts they use. The best example was (long time a go) I say a jquery video, and half way through the author said something like “by the way you could have a code library” – that’s the only thing I remember from that video (but the author said it as something he assumed people know about) So I was wondering if someone knows any tip or any website which goes other how other professionals work, how they have set up their programming habits to help them not waste time in repetitive tasks.


title: What are the things you can do to maximize your chances of hitting good programmers in the campus?

text: I'm thinking about approaching my lecturers in my university for student recommendation for me to hire. So far the emails I sent are not very encouraging. The lecturers either coming back to me, saying that they couldn't get good students, or just ignore my mail. I tried to be as polite as I could in the email, so I think it's not etiquette issue that turn them off. Still, I plan to visit my campus. What are the things I can do to maximize your chances of hitting good programmers in the campus? Any experience you can share?


title: Open Source: Is Testing/Bug Reporting A Major Contribution?

text: When evaluating contributions to open source projects, does testing the code on various real-world inputs, reducing a large number of complicated bugs to small test cases and filing good bug reports count as a significant contribution? I've done this for several open-source projects (specifically D compilers) where I wanted to help out but the codebase was too complicated to learn my way around in the amount of spare time I have. I'm interested in both the perspective of the main developers (those that write the code and fix the bugs) and from the perspective of employers (in case I want to put it on my resume at some point).


title: Why Java as a First Language?

text: Why is Java so popular as a first language to teach beginners? To me it seems like a terrible choice:   1. It's statically typed. Static typing isn't useful unless you care a lot about either performance or scaling to large projects.   2. It requires tons of boilerplate to get the simplest code up and running. Try explaining "Hello, world" to someone who's never programmed before.   3. It only handles the middle levels of abstraction well and is single-paradigm, thus leaving out a lot of important concepts. You can't program at a very low level (pointers, manual memory management) or a very high level, (metaprogramming, macros) in it.   4. In general, Java's biggest strength (i.e. the reason people use it despite the shortcomings of the language per se) is its libraries and tool support, which is probably the least important attribute for a beginner language. In fact, while useful in the real world these may negatives from a pedagogical perspective as they can discourage learning to write code from scratch.


Do you think is good to start developing Android Applications even though I'm a beginner? So should I just concentrate on learning java, c++, html, css, javascript, php, msql, c#, c, objective-c, etc?


title: Best development architecture for a small team of programmers ( WAMP Stack )

text: I'm in the first month of work in a new company.. and after I met the two programmer's and asked how things are organized in terms of projects inside the company, they simply shrug their shoulders, and said that nothing is organized.. I think my jaw hit the ground that same time.. ( I know some, of you think I should quit, but I'm on a privileged position, I'm the most experienced there, so there's room for me to grow inside the company, and I'm taking the high road ).. So I talked to the IT guy, and one of the programmers, and maybe this week I'm going to get a server all to myself to start organizing things. I've used various architectures in my previous work experiences, on one I was developing in a server on the network ( no source control of course ).. another experience I had was developing in my local computer, with no server on the network, just source control. And at home, I have a mix of the two, everything I code is on a server on the network, and I have those folders under source control, and I also have a no- ip account configured on that server so I can access it everywhere and I can show the clients anything. For me I think this last solution ( the one I have at home ) is the best:   * Network server with WAMP stack.   * The server as a public IP so we can access it by domain name. And use subdomains for each project.   * Everybody works directly on the network server. I think the problem arises, when two or more people want to work on the same project, in this case the only way to do this is by using source control and local repositories, this is great, but I think this turns development a lot more complicated. In the example I gave, to make a change to the code, I would simply need to open the file in my favorite editor, make the change, alter the database, check in the changes into source control and presto all done. Using local repositories, I would have to get the latest version, run the scripts on the local database to update it, alter the file, alter the database, check in the changes to the network server, update the database on the network server, see if everything is running well on the network server, and presto all done, to me this seems overcomplicated for a change on a simple php page. I could share the database for the local development and for the network server, that sure would help. Maybe the best way to do this is just simply:   * Network server with WAMP stack ( test server so to speak ), public server accessible trough the web.   * WAMP stack on every developer computer ( minus the database )   * We develop locally, test, then check in the changes into the server test and presto. What do you think? Maybe I should start doing this at home.. Thanks and best regards... Edit: I'm sorry I made a mistake and switched WAMP with LAMP, sorry about that..


title: Where do I go to hire a freelance programmer?

text: I want to hire a programmer freelance to develop a small InDesign plugin, but I have no idea how to go about finding one. Most of the freelance bidding sites are garbage, but aside from finding a few companies from a google search I'm not sure where else to go. Are there any good sites for posting jobs or other good ways of finding a programmer to hire?


title: Using NetBeans and Eclipse together

text: I'm working on a collaborative group project at university which involves writing a Swing application, an Android application and some Java data models and a JDBC connection. We've been taught to use NetBeans but will need to use Eclipse to write the Android application. I find NetBeans to have nicer GUI builders than Eclipse's Visual Editor plugin and the other group members want to use NetBeans as they are familiar with it. I can already foresee clashes as JFrame forms created in Eclipse won't open the interface builder in NetBeans. Does anyone have advice on using both of these programs together on a group project? At the moment the issues I'm seeing are:   * Lots of meta-files from each IDE (which I'm currently ignoring via .gitignore, is this a good idea?) cluttering the repository and potentially being out of sync with each other.   * The mentioned GUI problem, what does NetBeans look for when looking to show the Design view?   * Different templates being shown. I'm probably just going to stick with NetBeans until we get to the Android part but if there are ways to make them play friendly I'd love to hear them.


title: Workflow for a plugin assignment

text: I'm starting a new project in PHP, a plugin for a website that grabs additional data from it through cURL, getContents etc and re-tabulates it in excel. It's a local project, basic script like with a very limited UI. Iv'e been using Codeigniter and it's a great framework for websites, and even the Twitter application I'm using it for but I don't think I need MVC (necessarily) for this small project but I also don't want to go bare. What would your typical workflow be for this kind of weekend assignment where your creating a local do-something script or like in my case adding functionality to a website? Is there something in between a light weight MVC framework and a blank page?


title: Which .NET REST approach/technology/tool should I use?

text: I am implementing a RESTful web service and several client applications that are mostly in Silverlight. I am finding a litany of options for developing both the server-side and client-side of the API but am not sure which is the best approach. I'm concerned about stability as well as a platform that will continue to exist a few months from now. We started using the REST Starter Kit with .NET 3.5 but moved to the new WCF Web API when updating to .NET 4.0. All of their documentation indicates that WCF Web API is the replacement for the RSK. However, Web API is only in Preview 4 and does not include support for Silverlight or Windows Phone 7 clients (yet). WCF Web API looks like a wrapper on top of the WCF WebHttp Services stuff provided in the `System.ServiceModel.Web` library which makes me think that maybe it would be simpler to just go with the built-in stuff but Web API does offer some nice features. I am specifically tied-up trying to determine the best course for the client- side. My main requirement is that I need to support deserializing into my client-side objects quickly and easily. The Web API offers a nice client library but doesn't have a Silverlight version. I'd like to use the latest approach and the toolset that is being actively developed and supported.   1. Is the REST Starter Kit really obsolete?   2. Has anyone had any success implementing the WCF Web API toolkit?   3. Is there merit to using either of these over the built-in WCF WebHttp Services features found in `System.ServiceModel.Web`?   4. Is there a single solution that works for any client (web, Silverlight, etc.)? What suggestions do you have?


title: What does your Lisp workflow look like?

text: I'm learning Lisp at the moment, coming from a language progression that is Locomotive BASIC -> Z80 Assembler -> Pascal -> C -> Perl -> C# -> Ruby. My approach is to simultaneously:   * write a simple web-scraper using SBCL, QuickLisp, closure-html, and drakma    * watch the SICP lectures I think this is working well; I'm developing good 'Lisp goggles', in that I can now read Lisp reasonably easily. I'm also getting a feel for how the Lisp ecosystem works, e.g. Quicklisp for dependencies. What I'm really missing, though, is a sense of how a seasoned Lisper actually _works_. When I'm coding for .NET, I have Visual Studio set up with ReSharper and VisualSVN. I write tests, I implement, I refactor, I commit. Then when I'm done enough of that to complete a story, I write some AUATs. Then I kick off a Release build on TeamCity to push the new functionality out to the customer for testing & hopefully approval. If it's an app that needs an installer, I use either WiX or InnoSetup, obviously building the installer through the CI system. So, my question is: as an experienced Lisper, what does _your_ workflow look like? Do you work mostly in the REPL, or in the editor? How do you do unit tests? Continuous integration? Packaging & deployment? When you sit down at your desk, steaming mug of coffee to one side and a framed photo of John McCarthy to the other, what is it that you _do_? Currently, I feel like I am getting to grips with Lisp coding, but not Lisp development ...


title: How deeply programmer should know about internals of database engine?

text: I am learning SQL Server 2012 along with C#. In the past, I took database class in college, and have good grasp on SQL language and can write queries. However, looking at SQL Server documentation (or Oracle), it appears that DB engine (along with all the technologies that comes with it) are highly complex and are requiring significant time and effort to learn. Besides writing SQL queries, how deeply should programmer know about internals of database engine ?


title: What is "train" based development?

text: I ran across yet another new term in development methodology, and I haven't been able to find a definition for it. Specifically, it's called "train based development." Here are some examples of where I have seen this term. > Earlier this week, I asked our engineering leads and release managers to > take the Windows Metro version of Firefox off the trains. (Johnathan > Nightingale) https://blog.mozilla.org/futurereleases/2014/03/14/metro/ From the Mozilla careers web-site: > Experience working with both agile development methodology, and train-based > development/QA teams. I have heard of "train" before and not just in the context of Mozilla. But I haven't managed to find any good information about it on the net. When I googled "train based software development", I found very little information in the search results. The closest that I could dig out that separates the train from the wagons is that "train" is about making releases at regular intervals according to a schedule. But it also seems that "train" is a sort of concrete QA setup. **So, what is "train based development"?**


title: How to teach a script to detect sarcasm?

text: I'm currently building a fun script, that basically matches given phrases and gives a predefined response based on the match-points. You can ask it to retrieve some information based on live feeds, run tasks, tell anecdotes or just chat with her. I already have built-in detection for badwords, caps lock or both. The program has a girl name and I tried to make as close to being a girly-girl as possible, on the logic terms (for example: everybody knows that most girly- girls take 700ms to respond to a question, joking of course). So here is a little example: > Client: WHAT IS YOUR PROBLEM?   >  Kiku: DONT USE THAT TONE WITH ME!   >  Client: #### you   >  Kiku: why are you being so mean to me :/ However, I really would like to add sarcasm-feature to it. So if you write something in sarcasm, then she will detect it and respond accordingly. Now this is a tricky part, **How do you teach a script, what sarcasm is?** To me more specific. What are the most common sarcastic words used today? Or how to get that statistic? How can I make the script understand the context of the given phrase? **UPDATE** As this question is getting alot of hype, I think things should be cleared out a bit more. It is very clear, that making a script fully detect sarcasm is basically impossible. At least in reasonable matter. However, I do believe that some amount of **possible** sarcasm could be detected. I currently have made it so far, that my script can detect a very limited sarcasm. I predefined some common sarcastic-words (however, alone they are useless.) For example: **like, whatever, yeah, right and great.** And then it first matches, the simple things, like uppercase and quoted: `THANKS you are so smart` or `oh you are so "SMART"`. Since the scripts main function is to do tasks or retrieve information, and afterwords it will ask if that was what you meant. Then I thought, adding "thanks" as a special variable. So `yeah thanks` or `whatever thanks` will trigger the possible sarcasm, and the script will ask you: "Do I detect sarcasm?" Your best bet would be to say "sorry" then, otherwise it will add a warning-point and if the limit is reached -- it will start ignoring you. As these very very simple algorithms seem to actually work, then this idea has a future, of course after alot of tuning and tweaking. However, is somebody alot smarter would make a open-source software with the same idea in mind. Then this feature could be hooked to alot of functions on the web. Customer care would probably benefit the most, however, this kind of software could also be used detecting "flaggable"-content.


title: Editing Copyright line in Apache2 license.txt

text: I wish to publish my program under Apache2 license. I have added the "APPENDIX" part of the license text to the top portion of my source.txt file and edited the copyright year and name. But when I add the license.txt file in the same archive with sourcecode, should I edit the copyright line wih my name and year? Or should I let the copy of license.txt intact as downloaded from apache site?


title: Best Practice For Usage of Shall and Must While Writing Requirements

text: I sent out an email earlier reminding our developers that, _the use of the word, 'Shall', in your derived requirements should not follow over to your functional requirements. When writing functional requirements the word, 'Must', is used to describe the function a derived requirement must do.   Derived = System Shall be requirement   Functional = System must do requirment_ It was sent back by one of our Seniors that, that was wrong and that shall should be used in every requirement. Am I wrong here and Shall should be used in every requirement. I haven't been able to find anything to back that up.


title: Is path coverage stronger than condition coverage?

text: I have encountered (even in literature) two contradicting opinions related to path vs condition coverage (not branch or edge!). Some say Path coverage is stronger than the condition coverage, some say the opposite. Having code like this:               If(X<0 OR X>100)        DoStuff();      _Path coverage_ \- 1 test case is needed to cover the path. With X=-1, the second expression will not be tested and possible bug will be missed.   _Condition coverage_ \- test cases X=-1 and X=100 are needed to test both conditions. Am I missing something or condition coverage is really stronger than path coverage? **Condition coverage (ISTQB):** > **Our next level of coverage is called condition coverage. The basic concept > is that, when a decision is made by a complex expression that eventually > evaluates to TRUE or FALSE, we want to make sure that each atomic condition > is tested both ways.** _Practical Insight Into CMMI_ > Condition coverage measures the true and false outcome of each Boolean > subexpression. **References:** _Software Testing: Principles and Practices from Srinivasan Desikan,Gopalaswamy Ramesh:_ page 61 > Condition coverage is a much stronger criteria than path coverage, which in > turns is a much stronger criteria than statement coverage.


title: How to allow multiple plugins to provide data for multiple aggregation processes?

text: I'm working on a Java project in which we want to have data collection plugins that collect data to be processed by one or more data aggregation modules. The plugins will all written in-house. Say for example we have data collection plugins A, B and C and data aggegration module X. The modules A, B & C input data into tables that are different but have a few certain fields in common that X cares about. Sometimes the names of the fields are different, but as far as the algorithm is concerned they are "the same". What's the best way to get X to operate on these different data sources while still allowing for a new data collection plugin D to be integrated, as well as the possibility of a new aggregation module Y that operates on some or all of the data sources? My main concerns are about dependencies - for example, should the data collection plugins know about the aggregation modules, or the other way round? Or neither? Should the collection plugins implement interfaces that the aggregators can then make use of, and if so then where should be interfaces be defined?


title: What is the regarded current best practises regarding the "this" keyword in front of field and methods in c#?

text: Unless it is needed to differentiate between a variable and field with the same name, I never put `this.` in front of a field or any member access in C#. I see this as no different to `m_` prefix that used to be common in C++, and think if you really need to specify that it's a member, your class is too big. However, there are a number of people in my office that strongly disagree. What is considered current best practises regarding `this.`? EDIT: To clarify, I never use `m_` and only use `this.` when absolutely necessary.


title: IS C++ a cross-platform language?

text: If I create a game in C++ on a mac using a library which is the same for both windows and osx, will the game be playable on both windows and os x or it will only work in os x because I done it in Xcode? Is SDL a great library to do your first game after learning the basics and syntax of C++ (I found syntax to be close to Java)?