Boost Software License seems to extend disclaimer of warranty automatically but the author says it doesn't

Here is a copy of the Boost software license.               Permission is hereby granted, free of charge, to any person or organization     obtaining a copy of the software and accompanying documentation covered by     this license (the "Software") to use, reproduce, display, distribute,     execute, and transmit the Software, and to prepare derivative works of the     Software, and to permit third-parties to whom the Software is furnished to     do so, all subject to the following:          The copyright notices in the Software and this entire statement, including     the above license grant, this restriction and the following disclaimer,     must be included in all copies of the Software, in whole or in part, and     all derivative works of the Software, unless such copies or derivative     works are solely in the form of machine-executable object code generated by     a source language processor.          THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,     FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT     SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE     FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,     ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER     DEALINGS IN THE SOFTWARE.      The second paragraph of the license requires the warranty disclaimer to be retained in all copies of the software (except purely binary ones). Further, in the warranty disclaimer both "THE COPYRIGHT HOLDERS" as well as "ANYONE DISTRIBUTING THE SOFTWARE" is protected from being liable for damages. Here is a copy of the MIT license.               Copyright (C) <year> <copyright holders>          Permission is hereby granted, free of charge, to any person obtaining     a copy of this software and associated documentation files (the     "Software"), to deal in the Software without restriction, including     without limitation the rights to use, copy, modify, merge, publish,     distribute, sublicense, and/or sell copies of the Software, and to     permit persons to whom the Software is furnished to do so, subject to     the following conditions:          The above copyright notice and this permission notice shall be     included in all copies or substantial portions of the Software.          THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF     MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.     IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY     CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,     TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.      In contrast, the MIT license doesn't require the warranty disclaimer to be retained in all copies of the software and only the "THE AUTHORS OR COPYRIGHT HOLDERS" are protected from being liable for damages. It looks like the Boost Software License provides better protection against liabilities to anyone dealing with the software (even those who are simply distributing the software). Also, the Boost Software License makes it mandatory to reproduce the disclaimer in all copies. Why then does the author of the Boost license mention in http://ideas.opensource.org/ticket/45 that the Boost license _"does not extend the disclaimer of warranties to licensees, so that they may, if they choose, undertake such warranties (e.g., in exchange for payment)"_?


Is there anything inherently bad about mixing paradigms in an application?

I am currently in the process of writing a (custom) Minecraft server application in C#. I figured it's a good way to teach me a lot of important things like concurrency and especially memory efficiency (due to simply the vastness of the object space in Minecraft). While on the train yesterday, I was finding it hard to really "think" of a way to organize the network module. I wanted a simple external interface that would give out the necessaries (Let users react to a connection being received, message being received, and when a connection is dropped). However, I also wanted it to be fairly abstract such that I could allow for either real game clients to connect or simple fake clients. I started over-engineering things a la `IConnection`, `INetworkModule`, `IConnectionFactory`, `IConnectionProtocol`, `IMessageEncoder`, `IMessageDecoder` and so on. Kingdom of nouns galore. Not only that but I wasn't really getting **anywhere** \- it just felt like I was putting the fundamental problem behind other layers of abstraction in that **I had no idea how I wanted to organize the communication between all these modules**. Then I came to the thought - why don't I just use **verbs** (actions/functions/methods/whatever) instead of **nouns** (types) - let's focus on what I want to achieve for now, and split it up into nouns later! And so, I came up with something similar to this:                   private static Func<IDisposable> Listen(             Action<TcpClient> onConnectionReceived,             Action<TcpClient> onConnectionDropped,             Action<TcpClient, int, byte[]> onBytesReceived,             Func<bool> isOpen)         {             // todo: 25565 needs to be injected             // todo: give opportunity to supply listener             // todo: refactor listener into role interface             var listener = new TcpListener(IPAddress.Any, 25565);             return () => Observable.FromAsync(listener.AcceptTcpClientAsync)                 .DoWhile(isOpen)                 .Subscribe(client =>                 {                     var stream = client.GetStream();                     // on subscribe invoke the delegate first                     onConnectionReceived(client);                     // the delegate has the option to disconnect the client                     // based on whatever criteria it see fit.                     // we should now create an observable to                      // listen for messages on this client.                     Observable.Defer(() =>                     {                         // 8kb buffer for each connection                         // this is actually fairly small                         var buffer = new byte[8024];                         // we can handle the 'doing' of things with these bytes                         // inside the passed function. This function will be doing too much otherwise                         return Observable.FromAsync(ct => stream.ReadAsync(buffer, 0, buffer.Length, ct))                             .Select(n => new {Read = n, Bytes = buffer});                     }).Subscribe(a =>                     {                         // drop connection if nothing was read                         if (a.Read <= 0)                             onConnectionDropped(client);                         else                             onBytesReceived(client, a.Read, a.Bytes);                     });                 });         }      Really simple. Well, I mean, not quite, but this basically does the role of all of the nouns (except `IMessageEncoder/Decoder` that I listed earlier), but only making assumptions of the fact that we need a `TcpClient` (obviously, that isn't what I want right now, but I can work to that in iteration 2!) However, my problem with this is, is that this isn't really **typical** C# code.. and it surely breaks the SRP in that this function is returning a function for the entire execution of a server. But - it makes sense to me. So my question is, is there any real inherent downside to using a functional- esque paradigm like this as opposed to traditional Kingdom of Nouns OOP inside of C# - traditionally a multi-paradigm language? And if there are downsides, what would I face and why? For the record, I intend for this to be OSS, so there's another issue in that some developers might not understand the code style because it's simply not OOP orientated, just pure functions.


Retaining disclaimer is mandatory in BSD-2-Clause license but not in MIT license

I see a difference between the BSD licenses and the MIT license. The BSD licenses require the complete disclaimer to be retained in all redistributions of source code or binary code. MIT license doesn't require it. I am reproducing the complete BSD-2-Clause license followed by the MIT license for your convenience. Here is the BSD-2-Clause license.               BSD-2-CLAUSE LICENSE     ====================          Copyright (c) <YEAR>, <OWNER>     All rights reserved.          Redistribution and use in source and binary forms, with or without     modification, are permitted provided that the following conditions are     met:          1. Redistributions of source code must retain the above copyright        notice, this list of conditions and the following disclaimer.     2. Redistributions in binary form must reproduce the above copyright        notice, this list of conditions and the following disclaimer in the        documentation and/or other materials provided with the distribution.          THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS     "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT     LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR     A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT     HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT     LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,     DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY     THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.      Here is the MIT license.               MIT LICENSE     ===========          Copyright (C) <year> <copyright holders>          Permission is hereby granted, free of charge, to any person obtaining     a copy of this software and associated documentation files (the     "Software"), to deal in the Software without restriction, including     without limitation the rights to use, copy, modify, merge, publish,     distribute, sublicense, and/or sell copies of the Software, and to     permit persons to whom the Software is furnished to do so, subject to     the following conditions:          The above copyright notice and this permission notice shall be     included in all copies or substantial portions of the Software.          THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF     MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.     IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY     CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,     TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.      While the BSD license mentions, "must retain the above copyright notice, this list of conditions and **the following disclaimer** ", the MIT license only mentions, "The above copyright notice and this permission notice shall be included", i.e. the MIT license doesn't require the disclaimer to be included. I am not looking for legal advice. I want to understand, as a programmer, if there is any good reason to release code in one of these licenses instead of the other because of this difference.


What's the difference between the terms "protocol" and "standard"?

I find the term "protocol" confusing (in the terms of computer science that is). If the protocol is just a set of rules, wouldn't it be easier if we used the term "standard" instead (like in "HTTP standard")?


Applying SOLID principles

I am quite new to the S.O.L.I.D. design principles. I understand their cause and benefits, but yet i fail to apply them to a smaller project which I want to refactor as a practical exercise to use the SOLID principles. I know there is no need to change an application that works perfectly, but I want to refactor it anyway so I gain design experience for future projects. The application has the following task (actually a lot more than that but let's keep it simple): It has to read an XML file which contains Database Table/Column/View etc definitions and create an SQL file which can be used in order to create an ORACLE database schema. (Note: Please refrain from discussing why I need it or why I don't use XSLT and so on, there are reasons, but they are off-topic.) As a start, I chose to look only at Tables and Constraints. If you ignore columns, you could state it the following way: A constraint is part of a table (or more precisely, part of a CREATE TABLE statement), and a constraint may also reference another table. First, I will explain what the application looks like right now (not applying SOLID): At the moment, the application has a "Table" class which contains a list of pointers to Constraints owned by the table, and a list of pointers to Constraints referencing this table. Whenever a connection gets established, the backwards connection will be established as well. The table has a createStatement() method which in turn calls the createStatement() function of each Constraint. Said method will itself use the connections to the owner table and referenced table in order to retrieve their names. Obviously, this doesn't apply to SOLID at all. For example, there are circular dependencies, which bloated the code in terms of "add"/"remove" methods required and some large object destructors. So there are a couple of questions:   1. Should I resolve the circular dependencies using Dependency Injection? If so, I suppose the Constraint should receive the owner (and optionally the referenced) table in its constructor. But how could I run over the list of constraints for a single table then?   2. If the Table class both stores the state of itself (e.g. table name, table comment etc) and the links to Constraints, are these one or two "responsibilities", thinking of the Single Responsibility Principle?   3. In case 2. is right, should I just create a new class in the logical business layer which manages the links? If so, 1. would obviously no longer be relevant.   4. Should the "createStatement" methods be part of the Table/Constraint classes or should I move them out as well? If so, where to? One Manager class per each data storage class (i.e. Table, Constraint, ...)? Or rather create a manager class per link (similar to 3.)? Whenever I try to answer one of these questions I find myself running in circles somewhere. The problem obviously gets a lot more complex if you include columns, indices and so on, but if you guys help me out with the simple Table/Constraint thing, I can maybe work out the rest on my own.


