Options for Application Registry

I work for a small software company (about 200 people building 8-10 applications) and I was hoping to get some advice on products that might be out there to manage the information of which clients are using which versions of our products? The most fundamental relationship would be that a "product" has "versions" and a given "version" is used by a "client." Uses would be:   * Determine which clients use which products   * Determine which clients are on which versions of a product   * Determine which clients are exposed to which vulnerabilities because of the version they use   * Determine which clients cannot move to a new version because of a vulnerability in the new version that they may hit   * Determine which clients should be approached for an upgrade Any thoughts or product reviews would be greatly appreciated! Thanks in advance.


Purpose of Base Address?

What's the purpose of a base address in an executable? For example, in Microsoft Visual C++'s linker, you can set a base address, or use the default of `0x1000000`. But with virtual memory, why would a base address be needed? Why would you not just link it to `0x0` and put the initialization routine (`mainCRTStartup` on Windows) there which would make it so writing to NULL (`0x0`) would just overwrite the startup routine (a method that will never be called again). Plus, you could just set the code's pages to execute only on an x86 processor so writing will cause an exception.


Class structure to implement a Stack Exchange-like review system

I was reviewing some threads on Stack Overflow and started asking myself how I would design my classes and relationships to create such a system. ### My Goal - **I want to build a review system like the Stack Exchange review system.** * * * Let's take a look at how the review system works on Stack Exchange. I will only refer to the Suggested Edits functionality to keep it simple.   1. Un-experienced user (less than 2000 rep) edits someone post   2. Add an entry to the "review" system tagged 'suggested-edit'   3. Experienced user (more than 2000 rep) can review "suggested edits" one by one As an experienced user I can:   * See the diff between the original content and the edited content   * Approve the edit   * Reject the edit   * Improve the edit   * Skip to the next review Final note about other review types. We could imagine "tagging" the reviews with the corresponding types since the actions are the same. ### Design I would start with a `Review` model. We could have one sub-class for each review type, allowing custom attributes and methods for each type in the future. `ruby`               class Review     class Review::SuggestedEdit < Review     class Review::FirstPost     < Review     class Review::LateAnswer    < Review     class Review::LowQuality    < Review      A `Review` object would have 2 references:   * Original Content   * Edited Content Approve   1. Replace original content by edited content.   2. Mark the review as approved.   3. Move to the next review. Reject   1. Log the reason for rejection.   2. Mark the review as rejected.   3. Move to the next review. Improve   1. Directly edit edited content.   2. Approve.   3. (We could imaging creating a new Review for this improvement.)   4. Move to the next review. Skip   1. Move to the next review. * * * **How should I structure my classes in order to build such a review system?**


Modelling REST endpoints with data that not all users have access to

I am trying to figure out the best way around a small problem i have with a design for a Hypermedia API i am currently building. I have a notion of a site, very simple doesn't have much going on and it is accesible via:   * /sites   * /sites/{id} Sites have a bunch of properties and none is all too sensitive. However, a site has the notion of a budget, its nothing too exotic, in fact for the offset it will be a simple object that holds a decimal field and a pointer to a currency, but this should not be visible to every person requesting the resource as it is deemed as sensitive information that project managers should have. Some options:   1. Just sent it - problem here is i don't know what the clients consuming the API will do with it and this is just a terrible option all round   2. Send down an empty object i.e. `Budget:{}`   3. Make `Budget` a sub-resource of `Site` and only give users with the appropriate access level access to it As this is a hypermedia API i am leaning towards option 3, as i could(or not) as the case may be provide the link and also protect that endpoint separately, but at the same time this feels a little wrong, not sure why. Item 3 could look like this:   * /sites/{id}/budget Anyone out there with some helpful advice on something like this?


Why not a standard rendering engine to solve cross browser problems

Why do browsers use different rendering engines, this causes the problem I hate the most "make your HTML/CSS compatible with all major web browsers". Why don't they use one rendering engine as a standard and this will save a lot of time and effort for all developpers. In fact this is what I hate about IT industry "Concurrence at the expense of the user". We can say the same about Operating systems. Why not only one ?


Doesn't single-assert unit testing break the DRY principle?

Whenever I write unit tests I have always tried to have a **single assert per test** to make debugging easier when tests fail. However as I follow this rule I feel like I am constantly copying the same code in each test and by having more tests it becomes harder to go back to read and maintain. _So does single-assertion testing violate DRY?_ And _Is there a good rule to follow_ to find a good balance, like just having **one test per method**?* *I realize there probably isn't a one-size fits all solution to this but is there a recommended way to approach this?


Industry consortium for wider C# adoption?

**Are there any software consortium to promote C# as a language?** I'm aware of Mono and see it as a sincere, valiant attempt. However, its unlikely they can continuously outrun Microsoft inside a 'catchup' model. A wider consortium means the roadmaps are joint and not 'catchup'. I compare C# to C++. C++ is incredible in that it can run on almost anything from ARM RTOSes, Linux, BSD, Windows etc etc. Of course, the expansive nature of the runtime platform (.NET) makes this a huge challenge. Not to mention that the language (C#) and the runtime have almost become synonyms. But I digress, back to the main question above ...


How should an iPhone app connect to a .NET service?

I need to accept text and photo data from an iPhone app. Normally I would write a web service or a windows service with WCF for client server connections. I'm not familiar with iPhone apps, what is a good way to handle the communication layer to use for iPhone to windows service?


What are the monetary benefits of going agile?

Why go agile? This is the first question that comes to my mind when I think of going agile. What are the possible financial benefits one can achieve from going agile? Most of us certainly like to think of customers and clients as someone who doesn't know what they wants. So why help them at all? Why not suck their money being a parasitic company and make them stupider by the day. Traditional software development isn't bad and are probably (mostly as far as I have seen) a lot easier environment to work in rather than agile projects. So why go agile at all? What can agile give extra (I mean financially) that traditional software development can't?


Are time restrictions on technical tests a good thing?

So we're having an internal debate on whether the time restriction that we have in place for our technical test a good thing. I thought I would open it out to the community. So what are your thoughts on this restriction, do people accept it as standard practice or is it an artificial restriction? A little background, for all our positions, we expect candidates to complete a coding exercise and we set a time limit which we think is reasonable to at least layout the design (we don't expect a fully working solution), and it is this time limit which is under debate. The current time limit is 2 hours (which I frankly think is generous.)


Design Patterns: Should I learn them?

So it's kinda weird asking two questions back-to-back, but they aren't very related and I didn't want to combine them, but I'm not spamming questions, I promise! Anyway, I'm a recent college grad, and my education only touched on design patterns...we implemented a few simple ones, touched on the fact that there were more complicated ones, and were instructed to turn to the GoF book if we wanted to learn more. My question is, is it worth learning the patterns in the GoF book? To me, it's always seemed counter-intuitive to try and make a problem fit a classic pattern, but obviously the book, and the patterns, are famous for a reason. Do they show up enough that I should be learning them? Thanks again!


Can you close branches in Git?

In Mercurial you can close a branch like this: `hg commit --close-branch`, this means the the branch will not be listed anymore but will still exist, and can still be listed if you use `hg branches --closed` I have learned that in Git generally branches are not kept, they disappear, specially when doing fast-forward merges. So my question is: can you keep branches in git but in a way that you don't list them anymore? **Edit** : Some additional context: In Mercurial branches are metadata, so each commit always knows it's branch. In Mercurial if you want to delete a branch, you strip the base branch revision. You can also rebase and end up with the same result as with Git. Mercurial Bookmarks are pointers, so they have the exact same behavior than a Git Branch.


Does the WTFPL free the author from liability?

A group of us were wondering whether or not to go with CC0 or WTFPL because the CC0 explicitly states lack of liability. Does the WTFPL, if used properly, also free the author(s) from liability of usage?


Why is the factory method design pattern more useful than having classes and calling them individually?

From the "Gang of Four" design patterns, there's the Factory method:               class Factory(product)       case product       when a         new A       when b         new B       when c         new C     end          new Factory(a)      Why is this more useful than having three classes, `a`, `b`, and `c` and calling them individually?


Where is Waterfall failing us and can Scrum help us have success in our projects?

Let me explain our situation. We are small company with about 20+ staff and all the while we have been practicing the standard waterfall model with not much success (due to frequent changes of requirements and lack of direction). So one day our CTO came in and he briefed us about SCRUM and all of us were convinced that this model will work great for a small team like us. Unfortunately all of us do not have any experience practicing SCRUM and we have been relying mostly on online resources and books. Then we come to a new project that we are about to get started and we are doing something like:   1. Gather requirements from business domain user   2. Prepare a requirement spec with UI and features (this already took us like weeks)   3. Meet up again business domain user to see if there is any changes required   4. Once the business user agrees to the specs we will key in those feature in to product catalog   5. Break those features into tasks and assign to sprint Should we instead take the more agile approach? like   1. Gather requirements from stakeholders   2. Start to create epic user stories and run through with stake holders   3. Break those epic stories into smaller stories (supported with some ui) and assign to a short sprint(2 weeks)   4. We show them what we have done for the 2 weeks, get their feedback and plan for the next sprint Given the nature of our projects where we are constantly faced with the challenges of volatile requirements and a lack of direction, where will the above Scrum/Agile points benefit us and why are the above Waterfall methods failing us?


Documentation utility for OpenEdge ABL

I have a large system in OpenEdge ABL that could use some documentation-love. Currently a team member is working on a utility that can find methods and functions and make some "Javadoc-esque" html pages out of it. It's pretty rough around the edges. Okay, it's like sawblades around the edges. I'm trying to find something like Javadoc or Doxygen that is capable of parsing OpenEdge ABL to generate some kind of API documentation. I know the market for OpenEdge isn't the best, but there is a lot of stuff that's passed along by word of mouth. It's difficult to search for because it used to be called "Progress" which throws off your search queries with non-relevant information. I'm also open to a system that lets you define the regex's to look for to define your own syntax. Then it parses and gives you an output based on that.


Banking Applications - Saving Account Balance

