top | item 586140

Ask HN: Do you have any code or projects of your own you would like to talk about instead?

165 points| raganwald | 17 years ago | reply

Tired of other discussions dominating the front page? Tell us what you're working on right now, and please include a link to actual code. Let's get back in touch with hacking!

102 comments

order
[+] aboodman|17 years ago|reply
Right now I'm working on adding extensions to Chrome. The majority of the system is in this directory:

http://src.chromium.org/viewvc/chrome/trunk/src/chrome/brows...

And what I've been working on most recently is the code that renders little HTML-based toolbars. My most recent change fixed a race that caused them to not render correctly on the first run:

http://src.chromium.org/viewvc/chrome?view=rev&revision=...

I think one of the coolest parts of the system is the way that api methods are routed from JS running in extension processes to the browser process and back. The core of that is here:

http://src.chromium.org/viewvc/chrome/trunk/src/chrome/brows...

[+] danohuiginn|17 years ago|reply
Two projects. One is scraping and indexing data on corporations registered in tax havens, mainly for the purpose of helping transparency researchers follow the activities and connections of businessmen, politicians, etc. I've done Panama, and am now working on a couple of others:

http://ohuiginn.net/panama

http://www.ohuiginn.net/mt/2008/12/opening_up_a_tax_haven.ht...

The second project is building a decent interface to the first edition of the Oxford English Dictionary. The current edition is online, charging ~$200/year for access, but the first edition is out of copyright, sitting on archive.org, and just waiting for somebody to make it accessible without the need to download several GB of scans.

[+] biohacker42|17 years ago|reply
Those are both great ideas. Please consider a donate doohickey for each project. I would gladly contribute to both.
[+] Agathos|17 years ago|reply
You're my hero now. Mining financial disclosures is right at the top of my list of projects that need doing.
[+] Locke|17 years ago|reply
I've been working on my Z-Machine interpreter library again. It basically started as a project to turn Frotz into a Ruby extension (Frotz, probably the most popular interpreter, is written in C).

The code has undergone quite a few transformations now. Frotz uses a lot of static memory -- it's basically setup to run a single zcode program at a time. Which makes sense, of course.

For my library, I wanted to be able to run more than one program (or multiple copies of the same program) at the same time. So, I basically rewrote the core of Frotz. All the memory for a Z-Machine is broken up into structs which are passed around.

There were some fun memory management issues related to running multiple programs. The typical zcode program consists mostly of static memory (lots and lots of strings and code), so that static memory can be shared between programs. I have a test where I load something like 100,000 copies of minizork into memory and the process size "only" jumps to 118MB. Of course, normal code doesn't need that many simultaneous Z-Machine instances so garbage collection keeps memory pretty reasonable.

Last time I worked on dorothy, I setup a demo webapp here:

http://ifrotz.org

Which illustrates why I wanted to be able to run multiple programs. The demo runs minizork, dynamic memory is dumped and restored between requests. The hints, exits, and history feature is possible because the server "listens in" on your game and the games others have played.

Lately I've been working on more memory inspection stuff, and now I have to work on some of the unfinished Z-Machine features (I've only implemented the v3 screen model).

The code is on Github:

http://github.com/eki/dorothy/tree/master

