Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Programming Python

Ask Slashdot: How Can My Code Help? 47

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".
This discussion has been archived. No new comments can be posted.

Ask Slashdot: How Can My Code Help?

Comments Filter:
  • 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/ [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... [sandstorm.io]

    Best of luck!

    • 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.
    • by njnnja ( 2833511 )

      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 pa

  • 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.
  • by Anonymous Coward

    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

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

  • 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!"

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

  • by Anonymous Coward

    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 ga

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

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

    • It's not written in C, Linus won't even look at it.
  • 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

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

  • 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 Exc

    • by tomhath ( 637240 )

      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

      • by lucm ( 889690 )

        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.

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

  • 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... [cqrollcall.com] 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... [census.gov] https://www.census.gov/ge [census.gov]
  • 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.
  • 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.

  • 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 s

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

"Protozoa are small, and bacteria are small, but viruses are smaller than the both put together."

Working...