C# coding standards” Use the const directive only on natural constants

I've seen these 2 guidelines in coding c# standard and I’m not sure the what the 2nd one means.   1. With the exception of zero and one, never hard-code a numeric value; always declare a constant instead.   2. Use the const directive only on natural constants such as the number of days of the week. What is the definition of a natural constants and if the number is not a natural constants given the 1st rule how does one declare a constant in c# without the const directive? So how is the 2nd rule not contradicting the 1st rule for non natural constants? See http://www.scribd.com/doc/10731655/IDesign-C-Coding-Standard-232 for reference.


Advice for beginner programmer

I am beginner in software development. I noticed when I try to learn one technology let's say .NET I lose my grip over other for example Java. I thought it would be better to concentrate on one technology either Java or .NET to make significant advancement and be an expert, because they can be many details which one can ignore when keeps on changing between technologies. Is my decision right? Do experts choose this approach? **Update:** Should I pursue my career knowing one technology or not?


Dealing with state problems in functional programming

I've learned how to program primarily from an OOP standpoint (like most of us, I'm sure), but I've spent a lot of time trying to learn how to solve problems the functional way. I have a good grasp on how to solve calculational problems with FP, but when it comes to more complicated problems I always find myself reverting to needing mutable objects. For example, if I'm writing a particle simulator, I will want particle "objects" with a mutable position to update. How are inherently "stateful" problems typically solved using functional programming techniques?


Your thoughts on Best Practices for Scientific Computing?

A recent paper by Wilson et al (2014) pointed out 24 Best Practices for scientific programming. It's worth to have a look. I would like to hear opinions about these points from experienced programmers in scientific data analysis. The authors' advices sound good, but do you think these advices are helpful and practical? As they admit, introducing all of them may take significant time and effort. For example, putting assertions and deploying unit tests surely need extra coding. Nevertheless, do you think scientists (such as biologists) who had no training in coding should generally follow these? If some of them are too much, to what point should we go and stop depending on what? > Wilson G, Aruliah DA, Brown CT, Chue Hong NP, Davis M, Guy RT, Haddock SHD, > Huff KD, Mitchell IM, Plumbley MD, Waugh B, White EP, Wilson P (2014) **Best > Practices for Scientific Computing**. _PLoS Biol_ 12:e1001745. > > > http://www.plosbiology.org/article/info%3Adoi%2F10.1371%2Fjournal.pbio.1001745 > > **Box 1. Summary of Best Practices** > >   1. Write programs for people, not computers. > > (a) A program should not require its readers to hold more than a handful of > facts in memory at once. > > (b) Make names consistent, distinctive, and meaningful. > > (c) Make code style and formatting consistent. > >   2. Let the computer do the work. > > (a) Make the computer repeat tasks. > > (b) Save recent commands in a file for re-use. > > (c) Use a build tool to automate workflows. > >   3. Make incremental changes. > > (a) Work in small steps with frequent feedback and course correction. > > (b) Use a version control system. > > (c) Put everything that has been created manually in version control. > >   4. Don’t repeat yourself (or others). > > (a) Every piece of data must have a single authoritative representation in > the system. > > (b) Modularize code rather than copying and pasting. > > (c) Re-use code instead of rewriting it. > >   5. Plan for mistakes. > > (a) Add assertions to programs to check their operation. > > (b) Use an off-the-shelf unit testing library. > > (c) Turn bugs into test cases. > > (d) Use a symbolic debugger. > >   6. Optimize software only after it works correctly. > > (a) Use a profiler to identify bottlenecks. > > (b) Write code in the highest-level language possible. > >   7. Document design and purpose, not mechanics. > > (a) Document interfaces and reasons, not implementations. > > (b) Refactor code in preference to explaining how it works. > > (c) Embed the documentation for a piece of software in that software. > >   8. Collaborate. > > (a) Use pre-merge code reviews. > > (b) Use pair programming when bringing someone new up to speed and when > tackling particularly tricky problems. > > (c) Use an issue tracking tool. > > I'm relatively new to serious programming for scientific data analysis. When I tried to write code for pilot analyses of some of my data last year, I encountered tremendous amount of bugs both in my code and data. Bugs and errors had been around me all the time, but this time it was somewhat overwhelming. I managed to crunch the numbers at last, but I thought I couldn't put up with this mess any longer. Some actions must be taken. Without a sophisticated guide like the article above, I started to adopt "defensive style" of programming since then. A book titled "The Art of Readable Code" helped me a lot. I deployed meticulous input validations and/or assertions for every function, renamed a lot of variables and functions for better readability, and extracted many bits as reusable functions. Recently, I introduced `Git` and `SourceTree` for version control. At the moment, because my co-workers are much more reluctant about these issues, the collaboration practices ( **8a,b,c)** have not been introduced. Actually, as the authors admitted, because all of these practices take some amount of time and effort to introduce, it may be generally hard to persuade your reluctant collaborators to comply them. I think I'm asking your opinions because I still suffer from many bugs despite all my effort on many of these practices. Bug fix may be, or should be, faster than before, but I couldn't really measure the improvement. Moreover, much of my time has been invested on defence, meaning that I haven't actually done much data analysis (offence) these days. Where is the point I should stop at in terms of productivity? I've already deployed: **1a,b,c, 2a, 3a,b,c, 4b,c, 5a,d, 6a,b, 7a,7b** I'm about to have a go at: **5b,c** Not yet: **2b,c, 4a, 7c, 8a,b,c** (I could not really see the advantage of using `GNU make` ( **2c** ) for my purpose. Could anyone tell me how it helps my work with MATLAB?)


Why should I use node.js as http server?

I know what node.js is & what it does. What I really want to know is how does it work as an http server? A server like apache gets a request, fork a process, allocate memory to process, handle the request & release the process after it is completed. If we get thousands of http requests at a time, then apache waits for the the process queue to release process. How does node.js with a single threaded environment handles so many http requests. All the incoming requests are given their own event loop. All these event loops share same memory. How does using node.js to handle millions of http requests more scalable than using apache?


What constitutes authorship for software documentation?

In science, intellectual contribution to a project is sufficient for someone to be the author of a document. When writing software documentation, this would imply that almost everyone involved in the software development would be included as co-authors. Unlike in science, it seems odd to include the names of people who do not actually work on the document. One reason is that documentation is constantly evolving and I am concerned about making sure that co-authors regularly review the current state of the document. **question:** When writing documentation, are there guidelines for whom, other than those who directly contribute to the document, should be considered an author? _clarification:_ I am writing documentation about how to use an open source software and database built by and for scientists. As this project represents most of our the team's cumulative experience with software development, we have no existing policies for authorship of documentation (unlike we do with journal articles).


Best way to maintain data between local and remote sql databases

So I have, what would seem like a common question that I can't seem to find an answer to. I'm trying to find **what is the "best practice" for how to architect a database that maintains data locally, then syncs that data to a remote database that is shared between many clients**. To make things more clear, this remote database would have many clients that use it. For example, if I had a desktop application that stored to-do lists (in SQL) that had individual items. Then I want to be able to send that data to a web- service that had a "master" copy of all the different clients information. **I'm not worried about syncing problems as much as I am just trying to think through actual architecture of the client's tables and the web-services tables** Here's an example of how I was thinking about it: **Client Database**               list     --list_client_id (primary key, auto-increment)     --list_name          list_item     --list_item_client_id (primary key, auto-increment)     --list_id     --list_item_text      **Web Based Master Database** _(Shared between many clients)_               list     --list_master_id     --list_client_id (primary key, auto-increment)     --list_name     --user_id               list_item     --list_item_master_id (primary key, auto-increment)     --list_item_remote_id     --list_id     --list_item_text     --user_id      The idea would be that the client can create todo lists with items, and sync this with the web service at any given time (i.e. if they lose data connectivity, and aren't able to send the information until later, nothing will get out of order). The web service would record the records with the clients id's as just extra fields. That way, the client can say "update list number 4 with a new name" and the server takes this to mean "update user 12's list number 4 with a new name".


RabbitMQ and Microsoft Service Bus integration

We're running Microsoft Service Bus (AMQP 1.0) locally and are quite happy with it. We've recently started doing business with a provider that uses RabbitMQ (AMQP 0.9.1) as it's message broker. How should we integrate to be able to receive their events? We could expose HTTP endpoints on our bus or even write an API that could perform "translations" but it seems counter intuitive and cumbersome. I'd like to not install Rabbit on my environment at all.


Clustering algorithm that doesn't require predefining the number of clusters required

I have a set of user queries from a search engine that I want to cluster. The only clustering algorithm I have come across so far is the K-means clustering algorithm, which requires defining the number of clusters up front. But in this case, I do not know how many clusters exist in the data. Is there any clustering algorithm that performs clustering without predefining the number of clusters?


Looking for a Treemap tiling algorithm

