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

28 of 47 comments (clear)

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

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

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

  5. 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!"

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

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

  8. 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."
  9. 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.

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

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

  12. 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.
  13. 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?
  14. 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.

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

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

  17. 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'
  18. 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.

  19. 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.
  20. 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.
  21. 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.

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