Editing User:Urathai

Jump to navigation Jump to search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
 
== A: An introduction ==
 
== A: An introduction ==
 
* Please describe yourself in three sentences, one of them regarding your current studies.
 
* Please describe yourself in three sentences, one of them regarding your current studies.
*: My name is Joel Dahne and I am a first year student at the master program in mathematics at Uppsala University, Sweden, where I also did my bachelor in matematics. I am from Sweden, so I naturally speak Swedish, but all my current studies are in English so I am used to that as well. Apart from mathematics I have a great interest in computer science which is always a motivation when taking new courses in mathematics.
+
*: My name is Joel Dahne and I am a first year student at the master program in mathematics at Uppsala University, Sweden, where I also did my bachelor in matematics. I am from Sweden, so naturally speak Swedish, but all my current studies are in english so I am used to that as well. Apart from mathematics I have a great intereset in computer science which always is a motivation when taking new courses in mathematics.
  
 
* Why do you want to participate in the Google Summer of Code? What do you hope to gain by doing so?
 
* Why do you want to participate in the Google Summer of Code? What do you hope to gain by doing so?
*: I have done quite a lot of programming but mostly it has been shorter projects, testing a new language, creating some small program or similar. The biggest project I have done was during my bachelor thesis where I create a program to isolate zeros for systems of two analytic functions. I really enjoyed that project and I want to do something similar again.
+
*: I have done quite a lot of programming but mostly it has been shorter projects, testing a new language, creating some small program or similar. The biggest project I have done was during my bachelor project where I create a program to isolate zeros for systems of two analytic functions. I really enjoyed that project and I want to do something similar again.
 
** Please also describe your previous experience with the GSoC, if any.
 
** Please also describe your previous experience with the GSoC, if any.
 
**: First time I heard about GSoC was last summer so I have no experience from previous years.
 
**: First time I heard about GSoC was last summer so I have no experience from previous years.
Line 13: Line 13:
 
== C: Contact ==
 
== C: Contact ==
 
* Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave.
 
