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?"

283 comments

  1. Obvious question first by mike260 · · Score: 2, Insightful

    You did try googling for, say, 'open source c++ numerical library' right?
    I ask because that yields a fair few that welcome contributions; maybe if you told us what your issues with them are then that would help us find you some alternatives.

    1. Re:Obvious question first by AngryNick · · Score: 4, Insightful

      What seems pretty obvious is that the guy's question is about how to get involved in an OSS initiative, not how to find one. Cultural barriers aside, the perception from the outside is that many existing communities are closed, elitist kingdoms that are unwelcoming and intimidating to newbies. So, while providing a helpful search query may be clever, it does not address the essence of the question and serves to perpetuate the stereotype.

    2. Re:Obvious question first by Anonymous Coward · · Score: 0

      haha nice clarification.

    3. Re:Obvious question first by Anonymous Coward · · Score: 0

      The way the question is phrased, I'd think they only want to learn by making open-source, and when they graduate, drop it like a hot potato. I'm not sure I want a newbie tampering with my OTTD or kernel, and then drop it when the term is up.

    4. Re:Obvious question first by Holger+Blasum · · Score: 1

      Some things that might not immediately turn up in google for "open source c++ numerical library" but maybe also of interest: symbolic computing GiNaC, or, into another direction, computational fluid dynamics finite element tools like OpenFOAM.

  2. PATCH DAMN YOU !! LIKE YOU NEVER PATCHED BEFORE !! by Anonymous Coward · · Score: 0

    Because you need to. You want to. You have to.

    #2 or NUMBER TEN !!

  3. first? by atari2600a · · Score: 1

    I've only done 6502 ASM & whatever Macromedia/Adobe Director uses, but if I where to contribute my $0.02... Program something not retarded. Sure everyone starts out w/ a few little trinket programs (I recall my first 6502 ASM program cycling the BG color register on an atari 8-bit (emulated) from #$00-#$FF), but once you really dig yourself into a hole w/ an intention to get out of it, you have only scraped the barrel. Try, for example, programming something that inputs a complex file-format & outputs per it's standards. You don't even have to publish, chances are at this stage there's a better FLOSS alternative, but that's not the point. Or, alternatively, you can do what everyone else does & start out w/ their token patches & tweaks (sometimes just for linux-main, etc street-cred :P)

    1. Re:first? by Anonymous Coward · · Score: 0

      Yea! Hello World has no place in this world! If you are going to learn a language, at least start at the top!

  4. boost == template programming by StripedCow · · Score: 3, Insightful

    To understand most boost modules, you definitely need a thorough understanding of templates.

    --
    If Pandora's box is destined to be opened, *I* want to be the one to open it.
    1. Re:boost == template programming by sqldr · · Score: 4, Insightful

      last time I read a boost header, I found that an understanding of hardware/OS-specific optimisations and quirks was rather important too. By the time you've read through all the #defines and figured out which bit runs on *your* OS, you've forgotten what you were reading it for :-)

      It's not just a useful library, it's supposed to be fast and get its data sizes right too. I'd start with something less industrialised.

      --
      I wrote my first program at the age of six, and I still can't work out how this website works.
    2. Re:boost == template programming by Anonymous Coward · · Score: 0

      I'm not an expert in Boost programming either, and also have written only toy programs. Can anyone tell me how I can write professional programs that also contribute to the world?

  5. Maxima by JohnFluxx · · Score: 3, Informative

    The KDE C++ math classes are "eigen": http://eigen.tuxfamily.org/index.php?title=Main_Page
    This is just a library (well actually a set of inline header files)

    More generally, there are programs like "maxima" (symbolic manipulation, integration, etc) and "octave" (like mathlab).

    I would love to see more work go into maxima :)

    1. Re:Maxima by DMiax · · Score: 2, Interesting

      Eigen is probably the best starting point, since it is quite used (so your work is not too obscured), simple to extend, with good help from main programmers. Another project that would be nice to extend is GiNaC. They have a TODO list with different difficulty levels.

    2. Re:Maxima by Anonymous Coward · · Score: 0

      I would love to see work going to any existing promising solution (like the mentioned). I mean instead of solving problems with existing by starting completely a new project. Which will come next half working OS application.

    3. Re:Maxima by jank1887 · · Score: 5, Insightful

      I second this motion. You can immediately start USING Octave and Maxima. You're a math student, so just start doing math. You'll quickly uncover some bugs and limits. And as said above, you can see the bug reports for both. At that point, get to work.

    4. Re:Maxima by i.r.id10t · · Score: 1

      And if you lean more towards statistics you can hack away at R

      --
      Don't blame me, I voted for Kodos
    5. Re:Maxima by Anonymous Coward · · Score: 1, Funny

      Wikipedia says that maxima is written in (hold on to something) Common Lisp. Is that really true? I mean Lisp is fun for penalizing CS freshmen and all, but seriously?

    6. Re:Maxima by zill · · Score: 2, Funny

      I mean Lisp is fun for penalizing CS freshmen and all, but seriously?

      MIT was forced to cancel 6.001 after SCOTUS ruled that learned Lisp was cruel and unusual punishment.

  6. Fix bugs by a_n_d_e_r_s · · Score: 5, Insightful

    1. Join a big open source project.
    2. Read the bug reports
    3. Start churning out fixes for bugs
    4. Profit!

    --
    Just saying it like it are.
    1. Re:Fix bugs by Anonymous Coward · · Score: 5, Funny

      4. Profit!

      Wait, what?

    2. Re:Fix bugs by SharpFang · · Score: 3, Insightful

      Definitely yes. Start out with simple, contained bugs. Then move to the bigger ones, that span several modules. Once you get a good understanding of the structure of the project, you can move on to "Feature request" type bug reports.

      --
      45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
    3. Re:Fix bugs by croane · · Score: 1

      I simply agree this this post, just join an open source project and start helping out, you'll be surprised at how many emails you get about this bug or that bug that they need help with. Start out slow, and gradually start fixing bugs, and trust me....you will profit in the long run. Good luck!

      --
      Clinton Roane
    4. Re:Fix bugs by Anonymous Coward · · Score: 0

      Can you explain, how to get to step 4 from step 3?

    5. Re:Fix bugs by Anonymous Coward · · Score: 0

      1. Join a big open source project.
      2. Read the bug reports.
      3. Start churning out fixes for bugs.
      4. Watch your patches bitrot in Bugzilla while developers flex their egos by ignoring your patch.
      5. Stir up support for your fix in public fora and mailing lists.
      6. Watch your bug become the highest voted bug ever by a factor of ten.
      7. Watch patch languish anyway.

    6. Re:Fix bugs by BrokenHalo · · Score: 1

      Trouble is, there is a sad perception that "maintenance programming" is uncool and something you give to your least experienced programmer. While maintenance always needs to be done - and is actually really useful for development of skills, since it gives an immediate perspective on how someone (however misguided) has already approached the problem - it doesn't usually give the kudos of "original" work.

      I guess this is probably why so many wheels get reinvented in the OSS world. [sigh]

    7. Re:Fix bugs by zill · · Score: 1

      The profit doesn't come in the form of money. It's something much much better.

      FOSS programmers will all receive 72 virgins after they ascent to heaven.

    8. Re:Fix bugs by Anonymous Coward · · Score: 0

      72 only? I think there are plenty of Slashdot virgins to go around.

    9. Re:Fix bugs by zill · · Score: 1

      Sorry, my bad. Should've been more specific. 72 virgins in your desired gender.

      Being a virgin myself, I'd rather receive 62 virgins and 10 total sluts who could teach me the proper techniques.

    10. Re:Fix bugs by SharpFang · · Score: 1

      You want fame from day one? Get an awesome idea and write it from scratch as your own project.

      Fixing bugs is the way in, the route to get to the "kudos for realwork" point. Once you're good enough to "fix" feature requests, file these yourself and assign to self.

      --
      45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
    11. Re:Fix bugs by Anonymous Coward · · Score: 0

      Clarification: 4. [Intellectual] Profit!

    12. Re:Fix bugs by Anonymous Coward · · Score: 0

      Which you could then teach to your 62 virgins and then you'd have 72 sluts.

    13. Re:Fix bugs by uninformedLuddite · · Score: 1

      FOSS programmers will all receive 72 virgins after they ascent to heaven.

      And..

      All 72 died in their late thirties whilst living in Mum's basement. All died of cardiac issues complicated by morbid obesity. And they are all blokes(on the plus side their halitosis has improved greatly post mortem).

      --
      The new right fascists are bilingual. They speak English and Bullshit.
    14. Re:Fix bugs by ModernGeek · · Score: 2, Informative

      Yeah, it's a great way to build your resume and show that you aren't just some lingo slobbering hipster. Most companies would rather hire someone with some code on the 'net with their name on it than someone who is fresh out of school with no real experience.

      --
      Sig: I stole this sig.
    15. Re:Fix bugs by RockDoctor · · Score: 2, Funny

      FOSS programmers will all receive 72 virgins after they ascent to heaven.

      FOSS programmers who learn to check they're spelling the correct word correctly, get 73 virgins, and you get to choose which gender (or genders) they are, because you so obviously pay attention to small details.

      --
      Birds are not dinosaur descendants;birds are dinosaurs, for all useful meanings of "birds", "are" and "dinosaurs"
    16. Re:Fix bugs by Anonymous Coward · · Score: 0

      who learn to check they're spelling the correct word correctly

      "they're"?
      I hope that was deliberate irony...
      72 virgins for you

  7. Various Resources by Anonymous Coward · · Score: 3, Informative

    Boost (boost.org) is broad and pretty fancy. Eigen (eigen.tuxfamily.org) is narrower in scope - linear algebra - and just might be closer to your interests. To learn the details of templates, Alexandrescu's book -- Modern C++ design -- is a way of diving in deep quickly. Reading the Loki sources is also a good way of going about it ( http://en.wikipedia.org/wiki/Loki_(C++) ). Those are resources I can come up with off the top of my head. And general advice also hold: try stuff. Make a source repo for yourself (git, mercurial, darcs, whatever) and pick a small problem to solve and hack at the templates there. Use version control so you can come up with one solution and refine it and look over your own development history.

  8. 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 phillips321 · · Score: 2, Funny

      You lost me pretty early on, i think after the 2 words "I work". What is this "work" thing you are on about? Fair play though, this would take a considerable amount of effort and time and i doubt anyone in the open source world would benefit from this unfortunately, please correct me if i'm wrong and provide an example of how an ATC system could be used 'at home'

    2. Re:Kinematics by yumyum · · Score: 1

      I assume you have looked at LuciadMap. It does much of this, though in Java, not C++.

    3. 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.

    4. 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.

    5. Re:Kinematics by MichaelSmith · · Score: 2, Informative

      Lets say you want to build UAV to fly significant distances around the world. It is going to have to fly a great circle trajectory and it will have to understand the volumes of airspace it is flying through. Airspace is a bit like the skin on a apple. It can't be treated as a simple Cartesian volume the way most simple games do it. The curvature of the Earth varies from place to place. This also affects your ground track.

      So your UAV will have to follow a route through the skin of the apple, so to speak, avoiding known danger spots, sometimes by flying above or below them. To do this it will need a library which can do coordinate conversions, and that is what kinematics do.

    6. Re:Kinematics by znerk · · Score: 1

      please correct me if i'm wrong and provide an example of how an ATC system could be used 'at home'

      One word: gaming.

      And while we're on the subject, I'm absolutely certain that an open-source trig library like the phenomenal one that must be present in EVE Online would be a fantastic addition to the free (as in liberty) gaming community.

      --
      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
    7. Re:Kinematics by MichaelSmith · · Score: 1

      This type of prediction is unnecessary and not very useful to air traffic controllers, particularly in Europe,

      I assume you are referring to the simple example I gave above about trajectories intersecting volumes. Its actually really useful stuff though perhaps not if STCA is your whole business. OTH if your business is avoiding controlled flight into terrain then the example I gave might be more relevant.

      That said my example was more intended to point out the ways in which real world coordinate systems could be better handled in OSS, and the applications which might exist in (say) games and UAVs.

    8. Re:Kinematics by e70838 · · Score: 1

      LuciadMap is closed source (and a bit bloated). If you know about an open source concurrent of LuciadMap, I am very interested.

    9. Re:Kinematics by vbraga · · Score: 1

      Not difficult to build this if you work from GRASS source code for the GIS part. I believe it's C but if I recall correctly (I looked at it a long time ago) it's well written. Maybe just expand GRASS. Would be interesting to look at. I'm not working with GIS anymore but I could contribute, if someone else get interested.

      --
      English is not my first language. Corrections and suggestions are welcome.
    10. Re:Kinematics by mujadaddy · · Score: 1

      I'm absolutely certain that an open-source trig library like the phenomenal one that must be present in EVE Online would be a fantastic addition to the free (as in liberty) gaming community.

      Isn't that for zero-gravity, no-horizon environments? It might help for a space game, but flight path projections like in MichaelSmith's thread-starting post are MUCH more complicated than what EVE does.

      Disclaimer: I've never heard of znerk or the below AC's complaint about him before. I just think EVE is praised for the wrong reasons a lot of the time.

      --
      Populus vult decipi, ergo decipiatur...
      "Force shits upon Reason's back." - Poor Richard's Almanac
    11. Re:Kinematics by TheLink · · Score: 1

      OTH if your business is avoiding controlled flight into terrain then the example I gave might be more relevant.

      For avoiding controlled flight into terrain I'd prefer something like this: http://en.wikipedia.org/wiki/EGPWS

      Maybe even sensors (RADAR, LIDAR etc) for not just altitude detection but real terrain and obstacle awareness.

      Stuff like "After one hour where will it be in three dimensions relative to its original position?" for avoiding CFIT seems about as relevant and useful as "after one hour where will my car be" calculations for avoiding car crashes.

      More useful is if the plane can tell the pilot where the plane's projected trajectory is going to be for the next 2 minutes (based on current inputs), and where it's going to intersect anything nasty. Doing this by drawing it on the screen or projecting an image would be nice. If possible also allow the pilot to ask the plane to draw on screen an estimated "flight volume" of where the plane can be within the limits of the plane and the current wind. So in event of an emergency the pilot could more easily pick a valid path to out.

      --
    12. Re:Kinematics by znerk · · Score: 1

      I just think EVE is praised for the wrong reasons a lot of the time.

      You have to admit, it's very pretty.

      Oh, and yeah... zero-gravity, no-horizon environments... you know, like in space games ;)

      --
      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  9. Fix bugs. Make something you'd use yourself. by redcloud · · Score: 2, Insightful

    Is there a bug tracker on this project? Tracking down and fixing bugs will force you to become familiar with the codebase, and hopefully, expose you to code from which you can learn. Also, find projects that you will use personally on a regular basis--i.e. "scratch your own itch". You'll do better work if the end result is not just some code somewhere, but something that you need and make use of frequently.

  10. Don't ask us, ask them! by draxil · · Score: 2, Insightful

    You are best off asking this question on the mailing list/irc/whatever of the community you want to contribute to. They'll know what needs fixing, and nurse you through submitting a few patches to them.

    1. Re:Don't ask us, ask them! by pinkushun · · Score: 1

      Pinkushun Likes This (Y)

  11. Contribute to open source projects here by Anonymous Coward · · Score: 0
  12. Octave by Anonymous Coward · · Score: 0

    http://www.gnu.org/software/octave/help-wanted.html

    1. Re:octave by Anonymous Coward · · Score: 0

      Please write textscan. Many people will love you for it

    2. Re:octave by jpswensen · · Score: 1

      I have been contributing small bit to Octave for a couple of years now. I can attest to the fact that the core Octave developers are helpful, do good work, and are always looking for more help. Currently I work on two different parts: an IDE for Octave called OctaveDE (which I am looking for more help on, but is more UI work than math work) and I am rewriting the image reading and writing routines to be Matlab compatible. There is also a lot of OpenGL work going on implementing a faster plotting backend as an alternative to GNUPlot. Because Octave is ofttimes in "Matlab catchup mode", any help would be greatly appreciated and you would be given direction on the best way to contribute early while you get used to the code base and the way the core developers work.

    3. Re:octave by Anonymous Coward · · Score: 0

      Go make a toolbox or two for octave.

      This sounded to me like "go fuck yourself once or twice".

  13. Team Up by Blrfl · · Score: 4, Insightful

    Don't take this the wrong way, but you're in math, not CS. Call the CS department, find someone who's willing to team up with you on this and work together on turning the mathematical end of your contributions into good code. You'll come out of it with a better understanding of how software should go together, your CS cohort will get some insight into applied math and both of you will be better for the experience.

    1. Re:Team Up by Nemesisghost · · Score: 2, Interesting

      I'm going to disagree with your assessment that just because he doesn't have an IT degree he will be unable to contribute to an OSS project. I've known plenty of people who didn't have an IT degree but were still damn good at anything IT related, including coding. He's not looking to contribute to the next Linux kernel or make improvements to the PERL RegEx engine. He's asking how can he contribute to what he knows, Math. And those kinds of libraries are more about the math(go figure) than memory management & code optimization.

      What you are purposing is that the only people who would be qualified to work on the libraries he's interested in are those with a PhD in Math & CS, which frankly isn't going to happen. You might also want to check out the degrees that a lot of CS professors have. You might be surprised to find out that they all don't have CS degrees. Some even have liberal arts degrees.

    2. 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. :-)

    3. Re:Team Up by Anonymous Coward · · Score: 0

      This is what I was thinking. You won't be able to write very high quality code, but someone with a strong background in math can be a huge asset to many programming projects. As a CS major, there was a ton of stuff I learned in my courses that was completely based on math. Learning what all of the symbols meant was the last thing I wanted to do, and I imagine a lot of software engineers were the same. I'd just be careful that he doesn't go into this with the goal of learning how to program. Yes, he'll learn stuff, but it should only be what's needed; he should focus on what he's good at already.

    4. Re:Team Up by BrokenHalo · · Score: 1

      I've known plenty of people who didn't have an IT degree but were still damn good at anything IT related, including coding.

      True. I'm not primarily into IT right now, but I got into the field back in the late '70s as a "trainee programmer" - which meant doing everything from being a BOFH, churning out COBOL and "real" programming in FORTRAN to hacking on system binaries when source wasn't available. Since then, I spent some 15 years contracting on various mainframe sites, using a list of programming languages that occupied a couple of pages of A4 on my resumé.

      I do not have an IT degree (though I do have others), and occasional forays into IT educational courses have led to me discovering very quickly that they have little to teach me. This might seem a bit sad, but after a while one starts to feel as if the latest philosophical rationnale behind such-and-such a program is all a bit like last year's management theory.

    5. Re:Team Up by Anonymous Coward · · Score: 0

      The other day I met a 40 year old black man who had been writing software for 31 years and he claimed that there were too many immigrants from mathematics in CS.

  14. Start with understanding the project by nietpiet · · Score: 1

    First off: Well done for wanting to contribute!
    I'd say the first step is to spend some significant time in reading and understanding the code of the project you want to contribute on. Not only on how it implements a certain algorithm, but also on how the project uses templates, inheritence and coding conventions (as these may change from project to project). Since you already know the basics, this will teach you the application of these techniques in the real world, and how they are used in this project.
    If you want some more in-depth background reading which may guide you in understanding the techniques used in the project, i'd suggest "Design Patterns" by Gamma, Helm, Johnson, and Vlissides http://en.wikipedia.org/wiki/Design_pattern_(computer_science)

  15. gmp by Anonymous Coward · · Score: 0

    Look at http://gmplib.org/
    Boost code is same mess as stl

  16. Entry points into Open Source... by PhrostyMcByte · · Score: 3, Informative

    The easiest way to enter Open Source to write patches for existing software. Learn how to communicate with other developers, how to be flexible and adopt their coding styles and practices. Chances are this will help you learn the most, because you'll be writing smaller amounts of code and it will always be under review by someone else. Once you've shown your competency, you're usually given commit access to the project.

    Boost can be a very helpful community. Submitting a new library to Boost typically follows a few steps: gauge interest, put up code/examples/documentation for informal comments, submit for review. It sounds like you've got a lot to learn in C++ so it might be a long road (Boost has a very high bar to meet), but if you've got perseverance and are eager to learn, you can make it happen.

  17. Startup Work by Anonymous Coward · · Score: 0

    I run housecall.md, an e-science, telemedicine startup, with a focus on expected value maximisation for healthcare decisions.
    If that's a project you'd be interested in working on (for stock options), send an email to team@housecall.md describing a few
    project ideas, and we can see if there is mutual interest in collaboration.

  18. Math/numerical projects by Anonymous Coward · · Score: 0

    People like you will be most useful where a strong math background is mandatory in order to be able to program decently complex algorithms. I'd hit computer algebra systems (GP/Pari, Macsyma), computer aided statistics (PSPP, R-Cran) or linear algebra/computational kits (Octave) if I were you. The open source community is sorely lacking mathematicians with a bit of time to spare and coding skills

  19. Sage! by Anonymous Coward · · Score: 2, Interesting

    Applied math student...knows C++...dude. Contribute to Sage.

    The goal of the Sage project is to creating a viable free open source alternative to Magma, Maple, Mathematica and Matlab. It is based on Python, but has many components written in C and C++. It has good capabilities for numerical computation, but more help is needed. It's pretty easy to dive in and start fixing bugs, and your work would immediately benefit thousands of mathematicians and mathematics students.

    Sign up for the sage-devel list and start with Sage!

    1. Re:Sage! by Anonymous Coward · · Score: 0

      I'm a measly master's degree guy, but yeah, to my knowledge Sage is becoming popular among math/CS people.

      It uses a lot of existing libraries, but the good thing is that it tries very hard to be a user friendly end-user application. There is a web interface. There is a GUI interface. You run your own Sage server on your home box and connect locally or remotely with anything that has a web browser, give access to your math friends and collaborators, share math sheets...

      The Sage scripting language is Python with some extras. Everyone learns Python in school these days, so that's probably a good move.

    2. Re:Sage! by walshy007 · · Score: 1

      good idea, but just one question, how does sage differ from other numerical (octave) or symbolic (maxima) oss programs? aren't they pretty much complete too?

    3. Re:Sage! by arielCo · · Score: 1

      The goal of the Sage project is to creating a viable free open source alternative to Magma, Maple, Mathematica and Matlab.

      And Maxima? One would think they'd name it Mage. *ducks*

      --
      This post contains no rudeness or derision of any kind. All arguments are friendly. Terms and exclusions may apply.
    4. Re:Sage! by Anonymous Coward · · Score: 0

      Mod parent up!

  20. Re:C++ is convoluted and hard by somersault · · Score: 4, Insightful

    Your intended point (while you stated it rather poorly, since it's stupid to suggest someone couldn't be a good programmer in a language simply because it's their first - I am still a "decent" BASIC programmer despite learning many languages since) is understandable and probably something that we all thought when reading the summary, but it does depend on your definition of "decent", and the poster's ability to self evaluate. Usually I take "decent" to mean "average to good". As an "Applied Math grad student" he has already demonstrated good logical ability and therefore probably has the makings of a good programmer.He didn't claim he was amazing, but presumably he can write code that works even if it's not amazingly efficient, and he clearly knows he has much to learn and is looking for avenues to improve.

    Rather than simply making obvious criticisms, you could try to help. I unfortunately have very little experience with helping out in open source projects, and have no clue about Mathematics libraries so I can't offer any useful advice, but I'm certainly not just going to sit here and watch while some smug AC takes immature pot shots at a guy who is trying seriously to both better himself and help out other people in the process.

    --
    which is totally what she said
  21. Re:C++ is convoluted and hard by Anonymous Coward · · Score: 0
    I'm sorry but if you read the rest of the summary it contributes to grand parent's point.

    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.

  22. Look at Eigen by Anonymous Coward · · Score: 0

    Eigen is a great library for linear algebra, which has picked up a lot of momentum recently:
    http://eigen.tuxfamily.org/index.php?title=Main_Page

    There is a similar library in boost (uBlas), but I much prefer the Eigen API.
    Eigen is heavily templated (like boost), and also has an additional focus on performance.

  23. Boost Linear Algebra by Anonymous Coward · · Score: 2, Interesting

    Hi,

    please contribute to the Boost Linear Algebra library, uBLAS.
    You or any other interested in contributing new algorithms can contact me directly on the boost ublas developpers mailing list.
    I'm the new maintainer of this library and will be happy to talk about any new contributions you want to make.
    This library is great and need serious love.

  24. Re:C++ is convoluted and hard by somersault · · Score: 4, Insightful

    Which is why I said:

    Your intended point is understandable and probably something that we all thought when reading the summary

    Still, being decent at a language and it being your first language are not contradictory things. Thinking he's decent at the language and not knowing much about templates is of course more contradictory, but you certainly don't have to be an expert to be "decent" at something.

    Anyway, my point was that guy is obviously aware he has more to learn and is humbly asking us how he can do so. It's an attitude that should be encouraged, and it's sad that the first post is someone trying to insult him, with no actual helpful advice.

    --
    which is totally what she said
  25. Re:PATCH DAMN YOU !! LIKE YOU NEVER PATCHED BEFORE by airfoobar · · Score: 3, Funny

    Extrapolating from how #2 smells relative to #1, NUMBER TEN must smell really awful.

  26. Project Suggestion: NT2 by oneofthose · · Score: 1

    NT2 http://github.com/jfalcou/nt2/ is an emerging numerical computation library built on top of very modern C++ libraries and ideas. It is closely related to Boost libraries.
    From the description: The Numerical Template Toolbox (NT2) is an Open Source C++ library aimed at simplifying the development, debugging and optimization of high-performance computing application by providing a Matlab like syntax that ease the transition between prototype and actual application.
    A way to contribute would be to make yourself familiar with it's use (e.g. port some of your Matlab scripts). Try to understand the basics of how it works internally. You will find features missing that you could try to add. Above all though, you will learn a lot.

    1. Re:Project Suggestion: NT2 by loufoque · · Score: 1

      NT2 is a high-performance numerical computation library, comparable to Intel ArBB or Eigen, but is built using very advanced and modern C++, and has a lot of interesting things going on around it, such as both a domain-specific embedded language compiled through meta-programming using Boost.Proto and a domain-specific language compiled through a "normal" compiler design. The DSL is compatible with Matlab while providing a 30x speedup.

      NT2 is tightly related to Boost, as several of its developers are also Boost developers, and portions of it, such as the SIMD abstraction layer, are being submitted for acceptance into Boost itself.

      This project is in great expansion, as a start-up is being created around the project (which is of course under a liberal open-source license), and the research team working on it is also expanding and hiring.

      So if you're looking to work on an advanced Boost-like open-source C++ library with high-performance numerical computation, I think this fits the bill rather well.

  27. Well by ledow · · Score: 5, Insightful

    You're an amateur, like the thousands of others on the net, like me. This is not a programming skill problem - that comes from either practice or aptitude, not pure willing. This is a contribution problem. You're looking for a project that has many skilled users and also has a very, very basic need they have to meet but at a basic level and that they haven't already done themselves and probably won't take too long. See the problem?

    You're asking entirely the wrong questions - I would suggest that instead of trying to add something to Boost or similar, that you try to do something yourself and thus work out why Boost and similar projects are quite complex, have certain standards, etc. The problem of patch submission, new features and bug-fixing is not one of people willing to write the code that fixes the problem - that part's easy, and the fun part - it's finding something interesting that fits within the scope of the project and it's the problem of getting that code into the shape that the project would be happy with too. Thus bug-identification and lots of the hard slog-work (test suites, etc.) are much more useful than anything else you can come up with. I guarantee that the first few ideas you have to contribute to a large project will be knocked back because a) they've been suggested a million times, b) they don't WANT to do it that way, c) they CAN'T do it that way for some reason or d) they just don't trust your code and would spend longer fixing it than just writing it themselves.

    I would suggest that you do one of the following:

    1) Write your own library, for something you know intimately. Publish it on a website, document it well, do it under a loose license. Chances are it will overlap with other projects but they are always alternatives for everything and if your library is BETTER than the others, it will be used in preference, code will be absorbed from it into other projects, or people will ask you to for more of it. Chances are that it will take you a LONG time to make it better than even the bare basic libraries you find on the net.

    (I'll use an example that I'm familiar with - SDL has lots of graphics primitive libraries, but SDL_gfx is one of the best despite not being the only "big" one, despite being unofficial, despite being a one-man operation and yet is used in thousands of projects. All it does is draw circles and polygons and rotate images, for God's sake, but it works and it's simple and it's fast and it's documented so it gets followers)

    I know that when I go looking for a library to solve my problems, I am happier with something tiny and in my language of preference (C instead of C++) than some huge generic library that does a million and one other things. I have been on hundreds of tiny sites and found some absolute gems where the author just knocked up the exact piece of code I was after and nothing more and then I've used it, extended it, reported bugs in it and it becomes part of my standard toolchain (as an example, I use LodePNG to save PNG images from SDL_Surfaces, not because that's the only way, or even the easiest way, but because I found it easier than trying to get libpng to do it for me - some of my projects actually use libpng for loading and LodePNG for saving PNG's!).

    2) Meld into the community - hunt for bugs, be active on discussions, suggest features (after reading the FAQ's about what not to ask for, etc.), maybe even implement a few test routines to show how useful your feature-X would be. Produce test suites (horrible, horrible job that's incredibly boring but serves a useful purpose). Run valgrind, or some kind of mathematical analysis, on the code and report your fixes for anything found back to the community. The hard-slog but useful stuff that nobody really wants to do.

    Everybody would love to be chosen to just insert thousands of lines of code into a big famous project - it very, very, very rarely happens. More likely is that you have a small project of your own that others find useful (because it avoids t

    1. Re:Well by Lusa · · Score: 4, Funny

      Mod this up! This is so insightful it should be a tattoo!

  28. octave by gatzke · · Score: 2, Interesting

    Octave is a Matlab clone that now works pretty well. Go make a toolbox or two for octave.

  29. Don't write software, write documentation by petes_PoV · · Score: 5, Insightful

    Are there any other avenues where I can contribute to open source and improve programming skills?"

    The internet is drowning in code and starving from lack of decent documentation on how to use it. if you want to transform a mediocre, existing OSS project into a world-class, standing head and shoulders above everything else in its field piece of exemplary work, then take ANY numerical library and write some examples for it, write explanations on how it works, what its limitations are (hell: even comment some of the source code itself). Write user guides, API guides, put together a FAQ or a Wiki. List the mistakes and create some workarounds.It's not sexy, but it's what we need most.

    The other thing that inspecting other people's work will do (apart from really honking-off some of the more protective - read; poor - software authors) is to show you, close up and in the real world, some of the constructs and techniques that are employed. For better or worse, this will give you a lot of experience in good and bad techniques and will give you a much larger palette to choose from when you decide to endow the planet with yet another piece of OSS of your won making.

    --
    politicians are like babies' nappies: they should both be changed regularly and for the same reasons
    1. Re:Don't write software, write documentation by DNS-and-BIND · · Score: 1

      Showing up to contribute to open source and then being told to write the documentation is rather like volunteering for a wildlife rescue only to be told to clean rocks with paper towels instead. By "contribute", I automatically assume "write code" rather than the unwanted task of "go into that foreclosed house and clean out the toilet that exploded."

      --
      Shutting down free speech with violence isn't fighting fascism. It IS fascism!
    2. Re:Don't write software, write documentation by jellomizer · · Score: 1

      Exactly, code is only part of the project. And it is often the easiest piece to make (sure it might take more time but coding is easy of anyone with some skill). But there is a bigger part of the projects that need real smarts. Good documentation Is one part, accuracy and bug checking, prioritize bugs, following the direction of a project and keep it on course. Getting honest feedback. Keeping it up to modern standards. Security, Implementation, training...

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    3. Re:Don't write software, write documentation by Anonymous Coward · · Score: 0

      This is probably the best explanation of how to contribute to OSS I've seen. I can't tell you how many times I've found a neat piece of open source software, but no tutorials explaining how to use it properly.

    4. Re:Don't write software, write documentation by Steauengeglase · · Score: 1

      Not sure if I'd call it rock cleaning, more like writing the ultimate rock cleaning guide.

    5. Re:Don't write software, write documentation by jfz · · Score: 0

      The problem with documentation is that everyone wants it but no one truly values it. When I think of an important project, do I think of the poor bastard that took the time to document it -usually not.

    6. Re:Don't write software, write documentation by RockDoctor · · Score: 1

      Showing up to contribute to open source and then being told to write the documentation is rather like volunteering for a wildlife rescue only to be told to clean rocks with paper towels instead.

      Is the poster an adult or an adolescent? (Note : the information about being a recent graduate only answers that question in the uninformative legalistic and chronological senses).
      A couple of months ago, I spent a week volunteering on an archaeological dig. You know - early iron age spears, gold rings, that sort of thing. As a first-time volunteer, I expected to get assigned to tedious, repetitive back-breaking work. And that is exactly what I got. After a couple of days the site manager invited me to work on the more interesting bits of the site (including where he'd just found the bronze ring, and later found the iron spear-head) but I declined because I knew that I needed to learn a lot more about the humble art of trowelling.

      By "contribute", I automatically assume "write code" rather than the unwanted task of "go into that foreclosed house and clean out the toilet that exploded."

      If you don't clean out the exploded toilet, then it's not going to clean itself out, and it's cleaning is likely to take up the time of someone who could be more productively employed elsewhere in the project.
      Pass the shovel ; I know where the long gloves are and my tetanus, typhoid and cholera jabs are up to date. (Actually, I need to get the cholera updated in the next few months.)

      I take it that you want the job as Virgin Quality Control operator on the next OS project you work on?

      --
      Birds are not dinosaur descendants;birds are dinosaurs, for all useful meanings of "birds", "are" and "dinosaurs"
    7. Re:Don't write software, write documentation by RockDoctor · · Score: 1

      True. Unsexy, but true.
      Oh, sorry, this is Slashdot, where only Chiefs, not Indians, can post, and unglamorous tedious boring legwork is outsourced to India. But that's an un-Slashdot thought. Where's that "delete post" button? I guess that's what "Submit" means, because "Submit" has at least one letter in common with "delete", and the tedium of checking things is obviously below Slashdot's staff.

      --
      Birds are not dinosaur descendants;birds are dinosaurs, for all useful meanings of "birds", "are" and "dinosaurs"
  30. Use your time wisely by kegon · · Score: 1

    I think it's a massive simplification that you are going to join a project to "fix up stuff". You need to know what needs fixing, what is important to fix, what desperately needs to be fixed. Otherwise you are just going to be tweaking hardly used, unimportant, soon to be deprecated code. Your contribution will be welcome but irrelevant.

    If you like Boost: download it. Use it. You absolutely must be using it. Read the mailing list. Find out where the real problems are for yourself. Then discuss making fixes with the other devs.

  31. I could use your skills... by znerk · · Score: 2, Insightful

    I am not a strong programmer, although I can at least code my way out of a wet paper bag, if given enough time. Similarly, math is not my strong suit.

    I have a personal programming project which I will eventually end up releasing to the open-source community for several reasons;

    • I think the possible benefits to the information industry would outweigh any profit potential in it.
    • I can't figure out how to monetize it without massive litigation in our current patent system.

      The idea may actually already be patented, but I have a 1970's science-fiction story that contains the "prior art" if anyone wants to challenge me. I don't actually think there are any patent issues, but that doesn't necessarily mean that I'm correct, especially since I haven't done any actual research along those lines. I can say without a doubt that I don't believe the concept is currently in use in any field that I'm aware of.

    • My programming and math skills are not sufficient to bring it to fruition in a reasonable amount of time.

    I haven't released the details "into the wild" yet because I want my name attached to the end product (for portfolio reasons, I guess, or maybe I'm just proud of the idea). I'm not entirely sure how to go about protecting my interests in this matter.

    It deals heavily with prime factors of extremely long numbers (so long, in fact, that I believe I will eventually require 128-bit computing for efficiency with my current algorithm ideations; it appears that it would be best to work with 120 binary bits at a time (or some multiple thereof, but quantum computing is still a good ways off from consumer-grade products, I fear). I will still need to work with strings (as opposed to pure numerical constructs) due to the immense size of the numbers involved. I initially came up with the concept while reading about a related idea in a sci-fi novella from 40 or so years ago, and I started toying with it as a... well, I guess the best thing to call it would be an informal feasibility study. After some research and some limited testing, it seems to be holding up to my initial ideations, other than length of time involved to actually perform the process. It seems the process is a bit cpu-intensive, and my initial estimates of "several hours" for completion appear to have jumped several orders of magnitude. Distributed processing should ease that quite a bit, although threads are a bit out of my scope. I do have some good ideas on how the process might be parallellized (is that even a word?).

    I have a basic grasp on most of the algorithm, but I am (go ahead, laugh) primarily a VB coder, and I believe this project would be better suited to C, or perhaps python (I have heard something about sci-py?) I am not going to trumpet about my skill set, obviously, but I do believe I can eventually finish this project on my own - I've bounced the idea around in my head for several years, and only recently started actually working on the code. Unfortunately, as I said earlier in this post, I think I'm using the wrong language; and I'm not currently in the best position to be learning a new one. I also seem to have some sort of mental block for languages other than VB (even .NET is problematic, most of my coding has been VB4 and VB5) or so-called "scripting" languages.

    I'm not sure how best to get someone to contact me via slashdot, but if anyone is interested in a (probably) not-for-profit endeavor, and can throw me some contact info, I would cheerfully find a means of communication to give this project a productivity boost. I would be requiring an initial non-disclosure agreement, of course, but am totally willing to share credit (and any profit that may arise) from any actual release.

    --
    This work is licensed under a Creative Commons Attribution 3.0 Unported License.
    1. Re:I could use your skills... by DoofusOfDeath · · Score: 1

      I don't mean to be a wet blanket, but there are a lot of warning flags in what you wrote.

      It's pretty common for us to have ideas that seem great and innovative, but because of our lack of expertise in a given field, we don't realize that the idea is either flawed, or has already been refined and applied. I expect this is especially true with difficult math problems, such as large-number factorization.

      All I'm saying is that before you start hiring employees, you should probably invest a lot more effort in vetting your idea.

      And regarding big numbers, you might want to look at the Gnu Multiple Precision library. It's meant for efficiently handling numbers bigger than 64 bits.

    2. Re:I could use your skills... by Anonymous Coward · · Score: 0

      I'm curious - why do you think that it's best to work with *strings* to hold your numbers? As opposed to, say, arrays of integers, with code to handle an overflow from one position in the array to the next-more-significant position? (There are already various arbitrary-precision arithmetic libraries, and I suspect - but don't know - that they use this latter method.)

    3. Re:I could use your skills... by stardaemon · · Score: 1

      I don't mean to be a wet blanket, but there are a lot of warning flags in what you wrote.

      It's pretty common for us to have ideas that seem great and innovative, but because of our lack of expertise in a given field, we don't realize that the idea is either flawed, or has already been refined and applied. I expect this is especially true with difficult math problems, such as large-number factorization.

      All I'm saying is that before you start hiring employees, you should probably invest a lot more effort in vetting your idea.

      And regarding big numbers, you might want to look at the Gnu Multiple Precision library. It's meant for efficiently handling numbers bigger than 64 bits.

      Even if it's flawed, it can still be a fun learning experience.
      For me, at least, this would be enough of a reason to do something like this.
      And even if the math of it is well known, it's still possible to create a new and useful implementation.

      --
      The only way to stay sane in an insane world, is to be mad yourself...
    4. Re:I could use your skills... by znerk · · Score: 2, Informative

      All I'm saying is that before you start hiring employees, you should probably invest a lot more effort in vetting your idea.

      I'm not "hiring employees", I'm asking for help with a project that might have some form of profit associated with its completion. That profit may or may not be monetary, and is much more likely to be the bragging rights of being able to point at the finished project and say "I helped build that". Whether the project is brag-worthy would be something that could be discussed after an NDA is signed, at which point more details about the project would be forthcoming. If it's not a worthy project, then the NDA won't matter. If it is worthy, the NDA allows me some legal means to protect myself, should you decide to "fork" the project before I am ready for that to happen. I will say that I have been "kicking around" this idea for several years, and I believe it to not only be a worthy project, but an actual innovation.

      Long story short: I see your point, but you're not helping.

      It's pretty common for us to have ideas that seem great and innovative, but because of our lack of expertise in a given field, we don't realize that the idea is either flawed, or has already been refined and applied. I expect this is especially true with difficult math problems, such as large-number factorization.

      You are absolutely correct, and looking back at some of my ideas, they were awful. On the other hand, I have a habit of coming up with ideas, mentioning them to someone who has something to do with the field most appropriately aligned to produce something from it, and then watching something "come out" a year or two later. Simultaneous ideation is not something I am unaware of, nor am I so arrogant or ignorant to believe that mine was the only idea in the field, but I do tend to have good ideas and simply lack the means of expressing them in a manner that guarantees my own profit. This particular project is, in my opinion, something that is not in the same vein as my "ooh, shiny!" ideas of the past. The scope is breath-taking, for one thing.

      Bah, now it sounds like I'm all self-important, and I think this project is the best thing since sliced bread. It's not. It's a significant advancement in a particular segment of information technology, and one that I'm not aware of anything in the field that has anything within several orders of magnitude of the apparent efficiency of my method. More testing is *obviously* required, either to disprove my theories or to produce a working prototype of the process. You're aware of the "cheap/fast/good; pick two" business rule, yes? Well, this is supposed to be free and excellent - speed is the issue that I'm having with my current Procedures, and I don't have enough of the appropriate education to "fix" it myself. Shame on me for not finishing college.

      Suffice it to say that this idea has been (at least preliminarily) vetted to my own satisfaction, and that I will be completing it regardless of whether I receive any assistance. It may take me several years, perhaps a decade, to do it on my own, whereas someone who already knows an appropriate language and already has an affiliated skill-set could help me to implement it in a matter of months.

      Again, I'm not "hiring" anyone - I'm a poor broke slob like the rest of us, and the economic downturn combined with an unfortunate date of moving to another state (and the already saturated IT field in my destination) has been harder on me than some others. When I say I'm broke, I mean exactly that; I'm about to start losing possessions due to being unemployed. To be honest, I'm looking for work, myself. I'm hoping to get something in the fast-food industry in the next couple days, before I lose my phone and/or car.

      I was under the impression that the original poster was looking for an open-source project that would welcome a "decent coder". My project isn't currently "open", but only because I don't want to lose control of it before it's "re

      --
      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
    5. Re:I could use your skills... by Anonymous Coward · · Score: 0

      If you're looking to find prime factors of very very large numbers, just d/l a trial of Maple or Mathematica. They both allow you to do arbitrary precision arithmetic, and they have plenty of built in algorithms to find prime factors.

      As for your 128-bit computing... that's really not that unusual in the mathematical world. Try doing numerical Laplace transform inversion. You often need to go well over 128-bits due to the fact that you have one term which increases exponentially and an offsetting term that decreases exponentially!

    6. Re:I could use your skills... by sydneyfong · · Score: 1

      Honestly, is this a bad joke, or a troll?

      It sounds like you have absolutely no idea what you are talking about, and you don't know this. And it sounds like what you do is either impossible, or easily done within a week by a competent programmer.

      --
      Don't quote me on this.
    7. Re:I could use your skills... by znerk · · Score: 1

      I'm curious - why do you think that it's best to work with *strings* to hold your numbers? As opposed to, say, arrays of integers, with code to handle an overflow from one position in the array to the next-more-significant position? (There are already various arbitrary-precision arithmetic libraries, and I suspect - but don't know - that they use this latter method.)

      I'm actually doing something similar to what you suggest, but using arrays of bytes instead of integers - since I'm using VB, I think of an arbitrary-length array of bytes as a string, instead of an array of characters. Using strings to hold my bytes just seemed logical, since the "length" of my "strings" can be arbitrarily assigned, and a single "digit" takes up one position. Come to think of it, I suppose I actually am using arrays, and just wasn't thinking of them as such.

      I understand that C/C++ considers strings to be arrays of bytes, so I would probably have eventually gotten to the point where I scrapped my string manipulation process and generated an array, instead... I'm not the best coder, and my brain seems to be stuck on VB's methods of communicating instructions. Unfortunately, it is probably generous to call me a "hobbyist" programmer; I've got a few real-live, actual, finished applications under my belt, but I'm no pro (not by a long shot). Of course, I'm only counting the applications that actually do stuff, as opposed to just being a time-waster(game); I'm not counting the concept pieces I taught myself something with, or just some piece I worked on long enough to get it to manipulate some data into a format that was more suitable for some other task (stuff that was never even compiled or saved, just monkeyed with long enough to call the procedure in the debug window - usually even using the debug window for the output and just copy/pasting the result into another app).

      This particular application has been wandering around in my mind for several years, and is only recently well-formed enough to be transcribed into actual code. Or maybe it's just that now I'm unemployed, i have more "spare" time on my hands. Project completion is complicated by the fact that I haven't done anything more complex than some shell scripting in several years... There are many times that I feel like I'm learning to code all over again, with this new-fangled dotnet stuff.

      --
      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
    8. Re:I could use your skills... by jwietelmann · · Score: 1

      It deals heavily with prime factors of extremely long numbers.

      [M]ath is not my strong suit.

      I also seem to have some sort of mental block for languages other than VB

      It sounds suspiciously like you're trying to break RSA using nothing but VB and naivete.

    9. Re:I could use your skills... by znerk · · Score: 1

      It sounds like you have absolutely no idea what you are talking about, and you don't know this. And it sounds like what you do is either impossible, or easily done within a week by a competent programmer.

      I may not have a clue what I'm really talking about. What I am trying to do may actually be impossible. Speaking with someone who *does* know what I'm talking about would be most helpful, but no one seems inclined to provide any contact information. Ah, well, posting the request here was just a spur-of-the-moment whim, anyway. I didn't actually expect any responses other than trolls and others similar in nature to yours. This whole thread seems to be devoted to ridiculing the "newbie" who posted in the first place, spitting out pet projects in the hopes of free assistance, or ridiculing people who took the original post seriously. Yeah, I know, I'm in the second group. I'll work out my software issues on my own, if I get no serious responses, and be no worse off than I was before I posted.

      What I want to do is not impossible; although I am not aware of anyone using it in quite the way I have in mind, I am well aware that several others have successfully done the same maths. It could very well be easily done by a competent programmer in a week, although I have not seen any evidence that anyone else has done so.
      I have seen news articles on related subjects when researching how to go about doing what I am doing which came to basically the same conclusion that I did; Math is hard.

      If my posts seems deliberately vague about what I'm actually doing, then you should realize that the behavior you are witnessing is "working as intended". I'm not ready to share my project with the world yet, because it's not quite developed to the point that I can point my finger at it when someone else does it and say "that's my idea, I came up with that". I intend to open the source for the project, but I want my name attached to it first.

      The biggest hurdle I currently have is how to speed the process up; I have the rest of it pretty well figured out, and it seems to work.
      Do us all a favor and either offer to help, submit something that might be useful, or don't bother responding. Being catty is not helpful to anyone.

      --
      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
    10. Re:I could use your skills... by Anonymous Coward · · Score: 0

      Here's a response for you:

      http://oppugn.us/posts/1285329002.html

      Math is not your strong suit, but you think you've discovered a mathematical method that nobody else has using code that doesn't exist based on a science fiction story. Right.

      Post the code publicly (preferably someplace that people can contribute easily, like Github) and you'll get one of two results:

      - the idea is original, in which case your name will stick regardless of who turns it into a practical code.

      - the idea is bogus, and you can go back to writing VB4 crapware.

    11. Re:I could use your skills... by SpasticWeasel · · Score: 1

      Jeremy, is that you?

      --
      No sooner do I get over one, then you put a better one right next to me. Bastards.
    12. Re:I could use your skills... by znerk · · Score: 1

      I never claimed to have a mathematical method that nobody else has. As a matter of fact, "finding prime factors of large numbers" is its own mathematical field, as I understand it. I claim to have a new application for that field.

      The rant you linked to is ranting about being screwed out of money by the person asking for an NDA - there's no money here, I thought I made that plain. I have an algorithm that needs some work, and due to what I know of programming languages, would be much better suited to one I don't know, and not for lack of trying to pound it into my brain. so, basically, we're looking at porting some code and making it more efficient.

      Whatever, this is just more of the "flame the noobs" that I talked about in an earlier post. Between you and my new cyberstalker, I'm tired of rebutting stupidity.

      Unlike my newfound "friend", though, you actually had something useful to say - maybe I'll look into this "github" you describe.

      --
      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
    13. Re:I could use your skills... by znerk · · Score: 1

      It sounds suspiciously like you're trying to break RSA using nothing but VB and naivete.

      Nah, nothing quite so sinister. Sorry to disappoint.

      --
      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
    14. Re:I could use your skills... by znerk · · Score: 1

      Ya know, I came here with this post to see if I could get some help with a programming project. Not even asking for a *lot* of help - I've got the basics down, I'd just like to cut the time down to a finished product.

      I've been accused of money-grubbing, despite the fact that I've said the project will be open source once I ensure my name is attached to it. Yeah, sure, I want my 15 minutes of fame, who doesn't?
      As for money, I'm broke. I'm unemployed. I'm about to go down to the fast food places to get a job so that I can make sure my family has food on the table and a roof over their heads. In short, I don't have any. On the other hand, I'm not trying to get yours.

      I've been accused of trying to get people to do the grunt work on my project for free. I thought open-source was all about free, both beer and speech? Besides, that's what the topic is, unless I misread the "summary" at the top of the page.

      I've been told I know nothing about what I'm talking about. I never claimed to - I came right out and said I'm no math wiz, nor am I a programming genius. I took algebra 2 twice, and never passed geometry. I dropped out of high school and got my GED when I was 16.

      I've been accused of trying to circumvent RSA with nothing but "VB and naivete". I'm not doing anything of the sort; encryption and I aren't really friends, I can never seem to remember the passwords, so I don't encrypt much. Due to that lack of interest and not using it myself, I don't see any point in trying to circumvent it, either. I'll leave that to the people who have an interest and/or aptitude for such things.

      I'm not a well-rounded coder.
      I'm not a computer science graduate.
      I dropped out of college because I "knew more than the professor" who was teaching the course, and it didn't occur to me until much later that the internet is a poor substitute for structured learning. Shame on me. Yeah, I could probably fix that lack, but I'm a bit too old to be gallivanting around with all those kids who are interested in either drinkig or getting laid, and I can't help with either of those things. Besides, that takes money.

      However:
      I'm using VB because it's what I'm most familiar with, not because I think it's the language of choice.
      With .NET I can port it to C# and then from there it can turn into actual C/C++ - except I have a mental block for C syntax, for some reason. I screw up 'hello world' in C.

      I can do all kinds of things in BASIC, QBASIC, Visual BASIC... I started on a TI 99/4a nearly 25 years ago, and TI-BASIC was what I burned into my brain. After that, I discovered IBM-compatible PCs and bulletin boards, and my life's path was pretty much set from there.

      I may suck at efficient, high-level programming, but everything I know I taught myself.
      I taught myself computer repair (with some help from a friend who had some spare hardware).
      I taught myself networking, and I taught myself server and workstation operating systems well enough to get a Microsoft certification
      I taught myself well enough to have had a good job with a good company, as a network administrator for several hundred municipalities throughout 3 states. I kept that job for 4 years, and when I put in my 30-days' notice, it took them 90 days to find someone to replace me.

      I taught myself practically everything I know about computers. Books have been good friends to me for my entire life. I'm not the best at anything, and there are huge holes in my knowledge where I didn't see anything that interested me, but I've been an avid hobbyist and enthusiast of computers since I was a kid... and I'm starting to get old now. Starting to *feel* old, too.

      With the results I've gotten so far, with my "VB and naivete", I'd dearly love to see what someone who actually knows what they are doing could do with my concepts and algorithms. If my theories are correct, I can do something several times better than anybody else has so far. No, I'm not going to tell you what that something is yet, because

      --
      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
    15. Re:I could use your skills... by sydneyfong · · Score: 1

      The most useful thing we can say is not how to make your project "succeed", but to tell you that your attitude doesn't work, and that you need a reality check.

      If it seems that it is only you who gets all those dismissive responses, perhaps it's time to consider the possibility that the problem is yourself, not everybody else.

      And if you're just for recognition instead of money, just state what brilliant idea you have in your mind, and at least you got a slashdot post to point at to claim credit when the idea goes popular.

      --
      Don't quote me on this.
    16. Re:I could use your skills... by cas2000 · · Score: 1

      I have a basic grasp on most of the algorithm, but I am (go ahead, laugh) primarily a VB coder, and I believe this project would be better suited to C, or perhaps python (I have heard something about sci-py?)

      I have no idea, nor do i care, whether your idea is any good or not. either way, you're right about VB being the wrong language for this. I don't think C or C++ is the right language either - as you say, you're not a great programmer so you'd be spending all your time frustrated with the manual memory management required by C.

      python, however, is probably ideal. python's VERY easy to learn (you can pick up the basic syntax in a day or so - as with anything complex, real mastery can take years), the language enforces reasonably correct style, and the scipy and numpy libraries use compiled C subroutines for speed where it matters - in effect, you get the combined benefits of C for speed and a high-level scripting language for rapid development and prototyping.

      you already have some grounding in programming (even if it is VB), so using the scipy and/or numpy libraries you should be able to implement your algorithm ideas in a matter of months if not weeks, even starting from scratch and learning python at the same time. i suspect (actually, i'm *certain*) that the greatest difficulty will be in un-learning bad habits and bad ways of thinking about programming that you learnt from VB - so try to start as a "blank slate", going through the tutorials and example exercises as if you know absolutely nothing about programming.

      python can also be used interactively (e.g. with ipython), where you type your program (or parts thereof) into an interactive shell and get to run/experiment/tweak them in real time. you can also get help, function definitions, query reference material, and more from within ipython. this mode is also used in many of the numerous tutorials and examples available to help teach python.

      (BTW, your work in ipython can be saved to disk and used as the basis for a standalone script, or just cut-and-pasted into your work-in-progress program)

      here's a good place to start: http://scipy.org/Getting_Started

      btw, although i've dabbled in it i am not a python programmer. the kind of programming i do (mostly text processing, data mangling and systems automation) suits perl far better than it does python. and python's white-space issue still annoys the hell out of me. but i can recognise that what you want to do is a near-perfect match for python's strengths.

    17. Re:I could use your skills... by znerk · · Score: 1

      Thank you for an informative post.

      --
      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
    18. Re:I could use your skills... by cas2000 · · Score: 1

      > Thank you for an informative post.

      i'd be interested to hear in a few months whether it actually helped. if you do make the effort to learn python, please let me know...and let me know if it's accelerating your development as i predicted.

    19. Re:I could use your skills... by znerk · · Score: 1

      Well, unlike C/C++, reading python code doesn't make me go cross-eyed inside 3 minutes. I'm not sure it's going to accelerate things development-wise, but it might just make the compiled code run faster.

      As a side note, python's "indentation thing" is something that is already part of my "coding style", so I'm adapting relatively quickly to that - I've read commentary from others that suggests that the indentation is a big hurdle to learning python, and if that's the toughest bit, then I've got this one in the bag.

      Thanks again for the tip, I think it's going to be extremely helpful.

      Now, if I can just find a decent IDE... MSFT has apparently crippled my agility with their VB.

      --
      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
    20. Re:I could use your skills... by Anonymous Coward · · Score: 0

      just curious might it allready exist ? (since you didnt take much time in investigating phyton neither)

      There are not many practical usages for prime stuff besides encryption.
      And at the moment people still not have discovered the relation between data compression and primes and information theories. /but eventually they will find 'things there'.
      As its a result of some advanced math studies sooner or later to be demanded for subjects like blackholes or the holographic universe.
      Before you think i'm ready for crank.net;
      The problem of ideal data compressing of a data set made of prime numbers; Should a mathematicians mind get wondered... there is only 1 ideal solution, and what does it say backwards reasoning about distribution.. oh wel nevermind... its something for the 22th century maybe not for now.

      if you realy have something new in conputer math it worries me too.
      Suppose you get an accident then how long has mankind to wait for another someone like you, who might endup with the same ideas ?
      I think you should make something that if something would happen that someone can continue you ideas.
      It took a lot of time to later findout fermat's solution, while he himself might have had the wisdom for his solutions all the time, we dont know.

      Okay i once had my insights in primes, did some discovery on it.
      I'm here as anonymous as you are, but since primes are so .. essentially mathematical.. please hurry up. or get your ideas some how backed up for others, or find partners
      I could recomend you there are forums on yahoo there are lots of people interested in primes; a lot of people like you and scientist.. join those forums maybe you find your programming friend there too.

      kind regards.

  32. Have a look at R by G3ckoG33k · · Score: 2, Interesting

    Have a look at R, http://www.r-project.org/, which is math related.

    Their developers page is at http://developer.r-project.org/

    The R Project has again participated in the Google Summer of Code during 2010 http://www.r-project.org/soc10/index.html which had several projects in C++

    I think R could be nice as it combines a high level approach with the lower level of C++.

    They also have forum at http://groups.google.com/group/gsoc-r/topics

    1. Re:Have a look at R by Anonymous Coward · · Score: 0

      +1 Please have a look at http://en.wikipedia.org/wiki/R_%28programming_language%29 or else at http://en.wikipedia.org/wiki/Python_%28programming_language%29 Both enable you developing mathematical software very quickly. Also learn how to use the IDE (Integrated Development Environment) which is used in the respective developer community for fast debugging and many handy tools.

  33. Forget the fame by psavo · · Score: 1

    You know what? Forget this "contributing". fuck em all. Do what's interesting and the easiest thing for you. Find a project that does things you're interested in, look it through and find what will drive your own interests and make it better. Then when they update, update along. Notice that your changes tend to get lost. Learn making patches and send them to that project. They'll integrate them and your changes will not get lost when you get latest changes from that project. That's the laziest and easiest thing to do and have any fun at all.

    Screw duty and selfless contributing, it'll only earn you ulcers. Do the fun and laziest thing and get integrated into community.

    --
    fucktard is a tenderhearted description
  34. Take a look at The Boost C++ Libraries... by mok000 · · Score: 1

    It sounds like the Boost project might be something for you:

    http://www.boost.org/

    1. Re:Take a look at The Boost C++ Libraries... by mok000 · · Score: 1

      Ah. Forget about it. TL;DR

  35. Forget about it. by Eharley · · Score: 1

    Finish your degree as fast as possible. You don't want to burn any extra enthusiasm on anything that won't get you out of school. As it is, you will need every last drop.

    Also, read this article: "Three Books For Surviving Graduate School," at http://www.npr.org/templates/story/story.php?storyId=125856586

    It's a piece by the author of this book: Surviving Your Stupid, Stupid Decision to Go to Grad School, http://www.amazon.com/Surviving-Your-Stupid-Decision-School/dp/0307589447

  36. Welcome, young grasshopper. by Anonymous Coward · · Score: 0

    First, a mild bit of critique. I don't think boost is a good place for a beginner to start "contributing". That because boost is supposed to be a gathering place for "standard library quality" things that aren't (yet) in the standard library. Though IMO it on occasion carries a bit much platform flavour and other silliness, that is it doesn't actually manage to cleanly live up to its intended goal. But that aside. It's not a good place to try and hone your skills.

    Try again in, oh, ten years or so, as that (well, 10k hours) is what it takes for a human to become really good at something. No offense, but you're not there yet. That and talent, but you get that for free, or not at all.

    The good news is that there are a gazillion open source projects you could dig into and if you see stuff that needs fixing, well, write a patch and submit it. Some projects won't care, others will. Look around.

    And, of course, in the next few years, learn a couple more languages. FORTH, lisp, haskell, C, assembly, wrap your head around OO use, where it's appropriate and useful and also where it is not, and so on, and so forth. And, uh, don't forget to have some fun along the way.

    Next stop: freshmeat and sourceforge. Happy hacking.

    1. Re:Welcome, young grasshopper. by cheekyjohnson · · Score: 1

      "Try again in, oh, ten years or so"

      That's a very large amount of time. I know it depends on the person, but I really doubt it would take that long to acquire the knowledge necessary to accomplish this task.

      --
      Filthy, filthy copyrapists!
    2. Re:Welcome, young grasshopper. by Anonymous Coward · · Score: 0

      Why, yes, yes it is a large amount of time. But reasonable for the proposed contributing of useful things to something with as high standards as boost has. Perhaps a bit conservative, in fact.

      Note that spending the time writing patches for other projects is a good idea indeed. The message is about gaining experience instead of trying to overreach without that, very necessairy, experience. It is empathically not about discouraging contribution in the general sense. Gaining experience was the point in the first place. That and picking the right place to do it.

      In short: Boost is not a place where beginners can meaningfully contribute code. Pick another place, almost any other place. There are plenty.

      Also, learn more languages. That is almost as imperative for the serious programmer. Perhaps especially so for open source programmers.

      As for your doubt I offer this bit of wisdom. I didn't write it, but I do agree with it.

  37. Mods? by Anonymous Coward · · Score: 0

    How is this 'Flamebait'? Srsly?

    (Not the same AC)

  38. be an active user by Zecheus · · Score: 1
    help specify requirements. discuss feature with project members. document existing features. teach your peers how to use it. evaluate multiple packages and blog. blog about these type of tools in general. show in your blog how to resolve common problems in the math knowledge domain with these tools.

    I still haven't even had my coffee this morning.

  39. Re:C++ is convoluted and hard by Anonymous Coward · · Score: 0

    Ah, you (and the moderators) got the point wrong then. The problem is not in the person but in C++.

    It teaches you _wrong_stuff_.

    And it's not that it would be impossible to get things right in C++. Just that seeing the world outside it helps greatly in achieving that.

  40. a word on the matter by mariuszbi · · Score: 3, Insightful

    As a C++ developer and boost user, I advise against starting to code for it. API design and implementation are quite hard as opposed to "normal" programming, as you need to factor several other problems: building a easy-to-use generic interface, mandatory in a library, is much more difficult to code than in project that works with specific data models. Also, I had specific problems with boost::filesystem API so I can tell you getting a bug acknowledged and fixed in a particular version might be frightening at first(no, I don't want to update my boost version to get it... I want it backported). I suggest you find a piece of code that you are interested and find useful and follow this simple roadmap:
    1.Install it and use it
    2.Subscribe to user/devel mailing lists
    3.Write missing documentation and unit tests for components
    4.Offer to implement features/fix bugs that have been appearing for some time but have a low priority.

  41. 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!

    1. Re:An Alternative Software Project Suggestion by Anonymous Coward · · Score: 0

      GSL is a great reference. It desperately needs support for both sparse matrix types and sparse matrix solvers.

  42. Focus on quality assurance by pieleric · · Score: 1

    Don't start by adding big features to the project. It's the hardest part, and there are many people doing this already. The best is to first concentrate on the quality assurance:
      * Look at bug reports, try to reproduce them, add your insights, and maybe even find a fix for them
      * Write test cases, that's what is most missing nowadays in open-source projects. It's the best way to ensure that the library will work correctly on every kind of hardware/software combination. Only someone like you who know both about programming and about the domain of the tool (mathematics) can do it right!

  43. If yoy want to learn C++ don't bother with Boost by Viol8 · · Score: 1

    Boost has its own conventions and using rather complicated templating they've managed to munge a lot of C++ syntax. Also as a hiring manager I'm rather tired of interviewing C++ candidates who can quote me the STL and Boost methods until they're blue in the face but couldn't explain pointer arithmetic or byte alignment issues if their lives depended on it.

  44. On-line Open Source Course at RPI by seekthirst · · Score: 1

    I recommend that you visit this course wiki. It contains free material relevant to participating in an open source projects. The course, "Open Source Software Practice" is a taught at RPI. http://public.kitware.com/OpenSourceSoftwarePractice

  45. Making a Boost Library by Rick+Richardson · · Score: 1

    http://www.rrsd.com/software_development/boost/oopsla05.pdf

  46. GTFO,ASAP by Anonymous Coward · · Score: 0

    As another commenter points out below, it's all well and good to learn and get involved in new things in grad school, but you may just want to focus on getting finished and the fuck out of there as soon as possible. Because 'as soon as possible' can easily turn out to be a lot longer than you banked on, or never, if you aren't careful. Grad school is full of things you might like to do, but you need to finish the damn degree before it finishes you. Hate to be any of the people I know that have let their PhD drag on for more than a bit too long, or those that have finally quit their PhDs after several years of frustration (cf. Matt Groening's 'Bitterest person in the world')

    1. Re:GTFO,ASAP by Anonymous Coward · · Score: 0

      DO NOT LEAVE GRAD SCHOOL YET.

      The economy is not yet ready for you.

      Wait until the job market is roiling again. Stay in grad school, learn as much as you can, and get experience in disciplines related to yours... writing code for math libraries is good both in terms of giving you new skills and as a sign to future employers (when the market is back) that you have more usefulness than the next schmuck.

  47. It depends how you define complicated by Viol8 · · Score: 1

    At the end of the days its just trigonometry and vectors. Writing software to do that is just a case of wrapping plug and play equations given to you by a friendly mathematician into a nice API. Coders shouldn't be expected to derive the maths from first principals themselves or even know it at all.

    1. Re:It depends how you define complicated by MichaelSmith · · Score: 1

      Since the poster is a maths guy I was hoping he could design the whole thing and (as you say) get some coders in on the software production.

    2. Re:It depends how you define complicated by Viol8 · · Score: 1

      Thats usually the best way. I've worked with a few maths types and very smart though they are they don't generally have particularly good coding skills. A lot of the time their code ends up messy, convoluted and if they don't know the language very well , hopelessly inefficient.

    3. Re:It depends how you define complicated by pjt33 · · Score: 2, Informative

      It's actually uglier than "just trigonometry and vectors". If you're willing to use a spherical approximation to the globe then yes, but WGS84 is an ellipsoid. To get an idea of how complicated it is, check out this paper (and note the references to numerical analysis).

  48. The Matrix Template Library by Anonymous Coward · · Score: 0
  49. Re:C++ is convoluted and hard by somersault · · Score: 1

    Thankyou, that is almost helpful (and I feel better plainly stated rather than vaguely implied). What would you recommend instead?

    Most of my projects at work have been Delphi or Perl based, and IMO they are fine for beginners, but I imagine many Slashdotters like to play around with newer IDEs and languages..

    --
    which is totally what she said
  50. Check out Sage by highacnumber · · Score: 1

    Sage is an open source platform for mathematics and computation that ties together many C and C++ libraries with Python code. You could browse the project bug and enhancement tracker or the sage-devel google group for some ideas of where to contribute and the project culture. There are a very wide range of things to do. With Sage, and probably most other projects, a very good way to get started is to help improve the documentation. This is not glamorous, but it is effective. It involves you with other people in the project, and gets you familiar with their development practices. Its usually well appreciated since documentation quickly gets out of date on an active project. Writing documentation will suggest some coding projects naturally - to adequately describe a current bug to users, for example, you will have to understand it somewhat, and that might suggest a solution.

  51. Work on Battle City Classic! by Anonymous Coward · · Score: 0

    Work on Battle City Classic! I could use some help ;)

    http://github.com/Deceth/Battle-City

    It's an open source game programmed in C++. It's a fully functional game, but it could use some optimizations, improvements and bug fixes. Also, the community would love some new features and have made many suggestions. It's a fun way to get involved with open source programming.

  52. my advice by Anonymous Coward · · Score: 0

    I find that the easiest way to start contributing is to figure out what you want that piece of software to do. If there's a bug that you would really like to be fixed or a feature that you really think would be neat go with that. People on the mailing list will usually help you out. The secret is to find something you're interested in so that you can have fun with it.

  53. Re:C++ is convoluted and hard by mwvdlee · · Score: 3, Insightful

    Knowing a bit about the Boost libraries, he's probably talking about template METAprogramming instead of mere template programming. The former is quite a bit larger of a bitch than the latter. You can be a quite decent C++ developer without ever having done template metaprogramming.

    --
    Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
  54. os contribs by mjwalshe · · Score: 1

    if your into technical progamming / numerical stuff maybe work on the Open Source FORTRAN's as they are poor performers compared to the paid for counterparts.

    Or even port some stuff to the CUDA side of things where i'me sure thier is a lot of interest

    1. Re:os contribs by plcurechax · · Score: 1

      if your into technical progamming / numerical stuff maybe work on the Open Source FORTRAN's as they are poor performers compared to the paid for counterparts.

      If numeric computing is of interest...

      Actually there are thousands of Fortran modules that scientists, engineers, and mathematicians still rely on because they are well known, organized, and trusted.

      Look for local users who may have some "kludge"-works that they doing like MATLAB, an old Fortran module from NetLib, maybe a couple C or Fortran module from Numeric Recipes, all bound together with some very brittle Korn Shell scripts. That would be perfect to help refine the process into an Octave (or other Free Software alternative) script, and re-write (or quite likely simply replace) the Fortran and C modules with Octave toolboxes (or in Octave or C/C++).

  55. Have a math background? Go functional! by Anonymous Coward · · Score: 0

    Seriously, there are many great C and C++ programmers who will beat your ass. I really don't see a math student down in the trenches with the rest of the template metaprogramming inline assembler using grunt workers (although sometimes library and algorithm design in these cases can be stunningly beautiful). Applying math to real world problems can also mean that you engage in the ongoing search for better abstractions and theoretic models in programming. The functional community (i.e. Haskell, the ML family, and the theorem prover guys) have a lot of meaty problems to tackle that can't be solved by people without degrees and a strong mathematical background. Why waste your degree and your knowledge on something that other people do very well already?

    1. Re:Have a math background? Go functional! by VoidCrow · · Score: 1

      Why breathe?

  56. being an ahole now management 'quality' by Anonymous Coward · · Score: 0

    http://www.cnn.com/2010/LIVING/10/12/dark.side.management/index.html?hpt=C2

    so, if you have enough symptoms, one day you too could be a softwar gangster billionerror 'community' 'leader'.

  57. Optimization and Machine Learning by davis685 · · Score: 1

    I run an open source C++ project which is, in large part, a machine learning, nonlinear optimization, and linear algebra library at http://dlib.net./ There are all kinds of interesting algorithms in this area which you could help add to the library. Let me know if you are interested and I'll try and point you to some interesting methods to implement :)

  58. Some further considerations ... by golodh · · Score: 1
    You posed two questions:

    (a) How to start contributing?

    (b) What project to contribute to?

    There are a number of posts that address the "how", which basically advise: "look for bug reports, then fix those", which I think is good advice and there is little I have to add to it. Except perhaps this: if you're a graduate student you will probably be able to find ongoing on-campus research projects. Is there any among those which is staffed with people you'd like to work with and from whom you feel you could learn? Have you considered joining one of those projects? Have you considered asking on of the professors for ideas? The advantage is that you will be able to get face-to-face contact, which can speed up learning. The disadvantage is that you're not getting "outside" the university.

    I will address question (2): what project to join. Now there is something basic about contributing to a project which I think you ought to think about

    How much time you have available, is there anything specific you want to learn about, and what is your level of commitment going to be?

    For example, making use of multiple cores of today's chips is a hot topic, one which needs help, and one which you might want to learn about. One caveat though, most basic high-performance mathematical subroutines are in Fortran, not C++, and they don't aim at being examples of "good programming technique", they aim at getting maximum performance by paying attention to things like optimising memory access, keeping hte silicon busy and avoiding stalls (keeping things as much as possible on-chip, within-cache, cache coherency, pipelining, and the like).

    You could e.g. propose make existing low-level routines thread-safe, and change existing subroutine libraries so that they will attempt to make maximum use of all available cores when instructed to do so. Doing this for basic maths subroutine libraries is (to me at least) interesting work which is -in principle- well-suited to a Maths graduate (much more so than CS types as they usually won't understand the basic numerical algorithms). Or you could move into harnessing GPUs for specific calculations (CFD calculations come to mind, but there are others to which GPUs are particularly well-suited like linear algebra). Or you could delve into professional-level object-hierarchies (the Qt object hierarchy comes to mind), and learn about how to use those things to package subroutine libraries into applications rather focus on subroutine libraries. However there is a really big snag.

    It's this. If, as you write, you're basically just a passing coder with a Maths background who wants spend a few weeks to gain a bit of practice, you probably won't be able or willing to take the time to understand the specifics of the project you will be assisting. Anything that requires a substantial amount of domain knowledge (which could elevate you from "just a drive-by coder" to "a project contributor") is therefore out, barring perhaps mathematical subroutine libraries (you ought to have some fairly decent background knowledge about those from your studies). That puts clear limits on your potential contribution, and is therefore something you should keep in mind because it limits the type of work you should aim for, and with it the project.

    This probably means you're limited to lightweight, non-critical work as most project administrators will not want to have any drive-by coders mess with critical functionality. What they will accept from you is the sort of work that's not critical and can be easily maintained by others when you no longer show up.

    If on the other hand you were interested in a specific topic (you did mention numerical work, but I mean a specific field of application), you could invest the time to acquire some domain knowledge on of what the library is about then you could aim to make a more substantial contribution. The fact of the matter is that the real "action" tends to be in application-specific projects, not in basic maths subroutine libra

  59. team by Anonymous Coward · · Score: 0

    Find an existing contributor and team up. May take a few tries to find one willing to do so, but the reward is likely to be an incredible jump start on your learning curve and ALOT more fun. If you get a real dud, learn what you can and find a better one. As someone who is strong on math, look for someone who is strong in CS. You can both help each other with projects and problems. If you really are going to program, a small network of smart people you know personally is worth 100 CS classes.

    Joining an Open Source project is great, but you need to stop thinking small (you) and start thinking big (community). Many are drawn to math and CS because you can be an introvert and still succeed spectacularly. Don't let your possible tendency toward introversion cause you to miss out on the best part of the Open communities....the other people.

  60. Testing maybe? by MikeNash · · Score: 1

    If you're keen to get started, I'd play with an existing project and volunteer my services as a tester, or documentation guy. Lots of people hate both of these things, but they are critically important and will help with your understanding and general programming skills (assuming, that the sort of testing and documentation you're doing is non-trivial, of course)

  61. What about the Parma Polyhedra Library? by Anonymous Coward · · Score: 0

    I think the Parma Polyhedra Library (a library that implements various kinds of numerical abstractions used by projects such as Graphite) could surely benefit from the help of a skilled mathematician. Try asking the development team (http://www.cs.unipr.it/ppl/).

  62. Re:C++ is convoluted and hard by Joce640k · · Score: 3, Funny

    C++ doesn't teach you anything, you study it.

    From the summary it sounds like he learned C, not C++. There's a huge, grand-canyon-sized difference between the two.

    C++ is a safe, expressive, modern language - like Java but without all the horrible limitations. Yes it takes a bit of study and it's not for casual programmers, but the results are worth it.

    C is much lower level, unsafe language. Good for what it does but dangerous and a very bad choice for large projects.

    --
    No sig today...
  63. After one hour where will it be...? by Joce640k · · Score: 1

    You haven't solved those problems yet?? I thought they would have been solved 20 years ago.

    I'm flying next week and suddenly I'm nervous.

    --
    No sig today...
    1. Re:After one hour where will it be...? by MichaelSmith · · Score: 1

      Its solved but as far as I know all the solutions are proprietary. An OSS implementation would be handy now that games are becoming more realistic.

  64. What about the Parma Polyhedra Library? by Anonymous Coward · · Score: 0

    The Parma Polyhedra Library implements various (mostly polyhedral) numerical abstraction used by projects such as Graphite (which is included in GCC). They could surely benefit from the help of a skilled mathematician: take a look at http://www.cs.unipr.it/ppl/Contribute/ and consider getting in touch the developers.

  65. MATLAB Hyperspectral Toolbox by Anonymous Coward · · Score: 0

    If you have any interest in writing algorithms or leanring MATLAB, there's the open source MATLAB hyperspectral toolbox. http://matlabhyperspec.sourceforget.net. We are just starting out, get downloaded at least twice a day, and are looking for people to code up algorithms for us.

  66. Check out Stack Overflow by Soskywalkr · · Score: 1

    Head over to Stack Overflow -- a website for answering programming questions ( including C++ ). I found that I've learned a great deal by simply trying to answer the questions as posted and researching them if I don't know the answers. If you have time, you might also check out either stats.stackexchange.com or math.stackexchange.com, sites specific to statistical and mathematical questions respectively. Ps. If you haven't read "Joel on Software" you might also check it out.

    1. Re:Check out Stack Overflow by Anonymous Coward · · Score: 0

      @Soskywalkr #joelonsoftware is a faggot, but look into expert sex change

    2. Re:Check out Stack Overflow by kikito · · Score: 1

      Yes. Go to stackoverflow.

      See if you can answer any question, or, better yet, see if you can ask any questions that have still not been asked (for example about template programming, which you should learn if you are into C++, btw)

      By answering unanswered questions and asking unasked questions, you help the community as a whole.

      This is by far the simplest way of contributing.

  67. That is how I started ! by m0interactive · · Score: 0

    Tell you the truth, when you put your mind into contributing to an Open Source project, you shouldn't worry about if you don't know anything. I believe that draws the line between people who contributes and people who don't. It is fear. When I started contributing to Google Chrome's open source browser, Chromium, I had no clue what I was doing. I didn't know any C++, Python, or JavaScript (which were the main languages that Chromium uses. All I did was reading their development wiki and try to get my first build up and running. I had no clue how to even build it because the wiki was not that great (now it is phenomenal), so luckily they had a mailing list and an IRC channel. I kept asking questions, and eventually I got my build working. After that, I tackled smaller bugs, and later on bigger bugs and features. At the end, I am happy, I ended up knowing C++ pretty well (the Google way), JavaScript ninja (almost), and Python (ya). But the most important, I am part of an open source group that really changes the world, and my fear of doing something that I don't know it is possible at that time, has drifted away.

  68. Re:C++ is convoluted and hard by wrook · · Score: 2, Insightful

    Not taking the side of the parent, but from reading the summary I get the idea that the person asking *isn't* decent at C++ (at least by your definition of average-good). I base that only on the statement that they've used "some" OOP concepts in toy projects. To be decent at C++ you need to be able to understand the implications of the fact that it is statically bound. If you don't, you're not going to be able to write decent C++ code. You might be able to "make things work". A good programmer in C++ should also be able to grok most of the template code in Boost.

    Having said all that, I think this person has picked a good project to work with. They can move from being a beginner in C++ and move through being decent to even being good. This is especially true because they are likely more than decent in the subject matter in the Boost library.

    For advice, I recommend to keep following the development list. Check out all the changes and read them. Try to understand what they are doing. If you don't understand, it might be possible to ask specific questions to the person who wrote it (be diplomatic, though, as they may be tremendously busy). Try to fix a bug yourself. Send in a patch with the disclaimer that you are a beginner and would like feedback. There are many people who will be happy to help you.

    There are some good books that explain how to do the template stuff that Boost is doing. Unfortunately it's been a donkey's age since I did any C++, so I can't remember the names of any. Perhaps someone here can help. If not, I'm sure you can post on the Boost mailing list that you want to find a book on C++ templates and are looking for suggestions.

  69. Re:If yoy want to learn C++ don't bother with Boos by StripedCow · · Score: 1

    Indeed, Boost uses templates to the point where it becomes abuse. If you want to learn how to use C++ in a decent way, stay away from Boost. However, if you have mastered C++ basics, and want to be able to solve real-life problems in an efficient way, then come back to Boost. In the meantime, you can hope that somebody invents a better language.

    --
    If Pandora's box is destined to be opened, *I* want to be the one to open it.
  70. Re:C++ is convoluted and hard by mcvos · · Score: 3, Insightful

    C++ is a safe, expressive, modern language - like Java but without all the horrible limitations. Yes it takes a bit of study and it's not for casual programmers, but the results are worth it.

    C is much lower level, unsafe language. Good for what it does but dangerous and a very bad choice for large projects.

    It's good you've been rated funny rather than insightful. C++ is every bit as unsafe as C.

    Yes, they are very different languages, as C is intended for low-level systems programming, managing individual memory locations and stuff like that, whereas C++ has modern OO concepts badly tacked on top of that in a wrong way. It combines all the problems of Java with all the problems of C, and then adds some more. The end result is quite powerful, but not something I'd ever dare to call "safe".

  71. Easy Question by JambisJubilee · · Score: 2, Insightful

    The answer to your question is quite easy. Take whatever your thesis is, and create high quality software tools to help you to that end. Work where you're (trying to be) an expert. If tools already exist, expand those tools in the direction of your thesis.

  72. You're full of it (you're a technically weak liar) by Anonymous Coward · · Score: 0

    http://it.slashdot.org/comments.pl?sid=1815608&cid=33868046 and you were unable to even reply or speak after all of your terribly erroneous statements were disproved or outright put into the waste bin. You have nothing to show for yourself here in this reply as to your "programming" because to be blunt about it, I strongly suspect you haven't done a damn thing in coding at all, much less anything that anyone has seen and said was good in say, written publications that are respected and reputable.

  73. Re:C++ is convoluted and hard by ifrag · · Score: 1

    C++ is a safe, expressive, modern language

    C is much lower level, unsafe language.

    And yet since C++ is a superset of the C language (essentially anyway), everything that was "unsafe" about good old C is still there. I'm not really sure where you came to conclusion that C++ is in any way "safe". All the damage you could do in C is still there, maybe your compiler will complain more but if you want it to do something dangerous it should still work. Perhaps with a few more explicit casts, I'm not of the opinion that makes it more "safe" in any meaningful way. Any real safety still needs to come from the experience of the programmer, it's not inherently provided.

    --
    Fear is the mind killer.
  74. Linux Drivers by XB-70 · · Score: 1
    Disclosure: I am not a programmer.

    There is an awful lot of work needed on Linux drivers of all types. I love the idea that you are eager to help. From what I have read on the web, this is an area where a) you can get a lot of information and b) your skills will grow very quickly.

    To get help and/or ideas, get connected with your local LUG (Linux User Group). They can give you all kinds of help and encouragement.

    Best of luck and thanks - I wish every grad would give a little of their time like you wish to - Linux would be, hands-down, the standard operating system.

    --
    *** Don't be dull.***
  75. FIND bugs! by Dr.+Manhattan · · Score: 2, Interesting

    If you know the math, you should be able to come up with regression tests and find corner cases and invalid approximations and so forth. In other words, you should be able to find bugs, or prove that certain bugs aren't present. This is a very valuable service, and you can get familiar with the code by writing the tests that use it and understanding the ways it implements the algorithms involved.

    --
    PHEM - party like it's 1997-2003!
  76. You're giving him a bit too much credit by MikeRT · · Score: 3, Insightful

    Most projects love off-loading working onto eager, but inexperienced, contributors. You can't go wrong with most groups by going to them with a good attitude, stating what you can do and asking what you can do to help out. If you get grief from them for that, you can safely write them off as terminal assholes because no reasonably well-balanced human being would slap down someone who approaches them like that.

    I've been contributing to a project for a while where the core contributors are far better and more knowledgeable than the average contributor. The community has an elitist reputation, but what I've found from watching how others are treated is that those core contributors will treat the small time contributors very well if they contribute according to their abilities (meaning they don't flood the core contributors with trashy git commits for obviously complicated problems) and work as a team.

    Part of the problem is that a lot of people don't like hierarchies and resent the hell out of them. The fact is, however, that they not only exist, but are necessary for social organization.

  77. Re:You're full of it (you're a technically weak li by znerk · · Score: 1

    I don't know why I'm bothering to respond to an off-topic AC cross-post troll, but here we go...

    You posted that 20 minutes ago; Saying that I was unable to reply to it is jumping the gun a bit. To be honest, I haven't even read your response, since I was in another thread (this one) and hadn't read my email to even see that you had responded yet.

    Attacking my programming skills (which I think I've been fairly obvious about not being "pro" in) is kinda silly, when the original subject of your post is a system configuration file, not programming (regardless of my "correctness").

    And again, I'm wasting my time responding here, because you'll never see this post; you're still an Anonymous Coward.

    Mods, feel free to throw this particular bit in the "off-topic" bin; my karma can take it.

    --
    This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  78. Re:C++ is convoluted and hard by Joce640k · · Score: 2, Informative

    everything that was "unsafe" about good old C is still there.

    So, um, don't use those bits...use std::vector and std::string instead.

    This is where 'learning' C++ comes into play, as opposed to just hacking around and copying/pasting C source code until it works.

    If you're doing it right the only problems you should have in C++ are null pointer exceptions - just like Java.

    Any real safety still needs to come from the experience of the programmer

    That, and having a teacher who smacked you down every time you tried to use a C-style array or didn't do RIAA.

    --
    No sig today...
  79. Znerk the noob demonstrates his incompetence by Anonymous Coward · · Score: 0

    http://it.slashdot.org/comments.pl?sid=1815608&cid=33868046 is where Znerk messed up on a dozen technical points after he ad hominem attacked someone here yesterday. Znerk was unable to even reply or speak after all of his horribly erroneous technical statements were disproved or outright put into the waste bin. Znerk, You're full of it, incompetent, and your technical mistakes list there is unbelievable. Your foul mouthed name calling only made you look even worse than your outrageous technical blunders. Go away noob. You don't know enough about the computer sciences and the proof's in the url I just posted above.

    1. Re:Znerk the noob demonstrates his incompetence by cyphercell · · Score: 1

      APK! How are you doin' buddy? Long time no see? :p

      --
      Under the influence of Post-Cyberpunk Gonzo Journalism
  80. start at the application level first... by Anonymous Coward · · Score: 0

    I would suggest that you start making a high level tool first (for example some sort of physics or engineering application). Once you have enough experience/knowledge then go down to a lower level (to a specific math library). It might be a longer road but its more worth while.

  81. Some more math-specific ideas by GlobalEcho · · Score: 2, Informative

    I see a lot of posts from non-mathematicians here. Most are correct and useful, but not necessarily fitted to your situation. As a fellow mathematician who has dabbled in this stuff over the years, I can think of a few projects where your particular skills may be helpful:

    (1) Work on the GSL. This is the highest-quality numerics library out there. I'm not aware of particular weaknesses - it's really great - but I'm sure there's something.
    (2) Work on the open-source spreadsheets. These are basically OpenOffice, Gnumeric and KSpread. All three lack some numerical routines that could be useful.
    (3) Work on Scipy/Numpy, R, Octave or Maxima. The numerics routines in these libraries are not always GSL-quality, particularly special functions. The built-in optimization routines tend to be basic and sometimes light on features. Even translating unit tests between packages would be a useful, enlightening and somewhat interesting project that I believe no one has ever undertaken.
    (4) Work on an open-source optimization library, such as OpenOpt.
    (5) Performance/accuracy comparisons of existing spreadsheets, libraries, and programs.

    1. Re:Some more math-specific ideas by L7_ · · Score: 1

      This is a good list. If for one, it shows that the original author might look beyond the boundaries of libraries written in C++. I personally would recommend numpy (http://www.numpy.org) because I've been doing mostly python coding in the last few years. Also, to note, that some/most of the backend to numpy is written in C.

      However, if the submitter really wants to start contributing to open source libraries, they really should start at writing test cases and documentation. Contributing code to them is not something that maintainers usually like to take from people that are not associated with the project. Joining the mailing list was a good idea, but they really should download the code and run the set of test cases. Then, knowing what he knows, look into his area of expertise and see if there is test coverage he could add.

      In summary, look into an alternate programming language library, download and run the library's test cases and fill in the test case coverage and write it up in their documentation.

    2. Re:Some more math-specific ideas by GlobalEcho · · Score: 1

      Thanks for the kind words. I agree about the tests. To elaborate on your point about going beyond C++: not a whole lot of truly mathematical code is written in anything other than C or Fortran. I see the reasons for that as threefold.

      First, a library written in a "simple" language is easier for a domain expert to enhance, especially since most domain experts will not be particularly expert at OOP.

      Second, libraries created by Fortran and C are relatively simple to link, and enjoy great platform independence.

      Third, most mathematical code gains very little from OOP. Wolfram and Mathematica aficionados may make a case for LISP, very understandably, but inheritance is but infrequently helpful.

  82. The best advice I can give you by toby · · Score: 1

    Is study many languages other than C++. For example, learn Scheme through The Structure and Interpretation of Computer Programs.

    As a "one language" developer you will always be fifth-rate, in tools, techniques, and thinking.

    --
    you had me at #!
  83. MOD PARENT UP by Anonymous Coward · · Score: 0

    This is absolutely the correct way to go about this.

    1. Re:Mod Parent Up by mhelander · · Score: 1

      Not to worry, it currently is modded to 0 points!

  84. Open Object Rexx by dashley · · Score: 2, Interesting

    Perhaps you might be interested in a smaller project where the number of developers is also small, but quite open to new blood. All of the current developers would be very happy to get you started with the ooRexx project. The source code is mostly C++ and we do not use templates, mainly because we have no need of them for our requirements.

    ooRexx is an interpreter for multiple platforms and has a very interesting math library. All interpreter calculations are done in floating decimal, not binary. The current library supports most typical math functions (add, subtract, divide, multiply, remainder) but it lack higher order functions such as trig functions.

    If this sounds interesting to you feel free to use the contact list at http://www.oorexx.org/contact.html to email one of us and we can get you started or supply you with more information.

    David Ashley
    Project Leader, ooRexx Project

  85. Re:C++ is convoluted and hard by Joce640k · · Score: 5, Insightful

    The end result is quite powerful, but not something I'd ever dare to call "safe".

    C++ is as safe as you want to make it.

    eg. Did you know that Visual C++ operator[] does range checking in all standard container classes/strings?

    If you do stuff like that and ban raw pointers (ie. all pointers have to be objects and thus subject to RIAA) then most of your traditional C++ problems disappear. It just takes a bit of practice and getting over the C mentality.

    In return you get multiple inheritance, timely freeing of resources, operator overloading and much more expressive power than Java.

    A good portion of Java code is just copy/paste because you can't inherit implementation and try/finally blocks to get your files closed at the end of functions, not just when the garbage collector feels like it (which might be 'never'). In C++ you write code once in a library and it stays written.

    --
    No sig today...
  86. Join/inherit my audio compression project by n01 · · Score: 2, Interesting

    Hello, anonymous submitter,

    About I year ago I've started a small project with a friend, written in C++, that does some improvements to lossless audio compression (currently to FLAC). It calculates the autoconvolution of the audio signal to find similar parts in the audio. Especially for electronically generated music, this can be used to predict other parts in the audio, and thus reduce the entropy of the signal (i.e. compress the file better).

    If you (or anybody else) are interested in further development, I would open-source the project, and may be start working on it again a bit myself. Just drop me a line, at polarspaceflo (at) googlemail (dot) com.

  87. Inkscape is nearing 0.50 & has C++-ification w by Anonymous Coward · · Score: 0

    Inkscape has been under a long, drawn-out port to C++. I helped port the UI frontend to C++/Gtkmm about 5 years ago or more.

    Now that Inkscape is nearing 0.50, there's another big push to complete other parts of the C++ effort.

    C++ is probably the under-appreciated language out there. We'd really improved Inkscape's C code switching to C++, we've drastically reduced line-count is certain components. C++ is just awesome but treated like a bastard step child.

    C++ is all the benefit of C with all the goodies of Java & C# (plus more goodies since those languages are sub-par rip-offs of C++ in the first place).

    Inkscape uses libgc for garbage collection, btw.

  88. Re:If yoy want to learn C++ don't bother with Boos by Anonymous Coward · · Score: 0

    List c&&(!c++). Some C programmers will decline the job offer after they know they'll actually use C++, though.

  89. All good languages are "unsafe" by Zero__Kelvin · · Score: 1

    "C is much lower level, unsafe language. Good for what it does but dangerous and a very bad choice for large projects."

    Are you unaware that one of the largest Open Source projects on the planet is a C project some of us affectionately refer to as the Linux kernel?

    There is no such thing as a good and "safe" language. When you write real software you need to be good at what you do, understand the implications of the decisions you make, and be aware of the pitfalls of the language you are using. Calling C an unsafe language is like saying that Smith and Wesson doesn't make good hunting rifles because they are unsafe. It is exactly the power when used properly by a skilled person that makes any tool useful and efficient in the right hands, and "unsafe" in the wrong hands.

    --
    Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
    1. Re:All good languages are "unsafe" by Joce640k · · Score: 1

      I'm aware of the Linux kernel, I also think it could be a lot better/safer if a bit of C++ was allowed into it. The only reason it's 100% C is because Linus doesn't really grok C++ (he's demonstrated this quite clearly in his anti-C++ rants).

      The reason I say C is unsafe is because there's no way to enforce safety in C. It's all down to the programmer to get it 100% perfect, every time.

      eg. If you're using a smart pointer in C++ there's no way you can forget to initialize it to null, the compiler does it for you (and the compiler never has a bad day and forgets to do it...)

      --
      No sig today...
    2. Re:All good languages are "unsafe" by stanlyb · · Score: 2, Funny

      Next time you start your car, try to not to think of all these ECU using pure, clean and unsafe C code.............

    3. Re:All good languages are "unsafe" by walshy007 · · Score: 1

      I'm aware of the Linux kernel, I also think it could be a lot better/safer if a bit of C++ was allowed into it. The only reason it's 100% C is because Linus doesn't really grok C++ (he's demonstrated this quite clearly in his anti-C++ rants).

      I'm guessing you are referring to things like this.

      I more so have a feeling you might not have understood where he is coming from in regards to that. Obviously his background is programming from a system-level design, and designing things the ground up for their designated purpose.

      This tends to lead to not liking abstractions where none are necessary, yes some of the higher level abstractions can be convenient, but also ill suited to the specific task as opposed to writing something yourself, and can cause potential bottlenecks.

      In linus' view, it does not matter if something requires more effort or oversight in regards to code so long as architecturally it is better, individual bugs come out over time as they do with any significant project.

  90. Re:C++ is convoluted and hard by Joce640k · · Score: 4, Insightful

    Did I really type RIAA instead of RAII? Oh, dear...

    --
    No sig today...
  91. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  92. Octave. ARM. by cfriedt · · Score: 2, Interesting

    Improve Octave. Specifically, for ARM. Remember that open-source does not necessarily mean architecture independent. Practically all software is written with the perception that the compiler optimizes any poorly written C / C++ code and that the target is a PC. While this is good for x86, relying on hardware instruction rescheduling to make code more 'efficient', it's pretty awful for anything else. Having done a lot of work with ARM / NEON optimizations myself, I can tell you first-hand that gcc does not do a great job of optimizing C code at all. This is going to become increasingly important as ARM outpaces x86, so please do everyone a favour, and write the code correctly the first time. There are several books about why this is so important, e.g. this one, but you'll probably find that its easier to just dive right in. Look at the Android source code, that's always a good example. uClibc / uClibc++ are also good examples.

    1. Re:Octave. ARM. by jpswensen · · Score: 1

      Why try to optimize Octave for ARM? Instead you should spend time optimizing the {BLAS, LAPACK, FFT, sparse matrices, etc.} libraries on which Octave depends. I don't think there is a lot in the Octave source code itself that would benefit from a lot of time spent on optimization. For the most part, if there are processor optimized version of the aforementioned libraries, then Octave will perform quite well for vectorized code.

  93. C++ is hard or easy based on knowlege and skill by Zero__Kelvin · · Score: 2, Interesting

    " ... In return you get multiple inheritance ..."

    OK, you had me until there. If you are using multiple inheritance you have a flaw at the architectural level. There is a saying among Software Engineers: "Just because you can do it, doesn't mean you should do it." Multiple Inheritance is the poster concept for this statement.

    Other than that, as a SE versed in numerous languages of all types, including C and C++, I can attest that every person saying "C" is better, or "C++" is better, or "C" is unsafe, etc. are simply people that lack a basic understanding of software engineering on some level, and completely lack an understanding of the language they are criticizing. Neither is "safe", or "better", or "implemented incorrectly", etc. (I promise you if you are one of these critics that Bjarne Stroustrop, Dennis Ritchie, and Brian Kernigan are smarter than you, and know much, much, much more than you do about language design.)

    I especially love it when people cite bad code as proof of poor language design. It is like saying you can prove that English is a horrible language by referencing a Rap song. Any good language can be misused, misunderstood, and abused and said abuse is not proof that the language itself is inferior or flawed.

    --
    Guns don't kill people; Physics kills people! - John Lithgow as Dick Solomon on Third Rock From The Sun
    1. Re:C++ is hard or easy based on knowlege and skill by Anonymous Coward · · Score: 1, Informative

      OK, you had me until there. If you are using multiple inheritance you have a flaw at the architectural level. There is a saying among Software Engineers: "Just because you can do it, doesn't mean you should do it." Multiple Inheritance is the poster concept for this statement.

      Nonsense. You should learn about mixins. The key is to be very careful (meaning generally avoid) data in your multiply-inherited classes. But MI is extremely useful for packaging up chunks of pure functionality in a way that's trivially-easy to add wherever you need it. Occasionally it even makes sense to include some data members, but you really need to know what you're doing and why if you go there.

    2. Re:C++ is hard or easy based on knowlege and skill by lars_stefan_axelsson · · Score: 1

      I especially love it when people cite bad code as proof of poor language design. It is like saying you can prove that English is a horrible language by referencing a Rap song. Any good language can be misused, misunderstood, and abused and said abuse is not proof that the language itself is inferior or flawed.

      You need to read: When Interfaces Kill: What Really Happened to John Denver

      It's not about whether you can do something, it's about whether there is an impedance miss-match between the technology and the operator. It's about how easy it is to shoot yourself in the foot, not whether it is possible. To wit; if there are tons and tons of bad code in a certain language, that tells you something about that language. (Not all, there could for example be bias in the type of programmers that are active/attracted to it). Over the years, it turns out that some elements of language design are in general a bad idea, e.g. humans just aren't good at always getting tedious details right. Take for example, manual memory management. Humans will tend to forget to free memory in all cases (even the corner cases). That's not to say that e.g. free/malloc should be forbidden, there are clearly uses for it, but it's a poor default.

      This is especially true as we haven't even begun to really study these aspects yet. There are still orders of magnitude to reap by choosing the right tools.

      --
      Stefan Axelsson
    3. Re:C++ is hard or easy based on knowlege and skill by Joce640k · · Score: 2, Informative

      OK, you had me until there. If you are using multiple inheritance you have a flaw at the architectural level.

      That's just a knee-jerk reaction.

      You could make a coding rule that forbids multiple inheritance of classes other than base classes, I'll accept that, but multiple inheritance is needed.

      nb. Java tries to enforce that rule by only allowing "one base class plus interfaces". That's OK as far as it goes but it forces you to copy/paste the default implementations of interface classes all over the place which is stupid (and can lead to some major editing sessions if the design ever changes). Much better to let the programmer decide for himself - he's the one with knowledge of the job at hand, not the compiler.

      --
      No sig today...
    4. Re:C++ is hard or easy based on knowlege and skill by Joce640k · · Score: 2, Informative

      e.g. humans just aren't good at always getting tedious details right.

      This is where C++ really towers above C - all those tedious details can be handed to the compiler and the compiler never forgets them.

      --
      No sig today...
    5. Re:C++ is hard or easy based on knowlege and skill by lars_stefan_axelsson · · Score: 1

      Read the cite re Erlang vs. C++ and then come back to me on the question of "handing over tedious details to the compiler". :-)

      --
      Stefan Axelsson
    6. Re:C++ is hard or easy based on knowlege and skill by mcvos · · Score: 1

      Java certainly has a lot of issues with its verbosity. Take a look at Groovy for a better way to do it, however. Mixins are a really easy way to add additional functionality to existing classes without resorting to multiple inheritance.

    7. Re:C++ is hard or easy based on knowlege and skill by Anonymous Coward · · Score: 0

      I don't see what multiple inheritance gets you that interfaces don't, and interfaces look like they do it in a cleaner way.

    8. Re:C++ is hard or easy based on knowlege and skill by Joce640k · · Score: 1

      I'm not saying C++ is perfect or best for all jobs...

      --
      No sig today...
    9. Re:C++ is hard or easy based on knowlege and skill by David+Greene · · Score: 1

      If you are using multiple inheritance you have a flaw at the architectural level.

      This is often repeated but it just isn't true. There are many excellent uses of MI and not just for interface inheritance. Mixins are quite valuable, for example.

      --

    10. Re:C++ is hard or easy based on knowlege and skill by Anonymous Coward · · Score: 0

      Java tries to enforce that rule by only allowing "one base class plus interfaces". That's OK as far as it goes but it forces you to copy/paste the default implementations of interface classes all over the place

      Yes, you can do that, but it by no means forces you to. The other option is to learn to make smaller classes and interfaces rather than one class/interface that does everything. If you need one large public API, it's easy enough to accomplish this by composition and modern IDEs make generating the delegation code trivial.

      When I first learned Java, the limitations felt inconvenient, but the more I've programmed in it and embraced the limitations, the better I feel my designs have become. My code is more modular, easier to test and works easily with DI frameworks.

      The somewhat ironic part of this is that the majority of the time that I feel the pain you're describing is when I'm dealing with implementing standard Java interfaces like those in the Collections Framework, Servlet API and such. It's like no one filled the Java API designers in on the Java design philosophy.

  94. Fix memory leaks in existing programs or libs by e065c8515d206cb0e190 · · Score: 2, Interesting

    Trying to implement new functionalities is not easy if you're not an experience programmer.

    I recommend starting with an existing program or lib and try to fix the memory leaks. By doing that you will look at many lines of code, learn about coding standards, and still be able contribute. You'll also learn how to debug, which is the hard way to learn. And write proper code. Use valgrind.

    Hint: start with libxml2. And good luck.

  95. Re:C++ is convoluted and hard by Anonymous Coward · · Score: 1, Insightful

    Template metaprogramming is functional programming with a nasty syntax. The grad student ought ot forget c++ and start programming with erlang or haskell ... it's probably a better fit for him (given his background) and there's more opportunity to contribute.

  96. Re:C++ is convoluted and hard by stanlyb · · Score: 1

    I am really sorry, but this guy should first read this book: http://norvig.com/21-days.html . With that said, the best way to contribute to open source is first to forget all the fancy, overcomplicated and hyped libraries (like boos), and to actually do his own little library doing exactly what he wanna to contribute. Maybe he should start programming for linux, and as they are saying, to develop a program that is doing one simply thing, but extremely well.

  97. Eigen2 by Anonymous Coward · · Score: 0

    Eigen2 is looking for talent...

  98. Write documentation for BOOST by godrik · · Score: 1

    I started using boost recently to have a look at their graph library. Hell, what kind of mess is that.
    The documentation is less than poor. I mean, they believe it is documented. But it is clearly not understandable.

    There are no links between concepts and types that implement them. Almost no useful code example. Everything is presented as a template spec which is quite useless if you do not know the overall project.

    So if you want to contribute to boost, I suggest you start writing "readable" documentation for it.

  99. You pwned yourself Znerk by Anonymous Coward · · Score: 0

    "you'll never see this post; you're still an Anonymous Coward." - by znerk (1162519) on Tuesday October 12, @09:09AM (#33868424)

    As per usual, you spoke too soon and erroneously: I do see it (despite /. making changes to TRY to stop me, as they have before attempting to ban me to no avail, lol, just because I know how to overcome their "10 posts per 24 hour period for AC posters" restriction).

    So here, you've shot yourself down, yet again once more.

    Just as you shot yourself down with your huge errors one after another, and on every so-called "point" you made -> http://it.slashdot.org/comments.pl?sid=1815608&cid=33865512 (which were all disproven and showing you as an erroneous and loudmouthed noob who calls others names and yet, was shown to have inserted his foot in his mouth on each statement you made there) you name tossing erroneous noob loudmouth.

    Nice part about being an Anonymous Coward is that I enjoy all the benefits you registered users do that matter to me (I have literally unlimited posting, do you?), and yet I am not 1/100th as easily trackable as you "almighty wannabe 'registered lusers'" are because of your posting histories. So, keep chasing your useless "karma points", and keep up the erroneous replies Znerk, you noob.

    1. Re:You pwned yourself Znerk by znerk · · Score: 1

      ... and yet you didn't notice the reply to your lunatic ravings, despite having linked to the post I responded to in this post's parent.

      If you're evading a ban, do you realize that you can be sued for fraudulent use of a service? Real-world application of internet logging features are wonderful. Did you post this stuff from home? Do you realize that IPs are logged here on slashdot?

      ... and still no name to respond to. You're no fun whatsoever.

      --
      This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  100. Re:C++ is convoluted and hard by hcpxvi · · Score: 1

    Did I really type RIAA instead of RAII?
    You did, but it may intentionally have managed to be both funny and insightful.

  101. Re:Witness Znerk's technical incompetence by znerk · · Score: 1

    Wow, my very own anonymous slashdot cyberstalker. I don't know whether to be amused, or terrified. How many of my posts have you responded to in your attempt to discredit me with your poorly-constructed rantings?

    --
    This work is licensed under a Creative Commons Attribution 3.0 Unported License.
  102. Re:C++ is convoluted and hard by raventh1 · · Score: 1

    Passing around objects isn't very efficient. Raw pointers is very helpful for say any console running a risc processor. (load/store) http://en.wikipedia.org/wiki/Reduced_instruction_set_computing

  103. Open Office and Sage by Anonymous Coward · · Score: 0

    Open Office and Sage which would give you something similar to Scientific Notebook would be a very useful project.

  104. Re:C++ is convoluted and hard by Joce640k · · Score: 1

    Passing objects by value would be bad, yes, but passing around a reference to an object is just as efficient as passing a raw pointer (simple logic: references are really just pointers in disguise).

    You can use a raw pointer in the middle of tight loop if you want, I'm fine with that, often do it myself in fact, but keep raw pointers *local*, ie. they die at the end of the function. Don't pass raw pointers around and don't store them long-term.

    PS: I'm the sort of person who regularly looks at the assembly output of my compiler, just to be sure...

    --
    No sig today...
  105. Backwards? by trialcode · · Score: 1

    This is the second example I've run into today of someone running around with a programming language looking for problems to solve.
    How are you supposed to be able to contribute anything of value if you don't even use the tool yourself? You'll end up gold plating your way to being banned from the mailing lists in no time at all.
    Write something you need, something you care about.

  106. PHP needs stats functions by sneakyimp · · Score: 1

    I worked on a project several years ago that had a lot of statistical calculations (standard deviation, correlation, distributions, etc.) and was surprised to find that PHP doesn't offer these functions so I had to write my own PHP code to calculate this stuff. I was thinking that implementing an optimized library of various commonly used stats functions would be something that might fit your skill set well. PHP is written in C (and possibly some C++ but I'm not sure). I am re-learning my long lost C chops at the moment in order to contribute to AMFEXT:
    http://pecl.php.net/package/amfext

    AMFEXT is an extension to PHP and can either be compiled into the PHP executable itself or compiled as a shared object -- a separate file. This extension structure makes it pretty easy to expand PHP because your extension is entirely optional for folks building PHP so it would not be critical to write perfect code right away. In order to get started developing such an extension, there are a variety of tricks to get oriented.

    One is to read the pecl-dev mailing list:
    http://news.php.net/php.pecl.dev

    Another is to read some tutorials. This one is pretty good:
    http://devzone.zend.com/article/1021

    Here's a quick start guide describing how to make your own 'hello world' extension:
    http://blog.slickedit.com/2007/09/creating-a-php-5-extension-with-visual-c-2005/

    You don't need permission to download the source and compile it yourself and start building your own extension. If you want it to be included in the PECL repository, you just have to join the mailing list and submit your extension for the other contributors to see. They'll let you know what further steps to take.

    I could also use some help with my open source project:
    http://flashmog.net/

  107. Zuckerberg: "write something cool" by peter303 · · Score: 1

    Thats the main lesson I took away from one of the better movies I've seen about hacking: The Social Network (ignoring all the soap-opera filler). We hackers learn our craft and the respect from each other by writing something elegant. It doesnt have to be big and full of fancy features. And get it out there to the public as a website or App. Its does nothing sitting on your computer.

    Start with something you know. Since you've been a student most of your life, maybe it could be some sort of educational software, perhaps a a clever way of illustrating something in mathematics.

  108. It's all down to effort... by Joce640k · · Score: 1

    In linus' view, it does not matter if something requires more effort or oversight in regards to code so long as architecturally it is better

    Of course C can be made perfect ... but so can assembly language so why not use that? (Ignoring portability for a moment...)

    I hope you'll agree that writing (eg.) Linux in assembly language would need an order of magnitude more effort than writing it in C. I see the C vs. C++ argument in exactly the same way.

    Linus is *wrong*, there's no downside to using C++ instead of C. If a bad program results from using C++ then it's the fault of the programmer, not the language.

    --
    No sig today...
    1. Re:It's all down to effort... by walshy007 · · Score: 1

      Of course C can be made perfect ... but so can assembly language so why not use that? (Ignoring portability for a moment...)

      The correct answer to that is when you really need it, which you still do in some cases where cpu specific functionality needs to be dealt with. The more abstractions you have, the further you get away from what the hardware actually does.

      C is more or less portable assembly when it comes down to it, everything fits perfectly with the way cpu's are designed, whereas the cpu has no idea what an object is (hey you can just pass methods structure pointers to the data to work on and get the same thing in c without confusing people as to how it actually works).

      If I know exactly how to do what I want with the X11 libraries nice and cleanly, and it's al mad science kind of project that is weird, why should I use a higher level abstraction such as QT where do to what I want I'll have to fight it all the way, wind up with a larger, slower program etc.

      The same can be said of c++ and c, yes the higher level functions are convenient.. if they suit your purpose, but trying to shoe-horn them onto something they were not designed to do works but causes cludges, in which case it can be better to make people think a little about what they are doing and not give them too much abstraction.

      I for one do not like the .net, java filled extremely abstracted world you seem to want to propose, yes they fill their niche with making some things quite easy to program. But once you get to a certain level of abstraction you really have to think, couldn't I do this more efficiently?

      The irony is I am forced to do most of my coding in c# and c++ these days, when I actually prefer the simplicity and elegance of c. (I like assembly too, but it is rather verbose)

      In regards to stubbornness of not accepting c++ in the kernel, at what point do you want to stop (for example exceptions aren't exactly something you can do in kernel space). Next thing you know you'll want java in there. When the overwhelming majority of people who have coded for the kernel agree that c++ is a bad idea, usually it's good to either trust them or fully read up on the myriad of problems it would cause that really just are not worth it.

      Linus is *wrong*, there's no downside to using C++ instead of C. If a bad program results from using C++ then it's the fault of the programmer, not the language.

      Personally I find C a lot easier to read and a lot simpler, granted to achieve the same thing it might be more verbose but generally you always know exactly what it is doing.

      If you really want high level so much why not use JNode or the like? and oh wait, there still had to be a whole heap of low level assembly and c involved to get the kernel running, and it's far slower from the high level overheads.

      I sometimes wonder where we'll be in 20 years when commonly no-one remembers how their compiler translates code into assembly.

      Sometimes quality over speed of development is worth it, especially in instances where millions of people will be running your code as a base piece, those efficiency savings add up

  109. Znerk PWNED 2x in a row today? Again?? by Anonymous Coward · · Score: 0

    Anyone is free to read these 2 urls below and to decide for themselves as to how Znerk's "performance" was (technically he was destroyed, but if he was auditioning for a comedy or clown act?? He'd win, lol! Read on!)

    http://it.slashdot.org/comments.pl?sid=1815608&cid=33865512

    and

    http://it.slashdot.org/comments.pl?sid=1815608&cid=33869788

    "... and yet you didn't notice the reply to your lunatic ravings, despite having linked to the post I responded to in this post's parent." by znerk (1162519) on Tuesday October 12, @10:48AM (#33869826)

    You FINALLY replied but the 2nd url above only shows you being SHOT DOWN easily as you were in the 1st url above... you are truly technically INCOMPETENT (no doubt about it, anyone can read the 2 url's above and see that despite all your name calling and other reprehensible childish behavior, that your big mouth wrote checks your know-how could not cash).

    Znerk was shot down, badly, in the 2 urls above. On every so called ERRONEOUS "point" he tried to make (he did so tossing names rampantly, and only to have himself be shot down by programmatic and networking technology facts as well as testimonials by respected people in this art & science of computing)?

    LMAO!

    You LOSE Znerk, but that's what you get for having a BIG name tossing mouth and no real skills in this field of computing. Next time you try to take on your clear betters in this science, know what you're talking about.

    ---

    "If you're evading a ban, do you realize that you can be sued for fraudulent use of a service? Real-world application of internet logging features are wonderful. Did you post this stuff from home? Do you realize that IPs are logged here on slashdot?" by znerk (1162519) on Tuesday October 12, @10:48AM (#33869826)

    First of all: Nobody is evading a "ban"!

    As they don't typically "BAN" here.

    However - The so-called "security system" here (OR WHATEVER IT IS YOU WANT TO CALL IT THAT IS)? It's easily circumvented, IF you know what you're doing that is (you clearly, don't).

    So you can be an AC and post as much as you like and can you show me a written rule here on this website that's older than this week, lol, that says one cannot do this Znerk?

    (As per usual? Znerk will evade this question too, for lack of any evidence of it is why)

    ---

    "... and still no name to respond to. You're no fun whatsoever." by znerk (1162519) on Tuesday October 12, @10:48AM (#33869826)

    You're a NOBODY done-nothing "ne'er do well", you have NO name whatsoever in this field and it shows (lol, especially in the 2 url's above)...

  110. Re:C++ is convoluted and hard by Anonymous Coward · · Score: 0

    C++ is as safe as you want to make it.

    In other words, it's not safe. A safe language isn't one where you can write safe code, it's one where you can't write unsafe code. As long as you can blow your foot off using legal C++ constructs, C++ isn't a safe language.

  111. Re:C++ is convoluted and hard by Odinlake · · Score: 1

    I'm happy to see any contributions to Octave - the open Matlab-sort-of-immitation. It's great in principle, but still somewhat rough around the edges.

  112. Just start. by Anonymous Coward · · Score: 0

    Do something, when you find a bug or limitation in the available library, fix/add it.
    It could be code, it could be documentation, both are contributions.

    I'm not a strong programmer, but I've filed a few number of small (tiny) fixes with a number of projects.
    Bug fixes are almost always appreciated. Clear bug descriptions (so the "real" developers can solve the problem) are also quite valuable.

    If you make something that solves a real need, maybe someone else will use it. If the core library authors don't want to include your contribution, you can release a supplemental library.

    The real key to success is to do something useful.

  113. Easiest way to contribute is to pick a lib by tp_xyzzy · · Score: 1

    To start contributing, easiest way is to find a lib that looks promising, but which have not been developed for some time. Developers cannot do it too long, and many projects are forgotten. The high profile libs have very strict requirements of who is able to contribute, but taking a not-so-high profile lib and make it world class. It's very large amount of work, but in the end it'll be worth the effort.

  114. Want to be a mathematics and Open Source hero? by lynchaj · · Score: 1

    Write a new PCB autorouter for KiCAD! If that is not appealing you could integrate the Topological autorouter with KiCAD.

    http://anthonix.resnet.scms.waikato.ac.nz/toporouter/

    I really like KiCAD and use it often. However the built in autorouter needs some serious rework and someone with a mathematical background to fix the PCB autorouting. It is a very complicated problem.

    Thanks!

    Andrew Lynch

    PS, yes, I am aware of and use FreeRouting.net. They are great but are a closed source proprietary tool.

  115. Octave Forge by pavon · · Score: 1

    I would like to reiterate the octave suggestion. They made a ton of progress in the 3.x branch, and now the language and core libraries are all pretty much compatible with Matlab. However, there are still a bunch of functions in the various toolboxes that are not implemented, or partially implemented, or not compatible the Matlab version. I run into these on a weekly basis, and while I have spent some time fixing things, I just don't have to fix everything I find, and often fall back to using Matlab on my university account.

    Most of this will be implemented in the matlab language itself, and not C++, but other than that it is right down your alley. All applied math. The functions needing implementation are small enough for a beginner to handle and the requirements are documented fairly well by looking at online matlab help files. Since you are a student you probably have access to matlab through your university so you can test if you implementation is compatible, and check corner cases not described in the help files.

    This would be a very valuable contribution from someone in your position.

  116. Re:C++ is convoluted and hard by Joce640k · · Score: 1

    The pedants are revolting!

    --
    No sig today...
  117. Documentation by autophile · · Score: 1

    I've found that the best way to help an open source project is with documentation. Not necessarily user manuals, but just code commenting. There's plenty of code that has zero explanation about what a particular function does, or how it works. If you've found a project that fits this, then start working on documentation so that (a) you will understand what the code does, (b) everyone else following you will understand what the code does, and (c) the developers themselves will understand what the code does, because sometimes you find bugs just by trying to figure out what the code does. That being said, (warning: personal opinion ahead) I second the opinion that you should stay away from template classes. There are plenty of worthy numerical projects out there that do not rely on a maze of twisty little code fragments, all alike.

    --
    Towards the Singularity.
  118. Znerk's technically incompetent, and tosses names by Anonymous Coward · · Score: 0

    http://it.slashdot.org/comments.pl?sid=1815608&cid=33865512

    and

    http://it.slashdot.org/comments.pl?sid=1815608&cid=33869788

    You're correct that Znerk has no clue and not just in programming: Znerk called others names on every so called erroneous "point" Znerk tried to make in the 2 urls above, and in the end, Znerk was cleanly shot down by programmatic and networking technology facts as well as testimonials by respected people in this art & science of computing!

    However, Znerk's attitude and name calling is what really makes him look poorly, and he is quoted in it as he is shot down on every so called "point" he tried to make in the 2 urls above today.

    Grow up Znerk, and realize something: Around here, you are SQUAT in your so called "know how" (very poor based on the above 2 urls here posted), and you ought to be a little more humble and realize you are NOT as good as you *THINK* you are in this field (despite your mommy saying you are, lol, but nobody else is).

  119. Bug Fixing by H0p313ss · · Score: 1

    Assuming that you've already chosen the right project and language, then the one thing you can do that will both give you experience and earn you street-cred is to go through the bug lists and find things to fix.

    --
    XML is a known as a key material required to create SMD: Software of Mass Destruction
  120. Re:C++ is convoluted and hard by raventh1 · · Score: 1

    Without being able to blow your foot off at times, you'll never learn not to point your gun at your foot. You'll also never write extremely fast code.

  121. Ease of use by Anonymous Coward · · Score: 0

    As a mathematician, you have a leg up on many of us non-maths folks in your domain. As an engineer I often reach for tools that make use of math libraries such as Matlab, Scilab and python with scientific add-ons. However, when it comes time to integrate solutions into C++ code, things get hairy. The boost libs are not yet complete and while I admire use of the template library, I find it is often difficult to work with. Perhaps that's my own shortcoming. In the past, I have often resorted to linking against LAPACK within AMD's core math library (since it's free on Windows & Linux), which stretches my ability to sanely configure projects and to use the linear algebra and other special-purpose functions appropriately. It would be great to see more examples of how to use this stuff effectively and how to go from high-level tools like python to lower-level stuff safely. As a math person, maybe you have more insight into that than the average engineering/software guy.

  122. Re:boost != template programming by rockmuelle · · Score: 1

    Boost is really much more than template programming. To get the most out of it, it helps to understand the more general concepts of meta-programming and generic programming. C++'s template system just happens to be how you use those paradigms in C++.

    Here's a good overview of generic programming:
        http://www.boost.org/community/generic_programming.html

    Dave Abrahams' book is a good intro to template meta-programming:
        http://www.amazon.com/Template-Metaprogramming-Concepts-Techniques-Beyond/dp/0321227255

    I've also found Python to be a great language for learning both concepts. While you won't get all the performance benefits of C++, Python's rapid development cycles make it easy to play around with the both techniques.

    -Chris

  123. Forget it. by Anonymous Coward · · Score: 0

    Forget it. Just write your own library -- seriously.

  124. Reprap Project by Anonymous Coward · · Score: 0

    I'm designing an FPGA based motion controller for a reprap (www.reprap.org). Repraps are open source 3D printers designed to make copies of ourselves. It is the invention most likely to free the human race from being slaves to the man.... It's also the invention most likely to bring about the robot apocalypse...

    Anyway, I could use some help on the math. If you could pitch in on the project I would be very greatful. It's all open source. Complex vector math like the intergals of bezier curves (just doing numeric integration right now), curvature and such.

    Brian dot korsedal at gmail dot com

    -Brian

  125. You can try Madagascar by ioan.vlad · · Score: 1

    Madagascar is an open-source software package for multidimensional data analysis and reproducible computational experiments, used by geophysicists but also by others. We warmly welcome new contributors in the project. As a plus, most participants work either in the oil industry, or in environmental science (both interested in imaging the underground), and you may be able to get yourself known by several professionals and get into one of these fields if you are interested.

  126. Re:boost != template programming by StripedCow · · Score: 2, Insightful

    Good points. But we're talking about the actual programming, and then it really boils down to doing a lot of template stuff.

    The ideas behind Boost are great, but I really hope that somebody, somewhere, will sooner than later invent a new generic-programming language that will allow an implementation of the Boost ideas without the major ugliness of abusing C++ templates to the max.

    --
    If Pandora's box is destined to be opened, *I* want to be the one to open it.
  127. Re:C++ is convoluted and hard by David+Greene · · Score: 1

    What wrong stuff? Please be specific.

    --

  128. Re:C++ is convoluted and hard by David+Greene · · Score: 1

    In what way is it wrong? That's a pretty bold statement to make.

    --

  129. 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.

  130. Be Careful (Re)Writing Math Libraries by zbobet2012 · · Score: 1

    Stuff like BLAST is enormously complicated even for a Graduate level mathematician. If you actually want to contribute to these you should have taken several very in depth courses in numerical analysis.

  131. Path for OSS by Anonymous Coward · · Score: 0

    See some references on languages and automata, and then learns
    metalanguages used in projects, develops and uses tools
    that automate the process of acquiring information about the project.
     

  132. Anonymous Coward by Anonymous Coward · · Score: 0

    You really have no clue how _anything_ works in the Open Source world, do you? Just contribute, don't be a pain in the butt about it. I can't believe this is on slashdot's mainpage.

  133. Re:boost != template programming by rockmuelle · · Score: 1

    Agreed. They got soooo close with when concepts almost made it into C++ 0x: http://www.devx.com/cplus/Article/42365

    -Chris

  134. Just follow these few steps by monoqlith · · Score: 1

    1) Locate their trac where all the open issue tickets are listed.
    2) Find an issue that looks like it might be (relatively) easy to solve.
    3) Fix it.
    4) Create a patch containing your fixes.
    5) Submit it to the trac or to the devel list. If it does it what it says it does without introducing any more issues then it will most likely be accepted by the committers and brought into the project.
    6) Repeat.

    7) ....

    8) Don't expect any profit.

    Fixing issues like this will accomplish so many things for you. It will force you to become familiar with the source tree, which is about 99% of the work of becoming involved, in my experience, esp. with a large source tree of a large project. It will force you to figure out how to solve problems without much help. It will make you better at solving and thinking about problems. It will improve your knowledge of your language.

  135. Not that closed, but also not the local pub by Anonymous Coward · · Score: 3, Insightful

    What seems pretty obvious is that the guy's question is about how to get involved in an OSS initiative, not how to find one. Cultural barriers aside, the perception from the outside is that many existing communities are closed, elitist kingdoms that are unwelcoming and intimidating to newbies. So, while providing a helpful search query may be clever, it does not address the essence of the question and serves to perpetuate the stereotype.

    Most communities seem closed because the internet is vast and there are a lot of idiots and trouble makers out there who at best waste time and at worst wreak havoc with a project. Since FOSS projects don't have employment processes and hiring forms, they need mechanisms to make sure they are working with the right people for the job.

    Here are some hints to help you get through the initial barrier of egotism end rudeness that many projects use to protect themselves:

    1. Join the mailing lists.

    2. You may if you like, send an introduction to the mailing lists, but do not say anything else until you get an idea of the culture of the community, what netiquette guidelines do they follow, who is who, and the general tone that people use to address each other. Aslo try to figure out if there is certain sorts of questions the project doesn't like to answer. It's possible they deliberately obscure certain configurations, etc. in order to guarantee consulting income. If you think this wrong, and you want to be some kind of maverick coder vigilante, call them out and publish the tricks widely. If on the other hand you want to be a dev on the project, accept that this is the real world, and these devs are doing enormous good giving this volume of code away, free to use for anybody smart enough and interested enough to figure it out and at small once of consulting fees to those who aren't so inclined. Be kind to them, don't answer questions that seem to fit into this category, don't publish the fixes anywhere, think of it as a gift and keep it in your pocket for your own consulting career.

    3. How long you lurk varies greatly from project to project, but it will always be longer for dev lists than for user lists. Once you have figured out the community a bit, start showing your worth by being helpful on those questions that come in to the user list that you can answer. A community is not going to accept code contributions from someone who can't figure out the part of their project that they expect users to be able to understand. So show you understand what they are doing.. At this point, it's probably best to be friendly and helpful, but if it is one of those lists where a lot of the popular (not to be confused with profusive) posters are boastful and have a bit of a bite, it's probably safe to start showing a bit of a swagger already.

    You can also use this time to start climbing into the code, get to understand the architecture of the project, the existing coding culture (is code readably formatted, is code commented well, are they cowboys or nazis? When reading about fixes or changes in the dev list, look at the code, try to understand what they are talking about, how it all hangs together.

    4. Once you have demonstrated that you understand their project well, are helpful and involved. You have mirrored their preferred modes of behaviour! You already seem like one of them just waiting to be adopted! You start contributing to the dev lists when you've understood the code sufficiently to make a contribution. It doesn't have to be a particularly brilliant contribution. It could be something a 5 year old could have spotted, and you just happen to be the first one to see the incoming mail. Don't write out the full function in perfect code with every excpetion caught, all nicely commented and logging in all the right places. Don't try get commit writes to the project, just formulate a solution, implement rought it in your local copy to make sure it works and describe it on the mailing list. If you've solved the problem correc

    1. Re:Not that closed, but also not the local pub by phek · · Score: 1

      i actually disagree with most of what you said. sure if you want to be involved as one of the core developers for the project you may want to do that. Hosting your own patches though, that one is some good advice.

      What I've done for projects I've contributed to is:

      1. Find the page or file where they talk about how to make contributions. If you can't find it, mail your changes to the project maintainer and he will either submit them for you or give you access to submit it yourself. If neither of those are an option, just submit them to the development mailing list.

      2. Search through the mailing lists for people talking about the changes you want to make or just to get an idea of what people are looking for. Also check out the TODO file in the repository as many times things that are needed are added there.

      3. Check the development mailing lists to make sure no one is already working on the changes you want to make. If you can't tell, send them an email and tell them you're planning on making those changes and want to make sure no one else is working on it already.

      4. Make the changes

      5. Submit the changes with whichever method you figured out in step 1.

      Developers are very temperamental and that's especially noticeable in the open sourced world where there's no management to put together the coding rules (such as coding style). So unless you want to get involved with a group of developers who are constantly bickering because one likes 3 space indention while another likes 4 and are trying to convince someone else that indention is important because they didn't indent at all... just submit find a project, submit your changes and move on to the next project. That or start your own project so you can be the bickering maintainer.

  136. Applied mathematics by morrison · · Score: 1

    You're an applied mathematics student, so look for applied math projects. That way, you're newbie skills will be best put to use leveraging what you already know. There'll still be plenty you'll have to learn along the way, so put what you know to good use. Instead of projects like boost, sage, or octave, look for projects that have heavy applied math requirements like BRL-CAD, Blender, CGAL, and many many others.

    Pick a community that interests you. Download the source code, compile and run the software, find their bug list, start fixing bugs. Introduce yourself when you have something useful to contribute (not just vaporware) or if you get stuck and need help.

    Plenty of math-specific projects at http://www.dmoz.org/Science/Math/Software/ too.

    --
    Cheers!
    Sean
  137. Mod Parent Up by Another,+completely · · Score: 1

    This actually answers the original question! (How did that happen?)

  138. Pet peeve. Learn to ask the right people. by SecurityGuy · · Score: 1

    The OP has something specific he'd like to do involving a particular piece of software. Naturally, the right thing to do is ask an entirely DIFFERENT group how to go about doing it.

    You'll get a lot farther, and waste a lot fewer people's time, if you just ask the people you want to work with how to go about doing it.

    This is rather like the old joke about the guy looking for his lost ring under the streetlamp even though he dropped it across the street because it's easier to look there. This isn't the right place to ask. This is the easy place to ask. Just like looking under the streetlamp, the results you got are probably not what you hoped.

  139. Grunt work by roystgnr · · Score: 1

    A bit of mathematics is a good start. There are certainly lots of mathematically-oriented free software projects out there that could use an extra hand.

    A bit of programming is a problem. If you're new to templates and inheritance then by trying to do any design work you risk doing as much harm as good. Trying to contribute to Boost without being a C++ expert may not be a good idea.

    But a bit of eagerness to contribute is a very good thing. The trouble with open source in general is that people focus on the fun work first and the necessary support work second and then leave the grunt work for third or for never. You should have no trouble finding projects that don't have a big enough test suite (or finding projects that don't have any test suite, for that matter), and unit tests and regression tests are something you can create that will teach you libraries that you can use in your own research apps, expose you to others' good code, give you a chance to practice writing your own good code, but still not leave you responsible for creating tricky designs or performance-critical implementations yourself yet.

    If you want to contribute to a mathematical open source C++ project which has helpful people on the mailing lists and on Slashdot, my biased suggestion is libMesh. There are lots of other good suggestions here, though; my unbiased advice would be to think ahead to your possible dissertation research topics and pick something that is likely to be useful for them. Doing intellectually stimulating things for fun is great (otherwise you wouldn't want to be a grad student), but it's also good to keep an eye out for when "fun" and "personally useful" can overlap.

  140. Hi, this is your thesis advisor.. by Anonymous Coward · · Score: 0

    just saw your post. Could you please go back to doing my C++ programming for me, and stop searching for displacement activities? I'm going to carry on reading Slashdot now and I don't expect to see you on it anymore for the rest of today. Come by my office later and let me know how far you've got since the last time we chatted.

  141. Re:C++ is convoluted and hard by Anonymous Coward · · Score: 0

    Programming languages are never safe or unsafe.
    It's the code which is.

  142. Re:C++ is convoluted and hard by TheRaven64 · · Score: 1

    It's a topic that comes up very often, and I've written an article answering it already. The short version, for people who don't want to click on the link:

    The more programming languages that you learn from different paradigms, the better a programmer you will be in any language. The ones that I'd recommend:

    • C, or an assembly language. C is close to what's really happening, so thinking about how you'd translate what you're writing into C helps you understand how it will perform on real hardware.
    • Smalltalk (maybe Self as well). Few people really understand OOP without learning Smalltalk, and almost no one writes good JavaScript without learning Self.
    • Erlang, teaches you how to right concurrent code that doesn't break.
    • Lisp teaches about metaprogramming.
    • Haskell teaches about pure functional programming, and in particular the use of higher-order functions.
    • Prolog teaches about structuring information logically.

    Even if you never actually write code in any of these languages, learning them will help you think about the languages that you do use more clearly.

    --
    I am TheRaven on Soylent News
  143. Re:C++ is convoluted and hard by Anonymous Coward · · Score: 0

    QuantLib is another opportunity- C++ open source library for quantitative finance. Fun and possibly rewarding!

  144. Scilab by slashbart · · Score: 1

    Maybe you can add something meaningful to the scilab project? http://www.scilab.org/

  145. Computational Geometry libraries... by sp1nm0nkey · · Score: 1

    If you're going for Boost, you're diving into a sea of angry template-metaprogramming. What's seriously needed in the world of mathy software is more really good computational geometry packages. What doesn't exist right now (to my knowledge) is an open source implementation of M. Held's algorithm for generating generalized voronoi diagrams from poly-line curves (arcs and lines). Open source manufacturing is picking up and the algorithms to actually take the level sets, generate toolpaths, and all this are just starting to bubble up. This would be an excellent domain for an applied mathematician to dive into. Just make sure to try and get someone to watch over your shoulder to make sure the API is nice.

  146. The Python open source scientific stack by fperez · · Score: 1

    Python is pretty much established as the leading open-source foundation for high-level scientific computing, competing head-on with tools like Matlab and IDL, either via the pure 'python stack' (Numpy, Scipy, Matplotlib, ipython - http://www.scipy.org/ and tools around them) or a project like Sage (http://sagemath.org).

    I suggest you find a *topic* that interests you, that you're likely to work on for fun. If it's something that can benefit your research, even better. Then try to improve the specific package that covers that problem. Python is a much easier language to get into than C++, yet there are ways (with Cython and C/C++/Fortran) of getting performance when needed.

    The range of topics where significant contributions can be made ranges from the very low-level, hard-core optimization work to high level user interface and visualization libraries. Special functions, ODE integrators, statistics, code generators, visualization, you name it, there's work to be done and welcoming communities in Python. If you'd like more specific pointers, drop an email to the Numpy discussion list as a starting point, indicating with a bit more precision what topics you find interesting intellectually. You'll find a welcoming reception and guidance on where to go from there, until you can find a project to focus your energy on.

  147. Re:C++ is convoluted and hard by Anonymous Coward · · Score: 0

    "Safe" is not the same as "idiot-proof".

  148. just get ur hands dirty by Anonymous Coward · · Score: 0

    simple open src principle.....

    but only mess with ur local branches

  149. News for what? by DotDotSlasher · · Score: 1

    News for nerds. Resumes that matter.

  150. Here's some books if you want to better your C++ by phorgan1 · · Score: 1

    You could get the STL Tutorial and Reference Guide which will get you started with templates Meyer's Exceptional STL and Exceptional C++ will help. Herb Sutter's Exceptional C++ Style will get you going. Then you'll be ready for C++ Template Metaprogramming by Abrahams and Gurtovnoy. As a mathematician you'd probably enjoy Elements of Programming by Stepanov and McJones which teaches you a LOT about template programming.

  151. Re:C++ is convoluted and hard by Anonymous Coward · · Score: 0

    The issue is twofold.

    1. You aren't decent at C++ if you don't get OOP.
    2. You won't get OOP if you've only done C++.

    Using only "some" OOP concepts in C++ is natural, since it doesn't force feed them down your throat. Thus you have to resort to kludges like templates for as simple things as basic containers.

  152. Ya know...for a grad student by DrStoooopid · · Score: 1

    ...you sure are stupid.

    No, I'm not flamebaiting or trolling...but seriously. Use your head, Pal.

    1. Google is your friend
    2. See #1

    But for the sake of argument...let's call you Dave....So Dave, I have a really hard time believing you're a student at all, because a student that has made it all the way to gradschool as a programmer, would already have the deductive reasoning skills necessary to answer that question for himself.So Dave, I have to question how old you really are. Let's see some ID, Dave. The other possibility is that you matriculated to a really substandard school that wasn't able to properly light that spark in your that would allow you to have the grasp of concept in order to ask and answer these questions on your own.The third alternative is that you're really a Vo-Tech student who's about to "grad-jee-ate"...you've not done too many Google searches in order to find the answers to things, and I'll wager you've never kissed a girl, let alone know what one smells like. Would I be right, Dave?

    So Dave, after careful consideration, I've broken your original question down, and made a few inferences about you and your current level of skills.

    1. I'll wager that you really couldn't program your way out of a paper bag, let alone educated as a programmer.
    2. I can tell by your question that you're not a grad student, but in fact probably still in High School and are asking the community from the perspective of a grad student, in which I have to commend you on your ambition, but Dave....seriously...don't lie to us, we'll see right thru you.
    3. I think you might have enough grasp of what programming is, to think that you can participate in an open source project to learn enough to give you a leg up in your future studies so that you'll appear competent to your instructors, possibly even allowing you to participate in special projects, or even scholarships.

    Seriously, Dave...if you are in fact a grad student, you were severely shorted by your educational institution, I'd ask for my money back.

    --
    There are 2 groups of people you can make fun of on the Internet without fear of attack. The illiterate, and the Amish.
  153. Cut the "pity me" act: Do the work yourself! by Anonymous Coward · · Score: 0

    See subject-line and realize that nobody pities you here: Is it anyone here's fault you f'd up highschool (sounds it from your description)? No. You did that to yourself. Is it anyone here's fault on anything else that has happened to you that didn't end up daisies and balloons?? No. In case you didn't realize it man, this is life and this is how it is sometimes. Shit happens, and whether you are at fault or not, you have to clean it up. It happens to the rest of us also. Get over it and realize we are not going to do your work for you, and that is that. You're going to learn that writing code is work, like anything else decent usually is. Nobody has "superior skills" in anything much of the time. It's usually how hard and long they are willing to sweat over whatever it is that's being made. I've watched you call others names here constantly in many of the exchanges you've been in the past day or two, and you expect others to help you? You came in here, self-taught (which is fine and in some ways, if done long enough (like 20 yrs.), it's better than schooling, in SOME ways (except you have to run into and figure out what schooling would have shown you answers to on MANY "jams" out there)). I know, been there for 16++ yrs. as a coder and network administrator combined in the sciences of computing. However, you came into a post with myself, calling me names (and I never did so to you once before you did to I), and then you absolutely f'd up every so-called "point" you made on HOSTS files vs. AdBlock here -> http://slashdot.org/comments.pl?sid=1815608&cid=33865512 and again here after that -> http://slashdot.org/comments.pl?sid=1815608&cid=33869788 and still you had the nerve to call me names and you also were caught lying about calling me names (but your own words quoted where you called me an idiot, totally unprovoked, & in your first post there no less) did you in. You expect help from others here, and you treat them with disrespect as you do?? Grow up and realize that perhaps the problems you're having in this life you expect us to "pity you" about are of your own making... doubtless they are, with your attitude towards others. You attack and act as if "you know something and only YOU are right" (you, the highschool drop out or near to it from the sounds of your 'speech' I replied to now)... well, hate to break this to you, but based on the 2 urls I put up above where I was forced to publicly ANNIHILATE you (anyone is free to read them and make their own decision on that, and I know they won't go YOUR way, lol)? You brought it on yourself, by first calling me an idiot (where you were NOT provoked by myself to do that), and I cut you to shreds. Did you honestly think a highschool dropout "self-taught" wannabe superman in computing like yourself was going to "walk in here and sweep the floor" with the likes of people like myself or others here (many of whom are like myself: Multiply degreed and many times published in the sciences of computing for decent works &/or wares etc./et al)?? Guess again. Bottom-line though - in summation, you had better learn to treat others with respect and to not think of yourself as "great" because based on your showing here this week and your lack of skills shown in them (such as the 2 urls above)? Buddy, you ain't much!

  154. Re:C++ is convoluted and hard by dolmen.fr · · Score: 1

    • Erlang, teaches you how to right concurrent code that doesn't break.
    • English, teaches you how to write "write" right.
  155. Be sweet, young man. by perchslayer · · Score: 1

    Wow. Pretty good response, eh? Here is my suggestion: 1) Consider focusing on C and Python as well as or instead of C++ 2) Go crazy at Sugarlabs as they are always looking for help. Let me offer the disclaimer that I know nothing about programming or computers or git or subversion. However, I am kind of kinky and like to watch people. As such, I have noticed that a number of people that seem inappropriately comfortable with mathematics also seem to tend or bend toward C and Python. As for Sugarlabs, it would seem that they are already comfortable with the idea that everything is everything and that would include math, so you might feel at home....or not. Whatever. Anyway, I couldn't help myself.

  156. In a similar boat... by jacobmarble · · Score: 1

    To the OP: please contact me, I am in a similar situation, have some ideas, would like to chat.

    jacobmarbleatgmaildotcom

  157. Try sage by razorhead · · Score: 1

    Try working with Sage http://www.sagemath.org/ Useful math tools that cover your interest area.

  158. Re:C++ is convoluted and hard by Anonymous Coward · · Score: 0

    Your response has no bearing on the ridiculous claim that C++ is a safe language.

  159. Really by Anonymous Coward · · Score: 0

    Look, grab any open source content and poke around to learn how to program from the code as examples, but its laughable that if you have to ask how to contribute then perhaps you should not contribute to it, especially if you don't understand actual C++ concepts like OOP and templating.