I'm looking for an algorithm to convert a tree of data into a 2 dimensional treemap view. http://en.wikipedia.org/wiki/Treemapping I can do all the coloring in and drawing myself, but if there was some kind of algorithm like :               xy-withweight = treemapMyData(treedata)      where xy is a list of data elements : "x" = x point of bottom right corner "y" = y point of the bottom right corner "weight" = could be used to signify colour


DDD - Business rule that depends on a service

I got confused about if a domain is required to access an external service in some state of it's life cycle. The business rule is this : > If an Employee is accepting a JobSeeker's JobApplication, then the Employee > must create an Appointment and have it e-mailed to the JobSeeker. My current solutions are: 1 - Leave the mailing responsibility to the JobApplication domain               class JobApplication {         public function makeAppointment(IMailService $mailService, IMailGenerator $mailGen, \DateTime $time, Address $address = null) {                 $employer = $this->getVacancy()->getEmployer();                  $this->accept();                  $appointment = new Appointment($employer,                 $this->applicant,                 'Interview Invitation - '.$employer,                 $time,                 $address ?: $employer->getAddress()             );                  $mailService->send(                 $appointment->getJobSeeker()->getMail(),                  $appointment->getTitle(),                 $mailGen->generateAppointmentMail($appointment)             );                  return $appointment;         }         }      I kinda feel awkward about this option, since it leaves the JobApplication entity to depends on the Mailing services. 2 - Create a new AppointmentService               class AppointmentService {         private $mailService;         private $mailGen;              public function __construct(IMailService $mailService, IMailGenerator $mailGen) {             $this->mailService = $mailService;             $this->mailGen = $mailGen;         }              public function makeAppointmentFromJobApplication(JobApplication $application, \DateTime $time, Address $address = null) {             $jobApplication->accept();                  $appointment = new Appointment($application->getCompany(),                 $application->getApplicant(),                 'Interview Invitation - '.$application->getCompany(),                 $time,                 $address ?: $application->getCompany()->getAddress()             );                  $mailService->send(                 $appointment->getJobSeeker()->getMail(),                  $appointment->getTitle(),                 $mailGen->generateAppointmentMail($appointment)             );                  return $appointment;         }     }      This option is nice since I only need to inject AppointmentService to the controller, but it leaves the Appointment class anemic. I once read to never leave your domain to be dependent to domain services, the other way is fine. But some business rules do require services that existed out of the domain scope. Is there another options? **Update - 1** A third option would be like this:               class Employer {         public function acceptApplication(JobApplication $application) {             if($application->isRejected()) throw new \Exception('Cannot make appointment for rejected application');                  $application->setAccepted();         }              public function makeAppointment(IAppointmentService $appointmentService, JobApplication $application, \DateTime $time, Address $address = null) {             if(!$application->isAccepted()) $this->acceptApplication($application);                  return $appointmentService->makeAppointment($this, $application->getApplicant(), $time, $address ?: $this->getAddress());         }     }          class AppointmentService {         private $mailService;         private $mailGenerator;              public function makeAppointment(Employer $company, JobSeeker $jobSeeker, \DateTime $time, Address $address = null) {             $appointment = new Appointment($company,                  $jobSeeker,                 'Interview Invitation - '.$application->getCompany(),                 $time,                 $address             );                  $this->mailAppointment($appointment);                  return $appointment;         }              private function mailAppointment(Appointment $appointment) {             return $mailService->send($appointment->getJobSeeker, $appointment->getTitle, $mailGenerator->generateApplicationAppointment());         }     }


How to most effectively debug code?

Bugs creeping into code can be minimized, but not entirely eliminated as it is written - programmers are, although many would disagree, only humans. When we do detect an error in our code, what can we do to weed it out? How should we approach it to make most effective use of our valuable time and enable us to spend less time trying to find it and more time coding? Also, what should we avoid when debugging? Note here that we're not talking about _preventing_ bugs; we're talking about what to do when bugs _do_ appear. This is a wide field, I know, and may be highly dependent on language, platform and tools. If so, keep to encompassing answers such as mindsets and general methods.


Can modern OO languages compete with C++'s array store performance?