From what I know, most banking applications periodically store the account balance at a certain point in time as it would not be plausible to calculate it over the entire history of transactions every time it is needed. In order to find the account balance, the application would first load the latest balance saved and add transactions that occurred after that point. What is this process of saving account balances called? What are some common techniques used in this process?(e.g., run it on every weekend night)


How is software used in critical life-or-death systems tested?

An airplane, as opposed to, for example, a website, is a system where any failure in certain systems is completely unacceptable, since errors in e.g. flight monitoring can cause the autopilot to malfunction and do a dive. Obviously, this doesn't happen since the brilliant engineers at Boeing and Airbus have checks in the autopilot to make sure it doesn't suddenly decide a dive is a perfectly acceptable and safe maneuver. Or perhaps the computer crashes, and the pilots in the newer fly-by-wire aircraft can no longer actually fly the plane. Of course, there are various safety procedures and redundancies built into these systems to prevent a crash (of both the software and the aircraft). However, on the other hand, it's quite obvious that software isn't perfect—both open source and closed source software do crash regularly, and only the simplest "Hello World" program doesn't fail. How can the engineers who design the software systems in the aeronautic, medical, and other life-or- death industries manage to test their software so that it doesn't fail (and if it does fail, at least fail gracefully)? I'm desperately hoping that you're not all going to go: "Oh, I work for Boeing/Airbus/(some other company) and it's not! Have fun on your next flight/hospital visit."


Is there an effective way for creating complex forms?

While creating a 'search' form I've been faced to an overwhelming complexity and I was wondering whether there is a well-known way to accomplish such task. Fields of the form in question can be seen here: http://developer.echonest.com/docs/v4/artist.html#search Here are a few issues I've been faced to and tried to solve with simple solutions though it led to a lot of copying and pasting in the end :   * When the user can select multiple choices for a field or not, I systematically had to create a collection of them, adding a 'null' value for the ability of ignoring that field. Also, as these are enumeration values they are not _user-friendly_ to read and therefore needed an extra description field that will be shown instead on the UI. And at the end all this _user-friendly_ values need to be converted back to the original object.   * Selection being made by the user, these choices need to be retrieved and for this, unfortunately in my case WPF data binding shown its limits. Example : when a user chooses items from a collection, there is no way to update the target object with these selections. (Obviously this is unrealistic as the object serves as a data source) In the end it resumes to a lot of manual fetching from combo boxes, list boxes etc ... a _middle-man_ object to receive all that and to this you have to add validation as well. A strategy therefore becomes imperative as I will have to realise a couple of these complex forms. I've been searching the web for solutions but beside extremely simple examples I found nothing relevant. So the question is, is there an effective way that helps when creating complex user forms ?


How to design data structures for sharding?

When designing data structures for an application, what are some best practices to make sure it can be sharded? In particular, which of the following is better:   1. Creating relationships in databases   2. Establishing relationships in SQL queries as necessary?


What quantitative metrics do you use to measure the quality of an offshore testing team?

Are developers are in the US, our testers are in India. How do we measure their ability, quality, success? Some possibilities: \- Coverage at the UI level \- Total time needed to run regression tests


Memory concerns while plotting escape from DLL Hell in Delphi

I work on a program with about 50 DLLs that are loaded from one executable, it's an old organically grown program where the only rationale for creating a new DLL is that one previously didn't exist to fill a given need. (and namespaces didn't exist in Delphi so it never crossed our mind to make dll1.main.pas, dll2.main.pas or something even more unique) What we want to do is consolidate all these DLLs into one executable, since none of them are used out of the program, there shouldn't be much of a problem. The concern my boss has is that if we did this, the memory overhead for terminal server clients would go through the roof. So, I've stepped through enough initialization code to know that lots of stuff is done every time a DLL is loaded in to memory, but say I've got a project with about 4000 files, and 50 dlls, 10 of which are probably utilized by any one user in any one session of the program. The 50 dlls are about 2/3rds form files, if not more, but beyond that there's not a lot of other resources being loaded (only a few embedded pictures, icons, cursors, etc..). If I loaded all these files in to memory, how much memory is used per unit? how much is used per class? How do I keep the overhead down? and what is the biggest project one can reasonably expect to build with Delphi? This tidbit won't help answering, but I think it might clarify what my boss is worried about, we currently start our program at about 18megs, normal working conditions are usually less than 40 megs, he thinks it could climb as high as 120 megs.


Using LGPL Library with Java static or Dynamic linking

I've searched and read many posts about LGPL and C, and when I was able to find one that related to Java, my mind still didn't rest with ease, so I'll try to be more specific and hopefully get a viable guide lines, and I would eventually consult a lawyer obviously! Setup:   * There is a LGPL library, lets call it **Lib-B**   * I have My Library which is based on **Lib-B** lets call it **My-Lib** In my opinion **Lib-B** architecture is not well formulated, and I want to apply in **My-Lib** my own architecture and use **some** of the functions of **Lib-B**. Problem is, that **Lib-B** , wraps the functions I want to access in a manner that does not suit the architecture of **My-Lib** so I've changed **Lib-B** and encapsulated (duplicated) the code lines I wanted/needed within a couple of objects still inside **Lib-B** and call these functions from **My-Lib**. That is my current static setup... ===================== The second thing I can do is to make my setup dynamic, so:   * I could create a Library that would define an interface with the functions **My-Lib** needs lets call it **Lib-A**. Later, I will compile and link **My-Lib** with **Lib-A** , and let **Lib-B** implement the interface from **Lib-A** , and load **Lib-B** dynamically in **My-Lib**. I understand that in both cases I must release my changes of **Lib-B** as LGPL as well and allow my end users access to the code etc... what about **My- Lib**? Thanks, Adam.


Information Spilling Across Object Boundaries

Many times my business objects tend to have situations where information needs to cross object boundaries too often. When doing OO, we want information to be in one object and as much as possible all code dealing with that information should be in that object. However, business rules do not follow this principle giving me trouble. As an example suppose that we have an Order which has a number of OrderItems which refers to an InventoryItem which has a price. I invoke Order.GetTotal() which sums the result of OrderItem.GetPrice() which multiples a quantity by InventoryItem.GetPrice(). So far so good. But then we find out that some items are sold with a two for one deal. We can handle this by having OrderItem.GetPrice() do something like InventoryItem.GetPrice( quantity ) and letting InventoryItem deal with this. However, then we find out that the two-for-one deal only lasts for a particular time period. This time period needs to be based on the date of the order. Now we change OrderItem.GetPrice() to be InventoryItem.GetPrice( quatity, order.GetDate() ) But then we need to support different prices depending on how long the customer has been in the system: InventoryItem.GetPrice( quantity, order.GetDate(), order.GetCustomer() ) But then it turns out that the two-for-one deals apply not just to buying multiple of the same inventory item but multiple for any item in a InventoryCategory. At this point we throw up our hands and just give the InventoryItem the order item and allow it to travel over the object reference graph via accessors to get the information its needs: InventoryItem.GetPrice( this ) TL;DR I want to have low coupling in objects, but business rules often force me to access information from all over the place in order to make particular decisions. Are there good techniques for dealing with this? Do others find the same problem?


What do I ask previous programmer for in web maintenance takeover?

I am taking over the maintenance of a simple commercial website, images and information are displayed. I have experience with html, php, word press, javascript, java, and such. What should I ask the previous dev for when it comes to taking over the maintenance, hosting, files, testing, deployment, etc? Also how much should I charge to maintain and expand the site?


Metaobject protocol:Why is it known as an important concept

Metaobject protocol is protocol for metaobjects in a programming languages. Although I understand it on simple terms, I want to know the reason and a summary of real world usage patterns of this protocol. So, why exactly is metaobject and more importantly metaobject protocol is such a good idea. I want to know the problem which led to its evolution and also, its high power usage. Opinions as well as general overview/description/alternate explanations are also welcome.


What's Your Method of not forgetting the end brackets, parentheses

_disclaimer: for simplicity sake, brackets will refer to brackets, braces, quotes, and parentheses in the couse of this question. Carry on._ When writing code, I usually type the beginning and end element first, and then go back and type the inner stuff. This gets to be a lot of backspacing, especially when doing something with many nested elements like:               jQuery(function($){$('#element[input="file"]').hover(function(){$(this).fadeOut();}));      Is there a more efficient way of remembering how many brackets you've got open ? Or a second example with quotes:               <?php echo '<input value="'.$_POST['name'].'" />"; ?>


How do I get my open-source idea started?

I have an idea for an open source project. It's about building developing tools for software developers. Yet I have never joined a development team and now I don't know much about these teams except the fact that they exist ;) My questions are:   1. Is there c# open source projects team? Where?   2. How can I offer my idea / code   3. If the groups exist ... should I be the project manager in the sense of offering the scope , versions etc. or let others do it? I know that java and other languages are better starting point for open-source but... I feel more comfortable with C# and the vs developing environment.


Is web application startup time really that important?

Had a conversation with someone about adding some initialization code on application startup and he complained about that causing an increasing in the startup time. He couldn't really state a reason (gut feeling or something, don't know). This is not a heavy use application and starts in about a minute or so, we deploy a few times a year. I remember reading such advice on questions on SO some time ago, people advising to initialize on startup instead on access of page with the "if you can afford the penalty" stamp on. I've worked with web apps that started from 30 seconds to 4-5 minutes but once online they rocked. So what am I missing? Unless it's a vital application like... I don't know... for the financial market, medical applications, space exploration etc, is it really that important the startup time? P.S. I'm strictly referring to web apps, desktop apps are bound to start lightning fast.


iOS Guidelines for Free vs. Paid apps

A few months back, I was doing some recreational reading at the iOS Dev Center, and I came across a small list of guidelines for free vs. paid apps. It included guidance along these lines:   * How not to promote a paid version within a free version   * Not displaying "placeholder" buttons in a free version that "work" in a paid version I can't remember much more than that, and I cannot find it anymore on the iOS Dev Center. It's possible I imagined it entirely, but I doubt it - does anyone have a link to this information, or have a set of guidelines for free vs. paid apps in the App Store?