* Please state the (unique and identical where possible) nick you use on IRC and any other communication channel related to Octave.
*: The nick I will be using is '''Urathai''' and you can find me on other channels with that as well, for example GitHub [https://github.com/urathai].
+
*: The nick I will be using is '''Urathai''' and you can find me on other channels with that as well, for example GitHub [[https://github.com/urathai]].
  
 
* Which time zone do you live in? Will that change over GSoC duration?
 
* Which time zone do you live in? Will that change over GSoC duration?
Line 24: Line 24:
 
This part is one of the more important ones in your application. You are allowed to be as verbose as you want, as long as you stay on topic ;-)
 
This part is one of the more important ones in your application. You are allowed to be as verbose as you want, as long as you stay on topic ;-)
 
* Please describe your experience with C++, Octave or Matlab m-scripts, OpenGL and Qt.
 
* Please describe your experience with C++, Octave or Matlab m-scripts, OpenGL and Qt.
*: I have quite a lot of experience with C++, especially in terms of scientific computing. This comes mainly from my bachelor thesis where I implemented a program for isolating zeros to systems of two analytic functions, more about that further down.
+
*: I have quite a lot of experience with C++, especially in terms of scientific computing. This comes mainly from my bachelor project where I implemented a program for isolating zeros to systems of two analytic functions, more about that further down.
*: I first came across Matlab in my Scientific Computing courses were I learned the basics. After I have used it several times for calculations and plotting in smaller projects. Since about a year ago I switched from using Matlab to Octave. I am aware of some of the pros and cons with the language, for example that if you want any kind of performance you should use vectorized functions instead of for-loops.
+
*: I first came accross Matlab in my Scientific Computing courses were I learned the basics. After I have used it several times for calculations and plotting in smaller projects. Since about a year ago I switched from using Matlab to Octave. I am aware of some of the pros and cons with the language, for example that if you want any kind of performance you should use vectorized functions instead of for-loops.
 
*: For OpenGL and Qt I have no experience but I know the basics of what they are supposed to do and how.
 
*: For OpenGL and Qt I have no experience but I know the basics of what they are supposed to do and how.
  
Line 32: Line 32:
  
 
* Please describe your experience with being in a development team.
 
* Please describe your experience with being in a development team.
*: Most of my programming has been personal projects so I have little experience from being in a development team, though this is something I really would like to do. On any larger project you are several people working together and I want to learn more about how I function in such situations.
+
*: Most of my programming have been personal projects so I have little experience from being in a development team, though this is something I really would like to do. On any larger project you are several people working together and I want to learn more about how I function in such situations.
  
 
* Please describe the biggest project you have written code for and what you learned by doing so. Also describe your role in that project over time.
 
* Please describe the biggest project you have written code for and what you learned by doing so. Also describe your role in that project over time.
*: The biggest project I have worked on is, as mentioned, my bachelor thesis. It was my first big project and I have learned very much from it. I started on the project last spring and my object was to build a program that could isolate zeros to a system of two analytic functions. Since I am a mathematics student the goal was to have it generate validated results, both on the number of zeros and their locations. It was done using interval methods with the C-XSC package [http://www2.math.uni-wuppertal.de/~xsc/]. This was my first project were I used version control in a serious way. I did many mistakes at first, for example keeping track of binary files and making to large commits, but I learned a lot. I learned about optimizing and parallelizing. For some problems the program ran for several days on multiple computers, so performance was very important. At first I wrote the program for myself only, no documentation and weird input and output. Later on I realized I also wanted other people to be able to use the program. This made me rewrite the whole input and output so that it would be easier to understand and use. Now, whenever I start a new project, even if it is just for me at the moment, I think about how I can make using the program easier for other people. The latest version of the project is available at GitHub, https://github.com/Urathai/generateZeros.
+
*: The biggest project I have worked on is, as mentioned, my bachelor project. It was my first big project and I have learned very much from it. I started on the project last spring and my object was to build a program that could isolate zeros to a system of two analytic functions. Since I am a mathematics student the goal was to have it generate validated results, both on the number of zeros and their locations. It was done using interval methods with the C-XSC package [[http://www2.math.uni-wuppertal.de/~xsc/]]. This was my first project were I used version control in a serious way. I did many mistakes at first, for example keeping track of binary files and making to large commits, but I learned a lot. I learned about optimizing and parallelizing. For some problems the program run for several days on multiple computers, so performance was very important. At first I wrote the program for myself only, no documentation and weird input and output. Later on I realized I also wanted other people to be able to use the program. This made me rewrite the whole input and output so that it would be easier to understand and use. Now, whenever I start a new project, even if it is just for me at the moment, I think about how I can make using the program easier for other people. The latest version of the project is available at GitHub, https://github.com/Urathai/generateZeros.
  
 
* Please state the commits and patches you already contributed to Octave.
 
* Please state the commits and patches you already contributed to Octave.
 
** Fixed a bug in the dot product for intervals
 
** Fixed a bug in the dot product for intervals
 
** Implemented end-indexing for intervals [https://savannah.gnu.org/bugs/index.php?50626]
 
** Implemented end-indexing for intervals [https://savannah.gnu.org/bugs/index.php?50626]
** Created a proof-of-concept implementation of Taylor arithmetic [https://github.com/Urathai/octave-taylor-POC]
 
  
 
== F: Feeling fine ==
 
== F: Feeling fine ==
Line 47: Line 46:
 
*: I have not used IRC before, but it was easy to set up and I had no problem using it. Though I am used to mailing lists I am not used to development mailing lists. Sometimes I think it is a bit unclear what fits best on the IRC channel or the mailing list.
 
*: I have not used IRC before, but it was easy to set up and I had no problem using it. Though I am used to mailing lists I am not used to development mailing lists. Sometimes I think it is a bit unclear what fits best on the IRC channel or the mailing list.
 
** Mercurial or other source code management systems
 
** Mercurial or other source code management systems
**: I have used git for my personal projects and am familiar with that. Though I am not very experienced with using source code management for collaborating with many different people. Mercurial was easy to get going with but I will have to read a bit more about how it works in the background.
+
**: I have used git for my personal projects and is familiar with that. Though I am not very experienced with using source code management for collaborating with many different people. Mercurial was easy to get going with but I will have to read a bit more about how it works in the background.
 
** Mediawiki or other wiki software
 
** Mediawiki or other wiki software
 
**: I have no experience with Mediawiki other than writing this text.
 
**: I have no experience with Mediawiki other than writing this text.
Line 54: Line 53:
  
 
* What will make you actively stay in our community after this GSoC is over?
 
* What will make you actively stay in our community after this GSoC is over?
*: I think that the one thing that would make the most difference regarding if I stay or not is if people use the code I write. If people make use of it, ask questions and do bug reports I think I will have no problem finding motivation to continue. Also making new friends and finding people to discuss with would probably get me to stay.
+
*: I think that the one thing that would make the most difference regarding if I stay or not is if people use the code I write. If people make use of it, ask questions and do bug reports I think I will have no problem finding motivation to continue. Also making new new friends and finding people to discuss with would probably get me to stay.
  
 
== O: Only out of interest ==
 
== O: Only out of interest ==
Line 60: Line 59:
 
*: Yes!
 
*: Yes!
 
** If so, when and where? How far have you been involved already?
 
** If so, when and where? How far have you been involved already?
**: The first time I encountered Octave was during a conference last summer, SWIM2016 [https://swim2016.sciencesconf.org/], were Oliver Heimlich presented his interval package. Since then I have been using it instead of Matlab but I have not contributed anything before this.
+
**: The first time I encountered Octave was during a conference last summer, SWIM2016 [[https://swim2016.sciencesconf.org/]], were Oliver Heimlich presented his interval package. Since then I have been using it instead of Matlab but I have not contributed anything before this.
  
 
* What was the first question concerning Octave you could not find an answer to rather quickly?
 
* What was the first question concerning Octave you could not find an answer to rather quickly?
*: I tried to install Octave from source following the wiki documentation. [[Octave_for_Debian_systems]] Unfortunately this documentation is outdated and I had to manually track down some of the required dependencies which took some time.
+
*: I tried to install Octave from source following the wiki documentation. [Octave_for_Debian_systems] Unfortunately this documentation is outdated and I had to manually track down some of the required dependencies which toke some time.
  
 
== P: Prerequisites ==
 
== P: Prerequisites ==
 
* Please state the operating system you work with.
 
* Please state the operating system you work with.
*: My daily operating system is Ubuntu 16.04, but I am also dual booting this with windows 10. Both of these I can access freely with no conditions.
+
*: My normal operating system is Ubuntu 16.04, but I am also dual booting this with windows 10. Both of these I can access freely with no conditions.
  
 
* Please estimate an average time per day you will be able to access
 
* Please estimate an average time per day you will be able to access
Line 80: Line 79:
 
== S: Self-assessment ==
 
== S: Self-assessment ==
 
* Please describe how useful criticism looks from your point of view as committing student.
 
* Please describe how useful criticism looks from your point of view as committing student.
*: I think that the most important part of useful criticism is explaining why they think something should or should not be done in a particular way and what they base that on. If I don't know why I do something I first of all won't remember it and secondly might not like it. When it comes to criticism over mail or other more static channels I think it is extra important to give references when possible. That way I can look up things myself if I need any more information.
+
*: I think that the most important part of useful criticism is explaining why they think something should or should not be done in a particular way and what they base that on. If I do not know why I do something I first of all wont remember it and secondly might not like it. When it comes to criticism over mail or other more static channels I think it is extra important to give references when possible. That way I can look up things myself if I need any more information.
  
 
* How autonomous are you when developing:
 
* How autonomous are you when developing:
Line 91: Line 90:
 
== Y: Your task ==
 
== Y: Your task ==
 
* Did you select a task from our list of proposals and ideas?
 
* Did you select a task from our list of proposals and ideas?
*: My main interest lies in improving the support for doing validated numerics in Octave. I think that validated numerics will grow, we get access to more and more computing power and  we can in many cases shift our focus from quickly generating results to generating guaranteed correct results. The interval package is intended for exactly this and I would like to improve on that. I am also interested in implementing Taylor arithmetic, a method for calculating arbitrary order derivatives, in Octave which I think would be a addition for the interval package in particular. I have implemented a proof-of-concept for how this would work [https://github.com/Urathai/octave-taylor-POC]. I would be very work with this during GSoC but I am not sure if it is reasonable to implement a whole new Octave-forge package during GSoC and I am not sure who could mentor such a project, if this is interesting please let me know.
+
*: Sort of. My main interests lies in improving the interval package. The are a couple of listed possible projects, all of which sound interesting. I have have also thought about a different project, implementing Taylor arithmetic in Octave. I think that for the interval package to really shine it needs access to automatic differentiation, which could be done in the form of Taylor arithmetic. I have implemented a proof-of-concept for how this could work [[https://github.com/Urathai/octave-taylor-POC]]. Though I am not sure if it is reasonable to implement a whole new Octave-forge package during GSoC and I am nor sure who could mentor such a project, if this is interesting please let me know.
*: As mentioned I am also very interested in improving the interval package. There are several possible projects listed and I could work on anyone of them. The one I have thought most about is about implementing support for N-dimensional vectors. This would be a very important step to allow for, for example, implementation of higher dimensional Taylor arithmetic. It would also make the transition from non-validated to validated numerics easier which I think is very important. Below is a rough time line for this project.
+
*: The project I have looked most at is the one about implementing support for N-dimensional arrays of vectors. I think that this projects is important if we want to make working with intervals as natural as working with floating points in Octave. Below I give a rough possible time line for this.
  
 
*: '''Community Bonding''' (May 4-30)
 
*: '''Community Bonding''' (May 4-30)
*: Become more comfortable with the interval package by reading through the full documentation and try using it more.
 
 
*: '''First Term''' (May 30 - June 30)
 
*: '''First Term''' (May 30 - June 30)
**: '''Week 1''' (May 30 - June 2): Identify all functions that will need to be changed to support N-dimensional arrays.
 
**: '''Week 2''' (June 5-9): None-coding time
 
**: '''Week 3-4''' (June 12-23): Implement support for creating and displaying N-dimensional arrays.
 
**: '''Week 5''' (June 26-30: Evaluation
 
 
*: '''Second Term''' (June 30 - July 28)
 
*: '''Second Term''' (June 30 - July 28)
*: Implement vectorized functions for N-dimensional arrays of intervals.
 
*: Start implementing specific functions for N-dimensional arrays (whatever they are)
 
 
*: '''Final Term''' (July 28 - August 29)
 
*: '''Final Term''' (July 28 - August 29)
*: Add examples and usage of N-dimensional intervals to the documentation. Documentation will probably be written in parallel to implementing the new functions, this time is for completing it and adding more usage examples.
 
[[Category: Summer of Code]]
 

Please note that all contributions to Octave may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see Octave:Copyrights for details). Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)