title: Name of the Countdown Numbers round problem - and algorithmic solutions?

text: For the non-Brits in the audience, there's a segment of a daytime game-show where contestants have a set of 6 numbers and a randomly generated target number. They have to reach the target number using any (but not necessarily all) of the 6 numbers using only arithmetic operators. All calculations must result in positive integers. An example: Youtube: Countdown - The Most Extraordinary Numbers Game Ever? A detailed description is given on Wikipedia: Countdown (Game Show) For example:   * The contentant selects 6 numbers - two large (possibilities include 25, 50, 75, 100) and four small (numbers 1 .. 10, each included twice in the pool).   * The numbers picked are `75`, `50`, `2`, `3`, `8`, `7` are given with a target number of `812`.   * One attempt is (75 + 50 - 8) * 7 - (3 * 2) = 813 (This scores 7 points for a solution within 5 of the target)   * An exact answer would be (50 + 8) * 7 * 2 = 812 (This would have scored 10 points exactly matching the target). Obviously this problem has existed before the advent of TV, but the Wikipedia article doesn't give it a name. I've also saw this game at a primary school I attended where the game was called "Crypto" as an inter-class competition - but searching for it now reveals nothing. I took part in it a few times and my dad wrote an Excel spreadsheet that attempted to brute-force the problem, I don't remember how it worked (only that it _didn't_ work, what with Excel's 65535 row limit), but surely there must be an algorithmic solution for the problem. Maybe there's a solution that works the way human cognition does (e.g. in-parallel to find numbers 'close enough', then taking candidates and performing 'smaller' operations).


title: User session timeout handling in SaaS apps - discussing several approaches

text: I know this has a great chance of being marked as duplicate, but couldn't find exactly what I'm looking for This is a common problem and I'm sure it has some well defined best practice solution # Background   1. A single page SaaS app, has lot's of drag and drop, user can interact with it without much server communication for periods of time    2. Server session only holds user object, using a non persistent session cookie    3. Session expires on the server after X hours   4. Some things are loaded only during log-in # Problem   1. User works on the app, when done, user doesn't log out, just keeps the browser open   2. User comes back after more than X hours (session is invalidated on server)    3. User interacts with the app without needing a server connection (drags and drops things, text edits...)    4. Only on the next server interaction (let's assume there is no auto save) user is thrown to login page and loses some of their work ## Possible solutions Here are some solutions I have in mind, would like to hear if there are any others, and if there is anything fundamentally wrong with any of them. **1\. Never log the user out**   * **How?** either keep a long session, keep a persistent cookie, or javaScript "keep alive" ping   * **Pros** : user doesn't need to worry about anything, fixes the problem for them   * **Cons** : not PCI compliant, not secure, and needs development changes, e.g. things loaded to session only on user log in need to move to either a pub sub model (listening on event changes) or have cache timeout.  **2\. Local Storage**   * **How?** use new local storage to temporarily store state if logged out, redirect to login page, persist once logged in    * **Pros** : Also base for "work offline" support, not just handling session timeout    * **Cons** : harder to implement, need to do state merge of data tree, not all browsers support  **3\. Auto save** Every user action that changes the model, should persist immediately (or via some sort of a client side queue), e.g. if they check a checkbox, change a text field, or drag and drop something, once they are done, persist the changes.   * **How?** Use an MV** framework (Backbone.js / Knockout.js / Ember.js / Angular.js etc) to bind the model, and persist on changes.   * **Pros** : Seems like a clean solution, session is active as long as user is active, no client side work is done without persisting it.   * **Cons** : The last action user is doing after a session timeout is lost. **4\. Log the user out after session expires** this can have several approaches   1. Ask the server "has session expired" - this is a bit of a catch 22 / Schrodinger's cat, as the mere question to the server extends the session (restarts the timeout),      * **How?** Either have a server that supports such question (I don't know of any, but I come form Java land) or, one can just keep a table of session IDs, and last access time manually, and ask the server by passing the session ID as a parameter instead of the cookie, I'm not sure if this is even possible, but it sounds dangerous, insecure and bad design whatsoever.login page, persist once logged in      * **Pros** : If there was such native support in servers, sounds like a clean, legitimate question (asking if user X still has a session or not without renewing it if they do)     * **Cons** : If the server doesn't support it (and again, I don't know if any server or framework has this functionality) then the workaround has huge security risks potentially.   2. One workaround I've heard is have a short session on the server side, and a keep alive client side ping, that has a maximum number of pings     * **How?** Short session on server, client pings every sessionTimeOut/2, has max retries of Y.     * **Pros** : Kind of fixes the problem, quick and dirty      * **Cons** : Feels like a hack, handling the session renewal yourself instead of letting the server do it   3. Client side timer     * **How?** Have a timer on the client side and sync it with the server one by restarting it on every request to be equal to the max server session timeout minus some padding, after user is not sending any request to the server, UI shows a "sessions is about to time out, do you want to continue?" (like you have on online banking )     * **Pros** : Fixes the problem      * **Cons** : Can't think of any except the need to make sure the sync works  # The Question I'm probably missing something in the above analysis, might have some silly mistakes, and I would like your help to correct them. What other solutions I can have for this?


title: Source control: projects which share a 3rd library which is still under development in RTC

text: this is not a new question for source control, but IBM's Rational Team Concert is a slightly different animal than Git, SVN, etc. We have a number of .NET web sites under development with Visual Studio. Each web site is represented by a VS solution. They all share in common a .NET library, also under development. Is there a smart way to set up in RTC so that each web site's repository does not contain its own copy of the common library's source? My first thought was to just set the library up with its own repo in RTC, then have each "child" web site solution refer to the common library in sandbox. But I'm new to RTC and not so sure this is the most RTC-ish way, or what trouble I'll encounter later. Thoughts? Thanks for any light shed.


title: Is a Mission Oriented Architecture (MOA) a better way to describe things than SOA?

text: I might sound like a troll, but I would like to seriously understand this deeper. The place I work at has started to use the term MOA, versus SOA as we believe it drives more clarity and want to compare it to the true goals of SOA. A Mission Oriented Architecture is an approach whereby an application is broken down into various business mission elements, with the database, file assets, batch and real time functionality all tightly coupled in terms of delivering that piece of the functionality. The mission allows the developers to focus on a specific piece of functionality to get it right, and to build it with the ability for that piece to scale as an independent entity within the overall application. By tightly coupling the data, file assets and business logic you achieve the goals of working on a very large problem in bite size pieces. Some definitions of SOA mix it up with what is essentially a method call on a web service versus a true "service". As an architect, I have always found it fun getting everyone on the same page regarding SOA. Is it better to call it a "mission" versus a "service"?


title: Appropriate design / technologies to handle dynamic string formatting?

text: recently I was tasked with implementing a way of adding support for versioning of hardware packet specifications to one of our libraries. First a bit of information about the project. We have a hardware library which has classes for each of the various commands we support sending to our hardware. These hardware modules are essentially just lights with a few buttons, and a 2 or 4 digit display. The packets typically follow the format `{SOH}AADD{ETX}`, where AA is our sentinel action code, and DD is the device ID. These packet specs are different from one command to the next obviously, and the different firmware versions we have support different specifications. For example, on version 1 an action code of 14 may have a spec of `{SOH}AADDTEXT{ETX}` which would be AA = 14 literal, DD = device ID, TEXT = literal text to display on the device. Then we come out with a revision with adds an extended byte(s) onto the end of the packet like this `{SOH}AADDTEXTE{ETX}`. Assume the TEXT field is fixed width for this example. We have now added a new field onto the end which could be used to say specify the color or flash rate of the text/buttons. Currently this java library only supports one version of the commands, the latest. In our hardware library we would have a class for this command, say a DisplayTextArgs.java. That class would have fields for the device ID, the text, and the extended byte. The command class would expose a method which generates the string (`"{SOH}AADDTEXTE{ETX}"`) using the value from the class. In practice we would create the Args class as needed, populate the fields, call the method to get our packet string, then ship that down across the CAN. Some of our other commands specification can vary for the same command, on the same version, depending on some runtime state. For example, another command for version 1 may be `{SOH}AA{ETX}`, where this action code clears all of the modules behind a specific controller device of their text. We may overload this packet to have option fields with multiple meanings like `{SOH}AAOC{ETX}` where OC is literal text, which tells the controller to only clear text on a specific module type, and to leave the others alone, or the spec could also have an option format of `{SOH}AADD{ETX}` to clear the text off a a specific device. Currently, in the method which generates the packet string, we would evaluate fields on the args class to determine which spec we will be using when formatting the packet. For this example, it would be along the lines of:               if m_DeviceID != null then use {SOH}AADD{ETX}     else if m_ClearOCs == true then use {SOH}AAOC{EXT}     else  use {SOH}AA{ETX}      I had considered using XML, or a database to store String.format format strings, which were linked to firmware version numbers in some table. We would load them up at startup, and pass in the version number of the hardwares firmware we are currently using (I can query the devices for their firmware version, but the version is not included in all packets as part of the spec). This breaks down pretty quickly because of the dynamic nature of how we select which version of the command to use. I then considered using a rule engine to possibly build out expressions which could be interpreted at runtume, to evaluate the args class's state, and from that select the appropriate format string to use, but my brief look at rule engines for java scared me away with its complexity. While it seems like it might be a viable solution, it seems overly complex. So this is why I am here. I wouldn't say design is my strongest skill, and im having trouble figuring out the best way to approach this problem. I probably wont be able to radically change the args classes, but if the trade off was good enough, I may be able to convince my boss that the change is appropriate. What I would like from the community is some feedback on some best practices / design methodologies / API or other resources which I could use to accomplish: Logic to determine which set of commands to use for a given firmware version Of those command, which version of each command to use (based on the args classes state)   Keep the rules logic decoupled from the application so as to avoid needing releases for every firmware version   Be simple enough so I don't need weeks of study and trial and error to implement effectively.


