def create_submission(self, source_code, language_name=None, language_id=None,
                          std_input="", run=True, private=False):
        """
        Create a submission and upload it to Ideone.

        Keyword Arguments
        -----------------

        * source_code: a string of the programs source code
        * language_name: the human readable language string (e.g. 'python')
        * language_id: the ID of the programming language
        * std_input: the string to pass to the program on stdin
        * run: a boolean flag to signifying if Ideone should compile and
               run the program
        * private: a boolean flag signifying the code is private

        Returns
        -------

        A dictionary with the keys error and link.  The link is the
        unique id of the program.  The URL of the submission is
        http://ideone.com/LINK.

        Examples
        --------

        >>> ideone_object = Ideone('username', 'password')
        >>> ideone_object.create_submission('print(42)', language_name='python')
        {'error': 'OK',
         'link' : 'LsSbo'}

        """
        language_id = language_id or self._translate_language_name(language_name)
        result = self.client.service.createSubmission(self.user, self.password,
                                                      source_code, language_id,
                                                      std_input, run, private)
        result_dict = Ideone._transform_to_dict(result)
        Ideone._handle_error(result_dict)
        return result_dict