Ask HN: What are you working on (hacking)?
Thought it would be helpful for HN'ers to see what others are up to and potentially find cool projects to collaborate on.
Bonus points for keeping it under a tweet + demo (or github,etc).
Bonus points for keeping it under a tweet + demo (or github,etc).
193 comments
[ 0.24 ms ] story [ 218 ms ] threadThe real payoff has been that in the process I've learned all sorts of things: about Python, data mining, working with large datasets, machine learning...
Keep in mind that I didn't really have any success:
There seem to be two main ML packages, Weka and Orange. I personally preferred Orange, it has a nice graph-based UI for linking various components together; when you've figured that out it can script in Python. Also Orange makes it easy to test your data set against various different learning systems, and compare the performance. Standard testing procedures like n-fold cross-validation are built-in and really simple to use.
Also you need data. I'm pretty sure more is always better. I actually started with greyhounds* and skimmed mine (in Python use BeautifulSoup) from a website. I tried to come up with various statistics about the recent performance of the dogs. Unfortunately nothing I tried made the ML algorithms predict better than a random choice. A friend who's into gambling suggested greyhound racing was quite random by nature, so I've switched to horses recently. I'm still building that dataset, now trying out MongoDB just for fun.
I think the trouble is that you can have as much raw data as you like, but generating the predictive statistics requires a lot of knowledge of the problem domain. I'm not actually into gambling at all so I don't know if the track conditions are important, how much breeding or the age of the animal really matters etc... This made it hard to pick likely stats (and rebuilding datasets and retraining learners can take some time).
For horses there's a lot more information in forums and racing guides etc, so I'd start with horses. Just make sure you've tested your predictions with pretend bets before you commit any real money :)
Good luck!
*I began with greyhounds because of a dissertation posted on reddit where the authors suggested they'd had some success with a neural network and gave quite a lot of detail. That piqued my curiosity, and my initial version just re-implemented their work.
EDITED: For clarity
Yeah I hated using weka at uni. I'll look into Orange.
"I don't know if the track conditions are important, how much breeding or the age of the animal really matters etc."
Yeah, feature selection is a tough one. I'd thought that the system would pick up on good indicators by itself, but it might well be that that has to be a manual decision.
"Just make sure you've tested your predictions with pretend bets before you commit any real money"
haha, yeah absolutely. My plan was to train/test until the accuracy seemed good enough (using monte carlo) and then run the system on live data with pretend money for a few months to see what the actual performance is like, before actually investing real cash.
Do you have a link to the greyhound topic? I searched on google but couldn't find it.
For example, I assume that a dogs past performance must be some indicator of its chances in the next race, but how do I account for the chances of dogs who didn't complete their last race? What weighting is the last race worth, compared to the ones before (perhaps it had a bad race, but on the whole is running well).
I just don't know how to optimise for those sort of things. I have a rough idea that some combination of genetic programming and GA could help - it would be an interesting challenge to builds software that knew how to apply a selection of mathematical functions to my data, and then breed the results like a GA. But it's tricky, I'd have thought.
I've been treating the ML classifiers and learners as something of a black box, perhaps a more rigorous approach is required.
yeah, I'd envisaged using the accuracy of the neural net as the fitness function for a GA that mutates input parameters. It's another layer of complexity, and I've no clue how you'd start, but it seems like it would work.
In other words - use a GA to select features, using how well the NN trained on that set of features performs as the fitness function.
One of my long-standing projects is predicting soccer bets.
Why did re-implementing the dissertation for greyhounds not work? Was the dissertation flawed?
If you're putting this much effort into it, why not stop by a horse racing track a few times and pick up some domain knowledge? Maybe you could even talk to race horse owners, jockeys, breeders?
I wonder if you could turn this into a product for breeders? Or maybe for people buying/selling race horses? Or people hiring Jockeys, or even marketing an offshoot of this to the gamblers? Just some wild thoughts.
Hoping to build a freemium model out of it for image libraries to use. Happy to speak to anyone with any kind of CV / object detection knowhow.
At the moment I can return colour names and faces.
Example:
input: http://cm1.theinsider.com/media/0/91/63/mini-kim-kardashian-...
output: face, yellow, blue, black.
So just colours and faces at the moment. You're right that arbitrary images are ridiculously complicated, I'm hoping to start off on a smaller domain and build up :)
(edit: obviously I can return the coords of the face too, as well as coords of empty parts of the image etc, but tagging is really what I'm focusing on at the moment)
edit: which doesn't seem like it'll be too difficult. On their developer test I just get {"data": {"error": 0}} back for any image I try to upload.
Also playing with the idea of using Google Docs as ad-hoc CMS for simple client projects.
A programming language where syntax and semantics are manipulable at run-time as well as compile-time and where you can define grammars in-line and use them immediately. I also intend to integrate the concepts of pattern calculus - http://lambda-the-ultimate.org/node/3695 - to permit extreme levels of flexibility in the language.
It's a huge project and I'm right at the start of it. But no matter how hard I try I can't get away from the desire to work on language design and compiler development. It's just my thing, and the wonderful thing about hacking is you can just do it :-)
I've been playing with making the implementation of arc more timeless (e.g. http://arclanguage.org/item?id=12057, http://arclanguage.org/item?id=11864)
After a while I gave up, maybe I am simply not a good enough coder to understand how Racket namespaces work, but either way I worried that if this one aspect of the language is extremely difficult, what else am I going to uncover in the course of the project? On that basis I decided it'd be wise to switch.
Initially I was going to switch to C for portability as I am also working on a parser generator, singular[2], which I thought could be useful to people even before I write it in Terse (I intend to self-host and bring singular into that too), however I worried that the many pitfalls that C brings to the party, e.g. the ease of segfaulting, null pointers, etc. and its lack of abstractions would overly slow me down, so I thought Go would be a better option, especially as it seemed tastefully designed.
My experience of Go so far is one of great admiration and enjoyment, it really is a lovely language, nicely low-level and low-key yet still providing many useful abstractions including proper interfaces, i.e. by implementing the methods of an interface you can treat it as that interface without having to explicitly inherit from it.
To be honest my decision to switch to Go is probably not that defensible as not many people are using it so the initial reason (portability) for switching to a lower-level language is less of an excuse now, so if I'm being honest I have to admit that I wanted a fast language that played nice with Linux (not that Racket wasn't either of these), and I wanted to play with Go, which kinda overrode other considerations.
Most recently I've been very interested in implementing [pattern calculus][3] in the language somehow, as it provides enormous flexibility and offers a formal underpinning to a more fundamental means of expressing abstractions than oo, functional, etc. - in fact my ambition is to have an abstraction which can encompass these paradigms in itself if you want, i.e. you can implement oo or functional or whatever you want. Obviously I am very inspired by lisp in this and many other regards.
The main thing is getting stuff done, this idea has been floating around in my mind for at least a couple years and I've changed my mind about things many times (and will carry on of course when necessary) causing me to throw away work more than once, so obviously I am somewhat focused on actually writing code and getting closer to actually having something rather than just the idea.
Luckily I am pretty damn certain about the core ideas in the language (flexible syntax, the use of pattern calculus, etc.) so that looks to be quite likely.
Anyway, it's really early days, but I am utterly committed to getting this done as I want the language for myself, want it to not be a toy language, and want it to actually do these things I think would be awesome, even if (as is most likely as with any personal language project) no one else uses it :-)
I know I'm digressing from your question, but have to say that I really think one of the most wonderful aspects of programming is the ability to just hack on stuff, no matter how crazy, with just a cheap computer, some coffee and a willingness to put in the time. So glad I was born in a time where that was possible.
[1]:http://www.codegrunt.co.uk/2010/06/28/Racket-Namespaces-Suck...
[2]:http://www.codegrunt.co.uk/singular.html
[3]:http://lambda-the-ultimate.org/node/3695
(email in profile)
In one sentence: Get your Google Analytics data straight to your inbox.
Build as part of my dissertation. Build on Google App Engine.
To me the "best" setup would be to avoid the PDF and get the report directly in my mailbox. I know that would require unique graphics for each email, but is that the only barrier from going with that approach?
:)
A declarative framework for Perl that lets you set up complex data structures and code in an easy-to-read format.
A complete working example GUI program, using a not-yet-published set of semantic classes:
Will you marry me?
I've got big plans, and since it's not expected to pay any bills for a while, I can afford to think things through sufficiently. I just hope I won't drop it entirely.
It's been fun so far, though.
Absolutely. Having sensible and configurable defaults for everything is the way to go.
PiCloud (http://www.picloud.com) is not a web hosting service. Rather, it is a highly scalable compute service.
(In other words, you can't host a website on PiCloud. But your site can run all of its background tasks on PiCloud).
I hear people asking for a Django-equivalent of Heroku. You definitely have a market for this.
It should be up and running now.
The past week I have been working on a back end tool to fully automate the creation of the newsletter (the selection of content is done by me). It has been fun working with the MailChimp API.
Here is a sample low quality upload, working on getting somewhere cheap to host 1080p: http://www.youtube.com/watch?v=gT7CrlzVeCs
I needed a pretext to play with localStorage.
I'm targeting the custom essay - services like http://essaymill.com ("our writing, your success"), as well as students paying other students to write their papers.
I intend to make it very clear to customers that they should not punish students based only on information provided by my software.
That's true.
If an algorithm flags someone as a possible cheat multiple times, it may be worth inspecting that person further.
> I intend to make it very clear to customers that they should not punish students based only on information provided by my software.
Good idea. Customers should however publicise that anti-cheating software is in use.
A lightweight systems management tool that uses XMPP for transport and is written in C++.