title: Displaying device contacts with an indication that the contact is registered to the app

text: We are developing a mobile app that needs to pick up device contacts, display them and indicate if the contact has already registered with this app. We have our DB in the server and the app fetches data using web services. What will be the best approach to implement the above scenario taking performance into consideration. **Option 1:**   Every time user opens the app,fetch the contacts and send the list of email addresses to the server, check with the registered email ids and return the list of registered users in the contact list. In this approach whenever user opens the particular page, he needs to wait for few seconds to load data, but the contacts will be the latest from the device. **Option 2:**   First time when the user opens the app, fetch contacts ,send the entire list of contacts and save it in the DB, retrieve list of registered users in the contacts then save this to local DB.   From now on, data will be fetched from local DB and displayed.   When a new user registers in the app, again check with records in central DB and send list of new users who are in your contacts that have registered to your app.   This list will be added to local DB. and the process continues.   In this case the new contacts added by user will not be updated in the app but retrieval and display of records would be quick. What would be the correct approach? In case there is a better way of doing this, please let me know.


title: What algorithm should I use to create an automatic staff scheduling feature?

text: Imagine a small local business (in my case a dog daycare) with a few dozen part-time employees . The goal is to automatically create weekly staff schedules. My question is about what algorithmic approaches to explore for this problem. There are many constraints to keep in mind, chiefly (1) the availability of the staff and (2) the needs of each shift, not just how many staff for each shift but the skills needed for each shift (e.g. for a certain shift, you may need someone who knows how to drive to do pick-ups/drop-off of dogs, for another, someone who know how to give dogs baths, etc). Other constraints include things like avoiding or requiring certain staff combos -- perhaps due to personality conflicts on one hand, or need for training by osmosis from a senior to junior staff on the other. Also, there are preferences to take into account. Some staff prefer mornings, some two days in a row rather than say Monday and Thursday, etc. We know we can't always accommodate everyone's preferences. In fact we have a hierarchy of which employees get first dibs on their choices. I have a hunch that there is a way to reduce or express this problem into an existing, already solved algorithm. But I don't know which algorithms to explore. Which existing, specific algorithms would be most promising?


title: What are the licensing requirements for shipping Java along with application

text: We have an application in Java. Now we want to export this application to clients (free of charge). Can we ship JRE7 along the application (precaution as client might not have Java installed). Is it legal to do this?


title: Language parsing to find important words

text: I'm looking for some input and theory on how to approach a lexical topic. Let's say I have a collection of strings, which may just be one sentence or potentially multiple sentences. I'd like to parse these strings to and rip out the most important words, perhaps with a score that denotes how likely the word is to be important. Let's look at a few examples of what I mean. **Example #1:** > "I really want a Keurig, but I can't afford one!" This is a very basic example, just one sentence. As a human, I can easily see that "Keurig" is the most important word here. Also, "afford" is relatively important, though it's clearly not the primary point of the sentence. The word "I" appears twice, but it is not important at all since it doesn't really tell us any information. I might expect to see a hash of word/scores something like this:               "Keurig" => 0.9     "afford" => 0.4     "want"   => 0.2     "really" => 0.1     etc...      **Example #2:** > "Just had one of the best swimming practices of my life. Hopefully I can > maintain my times come the competition. If only I had remembered to take of > my non-waterproof watch." This example has multiple sentences, so there will be more important words throughout. Without repeating the point exercise from example #1, I would probably expect to see two or three really important words come out of this: "swimming" (or "swimming practice"), "competition", & "watch" (or "waterproof watch" or "non-waterproof watch" depending on how the hyphen is handled). Given a couple examples like this, how would you go about doing something similar? Are there any existing (open source) libraries or algorithms in programming that already do this?


title: How to improve programming skills as a Junior without Senior

text: At the moment I'm 23 and working as a junior programmer at a software service provider. While I'm really happy with my job and my colleagues, I sometimes would love to have someone who could tell me what is bad about my code (architecture and so on), why it is bad AND what could I do to make it better. As we have no senior java programmers anymore (I'm the last one who can program java), I would love to get your advice about becoming a better programmer. Disclaimer: Sometimes I ask my non java programmer colleagues if my code is "good" or "bad" but I have the feeling that they can't judge because they aren't java programmers. (They hardly program anything) Are there any communities which are happy to mentor junior developers? Would it help if I read tons of books? Any advice how I can improve my existing skills and learn if what I'm doing is bad or good? Epilog: I didn't even think about switching the employer back in May when I asked this question but what all of you said was stuck in my head and I decided to switch in April. I now found a new employer and I got a position as a junior Java developer at the new company. I hope my professional growth will get better in future with my new employer. I just wanted to say thank you for all of your advices.


title: How should I create a combined interface for two logically independent modules?

text: I'm having trouble coming up with a good way to structure the interfaces for two modules that are logically independent but whose implementations may be combined for the purposes of performance or efficiency. My specific situation is the replacement of the separate queuing and logging modules in a message routing application with a combined database-backed implementation (let's call it `DbQueueLog`). It's easy enough for `DbQueueLog` to implement both the `IQueue` and `ILogger` interfaces so clients of the old queuing and logging modules can use it seamlessly. The challenge is that the most efficient and performant implementation of `DbQueueLog` involves combining the `EnqueueMessage(Message m)` and `LogMessage(Message m, List<LogParams> p)` methods into an `EnqueueAndLogMessage(Message m, List<LogParams> p)` method that minimizes the number of cross-process database calls and the amount of data written to disk. I could create a new `IQueueLog` interface with these new methods, but I'm uncomfortable with what that would mean if a future iteration of the application moved back to separate queuing and logging modules. Are there any design approaches to this situation that would allow me to build the efficient, performant `DbQueueLog` implementation now without permanently coupling together the application's queuing and logging modules? Edit: The application is built on Windows using C# in case any there are any platform-specific techniques that might be available.


title: How to create a random generator

text: How could a random generator be implemented? I'm not speaking about the invocation of a language _mathRandom()_ method, but the implementation of the routines that lead to generate numbers totally random.


title: Does the use of debuggers have an effect on the efficiency of programmers?

text: > **Possible Duplicate:**   >  Are debugging skills important to become a good programmer? I'm a young Java developer and I make a systematic use of the Netbeans debugger. In fact, I often develop my applications when I debug step by step in order to see immediately if my code works. I feel spending a lot of time programming this way because the use of debugger increase execution time and I often wait for my app to jump from a breakpoint to an other (so much that I've the time to ask this question). I never learned to use a debugger at school, but at work I've been told immediately to use this functionality. I started teaching myself to use it two years ago, and I've never been told any key tips about it. I'd like to know if there are some rules to follow in order to use the debugger efficiently. I'm also wondering if using the debugger is eventually a good practice? Or is it a loss of time and I've to stop now this bad habit?


title: Is debugging a waste of time?

text: I work on a lot of projects for fun, so I have the freedom to choose when I want to finish the project and am not constrained by deadlines. Therefore, if I wanted to, I could follow this philosophy: > Whenever you hit a bug, don't debug. Instead, spend time learning about > topics related to the bug from textbooks and work on other projects until > one day you can come back to the bug and solve it instantly thanks to your > piled up knowledge. However, maybe the 'philosophy' is bad because   1. debugging is a skill that should be practiced so that when I need to finish projects by a deadline I will have acquired the skills necessary to debug quickly.   2. staring at lines of code and _struggling_ to understand them when debugging makes you a much better programmer than writing new lines of code does.   3. debugging isn't a waste of time for some reason which I hope you'll tell me.


title: Do your stories include tasks across disciplines? How do you do capacity planning?

text: My organization does web projects and employs a handful of disciplines like backend dev, frontend, BA, UX, graphic design, QA. We've been pushing to have tasks for every discipline in our sprints with explicit dependencies (Can't build a page without comps, can't do comps without wires, etc). I've heard some other organizations say that scrum is only for dev tasks. Are we barking up the wrong tree? And, if not, are there any good tools for doing capacity planning when only certain resources can do certain tasks?


title: How often do experienced programmers have trouble getting their code to perform its intended purpose?

text: I'm kind of inexperienced with programming (ie less than a year) and I have recently been getting discouraged, mostly from not being able to solve problems with my own code (Not forgetting parentheses or syntax issues but more logic based problems). I just wanted to know, is this something that will dissipate with practice and time or does it only get worse as my programs become more complex?


title: I want to build a Virtual Machine, are there any good references?

text: I'm looking to build a Virtual Machine as a platform independent way to run some game code (essentially scripting). The Virtual Machines that I'm aware of in games are rather old: Infocom's Z-Machine, LucasArts' SCUMM, id Software's Quake 3. As a .net Developer, I'm familiar with the CLR and looked into the CIL Instructions to get an overview of what you actually implement on a VM Level (vs. the language level). I've also dabbled a bit in 6502 Assembler during the last year. The thing is, now that I want¹ to implement one, I need to dig a bit deeper. I know that there are stack based and register based VMs, but I don't really know which one is better at what and if there are more or hybrid approaches. I need to deal with memory management, decide which low level types are part of the VM and need to understand _why_ stuff like ldstr works the way it does. My only reference book (apart from the Z-Machine stuff) is the CLI Annotated Standard, but I wonder if there is a better, more general/fundamental lecture for VMs? Basically something like the Dragon Book, but for VMs? I'm aware of Donald Knuth's Art of Computer Programming which uses a register-based VM, but I'm not sure how applicable that series still is, especially since it's still unfinished? Clarification: The goal is to build a specialized VM. For example, Infocom's Z-Machine contains OpCodes for setting the Background Color or playing a sound. So I need to figure out how much goes into the VM as OpCodes vs. the compiler that takes a script (language TBD) and generates the bytecode from it, but for that I need to understand what I'm really doing. * * * ¹ I know, modern technology would allow me to just interpret a high level scripting language on the fly. But where is the fun in that? :) It's also a bit hard to google because Virtual Machines is nowadays often associated with VMWare-type OS Virtualization...


