Slashdot Mirror


Ask Slashdot: How Can My Code Help?

An anonymous reader writes: The story will probably be familiar. My non-profit organization had a particular need (we want to communicate with government officials by offering anecdotes and stories of how we help their constituents), and while I created a solution, the time constraints and lack of experience, training and natural ability show. I'd like to do more with the code, both in terms of letting others have it for their needs and also because I'm sure talented coders could more quickly and efficiently solve some of the existing problems with my code. But how do I make that happen? What do I do with it?

I have every intention of continuing to work on it. I enjoyed the learning opportunity, and I've already identified a number of things I want to improve upon, but I recognize that even as crude as my code is, if it solved my issue it might help others too.

Do I just put it on Github or SourceForge and hope that someone else will have that magic formula of my use case and skill level (because someone more talented would probably make their own code easily enough, while someone less talented may not realize how doable the solution can be)? Do I try to find an existing project and see if I can shoe-horn my efforts in somewhere? Do I keep it to myself until some unspecified point in time that I realize it's right for sharing?
Read on for further background information on this question. Here's the backstory: Our existing data didn't always make identifying relevant politicians easy so, for example, I could quickly make a list of who's in what city but we have multiple congressional districts in single zip codes which is a problem that needed more than a simple Excel Vlookup.

I did a fair amount of research into this use case, and saw outdated solutions (projects that fell out of date due to API changes) or more recent posts and projects that made my issue seem so entry level. As if passing data to one API, then parsing the results and sending to another API and then storing the results was Hour 4 in the "Teach Yourself to Code in a Single Day" books. And it very likely is entry level, but coding doesn't come easy to me and my background is limited. I should note that days after completing my mission, I discovered a Drupal module that may have been able to accomplish some of what I needed... if installing Drupal and passing my information into a Drupal install before pulling it back out was going to be any less time consuming.

My solution was inelegant, and though written in Python it is far from Pythonic. It requires a lot of post-processing. It breaks a number of times and in a number of ways, each of which makes me think "oh, I should fix that time-out issue" or "I should figure out how to get it to double check for 5 digit zip codes" or "I should make some kind of error handling to let the script continue instead of stopping".