What is a good way to reset the Primary Key?

We've hit an application issue with an Oracle table Primary Key exceeding the limits used by a Java Integer (2 ^ 32) and one of the suggestions is to reset this to 1000 and let it start again. OR change the code to use Java Long (2 ^ 64) instead. This has a ripple effect since this key is used as ID by a lot of other systems as well. And there can be future duplication (in the far future) Are there any suggestions on good and bad outcomes in this approach?


What is the minimum subset of best/well-known practices in software development for a solo programmer?

I've been the lonely programmer in my work for quite a long time. Usually I've read articles and posts about   * Version Control Systems   * Continuous Integration/Delivery   * Development methodologies: Scrum, Waterfall, V-Model, Agile, XP, etc.   * Software Project Management But almost all of them seem to be focused on TEAMS. I'm not a team, so what would be the absolutely minimum set of practices for just one programmer? Consider the following conditions:   * I don't have conflicts with other's people code.   * I don't need to maintain files/directory trees, my developement environment cares about versioning by itself (image-based development).   * There are no formal requirements, my users don't know what they want and they're are ok with that.   * The only one which could be interested in delivering a release or documentation it's me, basically customer want RESULTS and doesn't care about software methodologies, etc My view is that I don't want to spend (too much) time and energy in anything not directly related with the customer requirements. Any recommendations?


Why (most?) retro computer emulators are single threaded?