title: Is using techniques from OpenSource code copyright infringement?

text: If I read through the source code of programs in the similar field of application like the one I am working on (e.g.: 3D car racing simulation), and find some techniques or patterns they use better than the ones I am using, and use those in my project - is it theft? (No source code would be directly copied in any way.)


title: Does implementing algorithms improve your programming skills?

text: I have been self studying algorithms and data structures for some time now and currently enjoying it. Whenever I understand an algorithm, I usually try to code them from scratch for fun and I always will discover some logic I've never thought of before. I'm not so sure, but I always think that when I code algorithms, I am maybe practicing my skills in programming. Is this true? I know they are important, but will my programming skills really improve by coding them?


title: How important is studying algorithms and theory is to becoming a great programmer?

text: > **Possible Duplicate:**   >  Should I keep investing into data structures and algorithms? I'm a CS student. I want to become a really great programmer, what do I need to do to be come a great programmer? Other then writing lots of code, I've heard that studying algorithms and theory (logic!) is help. What do you recommend to become the best? What do I need to read? What do I need to study?


> **Possible Duplicate:**   >  How important is studying algorithms and theory is to becoming a great > programmer? Today I learned the fast sort Algorithm. I doubt I will ever implement my own version though as C# has its own built in Sort method for lists and arrays. How important is learning Algorithms for high level language programmers? In my example I gained no benifit from knowing the Algorithm but perhaps my example was too trivial to be accurate?


title: Software License: Open Source, but no distribution (for free or for profit)

text: I wrote a program in PHP. I want people to be able to use the code to learn from and even include bits in their own apps but I also want to maintain the right to sell it and make it clear that others are not to distribute copies either for free or for profit. I haven't used anyone elses code so I don't have to worry about license compatibility. Which license out there is right for that? I know I can't stop people from ignoring the license but I just want them to at least know it's there and know they're doing something wrong if they try. I can't find anywhere that explains licenses in plain English and yes, I have tried to read the GNU and BSD licenses but I can't get it. Thanks. Ok so here are the clarifications other have asked for: I am going to sell this program for very cheap. People are free to use as much code as they want from it so long as they have first purchased the program and they do not profit from my code. I wouldn't mind if people just took the whole thing and added on and made it better but then people wouldn't be honest and they would just add something on and give it free and then no one would buy my product. I suppose I should just let people have it and ask for donations. So maybe I should GPL or BSD it. EDIT: I understand why everyone is getting confused. It is contradictory but the thing about legalese is that everything seems black or white. I'm trying to achieve a gray area. I want people to buy this thing from me, not copy it and give it away to people, and even use parts of it. By "use parts", what I'd say if someone asked me casually would be "just be reasonable". So basically don't use a majority of my code in your work and then totally outshine what I did because you'll have it easy as I did most of the dirty work already! I mean, sure, use my DB connect script in your project, I don't care. OR... use all the code and add to it! But only for personal use and don't you dare start giving it out because I'm going to be making money off this thing and that totally undermines my work. And it'd be nice to show me your additions and I'll give credit but the main thing is don't be redistributing my software that I have to earn a living with. Its hard to put that sentiment into legalese. And I just can't understand all these licenses.


title: Are web best practices so important if they are always violated by large companies?

text: Usually, there are a bunch of rules and best practices which help optimizing a website, bring new customers, and in general making user experience fast, smooth and pleasant while (sometimes) reducing the server load. Also, usually, the largest companies don't bother to use those best practices. Except for few companies (like Google), on the largest websites, we can see:   * table layouts, not minified JavaScript, no CSS sprites where they should be, several CSS files, intrusive JavaScript even in situations where it was simple to be unobtrusive, calls to JavaScript files in `<head/>`, etc.   * meaningless errors, annoying popups, register forms with huge amount of fields to fill, UX issues on register¹, stupid questions and situations which make it impossible to use the website², confusing situations on key parts of the website³, multiple redirects, slow pages, etc. On one hand, those companies are paying a huge amount of money to develop, optimize⁴ and host their websites since their success relies partially⁵ or completely⁶ on it; on the other hand, they are constantly violating the best practices while people advocating those best practices explain that following them helps to achieve better UX and faster websites with lesser footprint on environment (which can be non-negligible on websites hosted on thousands of servers). In such a case, it is logical to ask:   * If the large companies which are really successful, do have a lot of money for their websites and competent employees and which care about website optimization violate constantly those best practices, **are those best practices true?**   * Or, in another words, if those best practices are so important and helps so much to optimize websites, **why those companies don't care about them?** Let's take an example of Dell.com. I'm pretty sure they hire the best of the best to create their home page. Their home page use table layouts. Does it mean that people who tell that table layouts are evil are wrong? Does it mean that the best of the best hired by Dell are incompetent? * * * ¹ First example: eBay makes it impossible, when registering, to _paste_ your mail address in both fields, making it longer to use the registration form with no reason at all except to annoy users; best practice would be to forbid _copying_ , but allow pasting. Second example: Microsoft Live limits the length of a password to 16 characters, with no apparent reason at all.   ² For example, when you've not being to Amazon for a very long time, it says that the password is invalid, then, to recover it, asks you the information about your last transaction, which makes the account unusable if you've never done any transaction before with the account.   ³ Dell, for example, makes it impossible to order a rack server without any hard disk, while this can be perfectly valid if you already have the hard disks you want to reuse.   ⁴ Such optimization includes partial flush to send the most important content faster, studies on the relationship between time spent by people waiting for pages to load and the number of people using the website, etc.   ⁵ As for Dell, Microsoft and others.   ⁶ As for eBay or other web-based companies.


title: web development without the knowledge of client side scripting or programming?

text: > **Possible Duplicate:**   >  How much HTML and CSS should server side developer know? What will happen if someone wants to be a web developer but not interested to learn the client side scripting or programming. I am asking this question, because I think it is not possible, but a few days back, I had an argument with one of my rigid programmer friend. I could not make him understand. Do you guys agree with me? I believe that without the good client side knowledge, it is impossible to be a good web developer.


title: C# Dev - I've tried Lisps, but I don't get it

text: After a few months of learning about and playing with Lisp, both CL and a bit of Clojure, I'm still not seeing a compelling reason to write anything in it instead of C#. I would really like some compelling reasons, or for someone to point out that I'm **missing something _really big_**. The strengths of Lisp (per my research):   * Compact, expressive notation - More so than C#, yes... but I seem to be able to express those ideas in C# too.   * Implicit support for functional programming - C# with LINQ extension methods:      * mapcar = .Select( lambda )     * mapcan = .Select( lambda ).Aggregate( (a,b) => a.Union(b) )     * car/first = .First()     * cdr/rest = .Skip(1) .... etc.   * Lambda and higher-order function support - C# has this, and the syntax is arguably simpler:      * "(lambda (x) ( body ))" versus "x => ( body )"     * "#(" with "%", "%1", "%2" is nice in Clojure   * Method dispatch separated from the objects - C# has this through extension methods   * Multimethod dispatch - C# does not have this natively, but I could implement it as a function call in a few hours   * Code is Data (and Macros) - Maybe I haven't "gotten" macros, but I haven't seen a single example where the idea of a macro couldn't be implemented as a function; it doesn't change the "language", but I'm not sure that's a strength   * DSLs - Can only do it through function composition... but it works   * Untyped "exploratory" programming - for structs/classes, C#'s autoproperties and "object" work quite well, and you can easily escalate into stronger typing as you go along   * Runs on non-Windows hardware - Yeah, so? Outside of college, I've only known one person who doesn't run Windows at home, or at least a VM of Windows on *nix/Mac. (Then again, maybe this is more important than I thought and I've just been brainwashed...)   * The REPL for bottom-up design - Ok, I admit this is really really nice, and I miss it in C#. Things I'm missing in Lisp (due to a mix of C#, .NET, Visual Studio, Resharper):   * Namespaces. Even with static methods, I like to tie them to a "class" to categorize their context (Clojure seems to have this, CL doesn't seem to.)   * Great compile and design-time support      * the type system allows me to determine "correctness" of the datastructures I pass around     * anything misspelled is underlined realtime; I don't have to wait until runtime to know     * code improvements (such as using an FP approach instead of an imperative one) are autosuggested   * GUI development tools: WinForms and WPF (I know Clojure has access to the Java GUI libraries, but they're entirely foreign to me.)   * GUI Debugging tools: breakpoints, step-in, step-over, value inspectors (text, xml, custom), watches, debug-by-thread, conditional breakpoints, call-stack window with the ability to jump to the code at any level in the stack      * (To be fair, my stint with Emacs+Slime seemed to provide some of this, but I'm partial to the VS GUI-driven approach) I really like the hype surrounding Lisp and I gave it a chance. But is there anything I can do in Lisp that I can't do as well in C#? It might be a bit more verbose in C#, but I also have autocomplete. What am I missing? Why should I use Clojure/CL?


title: How to support design decisions?

