Slashdot Mirror


Grad Student Looking To Contribute To Open Source

An anonymous reader writes "I'm an Applied Math grad student who knows a bit of Mathematics and a bit of programming. C++ is my first programming language — I am decent at it. I wish to start contributing to a numerical library with two purposes — contribute to open source and develop my C++ skills at the same time. I looked at the Boost libraries and joined the developer list. However, I have no idea on how to start contributing. I'm not an expert in template programming, having written only toy programs to understand that concept. I've used some of the OOP constructs like inheritance,but only for very small projects. Do you have any tips on how to get started on contribution? Are there any other emerging numerical libraries to which I can contribute? Are there any other avenues where I can contribute to open source and improve programming skills?"

6 of 283 comments (clear)

  1. Kinematics by MichaelSmith · · Score: 5, Interesting

    I work in air traffic control and kinematics are a big deal for us. This is the software which takes care of coordinate systems, motion and transformations. Say you have a vehicle with a particular WGS84 coordinate. Its moving at a particular speed in a particular direction relative to true north. After one hour where will it be in three dimensions relative to its original position? How much distance will it have covered? What happens if its trajectory went within two metres of the south pole? What path in 3D will it follow if it maintains a constant altitude above the datum along the way?

    Ok now say it is not allowed to fly into (say) North Korea which has a particular shape. How can you project its path forwards to determine if it goes into the air space over that country?

    And so on. Its bloody complicated stuff and I reckon a lot of open source software would benefit from a library which did this. Ideal for a maths guy.

    1. Re:Kinematics by kinema · · Score: 4, Interesting

      Speaking of kinematics, you might want to take a look at a EMC (Enhanced Machine Controller). EMC is a CNC package originating from NIST. EMC has an active community using and developing it. There are known bugs in the forward and inverse kinematics for PUMA style robots that could really uses the eye of a trained mathematician.

      I'm sure there are are plenty of other areas that the EMC project could utilize your math skills. There are many, many users and developers of EMC that would appreciate your skills.

    2. Re:Kinematics by awjr · · Score: 3, Interesting

      I was part of the team that developed the short-term collision alert system for Swanick, UK. This type of prediction is unnecessary and not very useful to air traffic controllers, particularly in Europe, where each air space has a different way of dealing with traffic.

      For example, pilots want to get their aircraft to specific altitudes to conserve fuel (usually around 29,000ft). In the UK, ATC keeps strict vertical and horizontal seperations, in France, they just let them hit the altitude they want, then play a complicated game of checkers with the planes.

      In Greece, seperation over certain space is maintained by transponders on the ground, so spacing has to be a lot more forgiving, which also limits the throughput of the aircraft.

      So in principle a plane, will fly at an optimum altitude and at a certain speed at that altitude primarily to conserve fuel. However when coming into an airport, control of altitude (and speed to a certain extent) will be handed to local ATC.

      Of note, ATC will 'hand off' a plane to the next air space by assigning a new frequency upon which the plane should be communicating. Planes fly with a specifi flight plan.

      Now unguided rockets.....that's a completely different matter.

  2. An Alternative Software Project Suggestion by digitalderbs · · Score: 3, Interesting

    In addition to BOOST, you might want to consider looking at other projects. Some that might be a good fit, and might need developers are :

    - GSL : The GNU Scientific Library is a scientific toolset for C and C++. These tools are quite modular, and you might be able to find your own module to code.

    - Plotting software : Help to any of the plotting programs would be a real boon for all scientists. This could involve developing non-linear fitting algorithms, GUI, or statistical analysis. Look at SciDAVis and possibly GRACE.

    - non-linear fitting : C++ Minuit, or a CERNlib project may be a good match--I'm not sure whether these are only developed internally.

    good luck!

  3. Re:Team Up by Blrfl · · Score: 4, Interesting

    I think you completely misread what I'm suggesting. What I propose is that the OP, who describes himself as a neophyte when it comes to software, find someone with some experience in that field to be a mentor and help get him off to a good start.

    Here's my rationale: I've been writing software for 31 years and have 25 years of industry experience. For the last seven years, I've been working for a company that is staffed mostly by electrical engineers who specialize in signal processing and are really, really good at it. A lot of what they write works, but software isn't their bailiwick, and it lacks the organization and forethought about how it might be used in the future that people who've been around the block tend to put into it.

    By teaming up with someone in CS, the OP won't be figuring out how to do it right by trial and error and perhaps turning out ugly code in the first place, and he gets to spread some of the applied math gospel to the heathens over in CS. :-)

  4. Example of Parent's Point by ari_j · · Score: 4, Interesting

    Here's an example of what the ledow is talking about with point #1. Or at least a corollary of his point in action. About a decade ago, I wanted to play with XML files in C++. There were no good, small libraries to do that. There were a couple of ridiculously large, complicated libraries that would handle XML files, but you'd lose more time learning the library than you would ever put into your actual code. So I created libxml++, to scratch my own personal itch. It was, at the time, a small but useful wrapper around libxml. Very basic, and demonstrated mostly that I knew less about either C++ or XML than I thought I did.

    But people used it. (They also used my CLI Yahoo Messenger client, but that became defunct after I handed it off to other developers, due to the then-rapidly changing Yahoo protocol. The single most touching e-mail I have ever received was from a user of that client.) One of them submitted some patches, and eventually in 2002 I passed off ownership of the libxml++ project to him. I don't code in C++ much anymore, so I don't use my own library, but I do check in on it every so often. There are regular commits, including one last week, and an active mailing list, with several thousand messages. It's in Debian's main package repository and a number of diverse other packages depend on it.

    All of this is the result of an itch I had ten years ago. Don't let anyone tell you that this kind of thing never happens and that there are just a billion useless libraries and programs half-written out there. There are a billion of those, but if you have a need for something that nothing on the market seems to fill, the chances are good that you're not alone in that unfilled need. Fill it and make it easy for others to use it and contribute to it, and see where it ends up in 2020.