BDD and behavior based on complex state

I'm wondering how to write BDD test cases for a real system. All examples I can find are trivial and do not answer the question. Sample use case/story basically goes like that:   1. User is on the main application page   2. He clicks retrieve to fetch some order to work on   3. He fills 4 textboxes and hits submit.   4. Something happens   5. The next order is presented to the user So, point 4 is a little vague, but there is a lot of logic involved, there's a workflow underneath, etc. You could basically define it this way:               Given order of types A+B+C+E+F (20 possible values with arbitraty combination)       and subtype a1 and the order has attribute X = 1, attribute Y=asdasd, (and much more)     When user enters some specific kind of value in here, and other in here and clicks submit     Then order does this, this, this, this, this, this and that      It does not look good... So the other way is to write:               Given the order with type A (and the rest is "default")     When user does ...     Then the order does things-depentant-only-on-A      Seems nicer, but - is it really the right approach to define that "default state" of the system? It cannot be arbitrary because "things-dependant-only- on-A" are not really independant - they might not even get a chance to kick in if do-not-take-A-into-account-flag is on, or any other weird special case. (yes, my current project is: some not too complex logic + man-years of special cases) A note - when we describe requirements we sometimes specify parameters required for the story to make sense, sometimes not - it works for us, because we know other stories. But in BDD it seems that the test case should be specific and unequivocal.


Criteria for a programming language to be considered "mature"

I was recently reading an answer to this question, and I was struck by the statement "The language is mature". So I was wondering what we actually mean when we say that "A programming language is mature"? Normally, a programming language is initially developed out of a need, e.g.   * Try out / implement a new programming paradigm or a new combination of features that cannot be found in existing languages.   * Try to solve a problem or overcome a limitation of an existing language.   * Create a language for teaching programming.   * Create a language that solves a particular class of problems (e.g. concurrency).   * Create a language and an API for a special application field, e.g. the web (in this case the language might reuse a well-known paradigm, but the whole API must be new).   * Create a language to push your competitor out of the market (in this case the creator might want the new language to be very similar to an existing one, in order to attract developers to the new programming language and platform). Regardless of what the original motivation and scenario in which a language has been created, eventually some languages are considered **mature**. In my intuition, this means that the language has achieved (at least one of) its goals, e.g. "We can now use language X as a reliable tool for writing web applications." This is however a bit vague, so I wanted to ask what you consider the most important criteria (if any) that are applied when saying that a language is mature. **IMPORTANT NOTE** This question is (on purpose) language-agnostic because I am only interested in general criteria. Please write only language-agnostic answers and comments! I am not asking whether any specific "language X is mature" or "which programming languages can be considered mature", or whether "language X is more mature than language Y": please avoid posting any opinions or reference about any specific languages because these are out of the scope of this question. **EDIT** To make the question more precise, by **criteria** I mean such things as "tool support", "adoption by the industry", "stability", "rich API", "large user community", "successful application record", "standardization", "clean and uniform semantics", and so on.


What screen resolutions should we test on when developing for mobile devices?

If I wanted to make a mobile version of a website, what are the most common screen resolutions that I should be testing on?


Strategy to store/average logs of pings