All real computer hardware works in parallel. So why most emulators of retro systems (like NES) are single threaded (or I'm not right?)? You have main loop and you counting CPU cycles and after certain cycles activating other hardware like PPU. Same thing applies to IBM PC and (MDA/CGA/VGA) emulation ? Thanks


Recommended content for layers

As an expansion from my previous question about using separate projects for seperate layers - Good practice on Visual Studio Solutions I now wish to know if I am putting the right functionality in the correct layers. **Background** I'm building a WPF application from scratch, that contains business logic and business objects. The database itself sits on another server on the web with access to it, restricted to web API calls using OAuth authentication. I think the following content should be in these layers. The idea being, you go from layer 1 to layer 4, you are only depending on the layers below you. To prevent circular dependencies. **1\. Presentation** WPF View (what the user will see) WPF ViewModel (how the program responds to user interaction) _No WPF Model, as it will just be the business object_ **2\. Application/Services** Repository (class used by ViewModel to load/save business objects) Utility classes to assist in saving objects, by selecting the correct API calls. **3\. Business layer** Business objects/Entities/DTO (whichever name is preferred) Factories (Used by the repositories in the creation of business objects) Other misc business class (i.e. storage of currently logged in user) **4\. Infrastructure/Data Access** OAuth client (makes authenticated calls against the web server, used by repository classes)


Pattern that prevents events to trigger themselves

I am working at the client-side part of a web application, that is responsible for getting answers from users for specific questions and storing and restoring them from the database (or cookies) and I am running into the issue that **updating the answers from the db will also trigger saving them again** (because the same method `answerQuestion` is called). Here's a simplification of my use-case (coffeescript):               class Questionnaire       constructor: ->         @prefillAnswers()         @listenToInput()         @listenToQuestionChanges()            prefillAnswers: ->         for q in @questionNames           @answerQuestion getAnswer(q)            listenToInput: ->         $('.input').on 'change', (e) =>           $input = $(e.currentTarget)           @answerQuestion $input.data('questionName'), $input.val()            listenToQuestionChanges: ->         @subscribeToEvent 'answeredQuestion', (msg, data) =>           saveAnswer(data.question, data.answer)            getAnswer: (qName) ->         # fetches answer from a database (such as cookies, but is irrelevant)            saveAnswer: (qName, answer) ->         # saves the answer            answerQuestion: (qName, answer) ->         @publishEvent 'answeredQuestion', {question: qName, answer: answer} # This part triggers unnecessary saving, but where is the best place for this?         # Change state of UI and data "model"         # ...      **My question is, is there an OOP pattern that discusses this issue and possible solutions?** I don't know how to start addressing this, and reading an entire book is not an option right now (I however have it on my todo list). Perhaps this could be rewritten with a MVC pattern, and I'm moving towards that by starting to read the book JavaScript Web Applications, but can't see right now even with MVC, how my problem is avoided in the best way...


What to do with a programmer that can't handle priorities?

One colleague in our team has multiple jobs to do, but he don't focus on the job that is currently the most important. In our team we always discuss the next steps, but he still don't focus on one thing. He always has a reason why he's NOT doing the right thing.   He's with us for 9 month, so we thought this is common with guys newly from university. But the problem gets bigger every week. But we want to give him a chance. How can we motivate him?   What would you guys do with him?


how to stay efficient when a build is almost always broken

I work in a middle sized team which shares the same source code and while have a continues integration in place, but as all of us has to work in the same branch, the build is almost always broken. As we also have a rule, which has been introduced recently to alleviate the broken builds, which states that no one is allowed to check-in while to build is red. Having said that, during a day everyone have a handful of 10-15 minutes windows where we allowed to check-in. And as the team is growing, the windows of check-in opportunities shrinking even more. That forces developers to accumulate their changes locally, which results in a bigger change sets which even more difficult to ensure that the changes are not breaking anything. You can see the vicious cycle. What can you recommend to allow me to stay effective working in environment like this. Also, please keep in mind that I am a developer, not a manager, and can't change the process or other people behavior much.


A question on nature of generated assembly in C++ and code Algebra

I wrote this code:               #include <iostream>     int main()     {         int a;         std::cin >> a;         if(a*a== 3){             std::cout << a;         }         return 0;     }      On MSVC I turned ON all optimization flags. I expected that since a*a can never be 3, so compiler should not generate code for the section:               if(a*a== 3){         std::cout << a;     }      However it generated code for the section. I did not check GCC or LLVM/CLang. What are the limits of expectation from a C++ compiler in these scenarios?


Subtractive color mixing algorithm

Here is my problem: I have a set of 'n' colors including the primary colors and their codes in hexadecimal. Now given another color 'x' I wonder if it's actually possible to come up with a mix between two or more of the colors of the set that will produce 'x'. The mix should be subtractive. Here is an example of the result of the algorithm: My set of colors is: c1, c2, c3, c4, c5, c6. I am trying to find the mix to produce the color x. The result could be: 50% of c1, 25% of c4 and 25% of c5. If anyone could point me in the right direction (or at least tell me if it is unfeasible), any help would be gladly appreciated!


Is it safe to just use MySQLi?

I have developed an open source PHP application and currently it uses both the MySQLi or MySQL extension for backwards compatibility. I'm wondering about switching it over to only be compatible with MySQLi since PHP now no longer supports the MySQL. Another reason I'd like to get away from supporting both MySQL and MySQLi is that I'm basically using MySQLi the same way I do as with the old MySQL extension. Can anyone explain to me if this is a good or bad idea?


Setting up Developers Conference

In our local city in the UK, there are as far as I am aware no developer conferences. I am confident that our region has many professional developers as well as many graduating students whom who really benefit from a conference. I would like to ask the following questions:   * What steps or advice would one take if the task was given to set up a local developers conference?   * What would the costing look like? (excluding building/hosting of website(s))   * How would one build interest and promote this?   * How would I approach, Local Companies & Universities to collaborate with them? I'm not just aiming this question to users who may have experience in setting up such conferences (but are highly welcome). Rather how would you attack this if you was tasked with this?


Why NoSQL (Key-Value) storage become popular these days?

It seems that NoSQL concept not something very new and innovative, but these days become very popular. Why it become popular recently but not happen in the time when SQL is very popular?


How does the Microsoft Operations Framework define the role of Architects and architecture in the SDLC

I have been trying to get some architecture documentation passed at work. I've spoken to my CIO and he has said to me that if I prove to him that if we stay within MOF then we can implement it. I am not an architect, I am a software developer trying to become an architect. I downloaded the MOF documentation and did some searches for "architect" or "architecture" and really only found 3 very minor references. So I'm trying to find out more about the role of "Architecture" in MOF.


Short Deadline and QAing Yourself

When you have a short deadline to being with, and you're nearing the end of development, would you rather rush through coding to dedicate more time to QAing or keep your pace and possible have VERY little QA time? I am a sole developer on this project and I am the sole QAer as well. It is an extremely short time period I have to do this, notice to release. It is a very data-driven application and the data tends to be a little......user-inputed. I could spend days searching through intermediate processes, but it will take away from the little valuable time I have left. What do you recommend? Maximize QA time by rushing to finish? Or keep steady and cross my fingers on release? I don't like the feeling of a release version and just watching a new batch of data just waiting for it to snag and fail. Thoughts? Opinions?


UML Class diagram confusion

I am learning how to draw a UML class diagram and after reading a few tutorials, I am still confused about the appropriate usages of **Association type** (The clear diamond and black diamond). I understand their usages but I haven't got a very concrete understanding on when to use them and when not to. For example in the sample class diagram below, I would have thought that if **Customer** does not exist, the **Order** will be gone too but an association diamond was not being used. Hope someone can provide me with more explaination/examples on the usages of association types. Thanks. ![Sample ordering class diagram](http://i.stack.imgur.com/HQxT9.png)


Staying Relevant As a Programmer

I am interested in hearing how various people remain in the Software Engineering industry for so long in their careers. I am at a crossroads myself as I have worked with Network Engineering, Communications, VoIP, Parking, Government Contracting, and Military related projects. **Question: How does one manage to stay relevant as a programmer while bouncing between different engineering areas (Testing, Integration, etc) and remaining motivated in the profession?** Old questions:   1. Do you bounce between pure Software Tester, Integration, and back to straight coding?    2. How do you prevent being a one-hit wonder in this economy?    3. How do you find your passion ?


Does a data-driven application need a database?

This may be a terribly stupid question, but I can't find anything even related on Google (maybe I am not searching properly). I've been a developer for around a year now. I do desktop and web apps using Visual Studio at my day job and use a WAMP setup for freelancing. For storing data I have either used a database or not. What I mean is that if the program stores data for longer than the app runs then I use a database; that's all I know. Here's the thing, I have always worked with **existing** databases for desktop apps. I have never made a desktop app from scratch (the programming part yes, but the database has just always been there and on a local server somewhere for the app to pull from). I want to develop a desktop application that would need a database. My question is how does that process work? In providing the application do I supply the database, say SQLserver, or is there another way in which that works? To be clear: The application would need to store your typical customer information, files, possibly images, payment information - which I know a database would provide, but I do not know how that works once you sell and install the application. I know other applications do these sorts of things - quickbooks, email clients, etc. How do they do it with just an install?


How to close a bug that is no longer relevant

I'm currently on a medium-sized team of web developers. We're using jira for bug tracking. We're working on a product with frequent layout changes. A lot of times bugs are filed about a bug in the layout in some browser. Sometimes, by the time we get around to dealing with a low priority bug, the layout has already changed and it is no longer relevant.   * What should we close it as?   What I mean is how we should _treat_ these issues? While Jira is the bug tracking software we use, I'm more interested in how to handle these sort of issues in general.   * Does it even matter? (We _might_ return to the layout later, but it's very unlikely)


Should a User class only contain attributes and no methods apart from getters/setters?

I'm trying to improve my OOP code and I think my User class is becoming way too fat. In my program a user has rights over "lists". Read, Write, Update, Delete. So I made a User class               class User     {     protected $_id;     protected $_email;     protected $_username;     protected $_hashedPassword;          //...Various setters/getters          public function canRead(List $list){         //Database query verifies if user has READ rights     }          public function canUpdate(List $list){         //Database query verifies if user has UPDATE rights     }     //etc...     }        * Should canRead, canUpdate, canWrite, canDelete methods be moved to another class (UserAccessCheck or something...)?   * If not, should the actual SQL be moved into the List object (listCanBeReadByUser()) ?


Are there any online certificate/degree programs focused on Information Retrieval or Language Processing?

I'm a software engineer looking to try something different in my career and get into search indexes, information Retrieval or Natural Language Processing applications and systems. Where can I learn more about this stuff under a degree or certificate program?


iPhone App Store Release Question

I am developing an Application its purpose to view uploaded files on the host server, and it has a credentials that will be entered on the Login Page to authenticate the user. When I post my application to the App Store, how suppose apple is going to test, or at least view my application, when Apple needs enter a valid credentials that I am not suppose to know? It's private to my client.


Optimizing lifestyle and training

I am a college freshman who has recently discovered a passion for computer science. Having had my first lick of formal python training last semester, I have cast aside my previously hedonist way of life and tunneled my sights on becoming the most rounded and proficient programmer I can be. I know that I'm taking strides in the right direction (I've stopped smoking, I've been exercising every day, I've taught myself C++ and OpenGL, and I've begun training in kung-fu and meditation), yet I am still finding myself struggling to achieve satisfactory results. I would like to be able to spend a good 3-4 hours every day burning through textbooks. I have the time cleared and the resources allocated. The problem lies in the logistics-- I have never taken anything seriously before. Recently I've realized that I am clueless when it comes to taking care of myself and gaining control of my mind, and it drastically hinders my productivity. My question is this: How can I learn to manage my time and take care of myself such that I can spend the maximum amount of time every day studying with steady concentration? Personal tricks would be key here: techniques you use to get yourself to sleep, a diet that yields focus, even computer break stretching routines or active reading techniques. Anything you could think of here would be great. I was a low-life in high school and I have the drive to turn my life around, I'm just quite a bit behind in the way of good habits :)


Simple explanation of Continuous Integration

How would you define Continuous Integration and what specific components does a CI server contain? I want to explain to someone in the marketing department what Continuous Integration is. They understand Source control - i.e. they use Subversion. But I'd like to explain to them properly what CI is. The Wikipedia Article never properly defines it, the Martin Fowler article only gives the following, which is basically a tautology followed by a vague explanation of 'integration': > Continuous Integration is a software development practice where members of a > team integrate their work frequently, usually each person integrates at > least daily - leading to multiple integrations per day. Each integration is > verified by an automated build (including test) to detect integration errors > as quickly as possible. **Update** : I sent them this image, I couldn't find a simpler one. ![enter image description here](http://i.stack.imgur.com/Cy2Ny.jpg) **Update 2** : Feed back from the marketing chap (for the time when there was 3 questions): > I actually like all 3 answers – for different reasons. I feel like logging > in just to thank them all! Obviously he can't - so thanks on his behalf :) **Update 3** : I've realised looking at the Wikipedia article that it does contain the principles which, when you take just the headings, is quite a good list:   1. Maintain a code repository   2. Automate the build   3. Make the build self-testing   4. Everyone commits to the baseline every day   5. Every commit (to baseline) should be built   6. Keep the build fast   7. Test in a clone of the production environment   8. Make it easy to get the latest deliverables   9. Everyone can see the results of the latest build   10. Automate deployment


Balancing dependency injection with public API design

I've been contemplating how to balance testable design using dependency injection with providing simple fixed public API. My dilemma is: people would want to do something like `var server = new Server(){ ... }` and not have to worry about creating the many dependencies and graph of dependencies that a `Server(,,,,,,)` may have. While developing, I don't worry too much, as I use an IoC/DI framework to handle all that (I'm not using the lifecycle management aspects of any container, which would complicate things further). Now, the dependencies are unlikely to be re-implemented. Componentisation in this case is almost purely for testability (and decent design!) rather than creating seams for extension, etc. People will 99.999% of the time wish to use a default configuration. So. I could hardcode the dependencies. Don't want to do that, we lose our testing! I could provide a default constructor with hard- coded dependencies and one which takes dependencies. That's... messy, and likely to be confusing, but viable. I could make the dependency receiving constructor internal and make my unit tests a friend assembly (assuming C#), which tidies the public API but leaves a nasty hidden trap lurking for maintenance. Having two constructors which are implicitly connected rather than explicitly would be bad design in general in my book. At the moment that's about the least evil I can think of. Opinions? Wisdom?


Evaluating JSON from popular auto-suggests

I was evaluating the various ways in which the big guys implement auto suggest. These are my observations.(Search string used was "ab") Questions towards the end. Yahoo tries something like this, where the response was a JSONP. Response is readable and serves the purpose. ## Yahoo's response               yasearch({"q":"ab ","gprid":"Y435dN7TRFqnYqQhnBueJA","f":["k","m"],"r":[["ab de villiers",0],["ab exercises",0],["ab king pro",0],     ["ab infi-net internet banking",0],["ab mujhe raat din",0],["ab workouts",0],["ab mp3",0],["ab meri bari",0],["ab ke baras",0],["ab meri baari",0]]})      Bing had a similar approach. Returns an "if" block, sa_inst.apiCB() seems to be a function which would process the JSON. Again response is readable and legit. ## Bing's response               if(typeof sa_inst.apiCB == 'function') sa_inst.apiCB({"AS":{"Query":"ab","FullResults":1,"Results":[{"Type":"AS","Suggests": [{"Txt":"abp news","Type":"AS","Sk":""},      {"Txt":"abbottapp.abbott.in","Type":"AS","Sk":"AS1"},{"Txt":"abt travels","Type":"AS","Sk":"AS2"},{"Txt":"abp ananda","Type":"AS","Sk":"AS3"},     {"Txt":"abhibus","Type":"AS","Sk":"AS4"},{"Txt":"abp maza","Type":"AS","Sk":"AS5"},  {"Txt":"abb","Type":"AS","Sk":"AS6"},     {"Txt":"aboutgoogle","Type":"AS","Sk":"AS7"}]}]}} /* pageview_candidate */);      Now comes Google. Response is sent as 2 JSON objects(separated by /""/). Most of it is unreadable. ## Google's response               {e:"XteVUYKqDoKHrAfdz4D4Aw",c:0,u:"https://www.google.com/s?hl\x3den\x26gs_rn\x3d14\x26gs_ri\x3dpsy-ab\x26tok\x3dvsobDhICRmdcnY7ayKTGng\x26cp\x3d2\x26gs_id\x3dd\x26xhr\x3dt\x26q\x3dab\x26es_nrs\x3dtrue\x26pf\x3dp\x26output\x3dsearch\x26sclient\x3dpsy-ab\x26oq\x3d\x26gs_l\x3d\x26pbx\x3d1\x26bav\x3don.2,or.r_cp.r_qf.\x26bvm\x3dbv.46751780,d.bmk\x26fp\x3d2647af89de6b6c61\x26biw\x3d1366\x26bih\x3d453\x26tch\x3d1\x26ech\x3d2\x26psi\x3dVteVUcYuzOGsB6LpgdgB.1368774484351.1",p:true,d:"[\x22ab\x22,          [[\x22ab\\u003Cb\\u003Ec\\u003C\\/b\\u003E\x22,0,[]],[\x22ab\\u003Cb\\u003Ec news\\u003C\\/b\\u003E\x22,0,[]],[\x22ab\\u003Cb\\u003Eercrombie\\u003C\\/b\\u003E\x22,0,[]],[\x22ab\\u003Cb\\u003Ecya\\u003C\\/b\\u003E\x22,0,[]]],     {\x22j\x22:\x22d\x22,\x22q\x22:\x22t8z6h8KhWvbkEX6xablxgYxDUq4\x22,\x22t\x22:     {\x22bpc\x22:false,\x22tlw\x22:false}}]"}     /*""*/     {e:"XteVUYKqDoKHrAfdz4D4Aw",c:-1,u:"https://www.google.com/searchdata?hl\x3den\x26gs_rn\x3d14\x26gs_ri\x3dpsy-ab\x26tok\x3dvsobDhICRmdcnY7ayKTGng\x26cp\x3d2\x26gs_id\x3dd\x26xhr\x3dt\x26q\x3dab\x26es_nrs\x3dtrue     \x26pf\x3dp\x26output\x3dsearch\x26sclient\x3dpsy-ab\x26oq\x3d\x26gs_l\x3d\x26pbx\x3d1\x26bav\x3don.2,or.r_cp.r_qf.\x26bvm\x3dbv.46751780,d.bmk\x26fp\x3d2647af89de6b6c61\x26biw\x3d1366\x26bih\x3d453\x26tch\x3d1\x26ech\x3d2\x26psi\x3dVteVUcYuzOGsB6LpgdgB.1368774484351.1",     p:true,d:"{\x22snp\x22:1}"}     /*""*/        1. Are those hex codes or what do you call them?   2. Why is there a need for 2 objects to be returned?   3. What is the need for encoding the JSON?   4. Which is the ideal format for JSON among these three? Any thoughts on this are welcome.


How can I keep directories in sync

Context: I'm developing software that reproduce the functionality of Windows Home Server Drive Extender, where users use multiple hard disks to prevent data loss.   The software exists since Dec-2009, but it has issues with renames (detailed below). I have a directory, dirA, that users can work in: they can create, modify, rename and delete files & sub-directores in dirA.   I want to keep another directory, dirB, in sync with dirA.   The goal is to have a backup of all the files in dirA, in case the drive it's on fails (dirB would be on another drive). What I'd like, is a discussion on finding a working algorithm that would achieve the above, with the limitations listed below. Requirements:   1\. Something asynchronous - I don't want to stop file operations in dirA while I work in dirB.   2\. I can't assume that I can just blindly rsync dirA to dirB on regular interval - dirA could contain millions of files & directories, and terrabytes of data. Completely walking the dirA tree could take hours. Those two requirements makes this really difficult.   Having it asynchronous means that when I start working on a specific file from dirA, it might have moved a lot since it appeared.   And the second limitation means that I really need to watch dirA, and work on atomic file operations that I notice. Current (broken) implementation:   1\. Log all file & directory operations in dirA.   2\. Using a separate process, read that log, and 'repeat' all the logged operations in dirB. Why is it broken:               echo 1 > dirA/file1     # Allow the 'log reader' process to create dirB/file1:         log = "write dirA/file1"; action = cp dirA/file1 dirB/file1; result = OK     echo 1 > dirA/file2     mv dirA/file1 dirA/file3     mv dirA/file2 dirA/file1     rm dirA/file3     # End result: file1 contains '1'     # 'log reader' process starts working on the 4 above file operations:         log = "write file2"; action = cp dirA/file2 dirB/file2; result = failed: there is no dirA/file2         log = "rename file1 file3"; action = mv dirB/file1 dirB/file3; result = OK         log = "rename file2 file1"; action = mv dirB/file2 dirB/file1; result = failed: there is no dirB/file2         log = "delete file3"; action = rm dirB/file3; result = OK     # End result in dirB: no more files!      Another broken example:               echo 1 > dirA/dir1/file1     mv dirA/dir1 dirA/dir2     # 'log reader' process starts working on the 2 above file operations:         log = "write file1"; action = cp dirA/dir1/file1 dirB/dir1/file1; result = failed: there is no dirA/dir1/file1         log = "rename dir1 dir2"; action = mv dirB/dir1 dirB/dir2; result = failed: there is no dirA/dir1     # End result if dirB: nothing!


How do I move a client from UI mockups to a set of real requirements?

Say you are given a mock-up of 25 screens of the visual states of your application. The expectation is that this is enough for us to be confident we can develop and hand it to the original stakeholder or customer as a finished application, and they will be satisfied. Naturally, you're going to end up asking the stakeholders many questions over again that were used to come up with the UI, which is wasteful. However, I have many many times found that this is very much not enough, in the course of developing the application the requirements become blurred by the fact that we are replicating an interface and in the end the customer is not as happy as they first seemed when we asked them for all the info to create the UI. I am just not sure what else to ask for, I have tried to be specific and ask for requirements and an understanding of the overall goal, but I don't know what I should ask for. If I just start now, lots of time is going to be wasted re-hashing all the info that lead up to the UI and during this phase many important reasons the customer originally had will be lost. How can I get people to understand that we cannot lock down requirements based on UI mock-ups by asking for something actionable they can create for me? What would you ideally start with in order to properly execute the task of developing an application for end users?


How to make your JavaScript private?

I wanted to know if there is a way to make your JavaScript private from client side?


Where to find resources to write a program like sandboxie?

Sandboxie is a program that will let you read from the hard drive, but when you try to write back it will redirect the file to a separate container. I would like to learn how to do something similar. I do not know what terms or libraries to look for. Is there a file redirection API in windows? Is there a open source library that can help me out with the down and dirty pieces? I know there is likely no API in windows to do this out of the box and I will likely need to write my own driver. I don't mind writing a driver, this project is to be a learning experience for me and I kind of want to learn how to do it. Any help would be greatly appreciated. * * * **Clarification:** I am trying to replicate the behavior of sandboxie, IE: launching a unmodified exe of another program and redirecting the way it handles file IO. What I want to do is basically have a launcher that will turn my SSD disk in to a cache for my spinning drive. I launch my app and it in turn launches another app. Any resources the other app requests will be passed through to the spinning disk, but also copied to the SSD. Any further reads and all writes will be done to the SSD copy of the file. Once the other program closes, my app will flush the writes from the SSD back to the spinning disk. I could technically do this through sandboxie and some scripting tricks but I want to learn the internals of file IO and how to do the redirection. * * * **Clarification 2:** I no-longer have a issue using a prebuilt library, as long as it is free (as in beer). It does not need to be open source or free (as in speech) .


Approaches to updating and adding features to PHP websites

I would like to know how people approach with developing their websites that are in production. For example:-   1. How do you manage versions, etc.   2. Also, do you create a subdirectory within the production server and work there or do you use any other environment and roll the updates there   3. Do you have any special management software where you keep notes, tips, deadlines, etc. I am asking this because I have a website which I would like to add new features to. But that website is in production. So, what are your suggestions on how you would update your websites and add new features? I use PHP with Apache on CentOS


At What Point Should You Start To Think About Performance?

As I'm building applications I find myself constantly asking if this is best way to perform or implement a certain functionality. Often, I'll post questions on stackoverflow or another forum desiring feedback only to receive comments about how not to "put the cart before the horse" regarding performance. Do most programmers really not think about performance until the application is finished, or performance is absolutely unacceptable?? I mean, I understand that development environments differ from production environments and that you shouldn't completely rely on the results from your dev laptop...but, there are practices and techniques that yield better performance than others. Is it bad practice to consider performance throughout the development process? Should I push these considerations off until performance actually is tanking?? **Update** Just to be clear, I'm talking about the situation where you are considering or just about to work on some piece of functionality. You know there are several ways to implement it, but you're not quite sure how well each implementation will scale. Also there might be several techniques you're not even familiar with. On a small scale any of the approaches would probably be adequate, but on a larger scale some will keep up and some won't. Often when I ask for opinions or guidance the response is: worry about it later...


Real programmers use debuggers?

If experienced programmers actually ever use debuggers, and if so under what circumstances. Although in the answer to that question I said "months" ago I probably meant "years" - I really don't use a debugger. So my specific answerable question is under which circumstances would you, as an experienced programmer, use a debugger?


COBOL program or JCL?

I have to perform 3 tasks: an insert, a delete, and a write I'm not sure what the best way to do this is. My mainframe program design skills aren't too tight, so I was looking for advice. Could I avoid doing a COBOL program for this? The way I see it, I just need JCL that executes SQL statements. If I design my statements correctly, then they should be able to preform tasks 1 and 2 this way. But I'm thinking I may need to have a COBOL program to write to a file? If I do, would I just run through database with a cursor, then process each row and take appropriate action based on the row? Each task seems similar, but the queries are different and produce different results, so the SQL statements are very different. But they are all working with the same table. Task 1:   * preform SQL query   * For each row that the query picks up      * Insert a new row based on that row Task 2:   * perform SQL query   * For each row that the query picks up      * delete the record Task 3:   * perform SQL query   * For each row that the query picks up      * Write that record to a file


What to focus on when separating a monolithic codebase into separate (NuGet) packages?

I work on a fairly large web application. The main solution containing the web application project has over 100 projects. The average build time of that solution is 2 minutes on a 12 GB quad-core machine with an SSD. We are looking into ways we can improve our deployment process. I am going to work on a proof-of-concept to move code out of the main source repository into separate repositories, to be built and packaged as NuGet packages. These will be hosted on an internal feed and installed into the main solution from there. For the proof-of-concept I want to focus on the most important/challenging aspects. I have some experience building stand-alone libraries, and of course the experience of working on this monolithic codebase. I would like to ask you: What should I focus on for the proof-of-concept? * * * Some areas I think I should experiment with:   * Versioning   * Assembly binding   * Unit testing   * ILMerge to merge dependencies   * Debugging   * Performance PS. Automating the building and publishing of packages to the NuGet repository is not my responsibility.


I'm Having Trouble Keeping Up

I'm almost 39 and have been developing for 17 years. The new 20-somethings seem to know newer ways of doing things and it's taking me A LOT longer to get up to speed. I used to do .NET but I took a new job where they do mostly Java and wow, it's a lot harder! What should I do?


How do you represent container classes in UML?

When drawing out quick class diagrams, I'm often at a loss how to represent classes that are used just to pass data around between various parts of the program. I've been putting them out in the middle of nowhere, so that other people can see what the class in the parameters/returns is. Is this the correct way to do it? _(They look awefully lonely out there by themselves.)_


Time management training programs for developers

My company asked me to set up a personal goal of improving time management. This means keeping up with time reporting, revising estimates and being responsive to email inquiries. Of course, I have read books on the topic and have tried numerous systems. I just get absorbed in coding to the exclusion of administrative tasks. I think most of it is an attitude or a psychological issue unrelated to actual time management. The company is willing to pay for it as professional training, so I'm looking for a recognized and effective training program. I would like something that doesn't just "fix" a problem, but potentially makes me more "promotable". I'm valued for my technical skills, but management is frustrated by my poor fit into overall planning and I understand that it's my main obstacle to handling more responsibility. What programs are out there that are tailored to effective and timely software development? I wonder if any project management training would be applicable, but something more specific to a software developer, or technical lead perspective would be great. Thank you.


Designing Subclasses for an abstract base class in C++

I'm doing a small assignment in C++ where I have to use concepts like virtual functions and inheritance in a domain of my choice. I'm implementing the prototype for a package manager in Linux. I have the base class Package, this has attributes like package_id, name, version, dependencies etc. There are two types of packages MetaPackages and ConcretePackages which differ in the way they must be installed and removed. I am thinking of declaring the methods install and remove in Package as virtual. While storing these packages in a datafile can I somehow know if the stored package is Meta or Concrete. I'm not sure as to how I should best design this. Can anybody point me to a resource so that I can better learn this stuff. We have Grady Booch in our curriculum and honestly it's a pain to read much less comprehend.


What are the ways to Promote android App

This is not kinda Tech question, But can anyone tell me what are good ways to Promote app other than Market.


Office arangement - comfort vs. teamwork?

Our team works in an open-space office. Luckily the cubicles are quite big (L shaped tables for everyone!), there is quite a lot of space so we are not sandwiched. Without going into further detail, there are comfortable spots (window), normal spots and stupid spots (near the corridor). * * * Until recently, the development team of twelve engineers was **seated** so that all types of spots were occupied and we were all **close together**. In the old arrangement, **verbal communication was very easy** \- half of the team was withing talking distance. The other half was like ten steps away. Often times I could ask, discuss, solve problems without leaving the cube. Most of the communication is work related, no bullshit or mental masturbation that would unnecessarily distract others. * * * Now we have moved to another part of the building and have larger space to occupy. At this point, everyone could pick their spot. Naturally all stupid spots are left empty (for the poor newcomers to occupy bwehaha). In the new arrangement, **the development team is stretched** across the floor and some of the key engineers are seated 'far' from each other - definitely not within talking distance. I have yet to experience how this works out but am getting concerned that team work and communication may have been traded for personal comfort. * * * Finally the questions... What do you think is better office arrangement? Such that allows for free verbal communication but trading for some developer's comfort, or such that potentially hinders verbal communication but makes developer's more comfortable in their spot? Or maybe it does not matter at all and we will evolve to be efficient in any arrangement? What is your personal experience? _Note - yes I read books and posts how workplace is important in our job. However in this case - we are all still in open space and the difference between the different spots are not really groundbreaking. So I'm thinking the little comfort that few developers gain is not worth the loss of easy communication._


Drawing Ellipse from a bounding box?

Does anyone know a good algorithm for drawing an ellipse from a bounding box?               draw_ellipse(int s1, int s2, int s3, int s4, color c);       I don't need something optimized to incomprehendable , unreadable efficiency. Just something good enough to use for a simple drawing api. You can provide the algorithm in your answer in all programming languages or even pseudocode, but I would prefer it if you use C++ or a C++-like syntax.


2 closest points between 2 rectangles

On a 2D plane, I have 2 rectangles. I want to find the closest pair of points (one on each rectangle), which are closest to each other. By points I mean the corners of the rectangles. And no, they do not overlap. Is there any way to do that other than checking all the distances between all the combinations of points and finding the smallest one?


Question regarding ExtJS 4 GPL/commercial license

I am currently in the process of selecting a widget framework to be used for a new project. Current choices are Dojo/ExtJS4. We are leaning on ExtJS4 but might have some issues with the licensing. From the Sencha license page: > Our open source license is the appropriate option if you are creating an > open source application under a license compatible with the GNU GPL license > v3. However on the GPL FAQ: http://www.gnu.org/licenses/gpl-faq.html#UnreleasedMods > **A company is running a modified version of a GPL'ed program on a web site. > Does the GPL say they must release their modified sources?** > > The GPL permits anyone to make a modified version and use it without ever > distributing it to others. What this company is doing is a special case of > that. Therefore, the company does not have to release the modified sources. > > It is essential for people to have the freedom to make modifications and use > them privately, without ever publishing those modifications. However, > putting the program on a server machine for the public to talk to is hardly > “private” use, so it would be legitimate to require release of the source > code in that special case. Developers who wish to address this might want to > use the GNU Affero GPL for programs designed for network server use. Seems **contradicting** on what they have on **Sencha's** licensing page. Moreover, the webapp will be deployed on the cloud and will offer a subscription model. I've read that this is the so called **ASP loophole** and that the **Affero GPL** was made to address this. The project will have multiple modules, but certainly there would be backend/integration and frontend modules. The **frontend** will just **consume exposed REST services** and will be an entirely **different application**. The question is, would there be any license issues if we use the **GPL** version and willing to offer the source code ( **frontend module only** ) which uses ExtJS for our future clients?


Retrieving maximum value from a range in unsorted array

I have an _unsorted array_. I have queries in which I give a range and then the maximum value from that range has to returned. For example:               array[]={23,17,9,45,78,2,4,6,90,1};     query(both inclusive): 2 6     answer: 78      Which algorithm or data structure do I construct to quickly retrieve maximum value from any range. (There are a lot of queries) **EDIT:** This is indeed a simple version of the actual problem. I can have the array size as large as 100000 and the number of queries upto 100000. So I definitely require some preprocessing which'll facilitate a fast query response.


Why should I should url routes to the user in a single page application?

Why a single page application is a desktop client replacement why should I show certain url`s in the url bar of the browser. Why is mysite.com not enough. My question to you guys is now: What are the reasons and advantages for the user to show such an url like mysite.com/customers/3 Are there any reasons like the user wants to be able and bookmark a site and this would need an URI ?


Is there any situation when there's no alternative to instanceof?

It seems to me that `instanceof` comes from the land of functional programming and is a watered down version of _pattern matching_ and that the OO altenative to it should be dynamic dispatching. In OO languages (think Ruby), is there any situation where `instanceof` is the only solution? I can't think of any myself, especially in Ruby where you can patch any class with any methods you like.


need explanation on amortization in algorithm

I am a learning algorithm analysis and came across a analysis tool for understanding the running time of an algorithm with widely varying performance which is called as amortization. The autor quotes " An array with upper bound of n elements, with a fixed bound N, on it size. Operation clear takes O(n) time, since we should dereference all the elements in the array in order to really empty it. " The above statement is clear and valid. Now consider the next content: "Now consider a series of n operations on an initially empty array. if we take the worst case viewpoint, the running time is O(n^2), since the worst case of a sigle clear operation in the series is O(n) and there may be as many as O(n) clear operations in the series." From the above statement how is the time complexity O(n^2)? I did not understand the logic behind it. if 'n' operations are performed how is it O(n ^2)? Please explain what the autor is trying to convey..


Is parsing a submitted JSON object safe?

I have a RESTful API, built in NODE.js that does what you would expect it to: consumes data and then makes it accessible. Currently, data being submitted to my server is nested form data:               data[0][username]=...     data[0][email]=...     data[0][phone]=...     ...     data[12][username]=...     data[12][email]=...     data[12][phone]=...      or as a query string               data[0][username]=...&data[0][email]=...&data[0][phone]=...      SO when I parse it on the server, I get a JS array of objects with those particular fields. What I am wondering is, is it safe for me accept a string that I can JSON.parse and the process it?               data=(some stringified json object)      I am unsure if it's possible for malicious code or anything to be included in the JSON object that would blow up my server once run through a parser Thanks.


Clojure state and persistence

I'm learning Clojure to see if it's something I can leverage at my current job, and more importantly, how I can convince my bosses that Clojure has a 'killer feature' over java that makes it worth the investment1. The feature that I'm guessing most clojure evangelists would tout is **state management and concurrency**. The example that I see often in blogs and books is an account balance that’s being updated by multiple threads. Clojure’s state management can always cleanly ensure that the balance will be accurate regardless of the number of threads reading and writing that value. In practice, though, an application would never allow an account balance to live only in memory, it would have to be persisted outside of the JVM (probably in a database) for two hopefully obvious reasons:   1. If the app goes down the database will need to accurately reflect the latest state for recovery. For this reason the database cannot be asynchronously updated, and all reads would have to block until the database update is complete.   2. If other applications are reading or manipulating the account balance (maybe because we’ve scaled our app out to several servers), that balance would need to be kept in sync between all instances. **Can Clojure’s state management handle situations like this elegantly?** For instance, given scenario 2 above, _all_ reads of the account balance would first need to check the database to get the value, and if the database is locked, it would have to block until the correct value is available, no? It’s great that Clojure handles my in-memory concurrency very elegantly but if that elegance can’t be extended to external state then do I really gain anything? 1(note that things like expressiveness, elegance, etc. are rarely considered killer features by mgmt.)


Which software development practices would you recommend non-programmers implement in their fields of work?

Say you had to give a talk to non-programmers who were looking to learn something from software development that they could apply to their own functions. **Question** : What practices would you preach? Assume the jobs involve taking basic technical building blocks and combining them in creative ways to solve user-specific problems. **Example** : I'm a corporate financial analyst. I'd have loved it if a software development person taught me about the following ideas when I was younger:   1. **Orthogonality** has helped me think about independent analytical tools that can be reused more easily (vs. huge integrated analytics that break the second one piece of the tool is changed).   2. **Code to an interface, not an implementation** has helped me think about defining interfaces to my spreadsheets that aren't as dependent on things like independent cell locations, etc.   3. **Test-driven design** has helped me to test my analytics on test cases before I roll them out.


Is event chaining considered good practice?

From time to time I've encountered scenarios where several complex conditions need to be met prior to triggering an event. Furthermore, most listeners also run additional checks to determine the course of action. This got me thinking whether a better solution would be to think in terms of smaller events and let them trigger inside each other. Chaining events would allow me to weave in any additional listeners later on with fairly low effort (possible violation of YAGNI?). My code would consist of simple easily understood elements, which shouldn't be difficult for others to understand. However, the possible downsides to this solution would be the fact that should something happen to go wrong in the chain (e.g false event triggering due to human error), it would be quite difficult to catch the bug. Is event chaining a good ideaTM? If not, what are the alternative methods to keep event related code getting cluttered?


Why is spring so good for Java middleware development?

I'm planning on doing some Java web development in my spare time to learn a new set of programming skills, and just want to survey opinion on why Spring is so good for middleware development? What are the key features and advantages of using this over, say struts or writing server pages?


What are some good assignments for an introductory course on concurrent programming?

I am teaching a course which involves introducing the students to the concept of threads and concurrent programming. I am in search of programming assignments that can gently get them to accept the technique as a part of a programmer's essential toolkit. A good assignment would be to implement a program that   * is impossible to implement sequentially, or shows great increase in efficiency when parallel processing is introduced.   * does not overly rely on the introduction of complicated unrelated concepts. This rules out most of the Wikipedia example list of Embarrassingly parallel problems \- even the Mandelbrot set requires the students to know about imaginary numbers, which I can not assume.   * does not seem contrived. Optimally, the assignment would not seem like a stretch useful only for the introduction of the concept. What would an example of such a program/algorithm be? In case it matters, the assignment will be in Java. The students are around the age of 18, with at least a year of solving simple programming assignments behind them (they are familiar with control flow, loops, most common datatypes, OOP, simple GUIs) but so far have little experience with large software projects or usual computer science subjects (such as recursion and algorithm analysis).


Trace code pascal

I haven't worked with Pascal so far, and my problem is understanding the recursive aspects that prm assignment operators and how the final (correct) value is derived. Would someone please explain that line for me.               Program test(output);          FUNCTION prm(az:integer) : real;     begin         if az = 1 then             prm := sqrt(12)         else             prm := sqrt(12*prm(az-1));     end;          begin         writeln(prm(30):0:2);     end.


One Scheduler vs. Many Schedulers

I've been using a single scheduler to handle all my scheduled tasks (Quartz.Net). I'm starting to rethink how this operates because if I need to update 1 task, I have to stop the entire process, release the update, and start it back up. My Question: Is it better to have many Windows Services running individual tasks (or groups of similar tasks) or 1 Service running all of the tasks (my current set up)?


How should I prepare for a coding phone interview?

I'm going to write code during a phone interview in the next few weeks. The interviewer and I will use a collaborative text editor to both view the code. I have a few questions since this is my first time writing code during a phone interview:   1. What are common **questions** asked during this type of interview?   2. What are common **gotchas** in this situation? (for both interviewer and candidate)   3. Does the **interviewer** commonly **write code** too? (perhaps a function w/ an empty body) Any other tips and advice is greatly appreciated!


Are computers just means to an end, or can they contribute to the productivity and creativity of programmers?

This is not a question with a single answer, but I am fascinated by the diversity of computer set-ups in the office. Some people work on ancient machines that are absolute donkeys with CRT monitor, whereas others have really complex and elaborate configurations that would make Forex traders jealous. To add to the intrigue, in a recent job interview I had, the employer stressed several times that "modern high-spec workstations" were provided to developers, including access to latest gadgets in the mobile and tablet world. While this seems like a no-brainer, majority of large companies I encountered don't exactly pump cash into internal technology provisioning, or advertise the kind of hardware they provide to employees. What are your experiences and opinions on this? Can computers that are not up to the task really be severely detrimental to productivity of programmers? At the end of the day, for companies, it's up to the cost/benefit ratio; Does it make sense to equip IT staff with latest and greatest? Technology is becoming more and more pervasive in everyday life. If a company doesn't keep up, how does that reflect on it? This is a topic that interests me personally, but I also believe it should be examined in more detail. In addition to opinions expressed here, should you wish to help formalize some research in this area, you can take 5 minutes of your time and fill out the survey at the link below. Thanks in advance! :) http://edu.surveygizmo.com/s3/508308/Workstations-and-productivity


Integration tests across a 3-tier .NET solution

I have a 3-tiered .NET solution.   1. Database (SQL SERVER 2008)   2. Web Service (SOAP Service - *.asmx)   3. WPF Client I am comfortably writing Unit Tests within (3) The Client.   I am currently working on writing tests between (1)Database & (2)Service. My question is, what are some useful ways to run integration tests across all 3 tiers. I would like this to run locally in my Test Runner, as well as part of the integration test. Primarily, I am stuck on how to have a transient (setup-teardown-able) (2) Web Service & (1) Database that can be tested with (3) Client code as part of a full integration test.


Tips for organizing a "Hack Day" at work

**I was thinking about organizing a "Hack Day" at work** , think google's 20% time but just for 1 whole day (maybe just once per year or quarter). Similar to Atlassian Fedex Days I'd like for all the developers in our group to have a free day to work on any kind of project / technology they like and then show it off. Ideally, developers have fun programming without worrying about their day to day projects or technology restrictions and at the same time we can generate some cool ideas that could turn into future projects or patents etc. **Do you have any tips / suggestions for me?**   \- Has anyone organized something similar before?   \- Any pitfalls to watchout for or tips for success?   \- Any resources I should request to make the day go better? day more productive /enjoyable?   \- Should I encourage / enforce groups? Or is it better for people to work on things individually?   \- What can I use to persuade management to support this?


Scope vs Visiblity vs Lifetime vs Accessibility vs etc

I have been trying to understand what it means to say "scope of a named entity". In reading about scope, there are terms like visibility, lifetime, accessibility and more that are used. What is confusing is the fact that the terms are at times used distinctly and at times interchangeably. Quoting from this IBM article: > scope is... the largest region in which the name potentially is valid. Fair enough. But then what does this mean - > The visibility of an identifier is the region of program text from which the > object associated with the identifier can be legally accessed. Is visibility related to accessibility? Further it goes on to say > Scope exceeds visibility when a duplicate identifier is used in an inner > declarative region, thereby hiding the object declared in the outer > declarative region. The original identifier cannot be used to access the > first object until the scope of the duplicate identifier (the lifetime of > the second object) has ended. Does this mean scope and lifetime are the same things? Do these terms like scope fundamentally mean the same thing in C++ as it does in say PHP or Python or even Java. Or they could mean different things conceptually depending on the language you are working in. The article I have quoted is C/C++ related, but I want to understand the terms in the general sense.


What should every programmer know?

Regardless of programming language(s) or operating system(s) used or the environment they develop for, what should every programmer know? Some background: I'm interested in becoming the best programmer I can. As part of this process I'm trying to understand what I don't know and would benefit me a lot if I did. While there are loads of lists around along the lines of "n things every [insert programming language] developer should know", I have yet to find anything similar which isn't limited to a specific language. I also expect this information to be of interest and benefit to others.


Coarse-grained views on server vs fine-grained views assembled on client vs fine-grained views with batching

I've currently got a browser talking via an "API" to the server. API is scare quoted because the API really wouldn't support another user interface very well, because it consists of every call our UI happens to need, in the form it happens to need it, and nothing else. Which could be fine. However, we are starting to have calls along the lines of "GetUserSummaryData", "GetUserHisFriendsAndHisPurchases", "GetUserAndHisPurchases", etc. Note that on the server a more reasonable fine-grained API is written, (and the current API calls just cause the server to wire those together) it's just that what is exposed to the UI matches _exactly_ what it needs at that particular moment. The justification for the current approach is that going from "I need those 6 things at the moment" to "I need to make 6 calls and put the data together" has to happen _somewhere_ , and if you do it on the server then the browser can make 1 course-grained call, vs. the alternative of either making 6 calls and taking a (significant) performance hit, or else figuring out some system of batching the 6 calls (including dealing with the issue of dependencies, possibly by having the call batching mechanism smart enough to say "the 3rd parameter of call 2 should be this part of the JSON response object from call 1" and having the server understand that). Doing things on the server as we are does make it pretty much impossible to write another UI without making more customized views on the server to support it. But we have no reasonable current expectation that someone without access to the server would want to write another UI. Is continuing to make really customized views on the server as the only "API" the right approach, and if not what would be better?


Are certification test engines really what they claim?

I am studying for my MCPD certification from microsoft. There are plenty of resources for these certs. However I had someone reccomend CertMagic recently. With a little research I quickly discovered that there are quite a few sites like this. So i have two questions: 1) Will these sites really help ? I don't want to memorize exam answers. I want my certification to be a true representation of my skills in that subject. 2) If these sites really are helpful, which do you find to be most helpful ?


what is the correct/best way to populate a secondary property of an MVC Model and how do I unit test it?

I'm building an web application is ASP.NET MVC 3 (.NET 4) and trying to unit test as much as possible. I have a controller action `Details(int customerId)` which should display a view who's model is a `Customer`               public class Customer     {         public int? Id { get; set; }              [Required]         [Display(Name = "Customer Name")]         public string Name { get; set; }              ...              public IList<CustomerComment> Comments { get; set; }     }       The controller action looks like this:               public ActionResult Details(int customerId)     {         var model = service.Get(customerId);         if (model != null)             return View(model);              return RedirectToAction("Index");     }      As you can see, this directly calls `service.Get`               public Customer Get(int id)     {         return repository.Get(id);     }      The service has an `ICustomerRepository` injected in it and calls the `Get` method of that repository directly. My question regards populating the `Comments` collection. **How/where should the`Comments` be populated and how do I test it?** The `Details` view is the only place that displays the list of comments, so it needs this data. I can see two ways of populating this.   1. Do it all in the `ICustomerRepository.Get` implementation.   This might lead to a situation down the line where I'm using Get but not displaying the comments. This would mean I'm doing an _expensive_ (maybe) `JOIN` but not using the results.   2. Have an `ICustomerCommentsRepository/Service` injected into either my Service or Controller which is used to populate the `Comments` when required. Is there a preference? Secondly, how would you test this? In the second instance, I could assert that `ICustomerCommentsRepository.Populate(Customer customer)` is called on my mock by the Controller/Service. In the first situation all the responsibility lies in my repository so in a Unit Test sense, is untestable as the concrete implementation used in the actual app needs to speak to the DB and so is an integration test. Am I missing something? Would the `ICustomerCommentsRepository` be a bad idea?


Train for the job or train for the skill?

I'm in charge of hiring for a small java shop. We have a very limited hiring budget so we tend to pickup fresh grads cheap and spend time training them. I have found colleges and universities do quite an inadequate job these days and usually a lot of training is required. I train in 2 steps: a) Get them comfortable with Java conventions. b) Teach them programming concepts (again). Training ranges from 1 week to 1 month depending on the number of people we hire. My problem is that training them on Java I feel I rob them of the ability to _understand_ what they are doing. Colleges train them for C# so they never really understand what the code _translates_ to for the JVM or how the computer interprets this. I of course keep realizing this when I see blatantly inefficient code being laid down. My question is, if an employee will stick with the company for 3 years, is it better to train the employee for the job so they can start coding in Java or is it better to get them comfortable with Java and pick-up languages like Python, C/C++, Prolog, LISP to teach them what they are really doing? (Keep in mind there will be a learning curve again if I change languages). So over 3 years, what do you feel will pay-off more? The suits clearly say train for the job since iteration is high. **UPDATE** Bottom line is that they will be working on a product that is effectively a development environment in Java. Basically a BPMN based product that lets you specify the flow of an application graphically and use stock features to add functionality and lay-down custom java code as needed.


Method to store some site content data, allowing reusability

(Don't believe this is a "best practice" question as I believe there will be a _single better_ choice). I need to choose a data storage option to store specific site data to allow easy management and re-usability: _array; class; DB; Other;_ but am not sure which one would be adequate. The data in question is my _Services_ , which is a list of titles and descriptions. Example of the text: > **On-site SEO**   >  We provide On and Off site SEO, by careful keyword assignment and > placement, blah etc, etc blah etc, etc blah etc, etc blah etc, etc blah etc, > etc. > > **Logo Design**   >  We can provide clean and elegant logos suited to your current company > branding... blah etc, etc blah etc, etc blah etc, etc blah etc, etc blah > etc, etc blah etc, etc blah etc, etc blah etc, etc blah etc, etc blah etc, > etc. Each title is no more than 5 words, and descriptions are about 70 words/350 chars, and I have about 20 titles and descriptions. As services can be changed, retracted, and new added, I want control over the data - more than just editing a view/template file where the raw output/HTML is done, because I:   1. Require the data to be reusable on different templates   2. Want the option to use only a part of each data, eg just the title(s) so a specific array index, or class method, DB table row, etc I'm reluctant use an array, given the size of the _Description_ text and number of services (20). And it might end up fiddly accessing a specific array value, having to know the exact key (the title), and the key being long.   I could use a multidimensional array, with the top level key being a simple reference, but it seems well overkill for the requirements. It seems a waste of a class as the data itself is static, and feel I'd be abusing the point of OOP a bit. I could use a DB, but the site doesn't require a DB for anything else currently, though am happy to implement one if worthwhile for this. The site is on a framework, loosely on MVC/P, so can implement anything easily. So, out of the options: array; class; database; (other?) which would be the most suitable for this scenario? The overhead difference is not an issue, as it'll be marginal enough between all three for my requirements (small site, good hosting etc). Access to said data will only be on a couple of pages, so having it in memory isn't a large requirement (AFAIK).


Platform Independency Vs Architecture Neutrality

Is it true that platform independency is more of a myth today? Because programmers look for efficiency and power over portability which have to be compromised to some extent when achieving platform independency. On the other hand architecture neutrality is welcomed because it provides a very powerful way to make a software which can dominate a particular operating system family. My question is: Lets consider a hypothetical situation where we have to pick either one of them.What should be compromised? Portability or Power? I know this question is a bit subjective,but I'm looking for your views in general. Thank you. **EDIT:** Is it right to accept a particular answer just for the sake of it,especially for a question that would be answered according to individual perspectives?


Has anyone used git as a runtime datastore in their application?

I used to work on a document workflow system, and it basically implemented a half-baked version control system for documents; using a database for versioning information and a filestore for the files. It was a lot of code, and hard to maintain. There were all sorts of bugs with locking and similar things, you name it. If I had to rewrite it from scratch, I would seriously consider using git as my data store. It occurred to me that I haven't read much about git (and most version control systems) being used in application implementations, as versioned data stores. What applications use git, or another VCS, behind the scenes for storing and versioning data?


Consuming JSON stream into AWS Database on the cheap

I'm working on a project that needs to consume a JSON stream (approximately 1MB / minute), and parse and insert objects into a database. Amazon's DynamoDB or SimpleDB seem like attractive options for this. Is there a web service that can run a very simple script to eat the data and put it in a database? I could use a worker on Heroku or Elastic Beanstalk, or even pure EC2, but I'd like to find a service that's much cheaper, due to the very low amount of bandwidth and CPU required. (Sorry for the crappy tags. I'm not even sure where to categorize this question.)


Practical mysql schema advice for eCommerce store - Products & Attributes

I am currently planning my first eCommerce application (mySQL & Laravel Framework). I have various products, which all have different attributes. Describing products very simply, Some will have a manufacturer, some will not, some will have a diameter, others will have a width, height, depth and others will have a volume. Option 1: Create a master products table, and separate tables for specific product types (polymorphic relations). That way, I will not have any unnecessary null fields in the products table. Option 2: Create a products table, with all possible fields despite the fact that there will be a lot of null rows Option 3: Normalise so that each attribute type has it's own table. Option 4: Create an `attributes` table, as well as an `attribute_values` table with the value being varchar regardless of the actual data-type. The products table would have a many:many relationship with the attributes table. Option 5: Common attributes to all or most products put in the products table, and specific attributes to a particular category of product attached to the categories table. My thoughts are that I would like to be able to allow easy product filtering by these attributes and sorting. I would also want the frontend to be fast, less concern over the performance of the inserting and updating of product records. Im a bit overwhelmed with the vast implementation options, and cannot find a suitable answer in terms of the best method of approach. Could somebody point me in the right direction? In an ideal world, I would like to offer the following kind of functionality - http://www.glassesdirect.co.uk/products/ to my eCommerce store. As can be seen, in the sidebar, you can select an attribute the glasses to filter them. e.g. male / female or plastic / metal / titanium etc... Alternatively, should I just dump the mySql relational database idea and learn mongodb?


Is there an efficient way to adapt data from a structure to another in c++?

I'm writing an interface between two configuration models that use different structures. While I know that there is no "magic" way to do the translation from a structure type to another, I wandered if there might be some best practices or an efficient/effective way to setup such a system. I think it's similar to how programs may manage different configuration structures accross versions. Here's a simple example: let's say we have a structure of type A which contains 3 parameters:               struct A {       int alpha;       bool beta;       bool charlie;     };      The second configuration structure share the same parameters, but in a different order, let's see structure B:               struct B {       union {         struct {           char beta : 1;           char charlie : 1;         } bit;         char field;       }       int alpha;     };      A simple program to convert an A to a B would be:               void convert(A const *aelem, B *belem) {           belem->alpha = aelem->alpha;           belem->bit.beta = aelem->beta;           belem->bit.charlie = aelem->charlie;         }      So, while this may seem fairly simple with such basic structures, I'm dealing with dozens of structures, each of one contains around 50 parameters. So do anybody knows of a good pattern to follow for such a problem ?


How can I have a shell script log into a remote server and execute imqcmd there?

I want to write a shell script to connect to the remote server and execute a command (any linux command). I am using linux and want to prepare a shell script which can login to the virtual directory server and execute a given command. I.e. if I want to execute the `imqcmd` command, how can I do this?


The best way to implement authorization for a REST API

We develop social-based applications for mobile. Every application consumes RESTful API web-services. When I implement login I usually store the username and password somewhere on device. Then I send them and as a response I get access to my profile. But I also know there's another way to do this. One somehow generates a token with a particular algorithm, and then send it instead of the username and password to gain access. How should I implement that? Should I send this token along with every other request than login?


Scenario to illustrate how unit testing leads to better design

For an internal training session, I'm trying to come up with a simple scenario that illustrates how unit testing leads to better design, by forcing you to think about things like coupling before you start coding. The idea is that I get the participants to code something first, without considering unit testing, then we do it again, but considering unit testing. Hopefully the code produced second time round should be more decoupled and maintainable. I'm struggling to come up with a scenario that can be coded quickly, yet can still demonstrate how unit testing can lead to better overall design.


Understanding Backtracking in C++

I have a good basic understanding of the fundamentals of C++, I also have an understanding of how recursion works too. I came across certain problems like the classic eight queens problem and solving a Sudoku with Backtracking. I realize that I'm quite lost when it comes to this, I can't seem to be able to get my mind around the concept of going back in the recursion stack and starting again in order to solve the problem. It seems easy with a pen and paper but when it comes to writing code for this, I'm confused on how to begin attacking these problems. It would be helpful if there were a tutorial aimed at beginners to backtracking or if there were a good book where this was covered. If somebody can shed light on this topic or give me some links to decent references, I'd be really grateful. And yes I do know that it would be easier in functional languages but I'd like to understand the implementation in imperative languages too.


How deep should we dive into testing different layers

We use Drupal 7 as our base CMS tool. For one specific product, something like an ERP, we've created sort of a non- drupal layer, to keep our specific business code in. It would be something like this:               -------------     |  Business | -> This would be our business specific code layer     -------------     |    Glue   | -> This is where we connect with the basic Drupal API as we need     -------------     |   Drupal  | -> This is Drupal API     -------------      We have the concept of `Repository`, which is a basic class that retrieves something from the database in the form of an `Entity` or a `ArrayObject` of `Entities`. This layer is connected to Drupal, since it needs access to the `db_query()` method, from the Drupal 7 API. Our whole `Business` layer is tested using `PHPUnit`, with 100% coverage. Now we are trying to test the `Glue` layer as well, the unit of the `Repositories`, their return values and parameters. In order to do that, we came to the conclusion that we would need to mock the `Drupal` database access API. But to do that, what would be the correct or best approach?   * Wrap the `db_query` function from `Drupal` into a class that could be mocked in the tests?   * Not test the `Repositories` at all?


How can I write byte[] to socket outputstream and specify the end of file?

I've googled 2 days straight and I can't find how to do this. I have an open stream between client and server, and client will send a JSON string (encrypted to bytes) to the server each 3 to 5 seconds. How can I write to the `Socket` `OutputStream` so that I can read each JSON string in the server. I'm guessing I need to specify some kind of end of file or something, but can't find any info on how to achieve this.


Why is a software development life-cycle so inefficient?

Currently the software development lifecycle followed in the IT company I work at is:   * The "Business" works with a solution manager to build a Business Requirement document   * The solution manager works with the Program manager to build a Functional Spec   * The PM works with the engineering lead to develop a release plan and with the engineering team to develop technical specifications   * If there are any clarifications required, developers contact the PM who contacts the solution manager who contacts the business and all the way back introducing a latency of nearly 24 hours and massive email chains for any clarifications   * By the time the tech spec is made, nearly 1 month has passed in back and forth   * Now, 2 weeks go to development while the test writes test cases   * Code is dropped formally to test, test starts raising bugs. Even if there is 1 root cause for 10 different issues, and its an easily fixed one, developers are not allowed to give fresh code to test for the next 1 week. After 2-3 such drops to test the code is given to the ops team as a "golden drop" ( 2 months passed from the beginning)   * Ops team will now deploy the code in a staging environment. If it runs stable for a week, it will be promoted to UAT and after 2 weeks of that it will be promoted to prod. If there are any bugs found here, well, applying for a visa requires less paperwork This entire process is followed even if a single SSRS report is to be released. How do other companies process such requirements? I'm wondering why, the business cannot just drop the requirements to developers, developers build and deploy to UAT themselves, expose it to the business who raise functional bugs and after fixing those promote to prod. (even for more complex stuff)


What parts of Java do I need to learn for specific software projects?

I'm starting a 12 week Java course next month through my local junior college. I'm starting from square 1. I have a basic understanding of OO and Java will be my first OO language. My Google-Fu returns way too much and I can't tell which is good, bad, etc. As far as learning the language, is it best to use a plain editor, I use JEdit currently, or an IDE like Eclipse or Netbeans? I don't have experience with either IDE. Is there other IDEs I should consider? My project goals are:   * GUI programs to control different radios and test equipment, which means I/O via USB, sound card, and networking across *NIX, Windows, and Mac OS.   * Programming for Android devices, both phone and tablets. Database backed apps for logging data. Quite possibly accessing radio/test gear over WiFi.   * JBoss environment.  How should I setup a testing environment for different platforms?


Building an executable

I am an Electronics engineer so forgive my newbieity. Ok I want to build an `exe` file for multiple steps to be done on a windows when someone press on that file. the steps are:   * Install a media center,   * Change some data in the files of the media center,   * Install some plug ins to the media center,   * Change some setting in this media center,   * Make this media center work as shell on windows booting. The file should include:   * The media center installation files,   * The data which will be changed,   * The plug ins. I prefer to add like a unique password for every media center so it will work on this specific one only and only used for installation. Is this possible?


If I own an open source project why would I not host it on Github?

I've noticed that one rather well-known open source project (which I won't name so that noone focuses too much on that specific project) offers sources for download as a .zip via FTP instead of having them on GitHub. To me looks like GitHub would be more convenient.   1. It's free for open source projects   2. It has change history and many other perks of a version control system   3. If I want to change something I can just fork-change and then make a pull request instead of writing a long email explaining what to change in which file That's just what I could think of in one minute. Now what problems are there with Github that would make me prefer shipping sources as an archive via FTP?


Copyright law with regard to MIDI tracks in games

I'm trying to understand what the law says about the use of MIDI or otherwise synthesized representations of songs under copyright within computer games, be they online or installed. I have read opinions, which make some sense to me, which state that a played back MIDI file counts as an unauthorized performance, albeit by a soundcard, and thus falls under standard copyright law. Is this the case? Does it make any difference at all whether all or part of the representation is performed by a human being, and whether, for example, vocals are replaced by a synth line? Does it make a difference if only a core motif from the song is used as opposed to the full track? And does it make any difference how realistic the sound is - for example, is a bleepy 8 bit rendition any less a violation of copyright than a MIDI file rendered down to a wave file using top-notch orchestral VSTs? I'm well aware that the digital world is awash with blatant copyright violations and that often it comes down to whether it is worth the copyright holder's effort to enforce the law. But I'm interested to learn exactly what the law is, because this seems like a vague area.