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".
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".
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
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.
The only remaining one would be paying somebody to improve your code. Now pick one.
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.
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?
"COBOL programmers understand why women hate periods." -- Gloria Steinem
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!"
Just asking. A non-profit can still own copyright on works for hire.
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.
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".
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.
What's to lose? Worst case, it acts as a bad example.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
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 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.
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.
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!
Ah; so he's a one-trick pony.
Try posting to the Code Review StackExchange forum.
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.
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.
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... 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...
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.
John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
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.
Deploy it on a free tier AWS instance
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.
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.
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.
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.
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"
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
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.
Enough said