I'm developing a site to monitor web services. The most basic type of check is sending a ping, storing the response time in a `CheckLog` object. By default, `PingCheck` objects are triggered every minute, so in one hour you get 60 `CheckLogs` and in one day you get 1440 `CheckLogs`. That's a lot of them, I don't need to store such level of detail, so I've set a up _collapsing mechanism_ that periodically takes the uncollapsed `CheckLogs` older than 24h and _collapses_ (averages) them in intervals of 30 minutes. So, if you have 360 `CheckLogs` that have been saved from 0:00 to 6:00, after collapsing you retain just 12 of them. The problem.. well, is this: ![enter image description here](http://i.stack.imgur.com/vnX8p.png) After averaging the response times, the graph changes drastically. What can I do to improve this? Guess one option could be narrowing the interval duration to 15 min. I've seen the graphs at the GitHub status page and they do not seem to suffer from this problem. I'd appreciate any kind of information you could give me about this area.


name origin of "WebService"

WebServices are one possible implementation of a SOA, so there comes the name "Services" from. But why are they called * _WEB_ *Service? Is it because they use web technologies and protocols (HTTP, XML, ...) for the implementation?


GUI code implementation for specific Window/Form class

**Terminology** Element/Form Element -> Fields such as text list, combo_boxes, push buttons, etc. **Problem** I have a program that is basically a fat client that interfaces into a system that keeps track of traffic lights. In this program exists a form. The form contains several subforms. As it is right now, some of the subforms have their own classes, and some of the subforms are just controlled completely from the class of the main form. The main form class has a validate method which is called when the form is submitted and calls validation methods within the subforms, as well as performing validation on some of the form elements that don't have their own classes. I'm not sold on this architecture, as I feel that it should be consistent (every subform should have its own class, or no subform should have it's own class. My problem lies in the implementation of handling warnings. Right now, when an element is validated against, the validation results in an error or a warning. If it is an error, the user must correct the box to meet the forms validation requirements. If it is a warning, the user must be notified of that warning, and then submit the form a second time. If a warning occurs, I have created a flag that will be set. Before the information within the form elements can be accepted, the form first checks if any errors were thrown. In the event there are no errors, it checks for warnings. If the warning flag is set, it displays the warning. The next time this method is called, the warning flag is toggled within the validation method. I don't really like this implementation, as it basically means you have this rogue flag that should be cleared based on the requirements. I've thought about implementing it as a state machine, however you run into the same problem where the state of the form would be set in various spots within the class based on the requirements (One of the fields changed, reset to the starting state, etc). The other problem that I ran into is that the warning flag is owned by the main forms class. I can create a pointer to the parent form from the subform, and then set the flag from there. This all feels very clunky, and I feel like it could create a lot of confusion. To me there has to be a better way to architect this. **EDIT: Adding some code for context**               bool MainForm::callback_pushbutton_submit_clicked( const FormEvent&)     {         if ( validate_all_forms() )         {             //display error         }         else if ( get_warning_displayed_flag() )         {             //display warning         }         else         {             //submit form         }          }          bool MainForm::validate_all_forms()     {            bool error = false;         bool display_warning = false;         error |= subform1.validate();         error |= subform2.validate();         //...              //perform some validation on subforms that are controlled within the main form         if ( !(my_date_field.validate() )         {             display_warning = true;         }         //....              if( error )         {             //format error message             //clear warning flag         }         else if ( display_warning )          if ( !get_display_warning_flag() )          {             //get warning message          }          invert_warning_display_flag()     }     return error;


How to you achieve flow in web programming?

I really like programming simple things, like solutions for Project Euler, where you can concentrate, write an algorithm, instantly execute, test, verify and change the program until it works. Even for bigger projects I feel I can maintain flow and be very productive as long as I can stay in one IDE (e.g. Eclipse) and everything compiles and starts fast, for example, if it is a Swing GUI. With the growing focus on web applications and smart phones however, I am forced to set up a web server, juggle a big amount of programming and markup languages (e.g. Javascript, Java, HTML, CSS), different kinds of editors and wait while something is deployed (web server), compiled (GWT, Vaadin) or virtualized (Android). Are there solutions that allow to circumvent those problems? I know this questions may sound subjective but it is an important issue for me and I think it can benefit many others as well. P.S.: What I am looking for is a solution to web development which allows staying in one IDE and which allows testing and executing without long waiting for long compiles, deploys, ect.


Why would a C executable be smaller when compared to C++ executable

I'm trying to understand why the output file sizes are significantly different when using a C and a C++ compiler. I was writing a small hello world program in C and C++, I noticed that in C version, the size of the executable was 93.7KB and in C++, the size of the same hello world program was 1.33MB. I am not sure why that is. I think it may be because C++ has more libraries and namespaces to use so I removed the `using namespace std` line and simply used `std::cout` and still the result was the same. **C**               #include <stdio.h>          int main()     {         printf("hello world");         return 0;     }      // size 93.7KB **C++**               #include <iostream>          int main()     {         std::cout<<"Hello world";         return 0;     }      // size 1.33MB There doesn't seem to be much difference in the code above. Is there some sort of compiler difference that creates the differing file sizes?


Confused about javascript module pattern implementation

I have a class written on a project I'm working on that I've been told is using the module pattern, but it's doing things a little differently than the examples I've seen. It basically takes this form:               (function ($, document, window, undefined) {              var module = {             foo : bar,                  aMethod : function (arg) {                 className.bMethod(arg);             },             bMethod : function (arg) {                 console.log('spoons');             }         };         window.ajaxTable = ajaxTable;          })(jQuery, document, window);      I get what's going on here. But I'm not sure how this relates to most of the definitions I've seen of the module (or revealing?) module pattern. like this one from briancray               var module = (function () {         // private variables and functions         var foo = 'bar';              // constructor         var module = function () {         };              // prototype         module.prototype = {             constructor: module,             something: function () {             }         };              // return module         return module;     })();          var my_module = new module();      Is the first example basically like the second except everything is in the constructor? I'm just wrapping my head around patterns and the little things at the beginnings and endings always make me not sure what I should be doing.


Can 'Agile' be applied to Healthcare IT teams?

Can Agile be employed in a field like Healthcare IT, where so much of patient care depends on the quality and timely delivery of systems?


Why is a lightning bolt used to represent events in IDEs?

I was just curious if anyone knew why the lightning bolt was selected to represent events in various IDEs? or when it was first used? From the top of my head the lightning bolt is used in visual studio, delphi and axure prototyping.


Bug tracker that integrates with source control

I thought this would be easy, but its been sort of a disaster. I want to set up a bug tracker that integrates with source control. At a minimum, when you commit to source control, it should notify the issue tracker and if the comment is set up correctly, push a commit reference to the issue tracker, so you can navigate back and see what happened. This works very well with github using its integrated issue tracker, but this requires github as the place where the source goes, and the issue tracker is VERY basic (which is good and bad). We work with multiple clients, and about 50% use SVN. We _could_ do round trips to github, but that's a mess. I tried Jira, multiple times, using their ondemand service. It was a huge waste of time. They integrate subversion, and everything else feels like its taped on after the fact. Documentation and everything else is comically bad. I still haven't gotten github to work with Jira, after multiple attempts, and the setup seems to be OK, but nothing ever comes over. Tried FogBugz, but that seems to include its own source control. Can't connect to outside repos. Tried plan.io for redmine. You can have subversion or git, which was very exciting, till I found out you can have either, but THEY host them, which totally doesn't work. Ideally I'd like Jira, or something similar, able to point at outside repos. Also looked at youtrack, and although it seems to mention github integration, from the demo it looks like it doesn't hook back into the repo on commits. They also have a link for hosted Youtrack, but when you get there its no longer live. Would download/install locally if I thought it would solve the problem, but I'd rather not go through that exercise without knowing if it has the features I need first. I'd also like some code review features, but we'll just start with issues hooked into source control. Thanks in advance.


Deeper understanding of event loops and timers

I have a basic grasp of accepting clients without creating a thread for each connection using tools such as `select` and modern equivalents (kqueue, epoll). But where do I go from here? e.g async I/O and (periodic) timers. I could crack open the source to libev and friends but that's a little overwhelming to me to say the least. I've looked around for textbooks on this subject but didn't come up with anything useful. The basic objective is to write a small _toy_ implementation of an evented library with timers and async I/O. Just for getting a better grasp on the subjects. _I'm not looking to reinvent the wheel. This is solely for learning/educational purposes. (not homework either)_


How to teach basic principles to programmers

In order to get experience as a team lead, I was recently given the task of supervising a programmer. What I found out is that he is having a problem in writing a simple `if` condition. He has issues with `string`. And he doesn't know how to pass a variable in the `addClass` function of jQuery with an `if` condition. And he doesn't know when to use a `for` loop. Or even what a `for` loop is used for. **How to make him understand these basic concepts quickly?** I told him to Google for how to use `if` condition for `addClass` variable. But he didn't find it, then I told him to do it quickly in the early morning, when discussing he was giving reasons that it is what that, then I told him I show you how to do that, then he told me, you should have done it before. **What should I reply to him?** He is telling me that you should tell me everything or **Should I do it and show him every time?** It may take lot of time, and every time I have to do a task. I want him to be independent.


How far is the trail from Java to C / C++?

I want to find out how easy or hard the transition to C / C++ is for a mid- experienced Java programmer. I've already read the questions about "C++ for Java Programmers" and "Is it necessary for Java programmers to learn some C/System programming?". Everything sounds very interesting, but I want to specifically add the aspect I have experience in Python programming as well. I'm aware that you are able to run python on the JVM with jython, but I think it will provide better experience to get exposed to new concepts and to explore Python's origins. My target environment is mainly Linux. Could you estimate (perhaps even tell from your own experience) how hard it would be and especially give a hint as to whether it would be better to go with C or C++ in order to interact with Python?


Exporting huge data into XLS in a web application

I am developing a web application in Java/J2EE, in which I have export functionality. I have used Jasper for the same. The issue is when trying to export a huge set of data it is consuming a lot of time. Is there any design approach for export functionality so that I can improve the performance? I had tried JExcel API earlier and then moved to DynamicJasper API.


Why do certain sites don't allow Back / Forward / Refresh?

This has been a cause of frustration for me on many sites like IRCTC, Online Banking sites which wont allow Back, forward or refresh. If you do you would be logged out and you have to login again. What I don't understand is what concern had there been in their mind to have such terrible "feature".


Fitting an established site into a CI framework

I manage a rather large, feature full nightmare of a site which has no end of feature creep settings/options/etc. Up to now its been coded in a procedural/functional way and would like to move to an OO,MVC setup. I'm quite new to it all but have done alot of research and feel that CodeIgniter is a code choice of framework to use to help quicken the transfer. Before looking at a framework, I started constructing a list of objects to create classes out of:   * photos   * users   * forum topics   * forums   * blogs   * blog posts   * comments The trouble I have now, is I do understand where these generic/universal objects fall into the CI MVC setup. What is the best way to organise this kind of stuff? These classes can generally be used on multiple models/views/controllers.


Does changing the name of a namespace count as a MAJOR change in semantic versioning?

I'm writing a C++ library, and according to this site here: http://semver.org/,   I should increment the MAJOR version when I make incompatible API changes. Is changing the name of a namespace considered an incompatible change in the API? I'm not quite sure. I don't know whether I should increment the MAJOR or MINOR version number.


What are good ways to organize input files (Makefiles, SConstruct, CMakeLists.txt, etc.) to build automation software?

One thing I like to do with my code is make sure that it's refactored into manageable pieces. However, when it comes to building the software, I find that whatever build automation software I end up using (lately it's been GNU Make or SCons) ends up becoming a complete mess. The input files look like long scripts that seem to defy easy refactoring. I'd like to be able to refactor them in some way, but the concept of "function" doesn't quite behave the same way in some build automation software as it does in a programming language, so I find it difficult to write manageable Makefiles or SConscript files for any projects that are moderately complicated. Does anyone have any advice on writing manageable input files for build automation software? Software-agnostic advice would be best, but even advice about a specific build automation tool would be helpful, particularly Make or SCons, since that's what I've been using for projects. **Edit:** As Thorbjørn has pointed out, I should add some context and usage examples. I'm finishing up my PhD in chemical engineering and I do research in computational science. (I'm a pro tem mod over at SciComp.SE, for those of you who visit.) My projects typically involve a mix of compiled languages (C, C++, Fortran) that do some of the heavy lifting, scripting languages (Python, Perl) for prototyping, and occasionally, domain-specific languages for prototyping or technical purposes. I've added two examples below, roughly in the 250-line range. The problem for me is generally a lack of modularity. Some of these projects can be organized into modular units, and it'd be nice to abstract the parts of the build along those lines to make it easier for me and future maintainers to keep track of. Breaking each script up into multiple files has been one solution I've been toying around with in my head. The second example is particularly important, because I'm going to have to a large number of files to it soon. Here's what a 265-line `Makefile` might look like for me, taken from an actual project, and organized as best I can:               #!/usr/bin/make     #Directory containing DAEPACK library folder     daepack_root = .     library = $(daepack_root)/lib     wrappers = $(daepack_root)/Wrappers/DSL48S     c_headers = parser.h problemSizes.h     f77_headers=problemSizes.f commonParam.f     f90_headers=problemSizes.f commonParam.f90     includes = -I. -Iinclude -I/usr/include/glib-2.0 \         -I/usr/lib/glib-2.0/include -I/usr/include/libxml2 \         -I/usr/include/libgdome -I/usr/include/gtest/          #Fortran 77 environment variables     f77=gfortran     fflags=-ggdb -cpp -fno-second-underscore --coverage -falign-commons \         -mcmodel=large -fbacktrace -pg      flibs=          #Fortran 90 environment variables     f90=gfortran     f90flags=-ggdb -cpp -fno-second-underscore --coverage -falign-commons \         -mcmodel=large -fbacktrace -pg      f90libs=          #C environment flags     cc=gcc     cflags=-ggdb --coverage $(includes) -mcmodel=large      clibs=          #Libraries for linking     libs=-L$(library) -ldaepack_sparse -lblas -llapack -ldl -lg2c \         -lgdome -lxml2 -lgtest -lcunit -lcholmod -lamd -lcolamd -lccolamd \         -lmetis -lspqr -lm -lblas -llapack -lstdc++ -lpcre          #Object files     objs=main.o $(dsl48sObjs) $(gdxObjs)     gdxObjs = gdxf9def.o gdxf9glu.o gamsglobals_mod.o      commonObjs=libdsl48s_model.sl cklib.o parser.o $(gdxObjs)     originalModelObjs=originalModel.o dsl48sChemkinModule.o $(commonObjs)     cspSlowModelObjs=cspSlowModel.o dsl48sChemkinModuleSlow.o cspModule.o \         $(commonObjs)     orthoProjModelObjs=orthoProjModel.o dsl48sChemkinModuleOrthoProj.o \         orthoProjModule.o basisModule.o spqrUtility.o $(commonObjs)          #Shell environment variable definitions for FUnit     FCFLAGS := $(f90flags)     LDFLAGS := libdsl48s_model.sl cklib.o gdxf9glu.o parser.o spqrUtility.o \         $(libs)          misc=*table *size.f      output=*.out          #Ftncheck flags for static analysis of Fortran 77 code     ftnchekflags= -declare -include=. -library -style=block-if,distinct-do,do-enddo,end-name,goto,labeled-stmt,structured-end          all: ckinterp.exe parserTest.exe originalModel.exe cspSlowModel.exe \         orthoProjModel.exe spqrUtilityTest.exe     #Check code style with lexical analyzer         @echo Checking program style...         ftnchek $(ftnchekflags) rhs.f         ftnchek $(ftnchekflags) resorig.f         ftnchek $(ftnchekflags) res.f     #   ftnchek $(ftnchekflags) cklib.f     #   ftnchek $(ftnchekflags) ckinterp.f     #Set up baseline coverage data file         @echo Set up baseline coverage data file         lcov -c -i -d . -o conpDSL48Sbase.info     #Run unit test on cspModule.f90         @echo Running unit tests on cspModule.f90...         funit cspModule     #Generate test coverage data for cspModule.f90         @echo Generating test coverage data from cspModule.f90 tests...         lcov -c -d . -o conpDSL48ScspTest.info     #Run unit test on orthoProjModule.f90         @echo Running unit tests on orthoProjModule.f90...         funit orthoProjModule     #Generate test coverage data for orthoProjModule.f90         @echo Generating test coverage data from orthoProjModule.f90 tests...         lcov -c -d . -o conpDSL48SgenProjTest.info     #Run unit tests on the parser C library         @echo Running unit tests on parser in C...         -G_SLICE=always-malloc G_DEBUG=gc-friendly valgrind -v --tool=memcheck \         --leak-check=full --show-reachable=yes --leak-resolution=high \         --num-callers=20 --log-file=parserTest.vgdump \         ./parserTest.exe > parserTest.log     #Generate test coverage data for the parser wrapper C library         @echo Generating test coverage data for the parser in C...         lcov -c -d . -o conpDSL48SparserTest.info     #Run unit tests on the SparseQR C library         @echo Running unit tests on SparseQR library in C...         ./spqrUtilityTest.exe     #Generate test coverage data for the SparseQR C library         @echo Generating test coverage data for the SparseQR C library...         lcov -c -d . -o conpDSL48SsparseTest.info     #Run unit test on basisModule.f90         @echo Running unit tests on basisModule.f90...         funit basisModule     #Generate test coverage data for basisModule.f90         @echo Generating test coverage data from basisModule.f90 tests...         lcov -c -d . -o conpDSL48SbasisMod.info     #Combine test coverage data         @echo Combine baseline and test coverage data...         lcov -a conpDSL48Sbase.info \         -a conpDSL48ScspTest.info \         -a conpDSL48SgenProjTest.info \         -a conpDSL48SbasisMod.info \         -a conpDSL48SparserTest.info \         -a conpDSL48SsparseTest.info \         -o conpDSL48Stotal.info     #Post-process to remove coverage statistics from automatically      #generated source code.         @echo Removing coverage statistics for automatically generated source...         lcov -r conpDSL48Stotal.info basisModule_fun.f90 \         ckinterp.f cklib.f cspModule_fun.f90 davisSkodjeAd.f90 \         davisSkodjeJac.f90 davisSkodjeRes.f90 davisSkodjeRhs.f90 \         davisSkodjeSp.f90 gdxf9def.f90 gdxf9glu.c orthoProjModule_fun.f90 \         jac.f jacorig.f resad.f resadp.f resorigad.f resorigadp.f ressp.f \         resorigsp.f senrhs.f senrhsorig.f TestRunner.f90 \         -o conpDSL48Stotal.info     #Generate HTML report of coverage data         @echo Generate HTML report of coverage data...         genhtml conpDSL48Stotal.info         @echo Open "index.html" in browser for coverage results!          originalModel.exe: $(originalModelObjs) $(f90_headers) $(f77_headers) \         $(c_headers)         $(f90) $(f90flags) -o originalModel.exe $(originalModelObjs) $(libs)          originalModel.o: dsl48sChemkinModule.o $(commonObjs) $(f77_headers) \         $(f90_headers) $(c_headers)         $(f90) $(f90flags) -c -o originalModel.o originalModel.f90          cspSlowModel.exe: $(cspSlowModelObjs) $(f90_headers) $(f77_headers) \         $(c_headers)         $(f90) $(f90flags) -o cspSlowModel.exe $(cspSlowModelObjs) $(libs)          cspSlowModel.o: dsl48sChemkinModuleSlow.o cspModule.o $(commonObjs) \         $(c_headers) $(f77_headers)         $(f90) $(f90flags) -c -o cspSlowModel.o cspSlowModel.f90          orthoProjModel.exe: $(orthoProjModelObjs) $(f90_headers) $(f77_headers) \         $(c_headers) resOrthoFast.o         $(f90) $(f90flags) -o orthoProjModel.exe $(orthoProjModelObjs) \         resOrthoFast.o $(libs)          orthoProjModel.o: dsl48sChemkinModuleOrthoProj.o orthoProjModule.o $(commonObjs) \         $(c_headers) $(f90_headers) $(f77_headers) resOrthoFast.o basisModule.o         $(f90) $(f90flags) -c -o orthoProjModel.o orthoProjModel.f90          dsl48sChemkinModule.o: dsl48sChemkinModule.f90 cklib.o problemSizes.h \         parser.o $(c_headers) $(f90_headers)         $(f90) $(f90flags) -c -o dsl48sChemkinModule.o dsl48sChemkinModule.f90           dsl48sChemkinModuleSlow.o: dsl48sChemkinModuleSlow.f90 cspModule.o cklib.o \         problemSizes.h parser.o $(c_headers) $(f90_headers)         $(f90) $(f90flags) -c -o dsl48sChemkinModuleSlow.o \         dsl48sChemkinModuleSlow.f90          dsl48sChemkinModuleOrthoProj.o: dsl48sChemkinModuleOrthoProj.f90 \         orthoProjModule.o basisModule.o cklib.o problemSizes.h \         parser.o $(c_headers) $(f90_headers)         $(f90) $(f90flags) -c -o dsl48sChemkinModuleOrthoProj.o \         dsl48sChemkinModuleOrthoProj.f90          basisModule.o: basisModule.f90 cklib.o spqrUtility.o commonParam.f90         $(f90) $(f90flags) -c -o basisModule.o basisModule.f90          spqrUtility.o: spqrUtility.h spqrUtility.c         $(cc) $(cflags) -c -o spqrUtility.o spqrUtility.c          spqrUtilityTest.exe: spqrUtilityTest.o spqrUtility.o         $(cc) $(cflags) -o spqrUtilityTest.exe spqrUtilityTest.o \         spqrUtility.o $(libs)          spqrUtilityTest.o: spqrUtilityTest.c spqrUtility.o         $(cc) $(cflags) -c -o spqrUtilityTest.o spqrUtilityTest.c          cklib.o: cklib.f ckstrt.f         $(f77) $(fflags) -c -o cklib.o cklib.f          ckinterp.exe: ckinterp.o         $(f77) $(fflags) -o ckinterp.exe ckinterp.o          ckinterp.o: ckinterp.f         $(f77) $(fflags) -c -o ckinterp.o ckinterp.f          #Recursive makefile inherited from previous graduate students     libdsl48s_model.sl: $(f77_headers) cklibDAEPACK.f         cp $(wrappers)/makefile model.mk         make -f model.mk          resOrthoFast.o: libdsl48s_model.sl         $(f90) $(f90flags) -c -o resOrthoFast.o resOrthoFast.f90          problemSizes.f: problemSizes.fpp problemSizes.h         cpp problemSizes.fpp problemSizes.f         perl -p -i.bak -we 's/# /! /;' problemSizes.f          commonParam.f90: commonParam.f         perl -p -i.bak -we 's/^#/!/;' commonParam.f         echo "commonParam t f t fpp" | pref77tof90         echo "commonParam /" | f77tof90         perl -p -i.bak -we 's/integer a/!integer a/;' commonParam.f         perl -p -i.bak -we 's/END   //;' commonParam.f90          commonParam.f: commonParam.fpp problemSizes.h         cpp commonParam.fpp commonParam.f         perl -p -i.bak -we 's/^#/!/;' commonParam.f          cspModule.o: cspModule.f90         $(f90) $(f90flags) -c -o cspModule.o cspModule.f90          orthoProjModule.o: gamsglobals_mod.o gdxf9def.o gdxf9glu.o orthoProjModule.f90 \         formatLabels.f90         $(f90) $(f90flags) -c -o orthoProjModule.o orthoProjModule.f90          gdxf9def.o: gdxf9def.f90         $(f90) $(f90flags) -c -o gdxf9def.o gdxf9def.f90          gdxf9glu.o: gdxf9glu.c gdxf9def.o     #64-bit version of wrappers (with underscores)         $(cc) $(cflags) -DCIA_LEX -DAPIWRAP_LCASE_DECOR -c -o \         gdxf9glu.o gdxf9glu.c     #64-bit version of wrappers (without underscores, for C interoperability)     #   $(cc) $(cflags) -DCIA_LEX -DAPIWRAP_LCASE_NODECOR -c gdxf9glu.c     #32-bit version of wrappers     #   $(cc) $(cflags) -DAPIWRAP_LCASE_DECOR -c gdxf9glu.c -Iinclude          gamsglobals_mod.o: gamsglobals_mod.f90 gdxf9def.o gdxf9glu.o         $(f90) $(f90flags) -c gamsglobals_mod.f90          parser.o: parser.c $(c_headers)         $(cc) $(cflags) -c -o parser.o parser.c           parserTest.exe: parserTest.o parser.o         $(cc) $(cflags) -o parserTest.exe parser.o \         parserTest.o $(libs)          parserTest.o: parserTest.cpp parser.o         $(cc) $(cflags) -c -o parserTest.o parserTest.cpp          clean:         -rm *.bak         -rm *.f77         -rm *.log         -rm commonParam.f90         -rm problemSizes.f         -rm commonParam.f         -make clean -f model.mk         -rm model.mk         -rm *.o         -rm *.mod         -rm $(misc)         -rm *.exe         -funit --clean         -rm *.gcno         -rm *.gcda         -rm *.info         -rm *.png         -rm *.html         -rm *.css         -rm -rf html         -rm *.pyc         -rm *.lst      Here's a 245-line `SConstruct` file that I'm currently trying to organize for a project that's roughly as complex:               ## \file SConstruct     #  \brief Compiles the library and compiles tests.     #          import SCons          ## \brief Build up directory names of each COIN library from package names     #         and versions.     #          ## Overall SCons environment     #     env = Environment();          flags = []          ## Compile using debug versions?     #     debug = True     debugString = '-debug'     debugFlags = ['-ggdb']          dynamicLinkFlag = '-Wl,-rpath,'          if debug:         flags += debugFlags          ## Compile Google Test from scratch.     #     GTestVersion = '1.6.0'     GTestStem = 'gtest-' + GTestVersion     GTestBuildIncDir = [GTestStem,                         GTestStem + '/include',                         ]     GTestAllLib = env.Library('lib/libgtest.a', 'gtest-1.6.0/src/gtest-all.cc',                           CPPPATH = GTestBuildIncDir,                           CXXFLAGS = flags)     GTestMainLib = env.Library('lib/libgtest_main.a',                                'gtest-1.6.0/src/gtest_main.cc',                                CPPPATH = GTestBuildIncDir,                                CXXFLAGS = flags)          GTestIncDir = GTestStem + '/include/gtest'     GTestLibDir = 'lib'     GTestLibFlags = ['gtest', 'gtest_main', 'pthread']          ## Armadillo matrix library     #     ArmadilloLibFlags = ['armadillo'];          ## Quick reminder of SCons flags:     #  CPPPATH = path of headers (include directories)     #  LIBPATH = path of libraries     #  LIBS = flags of libraries     #  CXXFLAGS = C++ compilation flags     #                         ## Locations of libraries installed on system in standard locations     #     StdIncDir = '/usr/include'     StdLibDir = '/usr/lib'          ## Configuration information for COIN libraries     #     CoinUtilsVersion = '2.6.4'     ClpVersion = '1.12.0'     OsiVersion = '0.103.0'     CbcVersion = '2.5.0'          ## Some standard directory locations of COIN libraries, with slashes added for     #  for convenience.     #     CoinLibLocation = '/usr/local/COIN/'     StdCoinIncDir = '/include/coin'     StdCoinLibDir = '/lib'          CoinUtilsStem = 'CoinUtils-' + CoinUtilsVersion     ClpStem = 'Clp-' + ClpVersion     OsiStem = 'Osi-' + OsiVersion     CbcStem = 'Cbc-' + CbcVersion          if debug:         CoinUtilsStem += debugString         CbcStem += debugString         ClpStem += debugString         OsiStem += debugString               ## Build up include directory names for COIN projects from constituent parts.     #     CoinUtilsIncDir = CoinLibLocation + CoinUtilsStem + StdCoinIncDir     ClpIncDir = CoinLibLocation + ClpStem + StdCoinIncDir     OsiIncDir = CoinLibLocation + OsiStem + StdCoinIncDir     CbcIncDir = CoinLibLocation + CbcStem + StdCoinIncDir          ## Build up library names from COIN projects from constituent parts     #     CoinUtilsLibDir = CoinLibLocation + CoinUtilsStem + StdCoinLibDir     ClpLibDir = CoinLibLocation + ClpStem + StdCoinLibDir     OsiLibDir = CoinLibLocation + OsiStem + StdCoinLibDir     CbcLibDir = CoinLibLocation + CbcStem + StdCoinLibDir          ## CPLEX     #     CpxStem = '/opt/ibm/ILOG/CPLEX_Studio_Academic123/cplex/'     CpxIncDir = CpxStem + 'include/ilcplex'     CpxLibDir = CpxStem + 'lib/x86-64_sles10_4.1/static_pic'          ## Gurobi     #      GrbStem = '/opt/gurobi460/linux64/'     GrbIncDir = GrbStem + 'include'     GrbLibDir = GrbStem + 'lib'          OsiLibFlags = ['Osi', 'CoinUtils']     ClpLibFlags = ['Clp', 'OsiClp']     CbcLibFlags = ['Cbc', 'Cgl']     OsiCpxLibFlags = ['OsiCpx']     OsiGrbLibFlags = ['OsiGrb']     CpxLibFlags = ['cplex', 'ilocplex', 'pthread', 'm']     GrbLibFlags = ['gurobi_c++', 'gurobi46', 'pthread', 'm']          milpIncDirs = [CoinUtilsIncDir,                    ClpIncDir,                    OsiIncDir,                    CbcIncDir,                    CpxIncDir,                    GrbIncDir,                 GTestIncDir,                    ]     milpLibDirs = [CoinUtilsLibDir,                    ClpLibDir,                    OsiLibDir,                    CbcLibDir,                    CpxLibDir,                    GrbLibDir,                    GTestLibDir,                 ]     milpLibFlags = [OsiCpxLibFlags,                     OsiGrbLibFlags,                     CbcLibFlags,                     ClpLibFlags,                     OsiLibFlags,                     CpxLibFlags,                     GrbLibFlags,                     GTestLibFlags,                     ]     ##milpSolver = env.Object('milpSolver.cpp',                 ##                         CPPPATH = milpIncDirs,     ##                         LIBPATH = milpLibDirs,     ##                         CXXFLAGS = flags)     milpSolverTest = env.Program('milpSolverUnitTest',                                       ['milpSolverTest.cpp',                                        'milpSolver.cpp'],                                       CPPPATH = milpIncDirs,                                       LIBPATH = milpLibDirs,                                       LIBS = milpLibFlags,                                       CXXFLAGS = flags,                                       LINKFLAGS = ['-Wl,-rpath,' + OsiLibDir])     env.Depends(milpSolverTest, [GTestAllLib, GTestMainLib])          ## Chemkin source directories and files     #     ChemkinSourceDir = '/mnt/hgfs/DataFromOldLaptop/Data/ModelReductionResearch/Papers/AdaptiveChemistryPaper/AdaptiveChemistry/NonOpenSource/ChemkinII/';     ChemkinSourceList = ['cklib.f', 'pcmach.f','tranlib.f']     ChemkinSourceList = [ChemkinSourceDir + FileName                          for FileName in ChemkinSourceList]     env.Depends('cklib.f','ckstrt.f')          ## Cantera include directorie     #     CanteraStem = '/usr/local/cantera'          if debug:         CanteraStem += debugString          CanteraIncDir = CanteraStem + '/include/cantera'     CanteraLibDir = CanteraStem + '/lib'     CanteraTestingFlags = ['kinetics', 'thermo', 'tpx', 'ctbase', 'm',]     CanteraLibFlags = ['user', 'oneD', 'zeroD', 'equil', 'kinetics', 'transport',                         'thermo', 'ctnumerics', 'ctmath', 'tpx', 'ctspectra',                         'converters', 'ctbase', 'cvode', 'ctlapack', 'ctblas',                         'ctf2c', 'ctcxx', 'ctf2c', 'm', 'm', 'stdc++']          CxxFortranFlags = ['g2c', 'gfortran'];           chemSolverIncDir = [CanteraIncDir,                         StdIncDir,                         '/usr/local/include',                         GTestIncDir,                         ]     chemSolverLibDir = [StdLibDir,                         CanteraLibDir,                         GTestLibDir,                         ]     chemSolverLibFlags = [GTestLibFlags,                           CxxFortranFlags,                           CanteraLibFlags,                           ArmadilloLibFlags,                           ]          chemSolverTest = env.Program('chemSolverUnitTest',                             ['chemSolverTest.cpp',                              'chemSolver.cpp',                              'ckwrapper.f90'] + ChemkinSourceList,                             CPPPATH = chemSolverIncDir,                             LIBPATH = chemSolverLibDir,                             LIBS = chemSolverLibFlags,                             CXXFLAGS = flags,                             FORTRANFLAGS = flags,                             F90FLAGS = flags)     env.Depends(chemSolverTest, [GTestAllLib, GTestMainLib])          #env.AddPostAction(milpSolverTest, milpSolverTest[0].abspath)     testAlias = env.Alias('test', [milpSolverTest, chemSolverTest])     AlwaysBuild(testAlias)          ckInterp = env.Program('ckinterp', ChemkinSourceDir + 'ckinterp.f')          canteraGTestLibFlags = CanteraTestingFlags + GTestLibFlags          #canteraGTestLibFlags = ['kinetics', 'thermo', 'tpx',     #                        'ctbase',  'm', 'gtest', 'gtest_main', 'pthread']          canteraGTest = env.Program('canteraGTest',                                'canteraGTest.cpp',                                CPPPATH = chemSolverIncDir,                                LIBPATH = chemSolverLibDir,                                LIBS = canteraGTestLibFlags,                                CXXFLAGS = flags)     env.Depends(canteraGTest, [GTestAllLib, GTestMainLib])          canteraMemTestLibFlags = CanteraTestingFlags          canteraMemTest = env.Program('canteraMemTest',                                  'canteraMemTest.cpp',                                  CPPPATH = chemSolverIncDir,                                  LIBPATH = chemSolverLibDir,                                  LIBS = canteraMemTestLibFlags,                                  CXXFLAGS = flags)


