1,011 karma · joined March 24, 2009
https://github.com/cortesi
https://github.com/mitmproxy
https://github.com/search/advanced
You can access all of this functionality with ghrabber.
One of my suggestions to Github is that they disable indexing of dotfiles of all persuasions (including contents of dot-directories), unless the repo owner explicitly opts in. That would make it much harder to find a very large fraction of the more obvious leaks.
http://corte.si/posts/hacks/github-browserstate
I've also written about some less security critical things, like shell history (http://corte.si/posts/hacks/github-shhistory) custom aspell dictionaries (http://corte.si/posts/hacks/github-spellingdicts), and seeing if one could come up with ideas for command-line tools by looking at common pipe chains from shell histories (http://corte.si/posts/hacks/github-pipechains).
I've held back on some of the more damaging leaks that are easy to exploit en-masse with a tool like this (some are discussed in the linked post, but there are many more), because there's just no way to counteract this effectively without co-operation from Github. I've reported this to Github with concrete suggestions for improving things, but have never received a response.
If this is intelligence, then so is bone growth, which follows a similarly simple algorithm, is also honed by evolution, and is also inspiring real-world applications, e.g.:
http://www.engineering.com/DesignSoftware/DesignSoftwareArti...
https://www.fastcodesign.com/1671102/a-3-d-printed-house-tha...
It's a marvel that we can actually understand these biological algorithms well enough to code them up. I wrote about an example of this in a blog post about EO Wilson's "Superorganisms" a while ago (http://corte.si/posts/books/superorganism/index.html). Bee hives need to find the right balance between foragers out in the field, and nectar producers staying home to work in the hive. They have an elegant way of doing this, that works even when each bee can only rely on local knowledge - that is, each bee makes a decision about what it can see around itself, without any global integrative intelligence required. The algorithm goes like this (see the blog post for more detail):
1 - Not enough nectar collectors in the field? If yes, and you also have immediate knowledge of a producing flower patch, perform the waggle dance.
2 - Is the flower patch rich or the weather fine or the day early or does the colony need substantially more food? Perform the dance with appropriately greater vivacity and persistence.
3 - Not enough active foragers to send into the field? Perform the shaking maneuver.
4 - Not enough nectar processors in the hive to handle the nectar inflow? Perform the tremble dance.
A variant of this algorithm, directly inspired by bees, has been used to balance resource allocation in server farms:
http://www2.isye.gatech.edu/~ctovey/publications/papers/bee....
I would never complain about this, though - we don't solicit financial contributions, and I didn't start the project expecting to benefit financially. I get a lot of direct enjoyment out of working on mitmproxy, and I see it as a way to share something neat with like-minded people. In that sense, it has been immensely "profitable": I've met and collaborated with many interesting folks because of mitmproxy.
If you don't feel these indirect benefits make a project worth your while, you might want to consider doing something else with your time. There's no likely future in which small open source projects will be deluged with either contributors or money.
For instance, here's a devd command-line from the docs (https://github.com/cortesi/devd) that handles proxying local services, with a static directory overlaid. Gulp would be rendering assets into that static directory, the change would be noticed by devd, and liverload would be triggered.
devd -l \
-w ./src/ \
/=http://localhost:8888 \
/api/=http://localhost:8889 \
/static/=./assetsDevd has a simple job: it just serves files and triggers livereload when files change, and is completely agnostic about the build process. That means it works very well as a complement to Gulp - in fact, this is one of my primary use cases for devd. My gulp setups are simpler now: I've ditched Connect and node livereload libraries, and instead gulp JUST renders files to disk. It's early days, but having two sharp tools each doing what they do best seems to work well.
I should add that I definitely don't think there's one "right way" to do this stuff. I love the fact that we're free to explore variations to see what works and what doesn't. The more things we try the merrier!
Regarding other space-filling curves - I'm in two minds about this. I've implemented z-order and the H-curve for binvis, but for different reasons neither of these are as useful as the Hilbert curve, so they're not exposed in the interface. My feeling now is that I should pick one locality preserving layout and one intuitive layout to keep things simple and usable. I want binvis to be a workaday tool, so I'm keeping my space-filling curve geekery to another project (https://github.com/cortesi/scurve).
This is not even an alpha yet - I plan to announce the initial release in the next month or so. Eventually, I would like to add the ability to upload, share and annotate files for analysis. Comments and criticisms welcome!
http://corte.si/posts/code/hilbert/portrait/index.html
And you can see what this looks like when used to visualize sorting algorithms at large scale here:
http://corte.si/posts/code/sortvis-fruitsalad/index.html
And here:
I've also published an Open Source project that might be useful to anyone who wants to play with these ideas:
https://github.com/cortesi/scurve
There are some limitations to the process as described - most obviously the fact that I'm using the RGB color space which is not the best match for human color perception. RGB is convenient because it is a regular cube and therefore easy to map onto the Hilbert curve, but with a little work the process could be generalized.
That said, what we're trying to do specifically - which is sonification as a service, and trying to adequately cover a very wide range of different use cases and sound sources at once - is probably new. I don't think that matters much, though, and "newness" is the least interesting aspect of the project.
http://alexdong.com/choir-dot-io-explained/
We definitely see Choir fitting in where you can't look at or interact with a screen. Cars and wearable computing are areas we're excited about. First, though, we want to experiment on the desktop, find out what makes a good audio interface, and solve our own burning needs regarding more mundane monitoring situations.
Also, whether any particular sound is annoying or pleasant is complicated (we're just figuring out the parameters now) and subjective. So, we're working on letting users create, edit and share sound packs to see what smarter and more talented folks than us come up with.
Continuous data is one of the very next things we are implementing, partly because a sufficiently dense discrete set of events becomes a frequency, partly to cater for measurements like load. We plan to indicate magnitude with pitch and volume, but there are some complexities in the API and representation that we're working through first.
We're collecting integration ideas over here:
http://choir.uservoice.com/forums/217059-general/category/70...
If there's anything else on your wishlist, just chuck it in tnere.