I just noticed that every modern OO programming language that I am at least somewhat familiar with (which is basically just Java, C# and D) allows covariant arrays. That is, a string array is an object array:               Object[] arr = new String[2];   // Java, C# and D allow this      Covariant arrays are a hole in the static type system. They make type errors possible that cannot be detected at compile-time, so every write to an array must be checked at runtime:               arr[0] = "hello";        // ok     arr[1] = new Object();   // ArrayStoreException      This seems like a terrible performance hit if I do lots of array stores. C++ does not have covariant arrays, so there is no need to do such a runtime check, which means there is no performance penalty. Is there any analysis done to reduce the number of runtime checks necessary? For example, if I say:               arr[1] = arr[0];      one could argue that the store cannot possibly fail. I'm sure there are lots of other possible optimizations I haven't thought of. Do modern compilers actually do these kinds of optimizations, or do I have to live with the fact that, for example, a Quicksort always does O(n log n) unnecessary runtime checks? Can modern OO languages avoid the overhead created by supporting co-variant arrays?


Complex knowledge management system with CRM..written internally

We've all heard of salesforce and sugarcrm and the likes of systems like this. Unfortunately at my workplace we have been asked to write a similiar system (rather then license or purchase). Basically the database is fairly large. Think of modules such as: Corporate groups, customers, programs, projects, sub projects, and issue management. In simple terms a corporate group has one to many customers. A program has one or more projects. A project has one or more sub projects. And an issue can be created on many sub projects. Of course the system is a bit more complex but instead of listing every single module I think its best to keep it simple. In any event, the system in its current state has only two resources to be working on it (basically we have to do it all: CSS, database, jquery, asp.net and C#). We've started off well by defining the UI master and footer pages that way we can reuse those across all of our pages. Now comes the hard part. The system will have about 4k end users with say 5-10% being concurrent users. We are wondering if it makes sense to cache our database data (For say 5-10 minutes) rather then continously hit our database. The reason being is some of these pages may have 5-10 search filters associated with the page. Imagine every time a selection is made from a search box how many database hits. Also some of these search fields cascade so selecting for instance an initial drop down may cascade several drop down boxes under them. Is it wrong to cache because I am not finding too many articles on whether it is a good idea or not. Remember the system is similiar to say a CRM system where we manage our various customers, projects, sub projects, issues, etc.


How to identify potential for becoming a programmer

There's heaps of information out there on hiring someone who's already a programmer. (Or claims to be one.) But what about identifying someone who has the _potential_ to become a programmer, with little or no knowledge? Aside from the obvious things to look for (smart, gets things done), are there any interview questions and/or tests to determine whether one has the potential to become a programmer? Note: I'm not asking how to tell whether **I** can learn programming, but how to tell someone else is right for it. **UPDATE:** To narrow down the question, I'm asking: a. Is it even possible to determine in advance whether one can learn programming?   b. If so, how exactly can this be determined?   c. What are good tests/interview questions to ask in order to assess someone's potential ability? I'm talking about _specific_ question examples, not general guidance.


Why are there so many programming languages? Why are new languages still being made?

Why are there so many programming languages? And what prompts someone to create a programming languages in spite of the fact that other languages already exist?


Is it ok to call external services or database inside the entity

I have "logic engine" which executes set of user configured steps. These steps are saved in the database as "Step" entities. The engine gets the first step and then executes steps until there are no more steps to execute:               public void Execute(details, data, Step firstStep)     {         var step = firstStep;         while (null != step)         {             step = step.Execute(details, data);         }     }      The different types of steps are expressed as derived classes. Each of them must implement the Execute method. The data and details parameters are used by the step to execute some logic. As fas as the logic engine knows it is just executing step after step without any knowledge what those steps do. **The problem:** Some of the steps need to access external services to get data or maybe even the same or different database where the actual step entities are stored. The information is **usually** used by other steps. One could say that some of the steps are just for loading data from external sources/database and other steps are using that data to make decisions. This separation is done so that we can use different data sources (as long as they produce the same kind of output to us) without the need to write any additional code. Is there a better way to handle this type of domain? If I separate the actual Step and the logic (i.e. loading data from external service or from database) then my whole domain model (steps) doesn't have any logic. I would most likely have something like:               var handler = dictionary[step];     handler.Execute(step, details, data);      **Now the logic and any external dependencies are in the handler object but the actual domain object (step) is just a dummy place holder for the information.** That doesn't sound right either.


How can I design a model layer without ORM, and when should I use it?

I'm a PHP developer who started with CodeIgniter. In it, designing models was easy: it seemed like each method defined in models was the equivalent of static methods in a normal, objected-oriented environment. I tried FuelPHP, which has an built-in active record style ORM, and PHP ActiveRecord to use with CodeIgniter. I found creating models was easy with ORM, and taught me best practices when designing models. However, I didn't like that I was tied to a specific ORM implementation, and as I got better with SQL, I thought ORMs were a bit heavy when compared to how quickly I could retrieve stuff with SQL. But when I try to design models from scratch without ORM, I'm lost: The ORM system of one class per table and queries with eager loading makes sense, and seems like worth the performance hit for using ORM. In what situations should I avoid using ORM? How can I design models without using ORM, so that I can use SQL directly?


Things to consider for inviting and restricting users to a beta website

What are the best practices for designing a workflow for inviting users to a beta website? This is not for any specific programming language. 2 main requirements are   1. An interested user can request for an invite using her email   2. A signed up user can invite others via email (or social media maybe?). My thoughts:   1. In case#1, on submit, generate a reversible hash of the email and the timestamp of submission.    2. Then, send an email with the hash as a query param. When someone clicks on the URL, the controller/router should decrypt the hash and validate the timestamp. If valid, check if the user already exists, else, forward to the sign up page with the email id field pre-populated (or frozen), and allow the user to enter & confirm password and other details.   3. If the timestamp had expired, send another email to the same user with a new hash.   4. Case#2, should be exactly similar, but instead of the interested user, an existing user fills up the invitation form, and the email sent to the interested user will have the email or name of the existing user. Are there any security concerns in this approach? Are there any approaches that would provide a better UX?


How can I communicate the risks of altering vendor software?

We have a major problem where I work, and it's name is "customization". We have an old (10+ years) vendor software system that our IT and accounting departments previously _loved_ to customize. Somewhere along the line this software started getting very buggy. Then, I was hired after the bulk of the customization. Nearly every problem I've found with the system is a direct result of customization; everything we change risks breaking business critical financial software. Yet the accounting department keeps suggesting changes (because we always said yes!) and there seems to be little respect for _how impactful_ changes might be. Some changes cause no problems; forms can be (and are meant to be) customized in the vendor software, we can move around form fields, remove them, ect. But for every harmless customization like that they also suggest changes like stored procedures and triggers to manipulate data in the database for the vendor application. I recently (barely) got them to stop trying to import customers from one vendor program into another as the information was completely incompatible. My problem with how that was resolved is because I found the system didn't work on the user side; the task was more complicated than they thought so they gave up. Regardless of how easy the user-side task is, the operation they wanted shouldn't have been performed. **How can I communicate that changing how this system works has risks, particularly when data validity is at stake?** I'm a new (6 months) hire and it's become the status quo, but it's risking the validity of our financial data and our support contracts--once the vendor's support hears "X has been customized" that gives them that much reason not to support us or tell us it's our fault.


What is the most efficient method in converting AutoLISP legacy code to C#?

I am engaged in a project that works mainly in AutoCAD to design and manufacture prefabricated building components such as roofing trusses. One of our goals is to redesign a program that was written in LISP that functions in designing roofing trusses. We are to rewrite the LISP code in C# and incrementally implement it into the current libraries that they have set up. My problem is that I have been tasked with building a rudimentary LISP to C# converter. After some research (as Google results quickly show that such a thing does not readily exist on hand), I have come to the question of which way of converting this legacy code would be more efficient. Would it be better to take chunks of the LISP code to analyze and rewrite in C#, or should I continue on with developing a rudimentary converter for the AutoLISP code?


Use ILmerge for NuGet libraries?

I'm making an open source C# library (http://github.com/eteeselink/fakethat if you must). Like is fashionable these days, I plan to spread it via NuGet. My library depends on another library (Castle.Core). Before the NuGet days, I'd use a tool such as ILMerge to merge my library and Castle.Core into a single assembly, so that the distribution is simpler. This significantly increases the size of my assembly (from 50kb to 450kb), but it's only a single DLL, which is handy for users. Now that there's NuGet, however, I can simply add Castle.Core as a dependency and NuGet will resolve it for my users. This has a few advantages:   * It is simpler and less error prone for me   * If my users use another library that depends on Castle.Core, we save disk space   * It somehow feels more "honest" - all the hard work is done by Castle.Core, all I added is a pretty API.  There's a few disadvantages, too, however:   * If Castle.Core somehow gets removed from NuGet, my library will stop working   * If someone still wants to use my library without NuGet, it's a bigger hassle because multiple DLLs need to be copied around   * If a developer looks through the list of project references, she will see some weird "Castle.Core" reference that she never remembers having added. This might be confusing. What would you do?


Using Sql Server Change Data Capture with a frequently changing schema

We are looking into enabling Sql Server Change Data Capture for a new subsystem we are building. It's not really because we need it, but we are being pushed for having a complete history traceability, and CDC would nicely solve this requirement with minimum effort on our parts. We are following an agile development process, which in this case means that we frequently make changes to the database schema, e.g. adding new columns, moving data to other columns, etc. We did a small test where we created a table, enabled CDC for that table, and then added a new column to the table. Changes to the new column is not registered in the CDC table. Is there a mechanism to update the CDC table to the new schema, and are there any best practices to how you deal with captured data when migrating the database schema?


Unit-Testing functions which have parameters of classes where source code is not accessible

Relating to this question, I have another question regarding unit testing functions in the utility classes: Assume you have function signatures like this:               public function void doSomething(InternalClass obj, InternalElement element)      where InternalClass and InternalElement are both Classes which source code are not available, because they are hidden in the API. Additionally, doSomething only operates on obj and element. I thought about mocking those classes away but this option is not possible due to the fact that they do not implement an interface at all which I could use for my Mocking classes. However, I need to fill obj with defined data to test doSomething. How can this problem be solved?


Lazy loading if collection would have any entries

I often see model classes with properties like this:               public IList<Note> Notes { get; set; }     public bool HasNotes { get; set; }      Where the list is initialized lazy, but the boolean property is loaded directly. This has the benefit, that only the count is loaded, when the collection is not needed, but the caveat is that the value for the boolean property is always calculated. This made me think and I came up with a solution like this:               public IList<Note> Notes { get; set; }     public bool HasNotes     {       get       {         if (Notes != null) return Notes.Any();         else // calculate (e.g. sql exists)       }     }      This way the calculation would only happen if the collection is not loaded. Would this be a good approach? Does there already exist different best practices unknown to me?


Google Analytics with multiple environments

We are planning to use Google Analytics in our organization and I am in charge for setting it up. I was wondering how to deal with multiple environments. We sure do not want to collect data during development and QA (or maybe collect data to a different analytics account), but we want to when the site goes to production (obviously).   * How do you deal with multiple environments and Google Analytics ?   * Do you setup multiple accounts for Google Analytics and use either one depending on the environement ? We're using ASP.NET 2.0, if that matters.


Giving variables default values vs. treating accessing an undefined variable as an error

Having messed around with several scripting languages and being a bit of a linguist, there seems to be a way to divide dynamically typed languages into two groups: languages that give variables a default value, and languages that treat accessing an up-to-now unused variable an error. For instance, consider this code:               print(hi)        * In Lua, it prints `nil`   * In PHP (with a semicolon and `$`), it prints nothing   * In Perl (with a semicolon and `$`), it prints nothing (but using `say` yields an error) However,   * In Python it throws a `NameError`   * In Ruby, it throws a `NameError` (looks like Ruby ripped off Python's name for it)   * In Javascript, it throws a `ReferenceError`   * In Lisp, some type of error occurs that takes me to a debugger (I'm just learning Lisp now so I don't know what to call it) Additionally, these languages behave differently when indexing an hash map, a similar operation, and they again fall into two camps (and when I say 'nothing' I mean that language's representation of nothing):   * Lua returns nothing   * PHP returns nothing   * Ruby returns nothing   * Perl returns nothing   * Lisp returns nothing   * Javascript returns nothing But   * Python throws a `KeyError` So I am wondering what the comparative advantages and disadvantages are for a language to make accessing an undefined variable an error or just return a default value, and also what decisions would lead a language designer to choose one path or the other.


What did Ruby do right (or was it Rails)?

Most programming languages have some design decisions that influence their usage and applicability. For example:   * Python focused on maintainability/readability of code and had indentation be a part of the language itself.    * Java's intention was to be cross platform OOP 'easier' and 'friendlier' than C++   * Objective-C was built as an OO wrapper around C not knowing the future of C++ at the time   * Erlang is designed for highly fault tolerant and concurrent systems   * PHP designed for handling dynamic creation of web pages   * CoffeeScript designed to expose the _good parts_ of Javascript and adding OOP syntactical sugar and hiding the nuances (globals etc.) of JS 'behind the scenes' etc. Each programming language tried to exploit and capitalize on a particular niche IMHO. The above are my perspectives on what were the founding principles of the programming languages and that governed their evolution and widespread adoptability. Of course, there are many more, but the list is only intended as an example However, I've struggled to understand the founding principles on which Ruby is based and its growing popularity. What were the founding principles of Ruby that makes it popular today? Or is it the genius of one man who designed the Rails framework? If the latter was it that Ruby made the designing of Rails better/easier/faster? In what sense? The most commonly cited reason as per its creator is '...wanted a fun weakly typed programming language' - I don't see that as a reason for creating a new programming language altogether! Programming is sheer fun IMHO irrespective of the language (each language has some bad parts, but one either gets around it or lives with it). So what niche did (or does) Ruby exploit that isn't exploited by the current languages? What is the 'strong point' (USP) of Ruby that has led to its widespread adoptability? What did Ruby do that wasn't done before (or was extremely difficult)? I'm not a Ruby programmer, but just a Ruby noob and hence the confusion. **Disclaimer** : This is NOT a flame war and I'm not looking for Ruby vs Programming language type of answers. I am looking for the design decisions on which Ruby is based that has led to widespread adoption. What niche does Ruby satisfy to have become popular or is that purely attributed to Rails?


What's the most effective way to invite a facebook "friend" to use an app?

I'm trying to decide between:   * using the clumsy facebook invite dialogs which are very cumbersome to use (not very configurable) but trigger notifications.   * Using the API to let users invite 2 or 3 friends according to some criteria (say same location). By invite, I mean write on the user friend's wall. My understanding is that this won't trigger a facebook notification, and the target friend may not even see it at all, it all hangs on facebook (unknowable) rules about what shows or not on a user's feed.  Ideally I would like to send emails but facebook api understandably doesn't provide email addresses. Incidentally, quora offers invites for facebook friends which result in emails being sent. Looks like quora does have perhaps privileged access to facebook apis (my guess)


How can I define shared text entities in XHTML files?

I have an XHTML document that defines several text entities in its internal DTD. I want these entities to be available in other XHTML documents without having to cut and paste the internal DTD everywhere. The answer that seems to keep coming up for other XML files (not specifically XHTML) -- for example, here: http://stackoverflow.com/questions/13567930/how- to-use-multiple-dtd-files-in-a-single-xul \-- suggests that the XHTML file I want to write would look something like this:               <?xml version="1.0" encoding="UTF-8"?>     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"               "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" [     <!ENTITY % mydtd SYSTEM "x.ent">     %mydtd;     ]>     <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">     <head>       <title>Example</title>     </head>     <body>     <p>“&x; &y;”</p>     </body>     </html>      ... where the file x.ent has these contents:               <!ENTITY x "Hello">     <!ENTITY y "world!">      But no. At any rate, it doesn't show what I expect in either of the browsers I need to work with. I expect to see "Hello world!" enclosed in left-hand and right-hand double quotes. But Firefox says “ is an undefined entity, and Opera shows the text between <p> and </p> verbatim (displaying ampersands instead of quotation marks). I also tried inserting the public DTD within my internal DTD, so:               <!DOCTYPE html [     <!ENTITY % publicdtd PUBLIC "-//W3C//DTD XHTML 1.1//EN"               "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">     %publicdtd;     <!ENTITY % mydtd SYSTEM "x.dtd">     %mydtd;     ]>      Then Firefox complained that &x; was an undefined entity. Opera displayed the quotation marks I expected, but still displayed &x; and &y; verbatim; no hello, no world. I thought x.ent didn't need an XML tag, but someone put one in their example of a file of entity definitions, so I tried it. That didn't work either. Is there some reason that this can't work in XHTML? Or is this a defect in both of these browsers? Or is there another way to share the entities among multiple files? Unfortunately, I need something that works in these two browsers, or I might as well not do it at all. But if it's a flaw in the XHTML 1.1 DTD, I can use a different version.


Comparing absolute values when determining zero crossing in 2D image

I am trying to implement an algorithm for finding the zero crossing (check that the signs of all the entries around the entry of interest are not the same) in a two dimensional matrix, as part of implementing the Laplacian of Gaussian edge detection filter for a class, I understand everything up to step 3 of page 25 of this PDF. Why do I have to compare the absolute values of my neighbouring entries? It doesn't seem logical to me. If I have a matrix that looks like this:               [1 1 -2],     [2 -4 -1],     [1 -2 -2]      Why isn't the value of -4 a valid zero crossing?


How should I pronounce the :: and -> in PHP?

When I read these lines aloud to someone:               $controller->process();          UserManager::getInstance();      How should the `->` and `::` be pronounced? Reading the characters themselves in cumbersome and I don't know of any nicknames for them. Being a developer who is used to C-style syntax, I'd like to say "dot", but I'd like something that is easy to say _and_ people can easily understand. It would also be good to know if there are any pronunciations that have become de-facto standards among teams of developers.


Should reflection be part of design?

I'm currently designing a somewhat large program that will involve the simulation of math/physics models and collection of data (I have not implemented any code yet). One of the main problems I'm facing is how to pass data around easily without having to have multiple copies of data (that may potentially be outdated and redundant). Initially I was thinking of having the model objects each implement a function that returns a data structure containing copies of their data, then collecting all those data structures together and passing that around. This would involve a lot of copying however, and the data wouldn't be mapped to the actual object anymore. (The data structure idea I had would involve using a trie so that the data is nice and hierarchical and lookups can be done easily by string) So now I was thinking that instead of designing the program to use a data structure to pass data around, the program would simply pass the model, and then data can be extracted with reflection. This would pretty much avoid any redundancy and the data passed will always be up to date. The problem is that I also need this program to be fast (it has soft realtime constraints), and I'm not sure about the performance impact of reflection. And reflection does seem kinda ugly. But at the same time, people say it's never a good idea to optimize early, so I'm on the fence here. So should I design the program to use reflection, and if so, how liberally? Or should I try to avoid reflection as much as I can during design?


How best to keep bumbling, non-technical managers at bay and still deliver good work?

This question may be considered subjective (I got a warning) and be closed, but I will risk it, as I need some good advice/experience on this. I read the following at the 'About' page of Fog Creek Software, the company that Joel Spolsky founded and is CEO of: > Back in the year 2000, the founders of Fog Creek, Joel Spolsky and Michael > Pryor, were having trouble finding a place to work where programmers had > decent working conditions and got an opportunity to do great work, without > bumbling, non-technical managers getting in the way. Every high tech company > claimed they wanted great programmers, but they wouldn’t put their money > where their mouth was. > > It started with the physical environment (with dozens of cubicles jammed > into a noisy, dark room, where the salespeople shouting on the phone make it > impossible for developers to concentrate). But it went much deeper than > that. Managers, terrified of change, treated any new idea as a bizarre virus > to be quarantined. Napoleon-complex junior managers insisted that things be > done exactly their way or you’re fired. Corporate Furniture Police writhed > in agony when anyone taped up a movie poster in their cubicle. > Disorganization was so rampant that even if the ideas were good, it would > have been impossible to make a product out of them. Inexperienced managers > practiced hit-and-run management, issuing stern orders on exactly how to do > things without sticking around to see the farcical results of their fiats. > > And worst of all, the MBA-types in charge thought that coding was a support > function, basically a fancy form of typing. A **_blunt truth_** about most of today's big software companies! **Unfortunately** not every developer is as `gutsy` (or `lucky`, may I say?) as Joel Spolsky! So my question is: **How best to work with such managers, keep them at bay and still deliver great work?**


I'm in over my head at my job. What should I do?

About 8 months ago I was hired as the sole developer at a small company to take on a certain project. Although there are other small projects that come up from time to time, I've been spending about 95% of my time over the last 7 months working on this project. At the rate I'm going, I think it will be at least a year and a half before I'm done with what we all hoped would be accomplished within two or three months. My boss seems to be aware of this; it would be impossible not for him to be based on what he's seen so far. One reason the project is taking so long is because I keep having issues pop up. This project deals with millions of records stored in dozens of different tables. Although I'm as competent as anyone when it comes to databases, I'm by no means a database expert or DBA, so I can't look and a slow query and immediately say, "Oh, yes, it needs an index on X, Y and Z and we need to shard this table and we need to tweak the max_foo setting in the config." It takes me time to figure out what's going on. So far I've solved almost every significant performance issue I've come across, but there are a lot of unique challenges and I can't just become an expert overnight. And the performance issues that haven't been "worth" solving---because it would take me three days to make something run just a touch faster---are peppering my day with all these annoying little waits, where I get held up for 30 seconds but it's not like I can go do 30 seconds worth of meaningful coding somewhere else during that time. It's possible that this is the kind of project that really deserves a team of 3 developers and a DBA. It could also be that a better or more experienced programmer could handle this project on his own in a reasonable amount of time but my current skills just aren't equal to the task. In any case I feel like I'm in way over my head. I know I can _eventually_ get the project done but it might take a ridiculous amount of time. It's also quite lonely and discouraging to work on a giant project by yourself with no one else to discuss it with. I'm sure at least some other developers know what I mean. There's no reason for anyone else at the company to care one tiny bit about the ins and outs of the system, and there's no reason for any developer outside of the company to care about the project. The isolation combined with the slow pace is a real motivation killer. Any advice?


What is so difficult about pointers/recursion?

In the perils of java schools Joel discusses his experience at Penn and the difficulty of "segmentation faults". He says > [segfaults are difficult until you] "take a deep breath and really try to > force your mind to work at two different levels of abstraction > simultaneously." Given a list of common causes for segfaults, I don't understand how we have to work at 2 levels of abstraction. For some reason, Joel considers these concepts core to a programmers ability to abstract. I don't want to assume too much. So, what is so difficult about pointers/recursion? Examples would be nice.


JSON or XML for parsing for Google Map API

Can someone help me to find a easy way to parse XML? I have an iOS 7 Application using Google Map API. I tried to learn this on my own. I try to create an application that uses Web Services like Google Map. These web services use HTTP requests to specific URLs, passing URL parameters as arguments to the services. Generally, these services return data in the HTTP request as either JSON or XML for parsing and/or processing by my application. I would appreciate it.


RESTful API resource path for resource with complex relationship?

In my RESTful API, I have Users, Applications, and Tokens. An application has an owner, which is a user. A token is linked to both an application, and a user. A user has both public and private representations:   * `GET /user` \- Retrieve current authenticated user   * `GET /users/:user` \- Retrieve given user An application has a public representation:   * `GET /applications/:id` \- Retrieve given application A token is associate with both a user, and an application. A token is **never** public:   * `GET /user/tokens/:id` \- Retrieve given user token Similary, applications of a user can be seen like so:   * `GET /user/applications` \- Retrieve collection of the current authenticated users' applications. * * * What should the resource path be in a situation such as this, for if I wanted to get all of the current users' tokens for a given application? Some things I have considered:   * `GET /user/tokens/application/:appId` \- I felt this may be poorly represented. How would it be read? Current users' tokens application? It's really: current users' tokens _for_ application.   * `GET /user/applications/:id/tokens` \- I felt this could imply that if you owned an application you would be able to see the tokens of all users using the application, which is of course not the intended functionality, or representation.   * `GET /applications/:id/tokens` \- I felt this to be problematic in a manner similar to the above.


Encyption for passwords in config file?

I was wondering, if it makes sense to encrypt passwords for external services stored in my config file with an symmetric encryption algorithm? On the one hand I think, if someone gets access to the config file, he will probably also get access to the code and it will relatively easy to decrypt the passwords... on the other hand I am not comfortable to store the passwords in plain text either. Whats your opinion on this topic? Are there any "best practices"?


doing a full permutation search and replace on a string

I'm writing an app that does something like a custom number (license) plate generator tool where if I ask for the plate "robin" it will suggest I try:   * r0bin   * rob1n   * r0b1n Are there any published algorithms which can do this? It has to be able to handle replacing single letters with multiples, e.g. m with rn and vise-versa and not fall over if it replaces an i with an l then comes to check the l and replaces it back to an i. The list of what gets swapped with what is going to be user input but I'm not expecting a huge list, possibly 10 pairs at most. I'll be implementing this in Ruby or Python but I should be able to convert code from any other language.


is Oracle ADF Mobile free? and what is it's usage scope?

I would like to know whether Oracle ADF Mobile is free to use for someone who doesn't have the (expensive) ADF license, and what if I want to talk to a backend (web service), do I need Weblogic? What about usage scope? Is ADF Mobile suitable for games?


Publish a software with copyright and license

I just read some artical about publishing software and I am personally developing some random metero application at the moment. The artical were suggesting the software should have a publisher website. But what I have to put down in the publisher website to keep my copyright? Is it simply really just "Designed/Developed @ 2012 By King Chan" at the bottom of the site and software and is enough? Or do I have to even write a long paragraph of license/agreement said the user who download/use the software cannot copy the icon/functionality etc? (The Apple and Samsung things get me worry about CopyRight now....)


Clustering and custom applications

So lets say we have a clustered environment setup. We have a cluster SQL Server (I don't know exactly how its done but lets just say its been done for the sake of argument). Now if a website or application is trying to access that database for read/write (say an ASP.NET app or a C# Winforms app) and during that time SQL goes down - it takes a couple of minutes for the clustering failover to take affect to switch to another node. What happens during this time? I think it will time out/unable to connect. BUT is there a way for it to place the request in some pipeline so when the cluster node is back up/switched over it will continue as normal?


Documenting the effect of std::move

As my team move towards embracing the new features in C++11 I'm struggling with how to make the side-effects of `std::move` self-documenting in the code. The issue is that an object that has been moved to another location should no longer be used after that point. All I can come up with is a comment:               std::string x = Func();     Other(x);   // x is zombied.      Obviously this is error-prone and will not handle the cases where deeper code might unwittingly do a `std::move`. Has anyone else dealt with this issue? I have a feeling that diagnosing the use of zombied objects could be as much a pain as tracking down leaks or heap corruption.


If I implement a web-service, how do I respond to POST requests with JSON?

I have to make a rather complex system for my diploma work. Logically it will consist of the following components:   1. Database   2. Web-service   3. Management with web interface   4. Client iOS application that will consume web-service I decided to implement all the first three components under .NET. Firstly I will create a database depending on the information load - this is clear. But then I need a web-service that will return data in JSON format for iOS clients to consume - that's obvious and not that hard to implement. For this I will use WCF technology. Now I have a question, if I implement the web-service, how will I be able to respond to POST requests with JSON? It probably involves WCF JSON or something related? But I also need some web pages as admin part, so will this web- application be able to consume my centralized web-services as well or I should develop it separately? I just want my web service to act like a set of controllers. There is a related question here but this doesn't quite reflect my question.


What are the limits of using OS X when it comes to compiling and running CLI-based tools and scripts that were written with Linux in mind?

I run little scientific scripts and C tools on OS X from time to time. For the C tools, I just download the source and compile using the provided Makefile. I usually don't have any problems when using the tools. However, knowing that those tools were written on Linux most of the time, I wonder if the differences in architecture (Linux is System V based, OS X is BSD based) will present issues.


Is it legal to take the icon/graphic file found online to use in software project?

For example, like this icon website: http://www.iconspedia.com/ There is a lot icon there, (I just can't draw myself, I am not good at it.....), I wonder if is OK to use them in my software project? Will the type of project make difference? i.e Open Source Application, Commercial Application, Free Download Application?


How to test code and functionality effectively while working as a freelancer?

I work as an independent developer. I find it difficult to test functionality of a feature and test code. As project goes complex, I loose focus resulting in each feature partially developed. I want to know how to write test cases, manage smooth workflow and handle features effectively and while remain focused?


What is meant by elaboration of a declaration statement?

Intuitively I understand "elaboration" and have a very mild idea. But I want to know exactly what is elaboration of a declaration? I came across this word in this context: > Stack dynamic storage bindings are created for variables when their > declaration statements are elaborated. The quote is from "Concepts of Programming languages" Robert Sebesta .


How are Implicit-Heap dynamic Storage Binding and Dynamic type binding similar?

"Concepts of Programming languages" by Robert Sebesta says - > **Implicit Heap-Dynamic Storage Binding:** > > Implicit Heap-Dynamic variables are bound to heap storage only when they are > assigned values.   >  It is similar to dynamic type binding. Can anyone explain the similarity with suitable examples. I understand the meaning of both the phrases, but I am an amateur when it comes to in-depth details.


Auto-completion or Suggest

How does Google or amazon implement the auto-suggestion at their search box. I am looking for the most used algorithm with technology stack. PS: I have searched over the net and found this and this and many many more. But I am more interested in not what they do but how they do it. NoSQL database to store the phases? or is it sorted or hashed according to keyword's? So to rephrase the question: Given the list of different searches ignoring personalization, geographic-location etc, How do they store, manage and suggest it so well.


Is programming as a profession in a race to the bottom?

It seems to me that the programming industry is in a race to the bottom. If we take the practices of:   1. Not taking time to implement best practices   2. Using other's people code as much as possible (custom code as a liability)   3. Using increasingly higher level languages to improve productivity   4. GUI based development "tools" that greatly simplify "programming" and do not require people to understand the plumbing behind the code These things imply to me that we are in a race to becoming like any other office worker. It is in the employer's interest for things to not require skill (easier to replace), for things to be prebuilt (less project time). My point here is that a) is there a misalignment between skill and the economic interests of the employer? and b) if there is, how do you mitigate it to enforce professional standards?


Is any one of these the right way to write a license for your opensource project forked and modified from an existing one with different authors?

I've used parts of source from an existing Java library project with what appears to be a 3-clause BSD license. I've made significant changes to the library which makes it possible to use it in a new platform, and also added several new features, and new example projects using the modified library. I want to know if any one of these is the correct way to write a license for the project (no change in type of license) Please read both versions and provide a comparative answer: EITHER:               **<New library name for another platform>**          **Copyright (c) 2014     new author name**          **All rights reserved.**          **This project incorporates code from the project titled     <original library name for different platform>      which has its source code repository at     <git repository link> with the following copyright holders:**          **Copyright (c) 200x-200y     original library author name 1     original library author name 2     original library author name 3**          **All rights reserved.**          Redistribution and use in source and binary forms, with or without     modification, are permitted provided that the following conditions are     met:              Redistributions of source code must retain the above copyright notice,         this list of conditions and the following disclaimer.              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.              Neither the name of **<author name>, <old library author name 1>,         <old library author name 2>, <old library author name 3>**, nor the names of its         contributors may be used to endorse or promote products derived from         this software without specific prior written permission.          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 OWNER     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.      OR:               **<New library name for another platform>     Copyright (c) 2014     new library author name     All rights reserved.**               Redistribution and use in source and binary forms, with or without     modification, are permitted provided that the following conditions are     met:              Redistributions of source code must retain the above copyright notice,         this list of conditions and the following disclaimer.              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.              Neither the name of **<new library author name>**, nor the names of its         contributors may be used to endorse or promote products derived from         this software without specific prior written permission.          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 OWNER     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.               **This project incorporates code from the project titled     <original library name for different platform>      which has its source code repository at <git repository link>     and which is covered by the following terms:**          **<Original library name for different platform>     Copyright (c) 200x-200y     original library author name 1     original library author name 2     original library author name 3     All rights reserved.**          Redistribution and use in source and binary forms, with or without     modification, are permitted provided that the following conditions are     met:              Redistributions of source code must retain the above copyright notice,         this list of conditions and the following disclaimer.              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.              Neither the name of **<original library author name 1>,         <original library author name 2>, <original library author name 3>**,         nor the names of its         contributors may be used to endorse or promote products derived from         this software without specific prior written permission.          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 OWNER     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.


Is Chef an appropriate tool to use for application deployment?

We use Chef for both config management (making sure a "DB Node" has the right version of the right DB on it; that an "App Server" has the right version of Java and env vars on it, etc.). as well as deployment (`chef-client --once`) of our apps to the appropriate app server nodes. To me, personally, I feel like deployment belongs in the realm of the CI server. Everything besides the app (the container, the OS, system tools, system config, etc.) belongs to config management, and is therefore best managed by tools like Chef, Puppet, etc. Currently, our CI builds produce an artifact (an executable JAR with an embedded Tomcat container), and then executes the Chef-Client on all the nodes where the JAR needs to be deployed. The Chef-Client is configured to pull the JAR from the CI server. This feels hacky to me, and I'm trying to research a better, more cogent solution. So I ask:   * Does deployment belong to the CI server, or to the CM tool? **Why?**   * If it belongs to the CI server, what mechanisms (SSH, SCP, etc.) should the CI server be using to actually perform the deploy? We use Bamboo but could just as easily be talking about Jenkins, Hudson, etc.   * There is a difference between _deploying_ (placing the app on the node) and _running_. Does running belong to the CI server as well, the CM tool, or some other process? In other words, what should actually _stop_ the "old" version of the app, replace it with the "new" version, and then _start_ the new version? Is this a candidate for something like Run Deck?


Where should I start on a large concurrent programming assignment?

My task is to implement a distributed semaphore system (links to description) and an application for it. I will be using Java sockets, and it will use watermark arrays and priority queues (not sure where), and so I am curious about how to tackle this project. Specifically, I'd like to know what is a good first-step goal, or a simple subsystem I can implement. At the moment, I just don't know where to focus my attention. The application is a floating license system - like in a computer lab with only one copy of a software (maybe a CAD program), which allows only one PC at a time to use the software. When one machine is using the software, the access to the software is locked. When that machine is done using it, it gives it up and whomever was first in requesting should be next. Here's the pseudo-code algorithm referenced - http://i.imgur.com/q9kRm.png


Measuring the state of progress in an agile project

Is there a way to measure the success of an agile project as it relates to a well defined outcome? For example, I've pair coded Conway's game of life with 12 people using TDD, and each time it was different, but the goal of implementing a fully working version of the program was the same everytime. Clearly that's an extreme example, and most projects will not be that small, or well defined in scope, but it's just an attempt to express the concept I'm presenting, and which I'm looking to better understand.


How do I cope with programming insomnia?

I have been working until past 1:00 in the morning almost every night. Then I ride the bus home and I'm just envisioning my computer screen in my head. I get home and sleep at most four hours and then start seeing my screen on the bus the next day when it begins again. After four or five days of this I crash and sleep for 16 hours or more. I get a lot done but it feels unhealthy and I can't help but wonder if I'd actually get more done on a normal schedule. Has anyone been in a similar situation? Am I just a workaholic? I do like programming and this past year I have been learning how to write LOB apps, and I love it.


How do I explain a "Hello World" program for beginners?

I am going to give some beginners a presentation about writing first program in Java. This program will be about printing "hello world". I'm not sure how can I explain the concepts such as main method (and public and static keywords and the args argument) and class definition. Any ideas how can I explain that so they understand exactly what they mean? I don't have problem to spend 1-2 presentations just in Hello world program but I want them to understand.


Adding conditional toggles into methods for running tests

We've recently started to write tests for our fairly large PHP code base - using PHPUnit we are writing unit and integration test for our models and controllers. What's the concensus in setting a boolean toggle that states whether a class is in TEST_MODE that alters the behaviour of a method? ie: An email helper function - we don't need to send out an email during a test and we're not testing the mail server, just that that method has been called.               if (self::TEST_MODE) {         return true;     }      I'm already going off this idea - I don't think adding extra checks throughout the codebase for testing is an elegant solution. But in this example for instance - what would be a good way to check the email has been sent?


Make a big deal out of == true?

There is a colleague of mine who constantly writes:               if (someBool == true)      It drives me up the wall! Should I make a big deal of it or just drop it?


Is the use of explicit ' == true' comparison always bad?

> **Possible Duplicate:**   >  Make a big deal out of == true? I've been looking at a lot of code samples recently, and I keep noticing the use of...               if( expression == true )         // do something...      and...               x = ( expression == true ) ? x : y;      I've tended to always use...               x = ( expression ) ? x : y;      and...               if( expression )         // do something...      Where `== true` is implicit (and obvious?) Is this just a habit of mine, and I'm being picky about the explicit use of `== true`, or is it simply bad practice?


Scrum Sprint Optimization

Looking for a systematic method for estimating and comparing the success factors of sprint configurations based on:   * Team Size   * Sprint Duration   * Number of Stories


Separating a "wad of stuff" utility project into individual components with "optional" dependencies

Over the years of using C#/.NET for a bunch of in-house projects, we've had one library grow organically into one huge wad of stuff. It's called "Util", and I'm sure many of you have seen one of these beasts in your careers. Many parts of this library are very much standalone, and could be split up into separate projects (which we'd like to open-source). But there is one major problem that needs to be solved before these can be released as separate libraries. Basically, there are lots and lots of cases of what I might call **"optional dependencies"** between these libraries. To explain this better, consider some of the modules that are good candidates to become stand-alone libraries. `CommandLineParser` is for parsing command lines. `XmlClassify` is for serializing classes to XML. `PostBuildCheck` performs checks on the compiled assembly and reports a compilation error if they fail. `ConsoleColoredString` is a library for colored string literals. `Lingo` is for translating user interfaces. Each of those libraries can be used completely stand-alone, but **if** they are used together then there are useful extra features to be had. For example, both `CommandLineParser` and `XmlClassify` expose post-build checking functionality, which requires `PostBuildCheck`. Similarly, the `CommandLineParser` allows option documentation to be provided using the colored string literals, requiring `ConsoleColoredString`, and it supports translatable documentation via `Lingo`. So the key distinction is that these are **optional features**. One can use a command line parser with plain, uncolored strings, without translating the documentation or performing any post-build checks. Or one could make the documentation translatable but still uncolored. Or both colored and translatable. Etc. Looking through this "Util" library, I see that almost all potentially separable libraries have such optional features that tie them to other libraries. If I were to actually require those libraries as dependencies then this wad of stuff isn't really untangled at all: you'd still basically require all the libraries if you want to use just one. Are there any established approaches to managing such optional dependencies in .NET?


Should I create repositories with special functions like getStaffActive()?

I have seen lots of articles but none really help me. That is because I want to use dapper as a DAL. Should I create repositories with special functions? Like getStaffActive()? **If I use repositories**   * I can implement with dapper-extension a generic crud   * I have no idea how to handle database connection. Where to open the connection? If I do this at every function then how am I supposed to use transaction scope? Somehow the repositories I work with should share a connection in order transaction to work. But how to do this? Openning connection in BLL? If I use queries and execute them directly then still the same thing.


Are Frequent Complicated Merge Conflicts A Sign of Problems?

On our team, we use Git as our source control. We have several areas of code that are almost independent but have some overlap. Lately we have been discussing workflows and approaches to using source control. One complaint that comes up when I promote using a feature branch workflow is that people often run into complicated merge conflicts that they incorrectly resolve. By complicated, I mean "not obvious as to how to resolve". In light of this, other workflows are being more actively used, such a "pull rebase"-based workflow. As an advocate of the feature branch approach, I'm not really getting the complaint. Yes, you have to keep your local feature branches up-to-date from master or wherever, but that's about the only real problem I see. I'm thinking that if your merges are always complicated and may have secondary effects, then that's more of a teamwork problem than a Git problem. Am I correct in thinking this? Are complicated merge conflicts a sign of anything good or bad?


Mapping multiple differing taxonomies to each other

At work we have a varied number of websites selling second-hand products. The bosses have noticed that there's often some overlap between the products sold on some of the websites and would like to syndicate content from one site to one or more of the others. The main problem I'm having is that taxonomy on each site is different, so it's not a straight-forward task to put adverts from Site A into a known taxonomy location in Site B. e.g. three sites sell second-hand bicycles but each site's each taxonomy is different... Site A's taxonomy: For Sale > Sports Equipment > Bicycles Site B's taxonomy: Bicycles > Mountain Bikes Site C's taxonomy: Second-hand > Bicycles > Adults' Bikes > 26" Wheel The notion is, for example, that all adverts placed on Site A would be pushed to a routing engine which would decide whether or not the advert should be pushed out to other sites, and it struck me this could be a place to do the taxonomy mapping... but I'm stumped as to an elegant way to go about it. I'm also conscious that although these taxonomies are fairly stable, they're not set in stone! Anyone any ideas on how they'd go about approaching this problem?! Cheers, Adam


Implementation details of database synchronisation API

I want to achieve a database synchronisation between my server database and a client application. The server would run MySQL and the applications may run different database technologies, their implementation isn't important. I have a MySQL database online and web accessible via an API I wrote in PHP (just a detail). My client application ships with a copy of the online data. As time passes my goal is to check for any changes in the online database and make these updates available to the client app via an API call, by sending a date to an API endpoint corresponding to the last date the app was updated, the response would be a JSON filled with all new objects and updated objects, and delete IDs, this makes possible to update the local store appropriately. Essentially I want to do this: http://dbconvert.com/synchronization.php My question is about the implementation details.   1. Would I need to add a column to my database tables with a "last modified" date?    2. Since the client app could be very out of date if it's been offline for a long time, does that also mean I shouldn't delete data from the online database but instead have another column called "delete" set to `1` and a modified date updated appropriately?   3. Would my SQL query simply check for all data with a modified date superior then the date passed into the API request by the client?  I feel like there's a lot more to it then having a ton of dates everywhere. And also, worry that I will need to persist a lot of old data in order to ensure that old versions of the client app always have the opportunity to delete parts of their data when they are able to sync.


Bugs keep reappearing in our GUI software during development. How should this be addressed?

We have a software product has a lot of usability features, and we're constantly changing it. We have issues with things like persisting scroll position which seem to get fixed, but then are broken again when we release. We have good testers, but we seem to miss things like this because there are just so many features in the application it's hard to perform thorough regression testing. How is this problem best solved? I'd love to have automated UI tests, but those are fragile. I'd love to have our testers test every feature every time we implement a new feature, but that would take forever, and seems impractical. I wanted to gauge how other software shops do this and how they avoid recurring bugs.


Improving analysis skills

I am a software engineer with a couple of years of experience. However I feel my problem solving skills need to be improved. To put in crude terms given facts A and fact B I have difficulty in reaching conclusion X ? Some people seem to have the ability to reach conclusion X given facts A and B and and also remembering to take facts C,D in account. What techniques do you use to improve your problem solving and analysis skills ?


How does Google App Engine remote_api work

As I understand it, and I may be wrong, but GAE's remote_api allows one application to access another application's datastore. I'll be blunt I don't understand how this works. I have read the article that everyone likes to point to, but I still don't understand how you can link two applications. Can someone explain it to me, perhaps with a small example or just point me to a tutorial that does this?


Forcing logger/appender to output line logged at lower than its current level?

Consider the following scenario: I am writing a Dispatcher Servlet that delegates processing to various handlers depending on the request URL; the handler objects having previously registered themselves for URL patterns, pretty much as Servlets register themselves in web.xml. When a Handler registers or unregisters itself for a pattern, I want to log a line that includes the action and pattern; and also the current mappings, so that when a subsequent request processing logs a warning that a request was not processed I can go back in the logs and find out the mappings. The question is how to ensure that lines logged by `registerUrlPattern`/`unregisterUrlPattern` actually appear in the log file:   * It seems to me that these methods should log the mapping changes at INFO level, since it is additional INFO being logged. But the logger's level is WARN so that will not work. The logger get many other messages at INFO level so it is not possible to change its level to INFO in production, except for troubleshooting.   * I could log it at WARN level, but qa/usability/customer does not like such warnings to appear.  I can think of the following alternatives:   * Change the Logger's level to INFO when logging these lines, possibly by adding a `forceInfo` method in my Logger (which wraps a standard log4j type logger)   * Use a different Logger for these methods and set its level to INFO   * Log at warning level but change the language to indicate that it is not something to be worried about


Database Driven Web Application, C# Front-End and F# Back-End meaning

Hi I am an intern working with ASP.NET. My current task is to make a website which will incorporate some jquery viewing features. This project seems to me will be primarily dealing with reading data from a database and making graphs out of them. This will require me to make custom queries from whatever the client is looking at. I think it is going to be what this guy calls an Ad Hoc Query tool My plan for this is to make it a database-driven website. So I can utilize the jquery dynamic viewing capabilities. I stumbled upon the functional programming paradigm and found F#. I read that because of it's functional programming paradigm, it makes it a good language to do asynchronous functions. I read about how you can use this with LINQ to SQL and how easy it is to make queries without actually putting the query language in. I understand the concept of the MVC design pattern. But _**I don't understand what they mean about C# being the front-end and F# being the back-end**_. Can someone clarify this to me? Also what are your thoughts about doing this project in this way? Any comments and thoughts are greatly appreciated. I feel as if learning F# will be a great learning experience for me. My guess is that the F# back-end is like the part where it controls the calls to the database. F# is possibly the model part of the design pattern. And C# is the controller. So HTML, Javascript and Jquery stuff will be my View design pattern. Clarify please?


Logging, do you do it?

Back on my theme of late: interview questions. Was recently asked to describe a time I'd used logging. My first instinct was to respond with compiler warnings set to full and error- out. What he was interested in was the use of logging as a debugging tool. Unfortunately I couldn't think of one at the time except the one I was assigned because clients where having issues connecting to license servers and support wanted a log. Thinking more clearly now though...I realized that I _used_ to use logging a lot, and still do in little experimental projects. I still use it when developing on Unix systems, but not so much on Windows. Why? Because as much as I despise Visual Studio and think their compiler is maybe one of the worse around (I run into numerous bugs and issues with it every day), they got the debugger right! If I could put Visual Studio's debugger on gcc built executables I absolutely would. Add to this the use of unit testing to bring things into focus, I simply haven't needed logging very much. On the other hand, maybe I'm really missing out. I have occasionally used it, and in fact some things that aren't exactly "logging" seem to me very similar. For instance, in debug mode the custom widget I created for this drawing application draws a bunch of extra visual clues representing bounding boxes and hot-spots. I also make very heavy use of assertions and exceptions. I do have a bunch of mock classes that "log" but they're never used in the real program. For example, I have a custom drawing context wrapper that allows me to use the same drawing code for various UI API's. I have a version of it that simply spits out all the commands it receives to a string that I then compare to expected results. I use this to unit test drawing code. If I where to use logging as a debugging tool I would want to do so in a consistent, standardized manner. On the other hand I'm at a bit of a loss to think of one. I suppose if I where writing something that surrounded network communication and such I would find it very necessary to have debugging logs and various verbosity outputs. On the other hand I write fairly simple UI programs by comparison. So, do you use logging? What do you use it for? How does logging fit in your coding standards?


Advanced Search Stored procedure

So I am working on an MVC ASP.NET web application which centers around lots of data and data manipulation. PROBLEM OVERVIEW: We have an advanced search with 25 different filter criteria. I am using a stored procedure for this search. The stored procedure takes in parameters, filter for specific objects, and calculates return data from those objects. It queries large tables 14 millions records on some table, filtering and temp tables helped alleviate some of the bottle necks for those queries. ISSUE: The stored procedure used to take 1 min to run, which creates a timeout returning 0 results to the browser. I rewrote the procedure and got it down to 21 secs so the timeout does not occur. This ONLY occurs this slow the FIRST time the search is run, after that it takes like 5 secs. I am wondering should I take a different approach to this problem, should I worry about this type of performance issue if it does not timeout?


If your algorithm is correct, does it matter how long it took you to write it?

I recently found out that Facebook had a programming challenge that if completed correctly you automatically get a phone interview. There is a sample challenge that asks you to write an algorithm that can solve a Tower of Hanoi type problem. Given a number of pegs and discs, an initial and final configuration; Your algorithm must determine the fewest steps possible to get to the final configuration and output the steps. This sample challenge gives you a 45 minute time limit but allows you to still test your code to see if it passes once your time limit expires. I did not know of any cute math solution that could solve it, and I didn't want to look for one since I think that would be cheating. So I tried to solve the challenge the best I could on my own. I was able to make an algorithm that worked and passed. However, it took me over 4 hours to make, much longer than the 45 minute requirement. Since it took me so much longer than the allotted time, I have not attempted the actual challenge. This got me wondering though, in reality does it really matter that it took me that long? I mean is this a sign that I will not be able to get a job at a place like this (not just Facebook, but Google, Fog Creek, etc.) and need to lower my aspirations, or does the fact that I actually passed on my first attempt even though it took too long be taken as good?


How to avoid throwing vexing exceptions?

Reading Eric Lippert's article on exceptions was definitely an eye opener on how I should approach exceptions, both as the producer and as the consumer. However, I'm still struggling to define a guideline regarding how to avoid throwing vexing exceptions. Specifically:   * Suppose you have a Save method that can fail because a) _Somebody else modified the record before you_ , or b) _The value you're trying to create already exists_. These conditions are to be expected and not exceptional, so instead of throwing an exception you decide to create a Try version of your method, TrySave, which returns a boolean indicating if the save succeeded. But if it fails, how will the consumer know what was the problem? Or would it be best to return an enum indicating the result, kind of Ok/RecordAlreadyModified/ValueAlreadyExists? With integer.TryParse this problem doesn't exist, since there's only one reason the method can fail.   * Is the previous example really a vexing situation? Or would throwing an exception in this case be the preferred way? I know that's how it's done in most libraries and frameworks, including the Entity framework.   * How do you decide when to create a Try version of your method vs. providing some way to test beforehand if the method will work or not? I'm currently following these guidelines:      * If there is the chance of a race condition, then create a Try version. This prevents the need for the consumer to catch an exogenous exception. For example, in the Save method described before.      * If the method to test the condition pretty much would do all that the original method does, then create a Try version. For example, integer.TryParse().     * In any other case, create a method to test the condition.


