- it's unusual to pass a map with expected keys like this. Normally you'd pass a struct like:
p := New(Options{
BaseColor: "...",
Color: "...",
Generator: "...",
})
- You could define the known patterns as constants so they're documented and so users don't have to worry about typos
- Field names are normally camel-case without underscores, e.g., "Base_color" should be "BaseColor"
- You could use Go's build-in image/color package instead of accepting RGB strings, but that's more of a judgement call.
If you're accepting pull requests I might send you some, but they're breaking API changes so it's up to you.
All-in-all though it's a cool project and I'm glad to see it in Go :)
Hi @ImJasonH, I Developed this, let me answer you points :)
I believe these points are not contributing in breaking API :D so lets talk on them first.
2. You mean instead of an array I'm using here [1], We should add them as constants and write separate documentation for each?
This sounds nice as it will help obviously like you said.
3. Ohh, I missed this convention, thanks for pointing this out. :)
4. As you said its more of a judgement call, I believe that RGB strings are fine and easy for users. You find any wrong in RGB strings?
So, I'll be very happy to co-operate if you are doing pull request covering points 2 and 3 :)
And I'll try to cover your point 1 on my own :)
Regarding 4, I personally tend to be distrustful of what is often described as Stringly Typed code. To me, statically constraining your API to only accept valid inputs seems like superior design.
At first, I thought "create generative background images from a string" meant that the algorithm could be fed any string and it would use that string as a sort of seed for the creation of fractal/geometric art. So I thought that the text overlaying each of the rectangles on the GitHub Guides page was the seed text for the art underneath it. After reading further, I see that assumption is wrong. But I think it's an interesting idea to couple the text on a page with automatically generated geometrically and chromatically pleasing art. I see this sort of organic and causative dynamic as the future of a large part of software development, especially as we enhance our toolset with the power of evolution (e.g., a website that evolves by itself through A/B tests and little human intervention).
I see they have an MIT license, which is great, but I have a theoretical copyright question. If they didn't license out the code and, instead, made a background-image-generating website, who would own the copyright to the computer generated images? I'm guessing they would but does anyone know for sure?
This is not meant to be snarky, but what's the point of this? What use does the pattern being uniquely generated from a SHA of a distinct string have over a random pattern being generated from a SHA of some random string?
Say I'm using this to generate a background image for each post on HN. Also, I want them to be consistent, so everywhere you see a mVChr post it's got a green ringed background.
I could generate a random string for each user, but then I'd have to store it somewhere. It's better to just use the username as the seed.
It's the same fundamental principle behind identicons.
Nice idea and implementation. We developed a related application which creates colors from git commit sha strings. Have a look at http://gitart.me/repos/rails/rails
i did port a lot of the xscreensavers to plan9 and then a few of them to go when go came out. this reminds me a lot of some of them. now if only there was a way to animate them!
- it's unusual to pass a map with expected keys like this. Normally you'd pass a struct like: p := New(Options{ BaseColor: "...", Color: "...", Generator: "...", })
- You could define the known patterns as constants so they're documented and so users don't have to worry about typos
- Field names are normally camel-case without underscores, e.g., "Base_color" should be "BaseColor"
- You could use Go's build-in image/color package instead of accepting RGB strings, but that's more of a judgement call.
If you're accepting pull requests I might send you some, but they're breaking API changes so it's up to you.
All-in-all though it's a cool project and I'm glad to see it in Go :)