Is a functional spec a part of the System requirement spec?

I wonder, sources like wikipedia or templates I found shows that Functional spec **is** a part of System requirement documents. I always thought that SRD is just overall decsription of the system, with all functional and non functional requirements. Yet I thought that Functional spec is more detailed and it is a separate document, while SRD is high level customer-created description (how is this one called then?) Could anyone help to make this clear for me?


Licensing solutions for closed-source software running on Linux?

I'm looking for a simple licensing software solution that works on Linux - a library that can generate and consume license keys. From what I was able to find were some behemoth license servers, something that is just way above what I require. Are there libraries in particular you can recommend?


What are the effects of including build tools in a code repository when those tools have different licenses than your code?

What effect does including another open-source utility in your source repository have upon your code if they use different licenses?   * I tend to use more permissive licenses such as the Apache and MIT.   * To allow others to use a project with as little setup as possible I want to include utilities used by the build scripts in the repository (documentation generator, JavaScript minifier, etc).   * I understand that things generated by these utilities (documentation, minified JS files) are **not** derivative works.   * What is not as clear to me is the question of whether including some utilities which have more restrictive licenses will create conflicts with my code?   * Does the "viral" nature of the GPL threaten to "infect" my code by including GPL utilities in my repository and referencing them from my build scripts? None of the code will be intermingled, appropriate licenses will remain with each item. I should mostly just be using binaries from the outside sources (.jar, etc). I just want to make sure that "distributing" them in my repository when I upload it to GitHub won't taint everything else.