If someone says Android message API what it related to? What classes it consists in?

Recently started Android programming. Developed 3 apps using threads, UI API, telephony API. My quesion is if someone says Android message API what it related to? What classes it consists in? "Actually I have seen this in an Android job post" Thanks


Tips for developing a mobile app with a team

I am currently a high school student, I've been assigned to manage a group in my school to develop a mobile app and the problem is that all of us have no experience in making a project in a team and the greater problem is that we have only till the end of the month to submit the app. Can I have some tips to overcome these problem? Also we decided to do the app in Python with Kivy, we know Python.


Why are Coldfusion CFM and CFC files not in clear text?

I am learning Coldfusion, however when I try to open CFM and CFC files they appear to be unreadable. Some of the data look like java code, but other data looks like this: "¸ aº*3¶ H**´ !½ zY¼S¶". I thought that this might be compiled with Java, but http://java.decompiler.free.fr does not seem to be able to decompile it.


What does "mockable" mean?

I came across this term when looking into PHP's "traits" (which are apparently bad, since, among things, they're not mockable), but I can't really find a definition for this "mockability". It might be related to polymorphism? There isn't even a Wikipedia entry I could find!


Is there a standard class name suffix for talking to remote services?

My system is consuming a number of different remote (i.e. web) services to get data (mainly). These services are in different systems within the company (i.e. I have no control over them). I want to write classes that encapsulate the communication to these services (on a one to one basis). For example one class that talks to the CustomerService, one that talks to the AccountService etc. Each of these classes would use a single client class (e.g. HttpClient) to do the actual underlying transport communication. My question is what would you call these types of class that talk to the service? ...clients? consumers? adapters? (Example: CustomerService, the class that would call it is CustomerServiceClient(?)). Additional: If each of my classes talks to the remote service (via a HttpClient class) and creates internal DTOs from remote DTO type data, would you say then it is an Adapter?