text: There are bad design decisions.   On the same pitch, being a senior engineer can sometimes be hard. Youngsters have awesome and radical ideas, which a senior engineer wonders whether will work on the field, and if it is worth spending all that effort. Experience suggests that these are short-term solutions are very expensive in the long run. However, it might be hard to convince otherwise. How does one go about in this scenario? **Patterns** are a good start, however, it takes a little experience to figure out where to apply a pattern, as a newbie might restate the problem to fit the pattern. Also, patterns do not help at coarser/component levels. Another idea is to **refer to a good design** that _works in the field_ , and is outside the organization. The problem here is that sometimes drawing a parallel might be hard. Are there any other ideas?


title: Is BSD-License compatible with Apple AppStores?

text: I would like to know if it is possible to make an application to be sold on Apple AppStores that is linked (during compilation) to a BSD-licensed library.


title: Impact of Website Redesign on Google Analytics

text: I just finished a redesign for a website that is currently using Google Analytics. I want to continue to use Google Analytics, but I'm not sure if I should create a new profile for the new site or simply use the old UA number. The new website has a completely different URL structure and much of the content has been updated/deleted/added.


title: I have one afternoon to extol the benefits of .NET over VB6... what do I say?

text: My company is a small twenty-man engineering firm. All the application programming here is done in VB6 by two people, who have taught themselves VB6 from an assembly background while working here for the past 25+ years, and myself. As a result, the VB6 code is riddled with horrendous code smells, like tons of stringly typed variables, terribly long functions, hundreds of public global variables (some of which are preferred over passing around arguments and returning values,) and not a single object class. Refactoring is nigh impossible, and any changes require too much digging through code, and once made, always seem to introduce more holes. My boss is realizing that VB6 is a dead technology, and is willing to listen to my pleas of moving to .NET for new development. We are moving forward to .NET, but he sees it as a way to keep up compatability with the newer Windows OS's, not as a way to write better code. How can I best explain the benefits of .NET language over VB6, beyond mere up- to-date-ness? What can I say to best emphasize that the move to .NET is a good move _but also_ that it means our current programming paradigm should also begin to change? As soon as my boss hears that Visual Basic .NET looks just like VB6, I know that his first instinct will be to simply convert our old code mess to .NET. I understand that it will be impossible to change anyone's mindset in a single afternoon, but how can I at least convince my assembly-toting boss that things like strongly-typed variables, custom classes, and private fields aren't a _total_ waste of time and energy?


title: Why do trees grow downward?

text: Why do trees grow downward in computer science? I have a feeling it goes back to a printer, and that a program traversing a tree first prints the root, and uses the notion of a bottomless stack of paper to express the indefinite levels of recursion that might be encountered. References: > Trees grow downward, having their roots at the top of the page and their > leaves down below From ON HOLY WARS AND A PLEA FOR PEACE. > by convention, trees are drawn growing downwards From the Wikipedia article on tree data structures. > Real trees grow from their root upwards to the sky, but computer-science > trees grow from the root downwards From David Schmidt's lecture notes.


title: free as in free beer