Adding new objects to a clientside array - best practices?

Say you have a list of "vehicles" - you have an observableArray of these ko.observable()s. You let your user add a new vehicle with the following:               var emptyVehicle = {         "make": "chevrolet",         "model": "corvette"     };     app.on('CLICKED_ADD_VEHICLE', function () {                 var vehicle = new vehicleViewModel(emptyVehicle);                 vehicle.hasWheels(true);                 innerModel.sets.push(set);             });      If they save the vehicle, you get a real vehicle from your dataservice, and then replace the blank one with this:               app.on('CLICKED_SAVE', function (oldVehicle) {                 var newVehicle = new vehicleViewModel(dataservice.createVehicle(oldVehicle));                         innerModel.vehicles.remove(oldVehicle);                         innerModel.vehicles.push(newVehicle);             });      I know I'm leaving some code out here, but this is more of a practices/approach question than a code question. Is this an acceptable approach to adding new items to a list? New up a temporary template, and throw it away in place of an actual item if the user saves?


Should I combine similar functions even though they are slightly different?

On an application I've been working on I have a function, connecting to a virtual machine, that can be performed two ways. The user can either select a machine from a list and click the "Connect" button. Or can double click on the machine in the list. Currently they are two separate event handlers because they function slightly differently. If a user is already connected, clicking the button will disconnect them, and double clicking will bring the window back up. ///edit The logic is essentially               button     if(connected)     Disconnect()     else     ConnectAndShowWindow()          List     ConnectAndShowWindow()      My question is should I keep the methods separate or combine the two methods even though they are slightly different and then, for the disconnecting/reconnecting switch them based on the sender?


