Huginn, an Open Source IFTTT / Yahoo Pipes
github.com
github.com
The oft-repeated cry that 'everyone should learn to code' is wrong, wrong, wrong. It's like telling a kid to learn CAD and use a makerbot instead of providing them with a Lego set. Coding is great when you want to make a procedural something generator. If you want to make something specific, then coding often imposes an annoying and unnecessary layer of abstraction. For example, you can write music and/or perform sound synthesis in a superbly powerful language called CSound, but only a tiny number of academic masochists bother to do so. Commercial DSP engineers write in C or assembler, commercial sound designers use Max or Reaktor, much as most electronic engineers use SPICE rather than describe their circuits in code.
In short, keep up the good work!
It is right, right, right. We don't tell our children, it's ok to stop at crayons and comic books.
Yes, DSPs and CAD are much more productive at their niches than coding in a "normal" language. I find Chrome more productive than "telnet 80" - but knowledge of coding helps me structure my excel spreadsheets more usefully than those produced by intelligent people who cannot code.
Code literacy is important not just because there are faster or easier ways to express ones ideas in a given domain. Literacy is not about using one language - it's about learning to structure thoughts and express them in the best way possible - something learnt cover thousands of years and code literacy is the same - we epxress our thoughts better if we are literate.
Having said that, I cannot wait to try this out,
Yet in CS there are very smart people such as Alan Kay and the Constructivist types such as former-OLPC now-Sugar, all screaming about how we're learning brain-dead languages on machines doing their worst to make it impossible to become useful and literate without a ten year breaking in period until we become journeymen codesmiths. These machines & languages are not trying to help all of us become fluent about what it is that is running: they are there so that those who already know the language and the program can continue advancing it, until it's shippable, at which time it will execute: when we say learn to program, more often than not we mean learn to fit yourself in to that production cycle.
I'm not trying to argue one way or another about the learning to code merits, but it's important not to think of coding as this completed worthwhile thing in the way we do it! OP is an example of systems research to allow us to create agency in systems: that is programming, coding of behaviors, and one who gets good at it has gained a coding literacy. Ditto for spreadsheet wizards!
My point is that we are free to build entirely new forms of literacy both akin and unlike the programming languages we have now, and that the one's we have now are arbitrary. And, judging purely from the size of assumed knowledge passable programmers rely on, I'd contend, as do others, we'd do a lot better at making a literate society with different languages and forms, more tailored to introspection and mirroring their behaviors than towards producing a running application artifact: if we want people to learn systems, make the systems be more about being learnable and meddle-able than about being execution engines. It's our agency we need to see reflected, and IFTTT and OP are great examples of coding where seeing our agency at work at the end is far more of a direct path: it is radically different than how programming today works, in a good, different and fundamentally very important way.
In leaving, I'll point to a perspective on these better machines: these are machines that build agency by way of using APIs of other machines. I'm convinced that machine to machine interface is the key to making programming not suck, not a drain for this planet, for those who would be composers of code. rektide's gentle suggestion- machine to machine systems interfacing is the way to beget human/machine interface.
In the spirit of understanding, can I try to summarise your points as I get them
1. Programming as it is currently practised is still very focused on implementation / procedural.
2. Anyone who uses a DSP / other system to perform a task they want (agency) is doing some form of programming, and that is valid, as it is a step on the path of literacy.
3. The path of literacy might not be towards the current endpoint of neckbeards and Assembler and 10 years to be good.
4. There is likely to be new languages, new systems that will enable people to do programming / achieve agency at different points and with different degrees of abstraction
5. Its Lisp isn't it :-)
I agree with you. Which tells me I may have misunderstood!
But I am perfectly happy to agree that some form of code literacy is a good thing, and that the language of the future has not yet been invented I am also quite prepared to believe.
Aw, hell, it is Lisp :-)
Edit: I like the idea of OLPC etc being about how to meddle. I suspect that the machine you are referencing might be the one in Nand2Tetris - an interesting project that takes undergrads from Nand gates through to compilers and languages on a virtual machine interpreting the CPU built from the interpreted Nands.
Well, it's the path to literacy in signal processing (or whatever domain it happens to be). I learned to code >25 years ago and I still sort of like doing small things in assembler or throwing something together quickly in C. But I really don't like dealing with collections of big lengthy text files for projects of any magnitude. It's like reading a description of a painting that begins in the top left corner.
Put another way, text is the problem. Why, I ask myself, don't IDEs automatically generate dynamic flowcharts? Why do I have to spend so much time typing to create structure, when I want to focus on algorithms? Have a look at this software, which is aimed at roboticists but has other applications; it has modules that let you drop into Ruby as needed (and there's another version that allows entry of C or assembler) but doesn't require you to work that way if you don't need it. this is what an IDE ought to look like.
But, a graph of a novel is not a novel.
We are story telling chimps who have created a tool in our image - a tool to tell stories to other chimps, but based on rigid symbols and calculations.
Or maybe it's just late
Writing processes in a programming language AND a possibility to reuse them for different stuff.
IFTTT is a nice idea, but I can't do stuff like:
1. check rss feed for new stuff 2. generate links to the real data from the links in the rss. (most RSS feeds just suck, because they don't have the full articles and sometimes they link to crazy pages where the article is split in 10 sub-pages) 3. get all the pages you want the data from 4. parse the relevant stuff out of the pages 5. save the stuff to a place where it won't get deleted again from third party
Most of the time the real stuff isn't easily crawleable without writing a pice of software just for the source.
But you're right, there should be a possibility to get such apps to work without any code.
If I wrote a crawler for images from a DA-artist, I didn't want to rewrite it for every other one...
Most of the time the real stuff isn't easily crawleable without writing a pice of software just for the source.
But you're right, there should be a possibility to get such apps to work without any code.
If I wrote a crawler for images from a DA-artist, I didn't want to rewrite it for every other one...
Shameless offtopic plug: that's exactly what we at http://import.io are trying to solve. We're in Developer Preview, check us out!Well done on this, I'm looking forward to playing with it tonight.
I'll try and get the Elixir stuff cleaned up and published over the next week :). The only source I've implemented so far is inotify (for eventing off Dropbox, so I can rebuild my blog); so far I've spent most of my time digging into the vagaries of the OTP and Erlang as a platform, rather than implementing.
Please give us updates on your experience as you use it as well.
Don't try Muninn, it's already taken for something sorta similar: http://code.google.com/p/muninn/
That being said, they're not in a related area, so I doubt anyone would be excessively confused between both, as opposed to say, Go[1] and Go![2].
What I'd do, personally, is try to find another name and only keep the current project name if I can't find a better one that's not already taken. It makes it easier to rank well on Google and is less likely that someone will apt-get the wrong project.
[1] http://en.wikipedia.org/wiki/Go_(programming_language) [2] http://en.wikipedia.org/wiki/Go!_(programming_language) [3] https://www.google.com/search?q=huginn+download
It's confusing.
Muninn would seem like appropriate alternative.
Do you have plans on having a hosted version people can use?
I love the idea of hosted open source projects which allow you to easily export your data if you decide later to run it yourself.
Hosted would also be good though, I think there are a whole class of people who don't care all that much who has access to their data so long as they could self host it (or have someone else host it for them) if the service ever stopped running.
(Just two reasons I could imagine. But I get your point... especially with my recent sadness over Google Reader.)
Anybody else who's interested in this sort of thing, give me a shout.
We also have a demo server setup where you can play with the thing, at: http://demo2.fogbeam.org:8080/pipes/
Also I will need to intall ruby on my debian personal server.. which I'd rather avoid (I already have there python, php, perl..), but having custom IFTTT+pipes is just too tempting :)
Yes, actually, I use it to scrape a couple of RSS feeds myself since I couldn't be bothered to use a reader when I had this.