You may want to:
- Buy my books on Amazon
- Read my blog at yegor256.com
- Subscribe to my channel in Telegram
- Follow me on Twitter
- Subscribe to my YouTube channel
- Check the project we're working on right now: EO (help needed, please contribute!)
Puzzle Driven Development (PDD) Chatbot Assistant for Your GitHub Repositories
Home Page: https://www.0pdd.com
License: MIT License
You may want to:
Let's collect them properly and then deploy to GitHub
The puzzle 1-e4c85f20
in 0pdd.rb
(lines 33-35) has to be resolved: This puzzle is just a test. It has to prove that the system works. Right after that I will remove it and it has to be removed from Github.
The puzzle was created by Yegor Bugayenko on 22-Dec-16.
Estimate: 30 minutes, role: IMP.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code.
What will happen if repository is renamed? We will re-submit all tickets to a new one -- that would be a big disaster. Let's find a way to prevent that.
Puzzle 3-04ce612e
in 0pdd.rb
has to be resolved: Let's implement this entry point, where we will render all puzzles we have for a particular project. Let's not forget about security too.. The puzzle was created by Yegor Bugayenko on 12-Dec-16.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code.
Let's make it possible to configure in .0pdd.yml
the list of users who should get notifications when new puzzles are posted. We should just post an extra message to them, asking to pay attention to the ticket. Something like this:
alerts:
github:
- yegor256
- davvd
These two people will get a notification message: @yegor256 and @davvd
When an error occurs with PDD parsing, let's post it as a comment to the GitHub commit.
The puzzle 15-a1d6817e
in 0pdd.rb
(lines 32-34) has to be resolved: We don't have an SVG badge for GitHub, which will show how many puzzles we have at the moment in the repo. Let's create it, in SVG format (and maybe in PNG too).
The puzzle was created by Yegor Bugayenko on 13-Dec-16.
Estimate: 30 minutes, Role: IMP.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code.
The puzzle 31-bd057c47
in 0pdd.rb
(lines 23-26) has to be resolved: This is just a test puzzle 3. This is just a test puzzle 3. This is just a test puzzle 3. This is just a test puzzle 3.
The puzzle was created by Yegor Bugayenko on 22-Dec-16.
Estimate: 15 minutes, role: IMP.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code.
The puzzle 15-1dc72086
in 0pdd.rb
(lines 41-43) has to be resolved: This feature is not implemented now and it makes it very difficult to track the status of puzzles in a repo. Let's add this simple converter from XML to HTML (through XSLT).
The puzzle was created by Yegor Bugayenko on 13-Dec-16.
Estimate: 30 minutes, Role: IMP.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code.
Let's submit them, if they are alive, but without issues.
Let's make it red, orange or green, depending on the numbers it shows.
Since this is at the beginning of its life, I assume this is the right moment to suggest some ideas.
I think, instead of having it check my whole repo at every push
, it would be more efficient to have it check when I tell it to: "@ 0pdd check please" - you could have a script for rultor at merge time: check for todo's in the changed files and comment if there are any.
0pdd
as a commander in .rultor.yml
. This way I could also check that the puzzles were correctly removed and see what other changes the bot did to my repo. Of course, if I choose to trust it completely, I add it as an architect and rultor won't ask for review.I mean, if I like your work enough to use 0pdd, chances are very high that I already use rultor, so I have 2 of your bots, both needing write access. Besides, for write access, someone has to log into the bots account and accept the invitation and that takes time :)
PATCH https://api.github.com/repos/foo/foo/issues/unknown: 404 - Not Found // See: https://developer.github.com/v3/issues/#edit-an-issue
/app/vendor/bundle/ruby/2.2.0/gems/octokit-4.6.2/lib/octokit/response/raise_error.rb:16:in `on_complete'
/app/vendor/bundle/ruby/2.2.0/gems/faraday-0.11.0/lib/faraday/response.rb:9:in `block in call'
/app/vendor/bundle/ruby/2.2.0/gems/faraday-0.11.0/lib/faraday/response.rb:61:in `on_complete'
/app/vendor/bundle/ruby/2.2.0/gems/faraday-0.11.0/lib/faraday/response.rb:8:in `call'
/app/vendor/bundle/ruby/2.2.0/gems/octokit-4.6.2/lib/octokit/middleware/follow_redirects.rb:73:in `perform_with_redirection'
/app/vendor/bundle/ruby/2.2.0/gems/octokit-4.6.2/lib/octokit/middleware/follow_redirects.rb:61:in `call'
/app/vendor/bundle/ruby/2.2.0/gems/faraday-0.11.0/lib/faraday/rack_builder.rb:139:in `build_response'
/app/vendor/bundle/ruby/2.2.0/gems/faraday-0.11.0/lib/faraday/connection.rb:377:in `run_request'
/app/vendor/bundle/ruby/2.2.0/gems/faraday-0.11.0/lib/faraday/connection.rb:177:in `patch'
/app/vendor/bundle/ruby/2.2.0/gems/sawyer-0.8.1/lib/sawyer/agent.rb:94:in `call'
/app/vendor/bundle/ruby/2.2.0/gems/octokit-4.6.2/lib/octokit/connection.rb:154:in `request'
/app/vendor/bundle/ruby/2.2.0/gems/octokit-4.6.2/lib/octokit/connection.rb:46:in `patch'
/app/vendor/bundle/ruby/2.2.0/gems/octokit-4.6.2/lib/octokit/client/issues.rb:130:in `close_issue'
/app/objects/github_tickets.rb:75:in `close'
/app/objects/puzzles.rb:88:in `block in close'
/app/vendor/bundle/ruby/2.2.0/gems/nokogiri-1.6.8.1/lib/nokogiri/xml/node_set.rb:187:in `block in each'
/app/vendor/bundle/ruby/2.2.0/gems/nokogiri-1.6.8.1/lib/nokogiri/xml/node_set.rb:186:in `upto'
/app/vendor/bundle/ruby/2.2.0/gems/nokogiri-1.6.8.1/lib/nokogiri/xml/node_set.rb:186:in `each'
/app/objects/puzzles.rb:88:in `close'
/app/objects/puzzles.rb:41:in `deploy'
/app/objects/job.rb:42:in `proceed'
Let's make it possible to configure default labels for all GitHub issues created by @0pdd. Somewhere in .0pdd.yml
let's create a config section for it:
tags:
- bug
- urgent
Puzzle 3-04ce612e in 0pdd.rb has to be resolved: Let's implement this entry point, where we will render all puzzles we have for a particular project. Let's not forget about security too.. The puzzle was created by @yegor Bugayenko on 12-Dec-16
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code.
The puzzle 31-641f9fa5
in 0pdd.rb
(lines 33-35) has to be resolved: This puzzle is just a test. It has to prove that the system works just well. Right after that I will remove it and it has to be removed from Github.
The puzzle was created by Yegor Bugayenko on 22-Dec-16.
Estimate: 15 minutes, role: IMP.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code.
Let's implement it and deploy
It would be better, I think, if the bot made PRs instead of asking for write permissions.
Moreover, it could scan the root folder of the repo for .rultor.yml
, check if it has commandment rights and if so, it should ask rultor to merge the pr. This way also the build is run and it assures that no mistake was made while removing puzzles.
I think the integration with rultor is quite elegant. And if there i no rultor in the project, I still think people would rather check what the bot changed before merging. Since the bot does not run a build, it would be risky to just merge changes directly.
The puzzle 3-9fa46796
in objects/github_tickets.rb
(lines 36-39) has to be resolved: This mechanism of body abbreviation is rather primitive and doesn't produce readable texts very often. Instead of cutting the text at the hard limit (40 chars) we have to cut it at the end of the word, staying closer to the limit..
The puzzle was created by Yegor Bugayenko on 13-Dec-16.
Estimate: 20 minutes, Role: IMP.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code.
The puzzle 1-1c2ee73f
in 0pdd.rb
(lines 23-25) has to be resolved: We lose errors when they happen with the source code. They just drop into the log and that's it. Instead, we must email them to the repository owner or a predefined email from .0pdd.yml
The puzzle was created by Yegor Bugayenko on 22-Dec-16.
Estimate: 30 minutes, role: IMP.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code.
The puzzle 3-09c2d743
in objects/puzzles.rb
has to be resolved: It's not really effective to always save the XML document back to storage, even when it was not really modified. Would be much better to check whether any modifications have been made and skip that SAVE() operation.. The puzzle was created by Yegor Bugayenko on 13-Dec-16.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code.
Coveralls.io is configured, but the badge doesn't show anything. Let's fix.
The puzzle 13-4c2685d4
in objects/job.rb
(lines 34-37) has to be resolved: We may lose the moment of update and forget to create an issue or close it. For many reasons that may happen. No matter why, we have to do the second check once in a while and update GitHub issues. Maybe every hour or so.
The puzzle was created by Yegor Bugayenko on 13-Dec-16.
Estimate: 30 minutes, Role: IMP.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code.
Let's accept them automatically, similar to how it was done in Rultor: yegor256/rultor#1140
This is the repo: https://www.github.com/opencharles/charles-rest
I push puzzles and 0pdd doesn't open issues.
It used to work at some point, now it doesn't
I looked in Settings/Webhooks, and the calls to the webhook endpoint
get HTTP 503 server error response
I checked and the format is right, including one space indentation for all the new lines.
----
Later edit:
Response is 200 now (503 was my fault, bad content-type header), but still nothing happens.
Here is the stacktrace
The puzzle 41-15a94873
in objects/puzzles.rb
(lines 87-89) has to be resolved: Let's post notification messages to tickets where other puzzles were waiting for the resolution of this one. Let's update them with a summary information of what is left.
The puzzle was created by Yegor Bugayenko on 15-Feb-17.
Estimate: 30 minutes, role: IMP.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD.
Let's create a chat bot, which will respond to GitHub messages, with some status information about puzzles.
Puzzle 3-04ce612e in 0pdd.rb has to be resolved: Let's implement this entry point, where we will render all puzzles we have for a particular project. Let's not forget about security too.. The puzzle was created by @yegor Bugayenko on 12-Dec-16
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code.
The puzzle 31-30e0dcda
in 0pdd.rb
(lines 23-26) has to be resolved: This is just a test puzzle 2. This is just a test puzzle 2. This is just a test puzzle 2. This is just a test puzzle 2.
The puzzle was created by Yegor Bugayenko on 22-Dec-16.
Estimate: 15 minutes, role: IMP.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code.
Let's post notification messages to GitHub tickets when situation with puzzles is changed.
Let's put it there
The puzzle 1-6a5fba58
in 0pdd.rb
(lines 33-35) has to be resolved: Let's create robots.txt entry point with an an empty content. Should be pretty easy. Maybe there will be some other static resources, let's add them too.
The puzzle was created by Yegor Bugayenko on 22-Dec-16.
Estimate: 15 minutes, role: IMP.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code.
Let's send emails when we submit new issues and close existing one, just for the sake of traceability.
Let's introduce some authentication mechanism for private repositories
The puzzle 31-3016794f
in 0pdd.rb
(lines 23-26) has to be resolved: This is just a test puzzle. This is just a test puzzle. This is just a test puzzle. This is just a test puzzle.
The puzzle was created by Yegor Bugayenko on 22-Dec-16.
Estimate: 15 minutes, role: IMP.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code.
Let's implement this entry point, where we will render all puzzles we have for a particular project. Let's not forget about security too.
@0pdd is creating a lot of duplicate tickets in Xockets Layer project:
https://github.com/teamed/xockets-layer/issues
See screenshot here, where three puzzles were opened three times in the past 24 hours:
Let's implement this entry point, where we will render all puzzles we have for a particular project. Let's not forget about security too.
The puzzle 3-41f7e700
in 0pdd.rb
(lines 33-35) has to be resolved: Page not found is not implemented. When I open a URL that doesn't exist I see a default sinatra "not found" page, which is annoying.
The puzzle was created by Yegor Bugayenko on 13-Dec-16.
Estimate: 15 minutes, Role: IMP.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code.
Let's make it possible to configure .0pdd.yml
file for email reports. When something goes wrong after the push we must be able to send a stacktrace to the owner of the repo. That's what .0pdd.yml
will be used for:
errors:
email: [email protected]
The puzzle 3-5ec03020
in 0pdd.rb
(lines 48-51) has to be resolved: For some reason, at the moment of this PUSH event arrival the repository is not ready yet and we don't have the current version of it. Let's introduce some delay or some other method, so that we can wait until the repo is in proper state.. The puzzle was created by Yegor Bugayenko on 13-Dec-16.
Estimate: 20 minutes, Role: IMP.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code.
The puzzle 41-ab139346
in 0pdd.rb
(lines 58-60) has to be resolved: Let's add GZIP compression to this output, since most XML files are rather big and it would be beneficial to see them compressed in the browser.
The puzzle was created by Yegor Bugayenko on 15-Feb-17.
Estimate: 30 minutes, role: IMP.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code.
Instead of having the users configure webhooks on their repos, you could have a running checker, that would check for notifications like comment mentions and ping the bot at /hook endpoint.
I wrote such a checker so it, or something similar, could be used.
Instead of checking the whole repo at each push event, the bot would check it only when commanded. It could also be commanded by rultor after a merge.
The puzzle 1-6a5fba58
in 0pdd.rb
(lines 33-35) has to be resolved: Let's create robots.txt entry point with an an empty content. Should be pretty easy. Maybe there will be some other static resources, let's add them too.
The puzzle was created by Yegor Bugayenko on 22-Dec-16.
Estimate: 15 minutes, role: IMP.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code.
The puzzle 2-f47a3215
in 0pdd.rb
(lines 52-56) has to be resolved: At the moment we're not thread-safe. If two PUSH events arrive at the same time we will/may have troubles with concurrent modification of S3 objects and Git repository. Let's introduce some queing system, which will put all requests into a pipeline and proceed them one by one.. The puzzle was created by Yegor Bugayenko on 13-Dec-16.
Estimate: 30 minutes, Role: IMP.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code.
Let's render this total repo counter on the front page. We will have to go through all S3 objects in the bucket and count them. Will take a lot of time, so let's invent some caching mechanism. Maybe, let's use stateful.co counter and increment it every time we create a new S3 object, which we've never seen before.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.