Combining two MVC frameworks in a project

Is it any good to combine two MVC frameworks together in a project? Is it a fairly common approach? I am thinking about using a serverside framework like **CodeIgniter/Laravel** and client side framework **AngularJS** in a predominantly CRUD based web project. I am a bit apprehensive about this idea. I think this approach does not get the best out of both frameworks and can kind of get in way of each other making the application needlessly complicated. Are there some good approaches/practices if one wants to combine these frameworks together?


Is it normal to have a "mini" IT department within a department in a company?

The company where I work has a very decent IT department, which provided _almost_ everything we need from an IT department. Anyway because of the nature of the work in my department (not IT related by all means) sometimes we need some apps to make our work easier, these small apps (if to be made by the IT department) will only be used by our department in small scope and with a lot of changes from time to time so the IT department due to these reasons and also due to the fact that they do not know a lot about the nature of our work they are not interested in developing such an apps to our department. Luckily, there are two guys in this department who know how to program (let's say medium skilled), they start making small apps in their free time (while at work) and keep them updated to help the employees of our department in terms of productivity, things are fine and everyone is happy, also that we get some problems from the IT department from time to time (which I think is normal). The only reason why the IT department is not blocking this is the managers who are supporting these apps because they make their lives easier. You can say the IT department is standing neutral towards these apps as long as they are secure enough. Now is this normal in companies? a "mini IT" department (or team) inside a department in a company that does not deal with the main IT department regarding these apps, also these are apps are installed in the company network and generally are assessed by the IT department for security issues. Is this normal? or does it sound weird? Please note: these apps are not something if lost will cause a problem to the company or something like that. They are purely to help in productivity.


Who creates the agile definition of done(DoD)?

I believe that the "Definition of Done" is **created** by the **Team** and the "Acceptance Criteria" is created by the **Customer**. Am I correct? Can a customer define the Definition of Done to the agile team?


What alternatives are there for cross cutting concerns other than aspect oriented programming?

Aspect oriented programming promises to deal with cross cutting concerns, but I'm not completely sold on it yet. Have there been any other attempts to deal with this problem?


Programming as a conversation

I have often wondered if it would be possible to write a programming language that would work as a conversation. I would tell the computer that I want to store coordinates and it would ask what representation I would use. I would then ask to find the shortest path between points and it would ask if I want to use Djkstra's, brute force or use Floyd's? What research has been done towards producing a system like this?


What product is better: ADFSv2, Ping Identity, CS Siteminder?

I'm comparing different STS's for claims based authentication and am trying when it's appropriate to use each one. It appears that ADFSv2 should be used in all Windows Environments. Ping and Siteminder are more for the Unix side... although a sales rep said Ping was better for Windows, I didn't really understand "why" Any comparative information is much appreciated!


How to support different API Versions

I am writing a Rest API and am wondering how best to handle supporting the different versions. By this I don't mean how to define a URI as V2 or V3, but rather how to structure the code given that it'd need to:   * Support multiple versions at the same time, eg. V1 & V2 & V3 URIs must be live at the same time. I would retire V1 when say V4 comes in in order to constrain the amount supported at any one time.   * Avoid as much code duplication as possible   * Make it easy to add non-breaking changes to a version, without it impacting on other versions  It would seem that there are few approaches that could be taken:   * Use Git to control the versions, with a branch for the different versions (and old versions essentially having no new development work done on it). This would mean no code duplication as only the latest version is in the code, but previous versions would need to work with the new version of the DB until they are retired.    * Duplicate code so that each version is handled in the same application and has a totally separate code path, but this would mean a lot of duplication   * Re-use a lot of code across the versions, but this would make it harder to maintain as changing one version is more likely to impact a previous version Is there any best practice to deal with this problem as all options seem to have their own problems?


C#/C++ GUI development without drag and drop?

I'm currently programming Java, I have played around with C++ before, but I have never touched GUI as I feel "cheat-like" when using its drag and drop system. I feel good and enjoy programming my own GUI like I do in Java, it feels much more rewarding. Is there any way I can program the GUI for C#/C++ like in Java, without the drag and drop system, and if so could someone possibly recommend me a tutorial (A lot of the tutorials are using the drag and drop system)? So far I have tried researching this and really can't find much explaining how I would do it.


Simple dependency tree diagram generator

I have a need to produce a simple dependency tree diagram. The input data would be in the following simple format:               ITEM_NAME   DEPENDENCY     ----------------------------     ITEM_101    ITEM_75     ITEM_102    ITEM_77     ITEM_102    ITEM_61     ITEM_102    ITEM_11      This means that ITEM_101 depends on ITEM_75 and ITEM_102 depends on items ITEM_77, ITEM_61 and ITEM_11. So the diagram would have items ITEM_77, ITEM_61 and ITEM_11 in one vertical level and ITEM_102 would be below it with a line connecting each of the three dependencies to ITEM_102. The same would be for ITEM_101, ITEM_75 would be somewhere above it and there would be a line connecting it. In the real world this tree represents a hierarchy of scheduling jobs. We have a very extensive workload automation hierarchy in `Autosys` and I have heard that its front end utility has something like this tree visual representation, however, for some reason, that utility has been disabled by admins. My business users want to see this hierarchy in an easy-to-consume format. I was hoping that I won't have to program something like this from scratch because it seems like quite a common reporting requirement and the input data is simply formatted. My question is: is there a FOSS tool that takes standardized data input and produces such a hierarchical tree? Thanks


How do I mutate a value in a genetic algorithm using Gaussian distribution?

I've been reading 'Introduction to Evolutionary Algorithms'. This method is stated, but not described, and I can't find anything more specific online. p44/45 of 2nd Ed for reference. "adding to the current gene value an amount drawn randomly from a Gaussian distribution with mean zero and user-specified standard deviation" Would be great to get the step by step, from initial to mutated value, including how Gaussian distribution works (or a link to something that could fill that gap). Thanks!