Is deep nesting of control flow in code a studied problem?

I made the case to coworkers that deep levels of control flow was harmful to the readability of code. Example, taken from the relevant stack overflow question If you need more than 3 levels of indentation, you're screwed?:               for(int i=0; i<10; ++i){       Object val = repeat(i, someVar);       if(val.value > 3){         switch(val.item){           case DOG:             if(mProcess){               outputToUser(val);               doMoreThings(val, mMoreThingDoer);               if(mRepurpose){                 addExample(val);               }               // and so on, and so on...      As with most things, it's trivially easy to find opinions on this topic. I'm wondering however if someone can contribute more to it than that. Has there for example been done an actual study relevant to the problem? Or can other arguments be made that go beyond "I like X better"?


Unit Test code generation

We have a project that was written over a period of 2 years, but has a poorly designed architecture and not unit tests. The software works well, but we're at the point where we want to refactor some core modules. The budget is also limited so we can not hire a sufficient number of developers to write unit tests. Would generating unit test code automatically to cover (as an example) integration scenarios via some too be a viable strategy? An assumpion is that considering the system works fine right now, and the its output can be converted into XML data for unit testing? This approach gives us a possibility of quickly starting to refactor existing code and receieve immediate feedback if some core functionality is broken because of those changes.


Lazy Loading, DAL and BLL abstraction

I'm asking myself a question to code the right way on a new fresh project. I have a designed database and I mapped tables to equivalent POCO classes using Entity Framework 6 Code First. Then, I thought "wait, if some day I want to switch from EF to another Framework for whatever reasons, or even say let's go for direct coding because of performance reasons, I must NOT use EF directly in the BLL. So, EF is NOT a DAL. I started implementing a DAL that encapsulates EF calls. Then, I implemented a BLL consoming the DAL. For some tables this is like a direct mapping because these are "parameters tables" (countries, currencies and so on). But for others there is a good part of business logic, which is fine. BUT Then it comes to Lazy Loading, attaching entities etc. Let's talk only about Lazy Loading. 1) Use Lazy Loading : when I'm so far in the BLL, I don't know any more about the underlying DAL internals. I just consume my objects, and I think "hey, every property will come just when I need it". But OMG! I'm outside the DAL, the Datacontext is not there anymore, so nothing can load anymore. Should I keep the EF data context open for the whole life of the application ? I've read it's not a good practice, even more when it comes to a eBusiness website keeping alive forever... 2) Don't use Lazy Loading but eager loading. Right, I load all the properties of my object, so every data is available for my consuming BLL. Ahem, do I really need, when loading a customer, to load all his orders, comments, addresses, countries and properties of the countries, currencies etc.etc.etc... This seems really overkill and can't live in a web application... But, the DAL should NOT know about what the BLL needs. The DAL is here to provide data access, then the BLL will do what it needs to load just what it needs. So should I provide DAL methods to include/not include any combination possible of foreignkeys ? Seems not possible ... Should I wait for the BLL developper to tell me what methods he needs for each of his requirements? Seems too much coupled... Should the BLL be able to tell the DAL exactly what it needs? How to do that without being too much coupled? Seems like Lazy Loading is not applicable in a multi-layer application...


How to approach scrum task burn down when tasks have multiple peoples involvement?

In my company, a single task can never be completed by one individual. There is going to be a separate person to QA and Code Review each task. What this means is that each individual will give their estimates, per task, as to how much time it will take to complete. The problem is, how should I approach burn down? If I aggregate the hours together, assume the following estimate: 10 hrs - Dev time 4 hrs - QA 4 hrs - Code Review. Task Estimate = 18hrs At the end of each day I ask that the task be updated with "how much time is left until it is done". However, each person generally just thinks about their part of it. Should they mark the effort remaining, and then ADD the effort estimates to that? How are you guys doing this? **UPDATE** To help clarify a few things, at my organization each Task within a story requires 3 people.   1. Someone to develop the task. (do unit tests, ect...)   2. A QA specialist to review task (they primarily do integration and regression tests)   3. A Tech lead to do code review. I don't think there is a wrong way or a right way, but this is our way ... and that won't be changing. We work as a team to complete even the smallest level of a story whenever possible. You cannot actually test if something works until it is dev complete, and you cannot review the quality of the code either ... so the best you can do is split things up into small logical slices so that the bare minimum functionality can be tested and reviewed as early into the process as possible. My question to those that work this way would be how to burn down a "task" when they are setup this way. Unless a Task has it's own sub-tasks (which JIRA doesn't allow) ... I'm not sure the best way to accomplish tracking "what's left" on a daily basis.


Is it good practice to not filter values according to nullability?

Sometimes when I create an API that should enable getting a single value or all values I use the following pattern (passing `NULL` to the API, means get all rows): @Usernames - comma separeted list of users               CREATE PROC GetUsers (@Usernames VARCHAR(100) = NULL)     AS     BEGIN         SELECT *         FROM Users         Where @Usernames IS NULL OR dbo.in_list(@Usernames,Username) = 1      END      Is this a good practice to use the OR condition the get both functionalities, or should i write something like this:               CREATE PROC GetUsers (@Usernames VARCHAR(100) = NULL)     AS     BEGIN         IF(@Username IS NULL)         BEGIN             SELECT *             FROM Users         END         ELSE         BEGIN             SELECT *             FROM Users             Where dbo.in_list(@Usernames,Username) = 1          END     END      * **Note:** This is only SQL for example, **this is not a specific coding language question**. Thanks.


Validation and data persistence in a domain model

My (first and current) workplace (a .NET shop) suffers from an over-abundance of anemic domain models, to the extent that I don't really know how validation and data persistence should be handled in a proper domain model. ### Data Persistence One option would be to give the domain model a way to do persistence itself. You could, for example, inject an `IFooRepository` via constructor injection, and have that resolved by an IoC container to ensure you don't create a dependency on it (à la onion architecture). But I'm not sure if the code that uses the domain model should be responsible for calling methods to save the data, etc., or if it should be done implicitly behind the scenes on a background thread. Perhaps this breaks that purity of the domain model and is more along the lines of the active record pattern. The other option I see is to not tie the domain model to data persistence at all and instead have a coordinating service layer responsible for that aspect. What are the best practices for data persistence in the domain model pattern? ### Validation Another problem I don't know how to solve with a proper domain model is how to indicate to the UI _why_ the current model state is invalid without coupling to (or at least catering to) the UI. For example, let's say I have a form an user fills out with various fields. We want to validate that input, and if something is wrong, indicate an error on that specific field with a message. How would we handle validation with that level of granularity without adding significant complexity to the domain model, or doing hack-ish stringly-typed things (like throwing an validation exception with the property's name and a message)?


How to customize web-app (pages and UI) for different customers

We have an ASP.NET web-application which has become difficult to maintain, and I'm looking for ideas on how to redesign it. It's an employee administration system which can be highly customized for each of our customers. Let me explain how it works now: On the default page we have a menu where a user can select a task, such as Create Employee or View Timesheet. I'll use Create Employee as an example. When a user selects Create Employee from the menu, an ASPX page is loaded which contains a dynamically loaded usercontrol for the selected menuitem, e.g. for Create Employee this would be AddEmployee.ascx If the user clicks Save on the control, it navigates to the default page. Some menuitems involve multiple steps, so if the user clicks Next on a multi-step flow then it will navigate to the next page in the flow, and so on until it reaches the final step, where clicking Save navigates to the default page. Some customers may require an extra step in the Create Employee flow (e.g. SecurityClearance.ascx) but others may not. Different customers may use the same ASCX usercontrol, so in the AddEmployee.OnInit we can customize the fields for that customer, i.e. making certain fields hidden or readonly or mandatory. The following things are customizable per customer:   * Menu items   * Steps in each flow (ascx control names)   * Hidden fields in each ascx   * Mandatory fields in each ascx   * Rules relating to each ascx, which allows certain logic to be used in the code for that customer The customizations are held in a huge XML file per customer, which could be 7500 lines long. Is there any framework or rules-engine that we could use to customize our application in this way? How do other applications manage customizations per customer?


Is this possible to re-duplicate the hardware signal on Linux?

Since that every things is a file on the UNIX system. If I have a hardware, for example, a mouse, move from left corner to right corner, it should produce some kinds of file to communicate with the system. So, if my assumption is correct, is this possible to do following things:   1. Capture the raw data, which is about moving mouse cursor from left corner to right corner?   2. Reduplicate the raw data, using a program, same producing speed, and data, in order to "redo" moving mouse cursor from left corner to right corner


Handling ignorable failure conditions in a method

I'm working on a coarse API for performing higher level business functions. Under many conditions these functions may fail in a way that is expected (not exceptional), ie. the function may not be able to complete because of failing a validation condition of some kind. In many cases, what I want to do in these "failure" scenarios is to alert the user and give them the option to "override" the failure. ie, "Warning: transferring warp power to the shields will damage the emitter array, are you sure you want to proceed?" Many of these functions may have a list of quite a few validation rules and I may want to override all of them. What I'm envisioning right now is to create a custom MyResult class that is returned by the functions that includes whether or not the function succeeded and if it failed, perhaps a list of validation rules that failed for the function. Then add a parameter to the function for "overrides" that allows these validation rules to be bypassed in a subsequent call. I'd like feedback on this approach. Is there a pattern for this? The functions in the API may be called from multiple platforms and the API itself is in C#.