text: Some years ago (more precisely in 1998) the confusion english-speaking people start making with the term **free** when applied to software led some members of the free software foundation to create a new term: **open source** ( http://www.gnu.org/philosophy/free-software-for-freedom.html ) The great concern was that people was misunderstanding free as in free of speech, with free as in free beer (see wikipedia: http://en.wikipedia.org/wiki/Free_and_open_source_software ). The free here relates to the the liberty of using and sharing your software, in a way that goes against proprietary "copyright" (and patented) software. It was first introduced by Richard Stallman, in 1986. The core is the set of freedoms:   * Freedom 0: The freedom to run the program for any purpose.   * Freedom 1: The freedom to study how the program works, and change it to make it do what you wish.   * Freedom 2: The freedom to redistribute copies so you can help your neighbor.   * Freedom 3: The freedom to improve the program, and release your improvements (and modified versions in general) to the public, so that the whole community benefits. Well, we all know about that (at least those who is following this discussion since ever). In my opinion, the term open-source clarified us. But it was already assured by Freedom 1. In other languages (like spanish or portugese, for instance), we can say free as libre or livre. And the other meaning of free, as in free beer, as gratis. So, for others, there was never a confusion (actually, only when reading english articles about it). Freedom number 2 guarantees my right to redistribute copies at will. I understand that as I don't need to pay the owner any royalties for every copy I give away to my friends or students. And of course, we will agree with that. This, ultimately means, that I **can** give free (gratis) copies, or also I can charge for copies (support, media, etc.). Now, If something can be given away for free (gratis), then it is free (gratis). No matter if someone, or some enterprise, wants to sell, you still have ways (sites, downloads, friends, etc.) to get it for free (gratis). So, in my non-english point of view, we have 3 different things here. The most important, undoubtedly, is the free (freedom, liberty, libre, livre, so you can all the stuff you want) quality of the software. The other, is being open- source (so you can see the code inside). The last one **IS** another **GREAT** quality, that is, there **EXIST** free (gratis, non-chargeable) software. Being free (gratis) does not mean it is forced free (gratis). You can have people who sells, who pays, and who gets/sends for free. Still, it is a quality. What I don't understand is why, after so many years, people from FSF are still cautious to say that there is free (gratis) software also. Yes, free as in free beer. If it is a quality why hide it? Just to prevent confusion? Well, let me tell you the news: confusion was already made since the beginning. I was alive and interested in the subject when it started, and I remember lots of discussions about this free being free of charge, or free of restrictions. After lots of consulting, lawyers helped to write the first "license" in terms that could be used in court, introduced the term "copyleft", and made it "clear" that free is not about price. At that time, because of the novelty, ok, I agree to emphasize this half-part of the free. But now we are over it. Isn't it time to tell people that we ALSO have free as in free of charge. Three qualities is better than two: livre/gratis/open. So, why don't we tell people that free software can be just free? Edited: More objectively: 1- Is a free (freedom) software necessarily free (gratis)? 2- Is a free (gratis) software necessarily free (freedom). The first one is the important question, as the second is just there to hold fast typers (we all know the answer). Another question raised from the discussion: Is free (gratis) a quality? (I assumed that as taken for granted in the question introduction)


title: Do you see an use for "Spreadsheet programming"?

text: A while ago I stumbled upon the concept of using spreadsheets (I mean cells and formulas not Macro code) as a way to specify programming logic. The idea is:   * create a spreadsheet with a cleanly defined flow of calculations (which sometimes are better suited to the "dataflow" paradigm of spreadsheets instead of procedural or object oriented programming styles)    * define input cells   * define output cells   * compile the whole thing into a stand-alone executable class (or function, procedure, ...)   * use it in normal code within a broader software project   * use the spreadsheet as source code to be maintained over time The idea is to use this technique for problems the really fit into the model and that this would lead to naturally well-documented and easy maintainable code. I am interested in knowing whether you have experienced using the technique and what for. An example application that came to my mind are insurance tariff calculators, that are typically drafted, created and validated by actuaries on Excel sheets and only later coded (it's a painful process) in some hard-to-maintain programming logic.


title: what should i use  running cron or getting by query

text: I have a table which has the amount,entrydate and amtperday field , which is to decrease daily. so what is better running the cron job daily to decrease amount. or or at the time of fetching data calculate the amount perday with the date field , i can get the no. of day > amount = amount- no.of day * amtperday so which is good Please suggest ?


title: Design Patterns - Why the need for interfaces?

text: OK. I am learning design patterns. Every time I see someone code an example of a design pattern they use interfaces. Here is an example: http://visualstudiomagazine.com/Articles/2013/06/18/the-facade-pattern-in- net.aspx?Page=1 Can someone explain to me why was the interfaces needed in this example to demonstrate the facade pattern? The program work if you pass in the classes to the facade instead of the interface. If I don't have interfaces does that mean


title: Simple website with a GPL V3 Framework

text: I write web-based software and simple website ("Home", "Who we are", "Contact"). For a simple website I'm using a covered GPL v3 framework. The user surf the website, send an email, take info, etc. I repeat: simple website, not a Joomla or Wordpress. 1) Will the website be covered with the GPL? I don't modify the framework. I'm using his classes in other classes... (OOP). 2) For the point 1, if yes, do I need to add (e.g. in the footer) name of framework and his link? 3) I must permit download of entire website to study code (nothing that a programmer has interest in)? E.g. placing it in Github? 4) If 2 is NO, how you can "understand" that we use that framework? In effect no php lines are exposed to the browser... You cannot understand that when you push "Send email" the site is calling `$this->send($email)`. If you write me an email "Are you using XXX framework"? I can answer NO.


title: browsing with curl instead of firefox (or any other browser)

text: My company has 2 Intranets (one technical, and one commercial), I am the administrator of the technical Intranet. We need to see if a client has a contract for a service we offer. As such, for ease of use (for us in the tech department) I made a button in our Intranet that reads data via `ajax->php->curl->dom` from the commercial intranet, gets the type of the contract, and if it's valid prints the contracts into a DIV tag. So we don't have to open a new tab, look up the client, go through all the commercial info in there just to see something as simple as "yes is ok" or "no disable the service"). Now the admin from the commercial Intranet (the nephew of somebody on the Board) went to the Board complaining that we steal information from them according to this internal decision:               Any addition of new functions, any changes to the current functions or       operating procedures of any service related to commercial databases       provided by the company will be made only with approval from the Board.      But we did not add new functions, we did not modify existing functions or procedures, we just read the data with curl instead of a normal browser. I am into optimizations, efficiency, and user-friendly experience so in our Intranet with 2 or 3 clicks (and max 3 seconds) you get the info you need, otherwise I think I did something wrong and I try to improve. The script we are talking about returns the data to the user in around 1 - 3 seconds, but now the Board forbids us to use it anymore, and our team is slower (you need about 2-5 minutes, and around 8-12 clicks to find a client with the commercial intranet (it's a real mess). In your opinion is there a legal difference betwen using curl of firefox (or any other browser), to read a simple HTML page (no javascript invloved), acording to the decision above or in general ? P.S. I know you are not lawers, just give a programmer point of view. Thank you


title: How often should I/do you make commits?

text: I am a recent (as of yesterday) college grad - BS in Computer Science. I've been a huge fan of version control ever since I got mad at an assignment I was working on and just started from scratch, wiping out a few hours worth of actually good work. Whoops! Since then, I've used Bazaar and Git (and SVN when I had to for a Software Engineering class), though mostly Git to do version control on all of my projects. Usually I'm pretty faithful about how often I commit, but on occasion I'll go for a while (several functions, etc.) before writing a new commit. So my question for you is, how often should you make commits? I'm sure there's no hard and fast rule, but what guideline do you (try to) follow?


title: Can commits be considered too small?

text: > **Possible Duplicates:**   >  git / other VCS - how often to commit?   >  How often should I/do you make commits? The usage of source control is very different from one developer to another and from project to another. Some commit very often; others can spend a whole day or several days without committing (especially when they work on the project alone or they know that other team members are working on very different part of the project). ## Examples Sometimes, I've seen extremely small commits, both in real life and in webcasts and other learning material. Some examples, mostly from real life, are:   * A commit which solves a bug #... or implements a feature #... by changing one line of code. IMHO, it's a perfectly valid case for a commit, especially if the bug tracking system is linked to the version control and is updated automatically according to the revisions. Even without this link, it's useful to track which commit solved what, independently of the number of changes required to solve a bug or implement a feature.   * A commit which changes a single configuration setting (given that in the context, configuration settings must be in source control). IMHO, this could be merged sometimes with another commit, unless the previous setting breaks the build or introduces a bug or can affect other developers (for example a connection string which changed after the test database server was migrated).   * A commit which corrects spelling of a word, for example in a string displayed to the user. IMHO, in most cases, this can be merged with another commit (unless, again, it breaks the build). The only case where it cannot be merged is when, if left, the wrong spelling can be propagated through code and would be too complicated or impossible to change later, as with HTTP _referer_ header.   * A commit which adds a comment to a method (while the method was already explicit enough) or solves another minor style-related rule. Example: in .NET Framework, StyleCop requires to document every method, and the XMLDoc comment for a constructor (which is method too) must begin with: > Initializes a new instance of the <Class name here> class. A commit can enforce this last rule, replacing a comment in legacy code: > Creates a new vehicle with the specified number of wheels. by: > Initializes a new instance of the Vehicle class, using the specified number > of wheels. In other words, the revision has no meaning other than to conform the piece of code to the style standards used in the codebase. IMHO, this can be merged with another commit in every case (after all, style- related rules must be enforced at commits to reject the commits of the code which doesn't match them), unless there are several changes in several places. ## Questions Am I wrong on those points? Is there such a thing as a commit too small, or is a practice of committing very often a best practice? Does it worth it to commit too small changes, given that it would "pollute" the revision log and make it more difficult to find the relevant changes among tiny changes nobody cares about and which don't break or unbreak the build, nor affect other developers?


title: Using Git - better to do lot of incremental updates or one big daily update?

text: Ive just started working with Git (Github) in anticipation for an up coming project I'm project managing and designing and developing the front end of. One thing I couldn't work out is, is it preferable to publish each individual change as you make them, ie. updated sidebar js, designed new FAQ page (each as individual commits) and the back end developers would be doing the same ie. added this class, refactored this.. Or is it better to do a daily / half daily commit of all the work you've done? My thoughts were that if you do lots of small commits its easier to roll back, but also at the same time every commit you make the rest of the team has to get locally before they can commit their code. You obviously don't have this problem so much if you do daily or half daily commits, but its a little more complicated to roll back if you need to? Is there a best practice for this or is it down to team preference? Background: I'm using Github via the mac desktop app not the CL.


title: Git for a solo developer

text: I'm a developer working on a Wordpress project. I work on this alone and I want to improve the way I use Git but I don't know where to start. Currently, I'm using git to commit all of the work that I've done for the day as long as that specific work is done. Here are some instances where I commit a specific work:   * A specific feature whose code can be written within a day   * A bugfix For bigger features that can take weeks to finish I create a branch for it, then commit the sub-features once they're done. But often times I feel like I'm committing way too much; for example, when I'm trying to solve lots of bugs I do not commit each and every bug that I resolve. Sometimes I also end up working with 2 or more things that should be in there own commits. Then I'll find it hard to just target the specific files within a specific change so I end up putting them all in one commit and end up with a commit message like `add search feature and add caching feature`. What I want to know are the best practices for solo developers working with Git. For solo developers out there you're welcome to answer with your own workflow as well.


title: When to commit code?

text: When working on a project, the code may be developed reasonably fast in a single day or bit by bit for a prolonged period of few weeks/months/years. As code commits are becoming to be considered as a measure of project development, it doesn't really mean it has more code written than a project that has lesser commits. So the question is when to really make a commit to the repository so that the commit is justifiable? As a add-on: Is it a correct practice to measure a project's development based on its commits?


title: When is a version control commit too large?

text: I've heard in several places "Don't make large commits" but I've never actually understood whats a "large" commit. Is it large if you work on a bunch of files even if there related? How many parts of a project should you be working on at once? To me, I have trouble trying to make "small commits" since I forget or create something that creates something else that creates something else. You then end up with stuff like this:               Made custom outgoing queue          Bot     -New field msgQueue which is nothing more than a SingleThreadExecutor     -sendMsg blocks until message is sent, and adds wait between when messages get     sent     -adminExist calls updated (see controller)     -Removed calles to sendMessage          Controller     -New field msgWait denotes time to wait between messages     -Starting of service plugins moved to reloadPlugins     -adminExists moved from Server because of Global admins. Checks at the channel,     server, and global level          Admin     -New methods getServer and getChannel that get the appropiate object Admin     belongs to          BotEvent     -toString() also show's extra and extra1          Channel     -channel field renamed to name     -Fixed typo in channel(int)          Server     -Moved adminExists to Controller          PluginExecutor     -Minor testing added, will be removed later          JS Plugins     -Updated to framework changes     -Replaced InstanceTracker.getController() with Controller.instance     -VLC talk now in own file          Various NB project updates and changes          ---          Affected files     Modify  /trunk/Quackbot-Core/dist/Quackbot-Core.jar     Modify  /trunk/Quackbot-Core/dist/README.TXT     Modify  /trunk/Quackbot-Core/nbproject/private/private.properties     Modify  /trunk/Quackbot-Core/nbproject/private/private.xml     Modify  /trunk/Quackbot-Core/src/Quackbot/Bot.java     Modify  /trunk/Quackbot-Core/src/Quackbot/Controller.java     Modify  /trunk/Quackbot-Core/src/Quackbot/PluginExecutor.java     Modify  /trunk/Quackbot-Core/src/Quackbot/info/Admin.java     Modify  /trunk/Quackbot-Core/src/Quackbot/info/BotEvent.java     Modify  /trunk/Quackbot-Core/src/Quackbot/info/Channel.java     Modify  /trunk/Quackbot-Core/src/Quackbot/info/Server.java     Modify  /trunk/Quackbot-GUI/dist/Quackbot-GUI.jar     Modify  /trunk/Quackbot-GUI/dist/README.TXT     Modify  /trunk/Quackbot-GUI/dist/lib/Quackbot-Core.jar     Modify  /trunk/Quackbot-GUI/nbproject/private/private.properties     Modify  /trunk/Quackbot-GUI/nbproject/private/private.xml     Modify  /trunk/Quackbot-GUI/src/Quackbot/GUI.java     Modify  /trunk/Quackbot-GUI/src/Quackbot/log/ControlAppender.java     Delete  /trunk/Quackbot-GUI/src/Quackbot/log/WriteOutput.java     Modify  /trunk/Quackbot-Impl/dist/Quackbot-Impl.jar     Modify  /trunk/Quackbot-Impl/dist/README.TXT     Modify  /trunk/Quackbot-Impl/dist/lib/Quackbot-Core.jar     Modify  /trunk/Quackbot-Impl/dist/lib/Quackbot-GUI.jar     Modify  /trunk/Quackbot-Impl/dist/lib/Quackbot-Plugins.jar     Modify  /trunk/Quackbot-Impl/lib/javarebel.stats     Add /trunk/Quackbot-Impl/lib/jrebel.info     Modify  /trunk/Quackbot-Impl/nbproject/private/private.properties     Modify  /trunk/Quackbot-Impl/nbproject/private/private.xml     Modify  /trunk/Quackbot-Impl/nbproject/project.properties     Modify  /trunk/Quackbot-Impl/plugins/CMDs/Admin/reload.js     Add /trunk/Quackbot-Impl/plugins/CMDs/Operator/hostBan     Modify  /trunk/Quackbot-Impl/plugins/CMDs/Operator/mute.js     Modify  /trunk/Quackbot-Impl/plugins/CMDs/lyokofreak/curPlaying.js     Modify  /trunk/Quackbot-Impl/plugins/CMDs/lyokofreak/lfautomode.js     Modify  /trunk/Quackbot-Impl/plugins/listeners/onJoin.js     Modify  /trunk/Quackbot-Impl/plugins/listeners/onQuit.js     Modify  /trunk/Quackbot-Impl/plugins/testCase.js     Add /trunk/Quackbot-Impl/plugins/utils/whatsPlaying.js     Modify  /trunk/Quackbot-Impl/src/Quackbot/impl/SandBox.java     Add /trunk/Quackbot-Impl/vlc_http     Add /trunk/Quackbot-Impl/vlc_http/current.html     Modify  /trunk/Quackbot-Plugins/dist/Quackbot-Plugins.jar     Modify  /trunk/Quackbot-Plugins/dist/README.TXT     Modify  /trunk/Quackbot-Plugins/dist/lib/Quackbot-Core.jar     Modify  /trunk/Quackbot-Plugins/nbproject/private/private.properties     Modify  /trunk/Quackbot-Plugins/nbproject/private/private.xml     Modify  /trunk/Quackbot-Plugins/src/Quackbot/plugins/JSPlugin.java     Add /trunk/Quackbot-Plugins/vlc_http     Add /trunk/global-lib/jrebel.jar      Yea.... So for questions:   * What are some factors for when a commit becomes too large ( _non-obvious stuff_ )?    * How can you prevent such commits? Please give specifics   * What about when your in semi-early stages of development when things are moving quickly? Are huge commits still okay?


title: How big should a single commit be?

text: A discussion has come up at work and I want to get the opinion of other programmers. During my time in college, we only used SVN for sourcecontrol. Everybody commits to the same server and all changes are pulled to all machines. In this system, it's easy when you should push your changes: when you're done with your changes. However, this makes merging changesets by multiple developers a complete nightmare. However, for the past year or so that I've been programming professionally, we've been using Mercurial for source control. At first, I was using it like SVN: work on a featur, commit and push in one go, but only when it's finished. Gradually, my habits started to change. I learned about branches, how commits could be a draft, public or secret and even used a USB stick as a central repository. My commits became smaller, but they increased in quantity. Instead of committing and pushing in one go, I would make commits for every change in a named branch. Here's what the repository for one my personal projects looks like: ![Repository layout](http://i.stack.imgur.com/t0h7X.png) I see a couple of advantages in this approach.   * Small commits mean they are focused on a single subject. Every commit gets a one-line description of the changes, which makes them easy to follow even after weeks of inactivity.   * Named branches keep you on topic. If you're working in the "refactor-text-rendering" branch, for example, you shouldn't make changes to the math library, because that's not related to the branch's topic. However, the lead developer is annoyed by my methodology. He feels that the small commits clutter up the repository's history. His preferred methodology is to work in a patch. When the feature is done, he merges the commits and pushes them in one go. So, what do you prefer? A flow of consciousness history of commits or a patch of changes every now and then? Or something else entirely?


title: What to do if my own opensource code greatly resembles another project's code?

text: I'm writing a Java class, part of an opensource game development framework under the Apache 2.0 license. There is another framework, under the same license, that happens to also have a Java class that addresses the same subject as mine. I recently checked it out, and my implementation is extremely similar to that. Heck, even the local variables. The differences are minimal. Since both classes are opensource, I guess it doesn't matter. However, since the codes are so similar, anyone may come to the conclusion that I just modified theirs a bit, and eventually quote the license: >   * You must give any other recipients of the Work or Derivative Works a > copy of this License; > >   * You must cause any modified files to carry prominent notices stating > that You changed the files; > > Since I wrote my class, there's no need to put their copyright notice in my code. However, it cannot be proven that I didn't just copy their code and modified a bit. What is one supposed to do in this scenario?


title: Reasons for either 32-bit or 64-bit as development machine

text: I'm about to make a new Linux install, which will be primarily used for programming. I've seen benchmarks showing speed improvement of 64-bit version, however, I have hard time of telling how much these benchmarks translate to improvement in every day usage. And of course there are other aspects to consider. Usage I have in mind:   * mainly programming Python, with occasional C, C++ and Java;   * IDEs, which are using Java platforms (Eclipse and IntelliJ);   * on very rare occasions having to compile for 32-bit platform;   * not planning to have more than 64GB of RAM anytime soon (and I don't mind using PAE kernels);    * machine in question has 4GB RAM and Athlon II X2; What are pros and cons of choosing either i386 or x86_64 distro?


title: Freelancing dilemma.. to do or not to do?

text: My current organization has stated clearly that I should not work on any freelancing projects in the fields where the company offers their service. I agreed to that and joined the organization. At the time of joining, I also mentioned that I am a member of an NGO for last two years, not as a programmer but giving my social services there. They agreed to that and everything is working smoothly. But recently my NGO has decided to build their site. I was called to be a part of programming team but I refused because of that condition. The NGO agreed and excluded me from the programming team. But they insisted on me being a translator and requested that I arrange for translators from other languages. I had managed to bring a team of translators. Now my NGO is planning to make me head of translation team because they felt being a programmer and translator both I can be a bridge between two teams. Here is dilemma begins, my company is in website development business but they don't offer translation service. For the NGO website I am going to be credited for translation. Here my company is very strict on freelancing rules. But I am bit optimistic that they will allow me to be part of the NGO project which in sense not going to compete with any of their products. They are strict in freelancing and I am sure that they are not going to allow me. If anything goes wrong, on the other side, I don't see any legal problems in doing this and am excited to be a part of the website. What would you do if you faced this situation?


title: Sortable listview using SQLite

text: I'm implementing a sortable listview using bauerca's library here. This works, but now I need to define some things where I need some help. This is the functionality of my app_ I can create up to 5 names. These names are saved in a SQLite database. Then, in other activity, these names are loaded from the database and shown to select which ones I'm going to use. With 5 names, there are several combinations I can use, but the basic porpouse of this app is that when I select some names, these are shown in a sortable listview where I can sort them. After sorting them, they should be saved in another database to remember the position of each one. For this, the second database has these columns: NAME, GROUP, ORDER. **My approach is this:** if I select for example `NAME1` and `NAME2`, this would be `GROUP2_1`. If I select `NAME1` and `NAME3` this would be `GROUP2_2`... and this with all the posible combinations. Then, in the `ORDER` column, the position of each name in the listview is saved. But seems that this approach with the GROUP column doesn't work... it saves the position of each name, but regardless of the group to which it belongs. So for example, if I have these names:               MARK     PAUL     JERRY      If I select MARK and JERRY, the listview at first time would show them that way:               MARK     JERRY      But now I sort them:               JERRY     MARK      So these combination belongs to GROUP2_1 and JERRY has 1 value in the ORDER column and MARK the 2. If now I go back and I select this other combination:               MARK     PAUL     JERRY      This should be GROUP3_1, and now I sort them this way:               MARK     JERRY     PAUL      So now MARK has ORDER value 1, JERRY 2 and PAUL 3. Now if I go back and load again the first combination, it will load the names with the last asigned ORDER value so instead of loading in this order:               JERRY     MARK      It will load them using the values of the last combinations:               MARK     JERRY      Sorry for such a long explanation, but I dind't know other best way to explain my issue. In resume, the problem is that the ORDER value is asigned to each name, regardless of the GROUP, so this is not a valid approach for what I need to get. **Update -- key definition** Thats my current table:               db.execSQL("CREATE TABLE " + TABLE_NAME + " (" +                 TravelOrder._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +                 TravelOrder.NAME + " TEXT NOT NULL " +                 ");");


title: REST or a message queue in a multi-tier heterogeneous system?

text: I'm designing a REST API for a three-tier system like: `Client application` -> `Front-end API cloud server` -> `user's home API server (Home)`. `Home` is a home device, and is supposed to maintain connection to `Front-end` via Websocket or a long poll _(this is the first place where we're violating REST. It gets even worse later on)_. `Front-end` mostly tunnels `Client` requests to `Home` connection and handles some of the calls itself. Sometimes `Home` sends notifications to `Client`. `Front-end` and `Home` have basically the same API; `Client` might be connecting to `Home` directly, over LAN. In this case, `Home` needs to register some `Client` actions on a `Front-end` itself. Pros for REST in this system are:   * REST is human-readable;   * REST has a well-defined mapping of verbs (like CRUD), nouns and response codes to protocol objects;   * It works over HTTP and passes all the possible proxies; REST contras are:   * We need not only a request-response communication style, but also a publish-subscribe;   * HTTP error codes might be insufficient to handle three-tier communication errors; `Front-end` might return `202 Accepted` to some async call only to find out that necessary `Home` connection is broken and there should have been `503`;   * `Home` needs to send messages to `Client`. `Client` will have to poll `Front-end` or to maintain a connection. We are considering WAMP/Autobahn over Websocket to get publish/subscribe functionality, when it struck me that it's already looking like a message queue. Is it worth evaluating a sort of messaging queue as a transport? Looks like message queue contras are:   * I'll need to define CRUD verbs and error codes myself on a message level.   * I read something about "higher maintenance cost", but what does it mean? how serious are these considerations?


title: Why use subtyped functions?

text: Say you have arguments A1 >: A2 (contra-variant), and return types B1 <: B2 (covariant). The corresponding functions are such that: A1 => B1 <: A2 => B2 Sometimes, this makes sense to me - I will grasp it in a flash of lateral thinking. And then a few days later it is lost to me until I struggle through it for another hour or so. Using an example from Odersky's Scala MOOC (this is not an assignment spoiler), Empty and NonEmpty are both subtypes of IntSet. I understand that you cannot pass an IntSet into a function expecting a NonEmpty, since the IntSet might be an Empty. Therefore the latter (A2 => B2) cannot be a subtype of the former (A1 => B1). And I understand that you _can_ pass a NonEmpty into a function expecting an IntSet, apparently because the function will only be calling IntSet-specific methods that all subtypes have implemented. Therefore the former _can_ be a subtype of the latter. Similarly, a function that returns an IntSet cannot be a subtype of a function that returns a NonEmpty, because that returned IntSet cannot necessarily do everything the NonEmpty can do. Conversely, a function that returns a NonEmpty _can_ be a subtype of a function that returns an IntSet, since that returned NonEmpty will conform to the IntSet contract. But what I'm having trouble grasping is, if you _can_ pass a NonEmpty into a function expecting an IntSet, and if that function were a subtype of a function expecting a NonEmpty (ostensibly because it is calling NonEmpty- specific methods in its implementation), then why would you ever want to use that subtyped function? Does anyone have examples of this being useful? Why use subtyped functions? To me it just seems dangerous to pass in an IntSet if you know that it is going to call NonEmpty-specific functionality.


title: Rails/Node.js interaction

text: I and my co-worker are developing a web application with rails and node.js and we can't reach a consensus regarding a particular architectural decision. Our setup is basically a rails server working with node.js and redis, when a client makes a http request to our rails API in some cases our rails application posts the response to a redis database and then node.js transmits the response via websocket. Our disagreement occurs in the following point: my co-worker thinks that using node.js to send data to clients is somewhat business logic and should be inside the model, so in the first code he wrote he used commands of broadcast in callbacks and other places of the model, he's convinced that the models are the best place for the interaction between rails and node. I on the other hand think that using node.js belongs to the runtime realm, my take is that the broadcast commands and other node.js interactions should be in the controller and should only be used in a model if passed through a well defined interface, just like the situation when a model needs to access the current user of a session. At this point we're tired of arguing over this same thing and our discussion consists in us repeating to ourselves our same opinions over and over. Could anyone, preferably with experience in the same setup, give us an unambiguous response saying which solution is more adequate and why it is?


title: Distribute No Modify License

text: I would like to release some code and some documentation to be distributed freely, but not if it has been modified in any way. Basically, needs to be shared "as-is". The reason is I would like to retain control of all modifications without making it it closed source. Is there a commonly available license that allows for this? Thanks


title: What percentage of code and runtime do you typically allow for testing?

text: When I write code, a certain amount of it is just for the purpose of logging, tracing, or otherwise "testing" what the program is doing. This not unit testing; this is not when it is running in "debug" mode or something similar; it is not things like assert statements that get stripped out by some compiling step. But actual production code and runtime execution for the purpose of knowing what the system is doing and writing it out somewhere. Naturally, there have to be various settings in various places (config files, admin interfaces, etc), that allow for more or less of such things. But even if all settings are at their lowest level, I still like to have my system keep track of its own state and report it in some minimalist manner that I or operations people can use to troubleshoot even without turning on/up the other settings. So here is my question: how much of your code or system run-time do you typically devote to such permanent-troubleshooting purposes? I say both code and run-time as they are two measures: how many lines of code relative to all lines of code, because the more the code the more the maintenance; and how much run-time performance because these things do consume CPU time, however small. And there is not always a direct connection between lines of code and run-time consumption. Personally, I'm happy to devote up to 10% of my code to such things and up to 5% of the run-time. Have you ever read any industry authorities that have an opinion on this? Who? What is your opinion?


title: Concurrent Data Processing by Multiple People

text: Let's say I have a page, accessible by several people concurrently, that lists information that must be processed in some way by the user, after which it is either marked as "completed" and effectively disappears, or is left unprocessed and thus left in the list to be tried again later. What is the best way to ensure that only one person is handling a given item in the list at a time, assuming that I must show the list (i.e. no one user/one item requirement, which is what I would prefer), and that any given user can click on any item in the list at any time? This is an issue that has come up several times where I work, and I'm not really satisfied with the solution that I've implemented up until now. I was hoping someone had a better idea. Basically my solution involved creating a table in a database to track who accessed what item and when, and then enabling/disabling features based on that (e.g. not allowing a user to edit info if it's checked out by someone else). It looks something like the following (using Oracle 11g...these are stripped way down for brevity here, with INFO columns acting as a stand in for all other columns that are irrelevant here).               CREATE TABLE "SOME_INFO"     (       "INFO_ID"       NUMBER(19,0)      NOT NULL ENABLE,       "INFO"          VARCHAR2(20 BYTE) NOT NULL ENABLE,       "IS_PROCESSED"  CHAR(1)           NOT NULL ENABLE,       CHECK ("IS_PROCESSED" IN ('Y', 'N')) ENABLE,       CONSTRAINT "PK_SOME_INFO" PRIMARY KEY ("INFO_ID") USING INDEX     ); /          CREATE TABLE "SOME_PERSON"     (       "PERSON_ID" NUMBER(19,0)      NOT NULL ENABLE,       "INFO"      VARCHAR2(20 BYTE) NOT NULL ENABLE,       CONSTRAINT "PK_SOME_PERSON" PRIMARY KEY ("PERSON_ID") USING INDEX     ); /          CREATE TABLE "PROCESS_HISTORY"     (       "INFO_ID"       NUMBER(19,0)  NOT NULL ENABLE,       "PROCESSOR_ID"  NUMBER(19,0)  NOT NULL ENABLE,       "CHECKED_OUT"   DATE          NOT NULL ENABLE,       "CHECKED_IN"    DATE     ); / "Checking out" a record from SOME_INFO for a given user is accomplished by INSERTing a new record into PROCESS_HISTORY with INFO_ID = the selected record's INFO_ID, PROCESSOR_ID = the users PERSON_ID, and CHECKED_OUT = the current time (CHECKED_IN is left NULL). "Checking In" is accomplished by simply setting CHECKED_IN to the current time. An automated process is used to periodically check in records that have been checked out for more than some predefined maximum amount of time (the time varies from page to page based on what's involved in processing the info). From this I can tell if a given record is currently checked out or not, and thus alter the page's behavior accordingly. Having said that, I can't help but think there's got to be a better way to do this. I'm hoping it's a common enough problem that there is a standard or semi-standard method of doing this that I simply haven't been able to find.


title: Is there an IDE for python that creates the same kind of reflective environment that Smalltalk provides?

text: As anyone who has used Smalltalk knows, one of the main benefits (other than a late-bound language that discourages many poor practices), is that the system is totally transparent and reflective, which makes understanding APIs and existing code easy, and locating functionality pretty easy. Is there anything that creates a similar environment for Python? A few examples of features of a smalltalk development environment, not natively found in python are:   * search class/method/etc names,    * examine inheritance hierarchies   * functionality to show the full interface of a given class/object, and where the properties therein originate   * an integrated graphical debugger which allows one to examine the full state of everything in the system, and see every instance of a given type, as well as all threads.  Note that I use windows, so anything that works well on windows would be particularly useful.


title: Leading Web Application Publications

text: Almost every major industry has it's standard publications which are considered "must reads" in that particular field. After spending some time on Google looking for web application publications, I've come up empty; are there any high quality web application publications available online or through print that someone can point me to?


There is always a debate over the topic - "Whether to put the business logic in Stored Procedure or Not?". If we decide not to use the ORM Tool and not to put the Business Logic in Stored Procedure then where would we put the Business Logic? In my previous applications I have always preferred putting all of the Business Logic in Stored Procedures only. Then from .NET code I call these Stored Procedures using Data Access Application Blocks. SQLHelper etc. But this can not be the scenario all the time. So I did some googling but ended up in confusion....... Any suggestionss...?


title: Where can I obtain a first-generation copy of the classic “Sorting out Sorting”?

text: I cannot even figure out who made it - even the IMDB page is mostly blank, and Wikipedia does not seem to have any information about it. For such a useful film in CompSci, it strikes me as odd that the only meaningful Internet presence I can find are horrible quality copies or excerpts on YouTube. [Note: SO claims this question was migrated to here, but the URL they provide gives a 404, and I can't find it by searching Programmers.SE, so I'm re- asking...]


title: Writing Resumes for Internships?

text: I'm an undergraduate student starting to look for internships. I understand a lot about how to embellish a real-world resume--emphasizing tasks done at previous jobs and whatnot--but I'm not sure if it will translate well to low- experience internship resumes. Internship Resumes are marked by:   * Few to no past Software-related full-time jobs or internships   * Few to no non-school-involved Software-related activities Obviously if you have no experience or activities to list, you're pretty well stuck. So let's assume we have one of each. I'm basically wondering:   1. What is a company looking for most from Intern candidates? Past work, GPA/coursework, Outside projects (Open Source, etc), certain skill sets (languages)   2. Should I be emphasizing _tasks_ , or _jobs/positions_ when listing my experiences?   3. Are skills important to list? If so, which ones in particular?


title: Would you use (a dialect of) LISP for a real-world application? Where and why?

text: LISP (and dialects such as Scheme, Common LISP and Clojure) haven't gained much industry support even though they are quite decent programming languages. (At the moment though it seems like they are gaining some traction). Now, this is not directly related to the question, which is would you use a LISP dialect for a production program? What kind of program and why? Usages of the kind of being integrated into some other code (e.g. C) are included as well, but note that it is what you mean in your answer. Broad concepts are preferred but specific applications are okey as well.


title: Participate in open source project

text: Currently, I am through a very creative phase as a developer. I think it's a good time to contribute to an open source project. Not as "permanent" developer to a project but in a "help wanted" manner in many projects. The open source hosting services that I know are SourceForge and CodePlex. Any suggestions that will help me on this direction?


title: Work Item Traceability in TFS 2010

text: I have created a Windows Form project (VS solution) under a TFS 2010 project. I may eventually add more solutions to the TFS project. **My question** : Can we create a Use Case WIT for a specific solution within a TFS project? Furthermore, is it possible to create a "traceability matrix" that starts at the Use Case level and goes down to the the code level (at least the namespace level) of that particular VS solution?


title: Fundamental TDD: stuck with writing a test so I can write code that I want

text: I have a Season class. This Season has a few properties: among them, a list of Games. This should be populated from the same source that populated the rest of the Season properties. I have a test to ensure all items in that list are of type Game. There is no hard requirement that a Season must contain any Games, so testing that the list is not empty would not be entirely correct -- however, the test Season I'm using has plenty of games in it. Writing "the minimum amount of code to make a test pass" is already done, because it is the empty list (so there are no not-Game objects). What would be the _fundamental_ TDD way to get the production code to parse+add games to the Season object? Would the _pragmatic_ way be to test via the size? * * * An alternative would be to generate the list of Games in my test, and see if Season.games == list_of_games The problem with that is that there are a crapload of Foreign relations that will be going into those games, making the test code equivilant to the method that I'm testing -- which I don't think is the way it should work. Or should I build them "by hand" from the test data -- instead of parsing it?


title: In C# what is lifetime or lifespan of constant variable?

text: In C# if i declare a constant variable is any memory allocated to it as it acts as a compile time replacement? How long is the variable's life?


title: Why are packed structures not part of the C language?

text: Every C compiler offers the option to "pack" C structures (e.g. `__attribute__ ((__packed__))`, or `#pragma pack()`). Now, we all know that packing is required, if we'd like to send or store data in a reliable way. This must also have been a requirement since the first days of the C language. So I wonder why packed structures are not part of the C language specification? They're not even in C99 or C11 even though the necessity of having them is known for decades now? What I am missing? Why is it compiler specific?


title: Bottom-up or top-down approach?

text: Not sure if the title _really_ fits with the question, but figured it was the closest to give an overview of my question.. I'm working on a web application that (fairly heavily) employs the use of browser-specific CSS functions such as -moz-transform) and I'm curious as to what approach those with more experience developing these types of applications use. For context, I'm referringly _solely_ to front end development (my backend pipeline's pretty solid :)). The way I see it, there are two methods of development:   * Get new functionality working in all browsers, only introducing new code once all applicable browsers have all been tested.   * Get your functionality complete in one browser. Once your application is complete, start testing on other browsers and introduce fixes where needed. Generally, I've been following the latter. I feel as though it allows me to concentrate on the core functionality and get more completed faster than if I was essentially halting functional development every time something new was completed to deal with browser nuances. So, what practices do _you_ follow when it comes to client-side development? I don't work professionally as a web developer, so best practices in web development are a little tougher to come by, other than my own trial and error (and scouring w3c recommendations). However, always a good thing to learn from those smarter than you :).


title: How much credit do you take when you used plugins etc.?

text: I often develop an application entirely myself. But did I really? I feel strange about that claim and never know when that is true. I mean I designed it, coded it, but I used XYZ plug-in. Can I still claim that I did it all myself even though I didn't create the plugin I used? Consider this conversation? > **ME:** I designed and developed this app entirely myself. > > **Other:** Cool, how did you program XYZ part? > > **ME:** I didn't program that part I used XYZ plugin. > > **Other:** So you didn't really program it _ALL_ yourself than did you? I mean if I must give them credit for the plug-in I used, then do I have to give the language authors credit for the language I used and the IDE authors credit as well? Where do I draw the line? This is just something that always crosses my mine as soon as I am about to take full credit for a project, and was wondering others opinions on the matter.


title: Forking a GPL dual licensed software with business owned copyrights

text: After receiving some threats of the copyrights holder of a dual licensed software(GPL2 and commercial) to buy the commercial version for projects in production, I am thinking to make a fork. In a case of GPL2 and commercially dual licensed with business owned copyrights software, is forking the GPL2 version an option? Also, is forking a good way to deal with such cases? ## Background information The software is a web CMS released under 2 versions a GPL2 free open source edition and a commercial edition including technical support and extra functionality. The problem is that now, basing their argumentation on the "distribution" definition of the GPL2, the company holding the copyrights argue that delivering the software and some extensions to a client is considered as a "distribution". And that such a "distribution" falls under the GPL2 obligation to release the custom made extension code. Custom made extensions are mainly designs, templates and very specific functionality. Basically they give me 3 choices:   1. Buying the commercial licensed edition for projects based on the GPL in production,   2. Deleting all the projects in production based on GPL2 version,   3. Releasing all the extensions as GPL2 code. The first 2 options are nothing realistic for finished projects. The third option could be fine, but as most of the extensions are very specific, cleaning the code to make it usable by other users means lot of works and also I am not sure the clients will appreciate to have their website designs and specific functionality released publicly. The copyrights holding company even contacted some clients directly, giving them the "choice". I know that this is a very corporate interpretation of GPL2, and a such action is nothing close to legal, but as an independent developer, I don't want to take the risk to get involved in some long and tiring legal procedures. * * * PS. This question was first asked on Stack Overflow where it felt out of the scope and closed, after reading the present site FAQ, discussing about software licensing seems fine.


title: Is it good or bad form to name a function after the workaround it fixes?

text: Lets say you have to write some code to fix a bug that on first glance by another engineer would seem weird or unnecessary. Would it be good or bad form to put the code in a method named for example "preventWindowFromJumpingWhenKeyboardAppears" or just name it "forceSpecifiedWindowPosition" and then add a comment about why you are doing this when calling the method?


title: Making an attractive, yet still technical architecture diagram

text: Does anyone have any advice for making an "attractive" software architecture diagram? My manager told me to make my current architecture diagram (which was built just using Visio and basic icons) more "attractive" for a presentation I have to give to executive level types who are non-technical. I'm guessing he meant to have something that you'd show to customers or for marketing people to use. Any specific icon sets or particular tips people have? I cannot post my current diagram for privacy reasons but to get the general idea, it's just text, lines, and server icons (http://www.227volts.com/wp- content/uploads/2009/03/exchange2007visiostencils.jpg) that is the icon set that I am using. I'm honestly confused on how to make something like that "more attractive" (hell, I think black and white are always the best color combinations to use :P) Edit: So is something like this http://rollerweblogger.org/roller/resource/linkedin- today.png still considered "professional" with all the colors and such? I asked my manager and all he said was just make it more marketable while evading questions about what I should do specifically.


title: Application qos involving priority and bandwidth

text: Our manager wants us to do applicaiton qos which is quite different from the well-known system qos. We have many services of three types, they have priorites, the manager wants to suspend low priority services requests when there are not enough bandwidth for high priority services. But if the high priority services requests decrease, the bandwidth for low priority services should increase and low priority service requests are allowed again. There should be an algorithm involving priority and bandwidth. I don't know how to design the algorithm, can anyone assist in getting this right? All these services are within a same process. We are setting the maximum bandwidth for the three types of services via ports of services via TC (TC is the linux qos tool whose name means traffic control).


title: Architecturally speaking, does a database abstraction layer, such as Microsoft's Entity Framework, void the need for a separate Data Access Layer?

text: # The way it was For years, I have organized my software solutions as such:   * Data Access Layer (DAL) to abstract the business of accessing data   * Business Logic Layer (BLL) to apply business rules to data sets, handle authentication, etc.   * Utilities (Util) which is just a library of common utility methods I have built over time.   * Presentation Layer which could of course be web, desktop, mobile, whatever. # The way it is now For the past four years or so I have been using Microsoft's Entity Framework (I am predominately a .NET dev) and I am finding that having the DAL is becoming more cumbersome than clean on account of the fact that the Entity Framework has already done the job that my DAL used to do: it abstracts the business of running CRUDs against a database. So, I typically end up with a DAL that has a collection of methods like this one:               public static IQueryable<SomeObject> GetObjects(){         var db = new myDatabaseContext();         return db.SomeObjectTable;     }      Then, in the BLL, this method is used as such:               public static List<SomeObject> GetMyObjects(int myId){         return DAL.GetObjects.Where(ob => op.accountId == myId).ToList();     }      This is a simple example of course as the BLL would typically have several more lines of logic applied, but it just seems a bit excessive to maintain a DAL for such a limited scope. Wouldn't it be better to just abandon the DAL and simply write my BLL methods as such:               public static List<SomeObject> GetMyObjects(int myId){         var db = new myDatabaseContext();         return db.SomeObjectTable.Where(ob => op.accountId == myId).ToList();     }      I am considering dropping the DAL from future projects for the reasons stated above but, before doing so, I wanted to poll the community here for your hindsight/foresight/opinions before I get down the road on a project and discover a problem I didn't anticipate. Any thoughts are appreciated. # Update The consensus seems to be that a separate DAL isn't necessary but (making my own inference here) is a good idea to avoid vendor lock in. For example, if I have a DAL that is abstracting EF calls as illustrated above, if I ever switch to some other vendor I don't need to rewrite my BLL. Only those basic queries in the DAL would need to be rewritten. Having said that, I am finding it tough to envision a scenario in which this would happen. I can already make an EF model of an Oracle db, MSSQL is a given, I am pretty sure that MySql is possible as well (??) so I am not sure if the extra code would ever grant a worthwhile ROI.


title: Data acquisition, storage and management

text: I have a device that can measure different values over time, one sample per second. After one measurement run I can export the data in form of a CSV-file. One row per second with timestamp and about 20 columns (values). The question now is how to store these data masses to make the data accessable. I want to work with it using Matlab. I have for example 50 files of data, each representing one measurement run. Each containing around 120 tsd. samples of 20 values of type float, for example a temperature. It would be great if I could request all samples at the same temperature for example. So actually I am looking for a software that can handle and organize that data or a hint how (and what kind of) database to build. Thank you for your help!