[+] tptacek|17 years ago|reply
Right now (please call me on this sometime, it'd help me) I'm working on a clone of Burp, the industry standard web penetration testing tool, in Cocoa. I started with RubyCocoa, but I've ditched it for Objective C. It is (surprisingly) liberating to work in C after spending a year in Ruby; any time something looks expensive or naive, you just tell yourself, "what I'm doing here can't possibly be more expensive than what MRI Ruby would have done", and you go about your day. Highly recommended.

The last code I managed to publish was Ruckus:

http://github.com/tqbf/ruckus/

(a better description: http://wiki.github.com/tqbf/ruckus/crash-course)

Ruckus is a Ruby DSL replacement for Peach Fuzz, Mike Eddington's famous Python fuzzer library. It is distinguished by being about 100 times slower, using a DSL instead of XML, and providing a DOM-style interface to any packet format (you can tag fields, arbitrarily nested in a tree structure, with classes and id's, and then fuzz them using CSS selectors).

I have a JDWP JVM debugger (or rather a thin protocol driver) written in Ruckus if anyone's interested in seeing what it actually looks like. We never get to publish the actual protocols we build with this.

My programming "day job" (I'm one of 4 developers on the project) is Playbook:

http://runplaybook.com

[+] yan|17 years ago|reply
Never had I felt more like I was tricking software into doing what I want to do than when I was trying to use Peach. I mean Michael's a nice guy, but you email the peachfuzz list or him personally on issues you're having and he convinces you that it's you not using the tool correctly and that you really don't want the feature you're asking. Modifying code was hellish because it's just thousands of lines of kludge, written as far from Python's usual styles as possible.

Good stuff on the Burp clone. Any plans to publish it eventually?

--

As for me, the last project I was working on is a complex structure analyzer plug-in for HexFiend along with basic plug-in functionality to support it.

[+] barrybe|17 years ago|reply
I'm working on a programming language that has builtin support for reloading code at runtime. It'll also support various ways of modifying code at runtime, like with visual interfaces. The primary usage is for making interactive graphical apps, like games.

Intro is here: http://andyfischer.github.com/circa/intro.html

code is here: http://github.com/andyfischer/circa/tree/master

[+] bokonist|17 years ago|reply
Don't most dynamic languages already allow this? I know in python you can reload code.
[+] cool-RR|17 years ago|reply
Wouldn't it be better to modify an existing, popular language to support this feature?
[+] Zak|17 years ago|reply
Looks like a cool little project. You should, however take a look at how most Lisps do something similar. You appear to be trying to take it farther than most Lisps do, but do have a look so as to not reinvent the wheel.
[+] bsaunder|17 years ago|reply
I've prototyped a similar concept in Perl (still a bit rough). I think this is a powerful concept.
[+] cool-RR|17 years ago|reply
I'm actually looking for a new name for my project, so maybe someone here will have a good idea?

It's a framework for writing, running and analyzing simulations. It could take any kind of simulation: Physics, game theory, epidemic spread, electronics, whatever.

It's in Python.

This is where it currently lives:

http://github.com/cool-RR/physicsthing/tree/master

(Keep in mind it's still a very young project)

The readme there was written when I had mostly physics simulations in mind. Now I've generalized the project to take any kind of simulation. I'll update the readme soon to reflect that, but I would really like to find a good name. Maybe something with a suffix or prefix of "Sim", but maybe not.

Anyone has any ideas?

[+] nimbix|17 years ago|reply
Fake Snake (a different way of saying "python simulator" :)
[+] phugoid|17 years ago|reply
Simitar! A cutting new technology.
[+] barrybe|17 years ago|reply
Prism would be cool, although Mozilla already has something with that name.
[+] rudyfink|17 years ago|reply
pysicsss (I dunno. Something trying to blend python, physics, simulation, and the sssss sound a snake makes).
[+] chrisb|17 years ago|reply
A .NET interpreter for embedded/constrained systems where MS.NET or Mono aren't suitable: http://www.dotnetanywhere.org/

It now implements most of the core .NET 2.0 spec, a usable subset of the base class library, and an implementation of a Graphics device suitable for embedded devices.

Not the fastest of .NET runtimes, but its disk/memory footprint is surprisingly small, and it (mostly) works!

[+] potatolicious|17 years ago|reply
I will have to give this a shot :) I've been looking for good high level ways to program embedded boards (like the Beagleboard)... definitely going to give this a try.
[+] mannicken|17 years ago|reply
Right now I'm working on a natural language task management system. Basically you enter something like "12 page paper in project hist201, due apr 23 est. 8h high priority" and it understands what the hell you're trying to say: project, deadline, estimated time, priority. It also checks similar tasks (using naive Bayesian classifiers) and gets you a probability distribution of velocities (estimated / actual / relevance for a word), and supposedly, but I am still working on it, will show you a probability of finishing it on time given past history of similar workload.

The goal is to be able to either Tweet your new tasks, add them in bulk (several lines), or even do something like "http://taskulus.com/12 page paper in project hist201 due apr 23 est 8h high priority" and then receive a lot of analysis.

[+] jcapote|17 years ago|reply
Great idea, I have a ton of one-off side projects I'd love to share (and get some awesome hacker critique as well)

I've written a simple ruby worker management "framework" known as theman, which is a thin wrapper atop rufus-scheduler and god: http://github.com/jcapote/theman

Also, there's fieldy, a simple fixed-width field reader/writer library for ruby exposed as DSL: http://github.com/jcapote/fieldy

Lastly is AtomLog, a way to parse and expose ruby's Logger output to an atom feed: http://github.com/jcapote/atomlog

[+] mcantelon|17 years ago|reply
I'm working on an interactive fiction framework with a web framework flavour. It's my first Ruby project and depends on Shoes for cross-platform UI. Defining rooms, items, and non-player characters is done in YAML.

I'm about midway through the project and, as a test and demo for the platform, am converting the 1978 game "Pirate Adventure" to the framework. Once the framework is done my partner and I plan to use it to create an adventure game based on the fashion world. This will inevitably lead to a movie deal and untold riches.

All in all, it has been fun, educational, and a nice break from my day job wrangling Drupal.

The code (so far) lives here:

http://github.com/mcantelon/fashion-quest/tree/master

[+] delano|17 years ago|reply
Rudy! It's a development and deployment tool for Amazon Web Services that's configured via a Ruby DSL. It helps organize EC2 infrastructures into environments and roles (plus some other cool stuff).

http://github.com/solutious/rudy

    environment :stage do
      ami "ami-5394733a"
      size 'm1.small'

      role :app do
        positions 2
        addresses '11.22.33.44', '55.66.77.88'
        
        disks do                 # EBS volumes
          path "/rudy/disk1" do
            size 2
            device "/dev/sdr"
          end
        end
      end
      
      role :analyzer do
        ami "ami-6aff24aa"
      end
    end
[+] Zak|17 years ago|reply
I'm working on implementing a hyperspatial text classifier in Haskell. It's conceptually similar to the hyperspace classifier in CRM114 (essentially a weighted nearest-neighbor search), but shouldn't crash as much or corrupt its data files. I've thought of some interesting problems to point a fast and effective classifier at that aren't spam detection.

I'm also working on a library/framework in Clojure for apps that process a folder full of files in some way. The idea grew out of a Clojure program I wrote to make a folder full of images greyscale (http://github.com/zakwilson/imagesieve/tree/master).

[+] mahmud|17 years ago|reply
Zak, by classifier I hope you mean "categorizer". i.e. given a text and a list of categories, return which categories the text belongs to, along with a confidence number.

If so, I say chase that thought a bit. You might save me from actually messing with NLP.

[+] denik|17 years ago|reply
I'm working on improving eventlet: http://devel.ag-projects.com/~denis/eventlet/

Eventlet is a networking library that uses greenlet, Python implementation of coroutines [http://codespeak.net/py/0.9.2/greenlet.html] to handle asynchronous events in a synchronous way. Greenlet can be thought as an analogue to Python's enhanced generator, however, without "yield" keyword and the limitations it brings.

For the applications that are network-bounded it effectively brings Erlang-like scalability in Python: you can spawn as many greenlets as you like (they're cheap) (e.g. one or several per incoming connection), control their execution, etc.

If that sounds unclear, just look at the examples:

http://devel.ag-projects.com/~denis/cgi-bin/hgweb.cgi/file/t... http://devel.ag-projects.com/~denis/cgi-bin/hgweb.cgi/file/t... http://devel.ag-projects.com/~denis/cgi-bin/hgweb.cgi/file/t...

Compared to the original eventlet (home - http://wiki.secondlife.com/wiki/Eventlet) our branch has - a number of bugs fixed and "onions" removed - twisted integration - you can use any twisted reactor or twisted protocol or any other feature you like (this part is heavily influenced by corotwine) - proc module for advanced coroutine control (spawn, link, waitall, etc)

[+] anc2020|17 years ago|reply
Another programming language: http://www-student.cs.york.ac.uk/~anc505/code/hasp/hasp.html

I'm not doing any fancy compiler stuff - the target language is Haskell so that's all done for me.

*Edit: And I should probably say something about it :) Its an s-expression based language so it looks like a Lisp and you can use macros on it, it also reads by indentation if you want it to look like Python, and then the rest of it just comes from Haskell :)

[+] dchest|17 years ago|reply
I'm working on a short product(license) key generation and validation framework for Mac OS X based on elliptic curve digital signatures. The goal is to write a replacement for AquanticPrime (which uses long RSA signatures). It's based on OpenSSL.

Code: http://github.com/dchest/ellipticlicense/tree/master currently in pre-alpha stage.

Would love to get code/security review!

Also I recently wrote a very simple Bayesian classificator for spam in Python: http://github.com/dchest/pybayesantispam/tree/master

[+] jcbozonier|17 years ago|reply
Working on a messaging client that integrates Twitter and GTalk... And I mean really integrates. The end user doesn't know the difference between IM and twitter but the context in which the user sends a message decides the service to use. It's C# and WPF.

http://github.com/jcbozonier/alloy/tree/master

[+] agrinshtein|17 years ago|reply
That would be a really useful thing. Keep us posted when that goes live.
[+] swolchok|17 years ago|reply
Mentioned in some comment thread, but I just fixed LuckyTubes (http://www-personal.umich.edu/~swolchok/luckytubes/), my YouTube search/download/rip tool using youtube-dl and ffmpeg, to correctly rip the audio stream from the downloaded video without transcoding to 64 kbps MP3 (oops). It's called LuckyTubes because it does a "feeling lucky" YT search for the terms you type in. Code is at http://github.com/swolchok/luckytubes/ .

No code for this project, but UmBus (http://mbusreloaded.com/umbus) is my pet project to let UMich students get the GPS-estimated arrival times for the uni buses via text messaging. If I weren't so late to the party, I would try to compete with www.nextbus.com .

[+] bgimpert|17 years ago|reply
Back-testing a support vector machine -based text classification system that models daily stock news, looking for mispriced volatility. A big stealth project, with just the Ruby option pricer here:

http://tinyurl.com/chmk7p

Need much more realism than Black-Scholes for the model training!