User:Thansharp
A: An introduction
- I am Prashanth Srinivasan. I like to solve math problems, and write code to help me solve them/gain insights. I enjoy mathematical problems. I am a fourth year dual degree (Btech+Mtech) student at IIT Madras, Chennai (India) in Mechanical engineering.
- I can speak fluently in English, Hindi and Tamil.
- I am a fourth year Dual Degree student in IIT Madras, Chennai (India) in Mechanical engineering. My main area is thermal and energy engineering. However, I've done quite a few courses in Mathematics and Computer Science : Computational Geometry, Graph Theory, Optimisation, Data Analysis, Linear Algebra, and Dynamical Systems
- I like to code. I want to contribute to the open source software tools that I use, and feel I can add value to. I have always only written small programs to get tasks done. I haven't written full-fledged features for any Open Source Software within a team. I feel a GSoC, with the mentorship aspect, will teach me a lot about programming, Software Engineering Principles, and most importantly, writing software for the public to see.
- I found Octave to be a project with a really nice fit for my interests, which are more inclined towards the mathematical and numerical side. The proposal involves a good deal of pure mathematics. I am interested in Octave because I have seen how useful it has been for me.
C: Contact
- thansharp is my nick on Octave IRC channel.
- My time zone is UTC + 5:30. I live in India.
- I usually code between 13.00 to 19.00 UTC on weekdays. I start at 8.00 UTC during weekends and few days.
E: Coding experience
- I have 2 plus years of experience in Matlab code. I mainly write programs for my Academics projects.
- I have been coding on and off in Python since 2011. I built a few dynamic programming routines with them.
- I do not have any experience on working with open source projects or free projects. I hope to change that in the coming few days.
- My single longest programming experience was in the summe of 2013, which I spent interning at CD-Adapco(a Computational Software company). I programmed in Java, which was the language used for their client side software. I developed a test suite for a geometric kernel. The Geometric Kernel was used in the CAD modelling engine of STAR-CCM+. My code was to test whether :
- The order of constraints applied to a CAD diagram would give different final results. (I can define a rectangle by constraining opposite sides to be of equal length, and parallel. Does the order affect the final outcome, in a consistent manner?)If so how do the results differ.
- Does the geometric kernel recognise whether the diagrams are fully defined (adding more constraints should give out errors).
- Is the engine well behaved when the user does not behave as expected (user leaves the diagram halfway - are the results cached? Are the errors/warnings consistent?)
Due to expected changes in the geometric kernel, my tests were to document benchmarks in performance of the old and new kernels, so that backward compatibility can be ensured. The total package spawned 15 classes, and a total of 100+ unit tests. The total lines of code after various stages of refactoring were around 2,000+. Although I was mainly guided by a mentor, I had a say in deciding the hierarchical structure of the tests, and exactly what should be tested.
- I haven't contributed to any package within Octave yet.
F: Feeling fine
- I am fine with IRC and Mailing lists.
- I am comfortable working with git. I have installed Mercurial in my Ubuntu system and I shall report on it by tomorrow.
- I am familiar with MediaWiki and I am comfortable using it. Mediawiki was the primary communication tool I used while working in a research lab previously.
- make,gcc,gdb : I have used them to build other software like scribus, and BRL-CAD. I have a working Octave installation. I shall try building Octave on this machine in a couple of days.
O: Only out of interest
- Yes. I heard of it when I searched for Free alternatives to Matlab. I also came across it in the Andrew Ng Coursera course on Machine Learning.
- I think it would be fruitful for Octave to advertise in the educational institutions as a free and open source alternative to Matlab. I see ads for SciLab, and hence think Octave can be advertised too.
My first problem with Octave was that I was not able to use the LLVM libraries. There isn't enough documentation on LLVM troubleshooting on the Octave Wiki, even though it is cited as a required external package [1].
- I work with Ubuntu 12.04 and Windows 7. I have them installed separately.
- I have root/administrator access in both operating systems.
- I will be able to access
- internet for 12-15 hours a day on weekdays, and 24 hours on weekends.
- a computer for 24 hours a day.
- a computer for my progressing work for 24 hours a day.
- I am the owner of the computer and I can install any software which is supported by my operating system. I cannot install new OS'es, however. My particular laptop model has problems with Windows secureboot and grub. Ubuntu 12.04 itself took 2 days of online help to install.
S: Self-assessment
- I view constructive criticism as a positive sign, if there are suggestions or feedback given. I would like to be told directly about an issue. I think there are always a few issues or cases which can slip through unnoticed during development phase. That's why we have unit tests, forums, beta-releases. They all help us improve upon the code we write.
- How autonomous are you when developing? Once I know what to do, I will usually do it by myself in due time. I am not the person who jumps head on into work the moment it is given. I prefer thinking a few parts through, and convincing myself I have the idea right before I code.
I feel awfully thought out code will only bite me in the end, when the run-debug-fix loop hits.
- Do you like to discuss changes intensively and not start coding until you know what you want to do? Yes and No. I prefer if there was a clear plan of what to do. In cases where I am still learning, I find example code and documentation really helpful, till I get a hang of the system.
I feel some minutiae can be left till we arrive at the respective feature. But we would need to discuss the basic structure of the code without jumping head on, to reduce the amount of refactoring code.
- Do you like to code a proof of concept to 'see how it turns out', modifying that and taking the risk of having work thrown away if it doesn't match what the project or original proponent had in mind? I feel, atleast with octave, I would like this. Having a feel of the code gives me a psychological confidence (I still don't know why). Ideally, I wish I could just ideate, code and hammer out a prototype. But in reality, I find myself working incrementally, atleast at the starting stages.
Y: Your task
- I find the following 2 numerical projects interesting :
1. Solver for 1D nonlinear boundary value problems : I am reading through the paper mentioned there. The first paper, (link) , BVP solver using residual control and Matlab PSE, seems restricted behind a pay-wall. 2. Solver for initial Boundary Problems for 1D parabolic/elliptic PDE's. : I have read the preliminary reading material given in the brief description - method of lines, how it is a essentially discretising all but one variables, example Implementation.
I shall update the timelines soon, on discussion with potential mentors.