How do you verify that your prototype/application meets the requirements?

Recently I wrote an small prototype that uses some relatively new technology. Now I wanted to verify if this prototype is usefull and could be used in real world example. But now I have a problem, how can I do that?   * Normally, it would be a good thing to compare the prototype with already existing similar applications and compare if you perform better, provide better usability, etc. Since I'm not aware of something similar, this is quite difficult   * Normally, I would see if the requirements of the customers are met. But there aren't any real requirements and no real customers. It as just an idea. So the problem is, how can I get feedback on my prototype to see how it is accepted by potential users and what should be improved in a real implementation?


Distance calculation and data normalization

I'm designing a system which needs to report basic distance between zip codes. It will use the **Google Distance Matrix API** but I want to cache the results in the database so that multiple requests for the same data points don't result in duplicate API calls. A basic `Distance` class might look like this: ![YUML Distance thingy](http://i.stack.imgur.com/aPG4x.png) A basic data structure for the cache might look like this: ![YUML DB table](http://i.stack.imgur.com/HHQ6y.png) Since I'm not using fine-grained detail concerned with changes due to one-way streets or divided highways, interchanges, etc., it therefore doesn't matter to me whether I'm getting the data from point A to point B or from point B to point A. But I'm not sure how to express this with full normalization in the database. With this primary key, it would be perfectly legal for the same distance to exist in two separate row, i.e.               var row1 = new Distance("00001", "00002");     var row2 = new Distance("00002", "00001");      It would probably be a good idea for me to require a `SortedList` parameter in the constructor, but is there a way I can design it from the database side to enforce full normalization?


Incrementally releasing software under the GPL

We have a Javascript codebase that we want to open-source in an incremental fashion. That is, we want to release the full code to some of our core modules first, keeping the rest of the "application" code in minified format. Eventually, we will also release the whole application code in full (although that may take a few months to happen). We have determined that the GPL (v3) is the best license for our software project. However, we're concerned that it cannot be used in the way that I've described. Specifically, since our application code depends on the aforementioned core modules to function, it would become bound by the GPL the moment these modules are released under the GPL. If I understand correctly, this means that we would have to release a non-minified version of the application code from day one. Is my understanding correct? And if so, is there a "next best" license that we could use for our core modules, which would provide us with similar protection against non-free derivatives, without the requirement that we release the whole application code in full from the start?


Best practice in application design / SQL authentication

I am currently involved in the implementation/design of an existing application for a large scale customer. The application has a similar model as e.g. vCenter Server whereby a number of components store information in and extract information and workflows form a central database. The environment is managed from a console application which uses a windows service to connect to the database. Due to security considerations SQL Authentication is not an option, but the application does support Windows Authentication. However when using windows authentication it passes the credentials of the user who is using the management console application on to the database in stead of using the service account under which the service runs. This results in the situation where the security roles as they are defined within the application (AD users/groups mapped to certain permissions) requires these AD objects to also have a SQL Server login and certain permissions on the database (db-writer for certain tables, depending on the specific permissions in the app). Apart from the additional administration, this also creates a security risk imo because the whole point of the application security roles in this specific application is to allow users access to only a part of a certain table (e.g. a subset of the objects). But since they now have a SQL login and db_writer on that entire table they could bypass the app and with a direct connection to the database they could read/alter records they would not be allowed to view/manipulate through the application. This risk could then (partly) be mitigated by restricting access to the database on a network level, or possibly use triggers to check the calling hostname and program name, but as far as I know that is not completely safe. The only benefit as is presented to me is there is now a full audit trail available in SQL server on exactly who did what. But this is already implemented in the application as well so it seems kind of moot to me. I have been frantically searching for any info on this and what would be the best practice. I can only find ASP / Web based stuff but nothing regarding this type of application. Is it really the best way to go with passing through authentication to SQL server or should the app handle authorisation and send all database requests using the service account? Thanks in advance for any information. P.s. this is my first question on stackexchange, I fi posted on the wrong sub- site or you find my question inappropriate, pls just let me know.


What concrete steps can I take to assess PHP framework(s) without having to go to the extent of getting to know each framework in intimate detail?

This question is about what methodology to follow when evaluating one or more PHP frameworks to see which one would suit the needs of my project best. In other words, given the time pressures that every developer faces, what concrete steps can I take to assess one or more PHP frameworks without having to go to the extent of getting to know each framework in intimate detail? I know that some of the considerations would be subjective such as, which is my preferred language or my style of coding, but assessing your preferred language and style of coding would be a concrete step towards defining your chosen framework. I'm narrowing this down to PHP just to assume that the choice of language has already been made.


To make a class function or not?

I'm wondering about functions used like this:               object1->objectMethod1(arg1, arg2);      if `objectMethod1`:   \- does not change the object state   \- does not use the object's state at all   \- is used by the class extensively   \- logically fits as being used by the class should it be made into a member function? example:               class CSVFile {     private:       filestream stream       string header       int num_columns     public:       CSVFile(string filename)       CSVFile() throws DefaultConstructorException()     ...     CSVFile::initHeader() {       header = stream.getLine()       assert(isInCSVFormat(header)) <-- that      should isInCSVFormat(string) be a member function or not?


Is anybody using JavaFX

I'm very tempted to use it purely because of its neat Binding APIs, and now that you're able to use it in conjunction with Swing it feels like a natural progression. The only thing that I can seem its lacking off the bat is a GUI builder (But then according to who you speak to, this isn't necessarily a bad thing!) Does anybody have any experience with using JavaFX 2.0?


Are there any studies on the relationship between software testing practices and developer productivity?

Are there any studies on the relationship between software testing practices (unit and/or integration tests) and developer productivity?


Are there any programming languages that make use of adjectives?

Are there any languages where something like the following might be possible?               people = [ ... a list of people ...]     Person jake = Person("Jake", 165, ...)     jake is Tall     people.add(jake)     for Person person in people where Tall:         // ... do something terrible to them     jake is not Tall // ... Jake no longer wishes to be tall      I hope that makes sense - basically, dynamic adjectives that affect something about an object's properties or methods.


Why is Option/Maybe considered a good idea and checked exceptions are not?

Some programming languages like e.g. Scala have the concept of `Option` types (also called `Maybe`), which can either contain a value or not. From what I've read about them they are considered widely to be a superior way of dealing with this issue than `null`, because they explicitly force the programmer to consider the cases where there might not be a value instead of just blowing up during runtime. Checked Exceptions in Java on the other hand seem to be considered a bad idea, and Java seems to be the only widely used language that implements them. But the idea behind them seems to be somewhat similar to the `Option` type, to explicitly force the programmer to deal with the fact that an exception might be thrown. Are there some additional problems with checked Exceptions that `Option` types don't have? Or are these ideas not as similar as I think, and there are good reasons for forcing explicit handling for Options and not for Exceptions?


Order of learning sort algorithms

I have already studied bubblesort, insertion sort and selection sort and can implement them in C pretty much from knowledge of the algorithm. I want to go on to learn shellsort, merge sort, heapsort and quicksort, which I guess are a lot harder to understand. What order should I take these other sort algos? I am assuming a simpler sort algo helps learn a more complex one. Don't mind taking on some others if it helps the learning process.


Alternatives to OAuth?

The Web industry is shifting / has shifted towards using OAuth when extending API services to external consumers & developers. There is some elegance in simple....and well, the 3-step OAuth process isn't too bad ... i just find it is the best of a bad bunch of options. Are there alternatives out there that could be better, and more secure? The security reference is derived from the following URLs:   * OAuth 2.0 bad for the web?   * OAuth 2 without signatures bad for the web I've come across this over on the IT Security stack exchange and thought it was poignant from a security point of view:   * OAuth / OpenID / Facebook Connect .. Crazy? Maybe SAML 2.0 is an alternative? What about OpenID? The purpose of this question is from a programming point of view. Is OAuth the **best** option that exists today ...? Do alternatives options exist which allow me to extend my Web Application to consumers that are better from a security point of view, implementation point of view, longevity (wont require rework in a few months), and enabling the support of mobile applications consuming my web application.


I want to learn and explore cloud computing, what technologies should I be aware off for the same?

I want to get into Cloud Computing. Before I choose a particular vendor platform I want to learn: What are the underlying technologies, tools and paradigms that I should be aware off to make myself comfortable at working in a cloud platform? Are there any recommended books or other resources to get my feet wet with Cloud Computing?


Chess as a team building exercise for software developers

The last place I worked wasn't a particularly great place and there were more than a few nights where we were working late into the evening trying to meet our sprints. The team while stressed out got pretty close and people started bringing in little mind teasers and puzzles, just something we would all play around with and try to solve while a build/deploy was running for the test environment, or while we were waiting for the integration test run to finish. Eventually it turned into people bringing chess boards in and setting them at their desks. We would play by email sending each other moves in chess notation, but at a very casual pace, with games lasting sometimes two or three days. Management tolerated this when we were putting in overtime, but as things were being managed better and people weren't working much more than 40/wk, they started cracking down on this and told us that we weren't allowed to have chess boards at our desks, although they were okay with the puzzle games. What are the pros and cons in your opinion of allowing chess during software development lull time?


Relationship between C#, .NET, ASP, ASP.NET etc

I'm really unclear on the difference between C#, C#.NET and the same for ASP and other '.NET' languages. From what I understand, .NET is a library/framework of... things. I think they're essentially access to Windows data such as form elements etc, but that doesn't seem to apply for ASP.NET. In addition, I see people calling themselves '.NET' developers. Does this mean they're fluent in C#, ASP and other languages? Finally, I never see C# without .NET attached. Is C# tied that closely to .NET as to be unusable without it? In summary: what exactly does .NET provide? How does it relate to C# and ASP etc? What does 'a .NET developer' mean? And finally, why do you never see C# without .NET? [As an aside, I realise these are multiple questions, but I think they are very inter-related (or at least that is the impression that browsing Programmers / SO etc has given me)].