47 comments

  1. Share the source, and make it easy to install by paulproteus · · Score: 2

    Hi anonymous person,

    Getting more eyeballs on your code is a marketing problem. So:

    * Give us here a link to your code, and

    * Make it easy to run your code.

    * Then, you can try to reach people who care about that problem domain and tell them to use your code.

    To make it easy to run the app, I suggest you create a package for Sandstorm, which is an open source project that makes web apps easy & secure to run. I work on the project, so feel free to decide I'm biased! But do take a look at https://apps.sandstorm.io/ and see how easy it is.

    You can reach me (for packaging help) at community@sandstorm.io and find our packaging tutorial here: https://docs.sandstorm.io/en/l...

    Best of luck!

    --
    |/usr/games/fortune
    1. Re:Share the source, and make it easy to install by tarlek1234 · · Score: 1

      I agree with the marketing problem - it's very hard to draw attention to a project or get help. This Slashdot page gives you a unique opportunity to find people who might be interested in this, so make the most of it while you can.

    2. Re:Share the source, and make it easy to install by njnnja · · Score: 2

      No, please *don't* just go posting another project. As you have even discovered yourself, this is probably a solved problem for someone who knows the tools better. Most coding problems don't stem from the fact that there isn't enough code out there; the problem is that there are a lot of libraries and systems (free, gratis, and paid) that do 80% of what needs to be done, and the first job of the developer is to evaluate which of those tools is the right one to start with. Throwing out yet another message passing system into that thoughtstream (one that you admit probably isn't very good) is just going to cause more work than it saves, by making people figure out why they want to filter your codebase out.

      If it works for your use cases, then you should keep it in production, while you try to learn more and improve on it (either incrementally or with a whole system re-write). But just putting a code base out there for other people to stumble over seems to be as poor etiquette as throwing a month old newspaper into the middle of the street, just in case somebody might be able to use it.

    3. Re:Share the source, and make it easy to install by Anonymous Coward · · Score: 0

      Apping apps in app approved appstorm? app appers love apping apps! Apps!

    4. Re:Share the source, and make it easy to install by jlar · · Score: 1

      Some objects in an open source project of mine has an attribute named "primadonna" to signal that the object wants the stage for itself and other "primadonna" objects are removed from the stage when it is added to the stage. I actually thought that the attribute name was quite good since it is quite clear for other developers what it means without any further explanations. And code is easier to read when it contains "living language". But I guess my code will not go through a political correctness test without serious remarks.

    5. Re:Share the source, and make it easy to install by Killall+-9+Bash · · Score: 0

      Fantastic! Lets develop a plan to outsource some development to developers who develop on the platform we want to leverage. In real-time.

      --
      "Prediction: within 10 years, Windows will be a Linux distribution." Me, 7-6-2016
  2. put it out there by jacksonai · · Score: 1

    Definitely, go ahead and put your project out there. Take a step back from the nuts and bolts. Describe on a web page what the project does, along with areas you know need improvement. Heck, go ahead and set up a bug tracker and put your known problems in. Make it easy for people to understand the value of your project, and what needs done.

    --
    Like Sweepstakes? Try out my service @ http://www.yourpowersweeps.com -- Free 21 day trial, no cc needed.
    1. Re:put it out there by Anonymous Coward · · Score: 0

      Definitely, go ahead and put your project out there.

      Take a step back from the nuts and bolts. Describe on a web page what the project does, along with areas you know need improvement.
      Heck, go ahead and set up a bug tracker and put your known problems in. Make it easy for people to understand the value of your project, and what needs done.

      If myou post your project on GitHub, for a bug tracker I highly recommend GitHub Issues already there, and allows for easy reporting by other users.

  3. Those are your options by Anonymous Coward · · Score: 0

    The only remaining one would be paying somebody to improve your code. Now pick one.

  4. Most code is useless. by Anonymous Coward · · Score: 1

    You need to learn the first rule of software development that has nothing to do with the code, and everything to do with you. Don't fall in love with your own code.

    It sounds like you created something useful for your organization. Great! It also sounds like you realized your own limitations. Excellent!

    Now just realize that in all likelihood, nobody cares about your code. You've said yourself it's not really good code. If you don't even think it's very good, and represents a first stab by someone who's not a great developer, why would anyone else want it?

    What you're experiencing is a documented irrational behavior. (Everyone is irrational, this isn't a stab at you). You're over-valuing something you did, and this is very common. Now realize this, let it go, and go on with your day.

  5. scope? by Noah+Haders · · Score: 1

    this isn't something you could do in excel? how many stories or events are you sharing per month (eg 100, 10,000)? Are these events local, regional, state-wide, or national?

  6. Famous Gloria Steinem Quote by Anonymous Coward · · Score: 0

    "COBOL programmers understand why women hate periods." -- Gloria Steinem

    1. Re:Famous Gloria Steinem Quote by mwvdlee · · Score: 1

      Because you keep forgetting them?

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
  7. First of all, post a whiny, inept description to.. by xxxJonBoyxxx · · Score: 1

    First of all, post a whiny, inept description to SlashDot. Make it sound like it was written by someone who just got an offshore contract, only don't finish it with "Help quickly!"

  8. Do you own the code? by Anonymous Coward · · Score: 0

    Just asking. A non-profit can still own copyright on works for hire.

  9. hire a professional by NostalgiaForInfinity · · Score: 1

    Presumably, you pay accountants, tax advisers, communications firms, printing companies, and secretaries to do a professional job. Why not hire a professional to do your programming for you as well? There is nothing that says that open source software needs to be written by amateurs or unpaid volunteers. In fact, a lot of open source software is created that way: by non-profits or for-profits hiring professional programmers to create it and then share it.

  10. Sales talk by Anonymous Coward · · Score: 0

    AC your description tells me nothing about what you are doing.

    Does your system send emails to our Congresmen?
    Call them?

    HOW des it do what you say it does.

    Because frankly, it sounds like just another pie-in-the-sky "tech" solution for something I can do better with a snail mail letter.

    I'm being honest - keep that in mind when I'm modded "Troll".

  11. Step One by Anonymous Coward · · Score: 1

    Starting a git repo doesn't eliminate any other options.

    Submit issues for all those features you're thinking about.

    If somebody comes along and hands you a pull request with the whole thing re-written in Ruby or Java or Erlang, you make the call.
    If you find somebody else's preject and start contributing there in the meantime, you can put a link to the new project in your Readme.

    If nobody ever shows any interest, and you just keep plugging along, so be it.

    You have nothing to lose, and possibly something to gain.

    1. Re:Step One by monkeyhybrid · · Score: 1

      Pretty much what I was going to say. Without any more details of the project, it is hard to give suggestions on how to move forward with it, or collaborate on it, but putting it on Github is a great start and as parent poster said, you have nothing to lose.

  12. Don't let Linus see it, or he'll call you a cunt by Hognoxious · · Score: 1

    What's to lose? Worst case, it acts as a bad example.

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  13. Re:Don't let Linus see it, or he'll call you a cun by Snotnose · · Score: 1

    It's not written in C, Linus won't even look at it.

  14. well, sort of in reverse order.. by samantha · · Score: 1

    If you had put it out in open source on github and then posted this you would instantly get the attention of at least a few people. :) Put in general if you open source something you thing may be generally useful or in an important area and use some social media to get the word out about why you think it is important or asking for assistance then that is likely to be more effective than just putting it on github and hoping someone notices. When you do put it on github please in the readme say why you think it is important, what you think could be better and asking for feedback. For specific areas you think can/should be better you can post code snippets or plunkr etc to stackoverflow.

  15. document it, share on forums with interested peopl by raymorris · · Score: 2

    People won't contribute unless they're using it, and they are also encouraged to contribute. So to move forward you'd want people to start using it. They'd need to be able to get it (github), they'd need to know how to use it (thorough documentation), and they'd need to kniw about it and how it can help them. In order for people to know about it, it might be helpful to post on forums which include people who would find it useful. You could also individually contact some of your counterparts in other organizations if you think it would be useful to them.

  16. Post it on Github by Anonymous Coward · · Score: 0

    My advice would be to post it to Github (or similar site) now and not expect anyone else to show up.

    You never know when some one may have a need for a similar piece of software; if they can't find it, then they'll either give up or start a duplicate. Thus I wouldn't wait for it to be polished before posting it.

    At the same time, realize that if its not a major need, it may be awhile (if ever) some one shows up and helps contribute.

    With that said, please follow the best practices others have suggested.

    Make it easy to quickly setup and run (at least in a dev environment).
    Document your expectations for contributions.
    Make the license clear (and preferably one of the standard ones).
    etc

    Good luck and thanks (in advance) for sharing!

  17. Re:Don't let Linus see it, or he'll call you a cun by Anonymous Coward · · Score: 0

    Ah; so he's a one-trick pony.

  18. Code Review StackExchange by Anonymous Coward · · Score: 0

    Try posting to the Code Review StackExchange forum.

  19. Please help me with my book by Anonymous Coward · · Score: 0

    I just started writing a great novel. Well, it isn't really great. In fact it is kind of sloppy. But I think it could turn out really great if I can convince some great writers to pick up the pieces of my sloppy outline and turn it into a best selling novel. Where do I post it to make that happen???? Same can be said for that masterpiece artwork that I started but still looks like a second grader drew it.

    1. Re:Please help me with my book by lucm · · Score: 1

      I just started writing a great novel. Well, it isn't really great. In fact it is kind of sloppy. But I think it could turn out really great if I can convince some great writers to pick up the pieces of my sloppy outline and turn it into a best selling novel. Where do I post it to make that happen????

      Try the Twilight forums. It worked for that Fifty shades of grey woman.

      --
      lucm, indeed.
  20. Hm ... by angel'o'sphere · · Score: 1

    As always I have the strange feeling this is again just an attention whore.

    1) So what to do? As written below by another poster, before askin thhis you should have made it available, e.g. on github.

    Now regarding your question: """Here's the backstory: Our existing data didn't always make identifying relevant politicians easy so, for example, I could quickly make a list of who's in what city but we have multiple congressional districts in single zip codes which is a problem that needed more than a simple Excel Vlookup."""
    This tells us nothing. Except that you don't use Excel for a problem you have not stated yet.

    2) I would first of all write a better summary, that explains in about ten to twelve sentences what your code is actually doing. With the summary you gave, I have no intention at all to look at your code. I would not even know with which terms it would show up on google. 'automatic system to find most cheap to bribe politicians'? Perhaps?

    3) I would write a short summary for the dozen or so most relevant use cases. And note which files/sources deal with it. If you prefer 'story format', then use the format:
    As 'role in the system'
    I can get data about (your result here) regarding politicians
    so that I can decide whom to bribe further next year.

    Concrete example:
    As Logged-In-User
    I can moderate stories on /.
    So that they get a 'ranking' and other people can decide more quickly if they want to read that posting.

    Another example:
    A anonymous coward,
    I can post but not moderate
    So that the moderating system is not taken over by anonymous trolls.

    Story format is
    ROLE
    ACTION
    REASON/RESULT
    in three separated lines.

    3) Bonus points if you write simple test cases for the most relevant use cases/stories.

    Hope that helps

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    1. Re:Hm ... by tomhath · · Score: 1

      Wait, you expect OP to write the requirements before writing the code?

      If you're going to do that, at least follow a normal development process:
      1) Write vague, conflicting design details and call them requirements
      2) Write code based on what you think the requirement writer meant, rather than what they actually said.
      3) Write test cases that prove your code does what it does.
      4) Update the code to do something else, but don't update the requirements or test cases

    2. Re:Hm ... by lucm · · Score: 1

      You forgot the step where 85% of the budget is spent on creating a "framework" that creates a layer of abstraction between the application and the underlying programming language, including a convenient pseudo-SQL API that let programmers query the custom ORM more easily using cacheable lambda expressions.

      --
      lucm, indeed.
  21. The human touch. by westlake · · Score: 1

    we want to communicate with government officials by offering anecdotes and stories of how we help their constituents

    Then take the time to get to know these people. If they hold a town meeting, be there. If they have an office in your district, don't be a stranger. Invite them to meet with those you have helped. Let them tell the story.

    1. Re:The human touch. by Anonymous Coward · · Score: 0

      The dreamer believes that the congressperson wants to meet with the indigent for longer than it takes to have a photo taken before moving on to his fancy dinner with the bankroller.

  22. Not to suggest a paid solution, but by Tighe_L · · Score: 1

    I commonly get asked to program things that already exist, and it seems counter productive to reinvent the wheel. This is not an endorsement of this product, but they provide what you are looking for: http://cqrollcall.com/products... Also if you want to do this yourself, you would want the kml files for congressional districts, they way you can geocode an address and determine which district is is inside. This I have done for other projects. https://www.census.gov/geo/map... https://www.census.gov/geo/map...

  23. GitHub and Twitter by izzo+nizzo · · Score: 1

    Put it on GitHub and then reach out to people via Twitter who might find it interesting. Spend a little time on it every day and update people when you've answered their concerns or questions.

  24. Don't by HornWumpus · · Score: 1

    Those of us that have the time 'in the trenches' have all made messes similar to yours and don't need to see another 'first real project'.

    Seriously, what makes you think this code is good enough to be reused or generalized?

    Take it as a learning experience. Your next one will be better. In about 10 years your code might be share worthy.

    --
    John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
  25. GitHub: The new SourceForge by tlambert · · Score: 1

    GitHub: The new SourceForge

    Look, you can't just declare a project, put it up in a public repo, and then expect people to flock to fix your code for you. One of the big things in the dot bomb era was people thinking that there were millions of Open Source programmers with no project ideas who would happily write their code for them, if only they were able to figure out how to declare a project exists to the right coding audience.

    GitHub tries very hard to *NOT* be the new SourceForge -- "SourceForge: Where software goes to die(tm)" -- and projects like this one won't help with that; they're actually harmful.

    You need to gather interested parties *first*, and *then* start small (generally a mailing list, and then exchanging patches, and then (eventually) GitHub.

    Your project admittedly -- by you -- has problems. Guess what? So did Mozilla, which was nominally OpenSource for *YEARS* before you could actually build and use it. And *then* it took off; before that, there was *massive* disinterest in it, and it was basically a dead project.

    In other words, it has to work first, and then it has to be able to be tinkered with, second, and then it has to mostly scratch and itch, third, and then the people who get itchy will do something about it. Not before. Before that, it's just more DOA code that will have to be cleaned out the next time GitHub's equivalent of a Roomba goes through shooting abandonware in the head. As it should.

  26. Host It by Anonymous Coward · · Score: 0

    Deploy it on a free tier AWS instance

  27. Sell It by Anonymous Coward · · Score: 0

    If you want to make sure someone values something more than they value their hard-earned cash, sell it. And sell and ongoing support package. Then profit on it, and there will be continued motivation for you to provide ongoing support and development. There are tons of open source projects out there with ZERO support, and tons of open source solutions that I customize for my customers and my software company provides the support package. What they are paying me for is my continued support and development, sometimes of an open source tool that is 100% free. This is how to guarantee that something is valuable to someone (since they would not pay for it otherwise) and if you are profitable then it will continue to be supported and valuable for YOU to continue with.

    Selling a product is the ultimate test to see if someone values your product. If you have committed yourself to being unprofitable, then you have committed yourself to a situation that is unsustainable, and/or dependent on the support of a powerful beneficiary / government agency / person that is funding you in a weird not-customer way.

    This is in no way contrary to open sourcing it (depending on WHICH open source license you provide) - the openness of your code and your business model are orthogonal.

  28. Re:Don't let Linus see it, or he'll call you a cun by lucm · · Score: 1

    The guy created Linux and Git. It doesn't matter if you think you know more "tricks" than him - bottom line, he's relevant and you're not.

    --
    lucm, indeed.
  29. Say what EXACTLY it does and link to it by Anonymous Coward · · Score: 0

    What do you expect from Slashdot, except attention? You could have gotten the attention you need here. You're not going to get any valuable advice as long as you're so coquettish about details. Stop playing hard to get.

  30. Code for America by s_mencer · · Score: 1

    There are other non-profits out there that are trying to help people in your situation. Take for example, Code for America (http://www.codeforamerica.org/).

    They could help you get your project in front of talented developers that are motivated to write software to make government work better.

  31. Make it very good first by Anonymous Coward · · Score: 0

    You want help, that's admirable, but open source is full of egos. If nothing else exists in the space, at least one hurdle is overcome, the threat your code poses to someone else's fiefdom in open source, and the rejection that will follow. Following Dysons comments. its better to be united than correct, you'll run into the same problem claiming a better solution to a problem. Even if truly correct, revolutionary, etc, because there's an established "tribe" already there, people will stay firmly entrenched in that tribe, and the chief will "make war" "against you".
    Open source isn't as idealistic as so many proponents make it out to be. You can't simply contribute. You must join the tribes, work your way up the ranks, and then be taken seriously. Its not a meritocracy, its an oligarchy. The Linus rant on the same day is evidence of all of this.
    Enjoy the "community"

  32. Re:Don't let Linus see it, or he'll call you a cun by pthisis · · Score: 1

    See how he dances
    See how he loops from side to side
    See how he prances
    The way his hooves just seem to glide
    He's just a one trick pony (that's all he is)
    But he turns that trick with pride

    He makes it look so easy
    He looks so clean
    He moves like God's
    Immaculate machine
    He makes me think about
    All of these extra movements I make
    And all of this herky-jerky motion
    And the bag of tricks it takes
    To get me through my working day
    One-trick pony

    He's a one trick pony
    He either fails or he succeeds
    He gives his testimony
    Then he relaxes in the weeds
    He's got one trick to last a lifetime
    But that's all a pony needs

    --
    rage, rage against the dying of the light
  33. Not to oversimplify /. but... by Anonymous Coward · · Score: 0

    For a group of open source cheerleaders I'm surprised there's not a little more encouragement. The OP is called a whiny, inept attention whore from offshore and also chided for not better marketing and publicizing a project that he or she admits is deeply flawed and may or may not be in any shape to help anyone.

    Keep working on it, whether or not it's shared. Working on it is how you get better.

  34. Load it online and send invite to NGOs by Anonymous Coward · · Score: 0

    Enough said