Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: Brag about open-source projects you're proud of
76 points by kristopolous on April 24, 2015 | hide | past | favorite | 79 comments
Do you have a github project with hundreds of commits, meticulous documentation, but only a handful of stars? Feel like you can't get the marketing sauce right?

I've talked with many developers who have been maintaining passion projects for years without any decent recognition of their efforts.

I'd like to do a little to change that! Please list the projects you are most proud of along with their project URLs. Go ahead and say why it's awesome.

I want to give a way (right in this comment thread) for people to self-promote those things that get overlooked.

Thanks.



WebODF.

http://webodf.org/ https://github.com/kogmbh/WebODF https://adityabhatt.wordpress.com/2013/12/16/bringing-opendo...

A js library that renders OpenDocument Format docs in the browser, and lets you edit them collaboratively in realtime - with lovingly, meticulously crafted OT.

We worked on this with 2 years of active development - it is HARD to build a full richtext editing engine from scratch! - but it has recently been suffering from a lack of enough funding to keep the work going. I no longer get paid to work on this, so now there is only one person working on it full-time.

It deserves funding and support. As far as I know there isn't any other project that comes this close to building a full blown FOSS Google Docs text editor replacement.

:)


Darn, I actually went to the site looking for a 'donate' button, but it looks like it's commercially backed. I definitely want something like this to exist.


The project can take donations and we did work supported by grants from the NLNet Foundation (http://nlnet.nl/) for a while. It is commercially controlled in the sense that KO GmbH has a CLA that contributors sign. But the project itself is AGPL (with pretty standard dual-licensing).

Thanks for the kind words! :)


Wow, this is huge.

This might actually replace a whole category of intranet wikis.


Really cool. Best of luck. Hope it succeeds!


Django Baker

Adds a management command that generates views, forms, urls, admin, and templates based off the contents of models.py.

It's a bit like Rails scaffolding, but less magical. For each view it creates, for example, it will include stubbed out versions of almost all the methods and attributes you can override, in the order that they get called. The most "magical" part are the admin files that get generated, as they make use of a mixin I wrote that makes (hopefully) intelligent choices for list_display, list_filter, search_fields and automatically links to the related objects for each ForeignKey/OneToOneField. All the default choices are easily overridable.

https://github.com/krisfields/django-baker

It's not a big project but it's my first open source contribution so I'm proud of it nonetheless.


Auto-Sort Bookmarks (Firefox add-on): https://github.com/antoyo/auto-sort-bookmarks It provides a way to sort all bookmarks and automatically sort bookmarks. By the way, I planned to rewrite it in OCaml. I started the binding of the add-on SDK (here it is: https://github.com/antoyo/oc-addon-sdk).

Vim Licenses (vim plugin): https://github.com/antoyo/vim-licenses Vim Plugin that provides commands to add licenses at the top of the buffer (very useful when working on open-source projects).


I've spent some good time on: https://github.com/appnexus/sicksync

It's a one-way syncer utility in Node, and backed by a CLI. I Was tired of Ruby file watchers running rsync and waiting the seconds it took for file synchronization. So I wrote this which uses WebSockets to persist a connection and send deltas much quicker. Ideal for small, iterative changes (front-end).

Is it secure? No. Does it work for everything? Probably not. But it get's me waaay more productive than I was.


http://introtopython.org

http://github.com/ehmatthes/intro_programming

It got some stars when I first introduced it about a year ago, but I'm mentioning it because I've just picked up development on the project again. It's a site to help people teach and learn Python. I wanted to make an easy way for experienced Python devs to contribute to a site that helps people learn Python.

Key features:

- If you can use IPython Notebook, you can contribute to the project. Every page is an IPython Notebook that gets converted to html. To edit a page, check out the project and edit the notebook.

- If you want to add a tutorial - for example, a tutorial about how to use PyGame, or how to use a specific data visualization tool, or any specific Python library - just make a new notebook, write your tutorial using IPython Notebook, and run intro_programming/scripts/build_html_pages.sh.

I just pushed a branch that updates the infrastructure to IPython 3.0. I'm a day or two away from updating the first project on the site, which shows how to plot recent earthquakes on a world map - that project has been well received for the last year. (http://introtopython.org/visualization_earthquakes.html)

If you're interested in helping out, get in touch or open an issue.


It's not code, but if you're designing a website or app, I created some free simple device templates (phone, tablet, web browser) to help you sketch your ideas on paper.

They're CC licenced and you can create your own print templates:

http://www.interfacesketch.com/


What a clever idea. Thanks!


Downloading! Thanks! =)


My most recent is "React Resolver":

> https://github.com/ericclemmons/react-resolver

When React came out, I was disappointed that server-side rendering was pretty much impossible unless you knew _all_ of the data requirements for the entire render tree & loaded them up front.

This project has just underwent a rewrite for React v0.13 that I'm pretty proud of, since it's ES6 and packaged as ES5 via Babel.

It's been fantastic in my personal & work projects, and has made it possible to rebuild a major application that was in PHP entirely in Node w/ progressive enhancement.


Django SQL Explorer

https://github.com/epantry/django-sql-explorer

Engineers or analysts write SQL queries, and share them with anyone in the business who needs the data to make decisions. Through over a year of heavy, daily real-world use, I've added dozens of little usability features that make it (for me at least) really pleasant to use. It's still a pretty under-the-radar Django app, but I literally can't imagine life without at, at any business I've ever worked at.

Explorer can also expose select queries as read-only pages to specific users and we use this feature to keep investors and partners up to date on key metrics and financials which saves a lot of time and ad-hoc reporting. Just go to a URL and BAM! Real time data, downloadable as CSV.

I've also documented the version and license of every dependency to make it as easy as possible for businesses to go ahead and use it. And finally, it's extensively tested via automation, and our own internal deployment which is always running off the tip of master. We dogfood every commit quite heavily.


This looks awesome! Good work.

I'm going to try it out with my next Django project.


My "Patterns of Resemblance Arithmetical Library (PORAL)" is, in a formal sense, one of the most sophisticated pieces of software ever written: the ordinals it can perform arithmetic upon are so large, they require nontrivial fragments of set theory just to prove they're really ordinals. Some of the algorithms implemented in this library were recently printed in "Archive for Mathematical Logic", a hardcore logic journal.

Github: https://github.com/semitrivial/poral


I have three that I'd love to give more exposure to:

Hawkeye - https://github.com/ipartola/hawkeye. This is a webcam streaming server for the Raspberry Pi + cheap webcams. I wanted a simple, extensible webcam monitoring system for the nursery, so I built this. You can use a cheap USB webcam that supports MJPEG video, and Hawkeye has a built-in HTTP/HTTPS server for streaming the video to desktop or mobile browsers. The included "client" is just a basic HTML page that lets you view multiple streams. The project is written in what I consider fairly readable C. The whole thing can be easily built into a Debian package so maintenance is pretty simple, and init scripts just work.

groper - https://github.com/ipartola/groper. groper is a configuration library that Python's stdlib is really missing. Python comes with argparse for command line arguments, and the config parser module for parsing config files. It is your job to make the two work together. groper takes all that pain away from you. You simply define what stuff is configurable and what names it should use, and it will take care of order of precedence, etc. Works with Python 2 & 3, and will even generate sample configs for you based on your defaults. A former employer of mine uses it extensively, and so do a few other projects.

LogHog - https://github.com/activefrequency/loghogd. My current employer, Active Frequency, LLC (https://www.activefrequency.com/) sponsored my work on this. LogHog is a logging facility similar to syslog, but not compatible with it. Instead it supports a few advanced features (encryption, HMAC, built-in file rotation and compression) and basically Just Works. If you have ever tried to set up syslog logging with Python and got frustrated, give this a go. Active Frequency uses this for some of our projects, and it works really well for the most part (except that TLS, which works but configuration still has some sharp corners).


Gumbo HTML parser:

https://github.com/google/gumbo-parser

It's one of the most conformant (if not the most conformant - 0.10.0 passes all html5lib-trunk tests) standalone HTML parsing libraries out there. It has third-party bindings in nearly a dozen different languages. The API is simple, the code is robust and well-tested, and being written in C, it's often a fair bit faster than alternatives.


Looks interesting. Does it parse html in chunks? (I am actually looking for html5 parsing library that does it in chunks in C).


No, it reads in a whole string at once and then parses it as a single document. It's actually pretty hard to parse HTML in chunks, because the spec allows for text that comes later in the document to alter the parse tree of nodes produced earlier (see, for example, foster-parenting or the adoption agency algorithm). You could take a look at Hubbub as a callback-based HTML5 parser, but the way that works is to take a callback interface where you need to implement 18 or so different functions.

http://www.netsurf-browser.org/projects/hubbub/


https://github.com/qq99/muvee - μv, a mix of concepts like Plex, Netflix, Popcorn Time for your LAN, with Hue light support. I'm working on this one regularly and use it frequently at home

https://echoplex.us/ - anonymous chat, code, draw, WebRTC calls, with PGP support. Much less maintained nowadays


https://github.com/LeadDyno/intercooler-js - Giving you 95% of the functionality of a client-side MVC framework at 5% of the complexity.

Main site at http://intercoolerjs.org

I'm particularly proud of how well history-aware AJAX is working out: you just add an ic-push-url="true" attribute to your element, and, blam, AJAX is integrated with your apps history. See:

http://intercoolerjs.org/examples/history.html


... that's a lot of work. Thanks!


* Deeplearning4j - distributed DL for the JVM https://github.com/deeplearning4j/deeplearning4j

* ND4J - Scientific computing for the JVM https://github.com/deeplearning4j/nd4j

* Vectorization lib for Machine Learning Tools https://github.com/deeplearning4j/Canova


http://zealdocs.org/ - 2 years old dev documentation browser. Maybe not exactly overlooked with 2400 GitHub stars, but never hit HN frontpage, and 0.1.1 was recently released. :D


I really love Zeal, but I wish the documentation files weren't being hosted from Dash's servers. If Zeal were available on OSX I'd use it in an instant.


Thanks! You can compile it for OSX yourself with some effort, but it's not going to be supported any time soon due to agreement with Dash's author, and is ugly being cross-platform as opposed to native like Dash.


https://github.com/endeav0r/hsvm - 16-bit virtual machine with a bunch of reversing and exploitation challenges.

https://github.com/endeav0r/rdis - Visual reverse-engineering tool for Linux with custom graph layout stuff.


That documentation is so awesome.

You may think about doing a version with https://github.com/kristopolous/BOOTSTRA.386 ...


I don't know why, but a perceptual hasher I wrote for PHP is apparently moderately popular (at least for me): https://github.com/kennethrapp/phasher

Chances are I won't be updating it anytime soon though, because I have so many other projects, so feel free to fork it and/or drop a pr, which i'll get around to merging eventually.

I'm personally kind of proud of another project (https://github.com/kennethrapp/embedbug) which I meant originally to be a self-hosted replacement for site profile services like embed.ly, but which has kind of grown into a general purpose xpath based web crawler. I've been using it in various toy forum and news aggregator projects and it seems to work pretty well, although of course it's only one of countless crawlers out there.


I wouldn't call it overlooked and it's probably not the typical open source project, but I'm quite proud of this, so here is it:

https://acoustid.org/ https://bitbucket.org/acoustid

There has been a few attempts at open source audio fingerprinting service before and after AcoustID, but none of them survived for long. It's been 5 years since I started working on this. I'm particularly proud of the project, because I have done it the way I think software should be done and it worked wonderfully. I spend a lot of time researching, then ran some experiments, set myself some goals of what is practical to do and what exact use cases I want to support, designed and implemented it and then I was able to run it without any scaling problems for years.


Perhaps more people would find it if you moved it to Github. It doesn't take much time...


It was originally on GitHub and I moved it to Bitbucket after GitHub decided they do not want to host release files.


https://github.com/web2project/web2project

I've been the lead for Web2project for the years since we forked from dotproject. In the simplest terms, we're a project management system but unlike something like Basecamp, we handle dependencies, logging time on tasks, accounting for projects costs and a ton of other things.

At present, we have a small community, but we have a few thousand installs ranging tiny two-person shops who have a ton of things going to at least one US Air Force Base.

The biggest challenge since our fork was dealing with the old code and continuing to support older versions without leaving people without a path forward. I put a ton of time into making sure the upgrade/update process works smoothly and no data is lost.


An underappreciated project of mine is [langcodes], a Python package for looking up, comparing, and doing the right thing with IANA language codes. It's not a full-blown toolkit for localization, it just does this one thing well.

A project that finally got some appreciation after a couple of years is [python-ftfy], which Fixes Text For You. It repairs mojibake, and generally takes in bad Unicode and outputs good Unicode.

[langcodes]: https://github.com/LuminosoInsight/langcodes

[python-ftfy]: https://github.com/LuminosoInsight/python-ftfy


Not mine, but I've always thought how this is not mainstream...

https://github.com/duplicati/duplicati

http://www.duplicati.com/

Duplicati is a backup client (with GUI) that securely stores encrypted, incremental, compressed backups on cloud storage services and remote file servers. It works with Amazon S3, Windows Live SkyDrive, Google Drive, Rackspace Cloud Files or WebDAV, SSH, FTP (and many more). Built-in AES-256 encryption and backups can be signed using GNU Privacy Guard.

PS: This should be a monthly thread like "who's hiring"!


The original project that Duplicati was forked from, Duplicity, is very well known.

Other than GUI and Windows (VSS) support, I couldn't easily find how Duplicati diffentiated itself... might be nice to have a "Duplicati vs Duplicity" page?


I have quite a lot of open source projects, mostly just little utilities or interesting experiments. https://github.com/martindevans?tab=repositories

The one I'm most proud of is probably MumbleSharp (https://github.com/martindevans/MumbleSharp) which is a complete implementation of the mumble protocol in C#. It's actually getting fairly close to complete, it can handle all functions except sending voice.


https://github.com/MachinePublishers/jBrowserDriver is a Selenium WebDriver that runs headless, is pure Java, and runs fine on a standard JVM. And most people use these web drivers because they need to parse AJAX sites, yet most web drivers have terrible support for it. Mine does a pretty good job of knowing when a page is loaded, including its asynchronous requests, whether from the page load or subsequent clicks/actions.

There are some missing features and bugs still but it's working pretty well.


Snebu ( http://www.snebu.com and https://github.com/derekp7/snebu ) is a Linux backup system that works kind of like rsync snapshot backups (i.e., similar to rsnapshot). Except it stores backup sets meta data in an sqlite database, and the files are stored as lzo compressed objects. Other than the standard features such as backup retention schedules, it has a number of small features that I haven't seen in a lot of similar backup utilities:

* Path rewriting (grafting) -- this lets you mount an LVM snapshot somewhere, and the backed up copy can be stored referencing the original path (i.e., if you backup a snapshot of /srv/mydbfiles mounted on /mnt/snapshots/mydbfiles, you can tell it to store it on the backup server as if it was backed up from /srv/mydbfiles). This also works the other way for restoring files.

* Safe expiring of old backups -- Let say you haven't backed up a particular host for a number of months (i.e., it has been decommissioned). When you tell the system to expire all backup older than 6 months, it will by default keep the 3 most recent backups [this number is tunable on the command line].

* Multiple user / granular permission support [ in the development branch, should make it in the next release ] -- You can give a given user ID the ability to backup but not restore, or backup and restore but not purge old backups, etc. That way if a host is compromised, you can ensure that an attacker can't delete backups from that compromised host.

* If used in client/server mode, you can back up a client from the server without installing anything other than an SSH key (it just calls GNU find/tar on the client).

Things missing that are currently being coded up:

* Client side encryption

* Multiple backend support (to support tape or cloud replication)

* Local shadow copy -- lets you back up a laptop to a network server, but also do incremental snapshots to a local USB device when not on the network, and sync that to the network copy periodically.



ido-ubiquitous for Emacs: https://github.com/DarwinAwardWinner/ido-ubiquitous

A lot of people probably use this Emacs package without knowing it, since several "starter kit" Emacs config templates use it by default. It aims to completely replace emacs completion with ido[1] completion.

[1] http://emacswiki.org/emacs/InteractivelyDoThings


- jsChan [https://github.com/graftjs/jschan]. Our javascript implementation of Docker's libchan library. It implements the same kind of semantics that Go channels have, but over the network, and using node streams. Since it is based on the capabilities of SPDY, it allows you to embed additional channels in messages. So i could request a page, but give you a return channel to write the document to. instead of waiting for the response.

- Graft [https://github.com/graftjs/graft]. Our attempt to determine what microservices taken all the way to the browser would look like. It's a higher level library built on top of jschan. The idea is to be able to use node streams interchangeably on both sides of the pipe, with the communication managed by libchan ... and work invisibly over SPDY or websockets or whatever.

Unfortunately, SPDY was replaced by http2, which meant that libchan went under construction for a bit while the library support was figured out. At the same time, io.js happened. And now there's a very fastly evolving streams spec that is feeding on the whatwg effort to standardise a stream spec for the browser and node.

I am going to take up the mantle again, but there needs to be some settling of the ecosystem first. =\


doctest.js: http://doctestjs.org/ | https://github.com/ianb/doctestjs

Testing system for Javascript, explicit and example-based, with nice support for async testing, and I think it treats test failures particularly nicely. I think it's a way better model than BDD. But no one has ever really cared about doctest.js, even to complain...


https://github.com/cfwheels/cfwheels - Rails ported to CFML

was on this for a while. learned alot from the awesome team.

https://github.com/rip747/cfml-liquid - CFML Port of the Liquid Templating language

always wanted liquid available for CFML so I put my time where my mouth was and did it myself. learned a ton and had an awesome time doing it.


https://github.com/pjungwir/db_leftovers - Rails without the data loss. ;-)

https://github.com/pjungwir/aggs_for_arrays - C functions to compute stats on PostgreSQL arrays.


I recently made the code for my newsreader side project public: https://github.com/charlieegan3/serializer (hosted at http://www.serializer.io)

I don't know about pride but I'm pretty happy with it.


RobotsAnywhere.

http://robots-everywhere.com/re_wiki/index.php?n=Main.Softwa... Released early 2010, full Android robotics stack.

(It is "open source", but I want people to email me for the source because... well, it's interesting to chat).


Dust.js (http://www.dustjs.com/)

Dust is flexible asynchronous templating for both the browser and server.

The project languished for awhile, which I think led to it falling by the wayside popularity-wise. I picked up development last year, and the last nine months or so have seen rapid improvement of the language and documentation.

I feel like Dust would fit many use cases way better than people's current templating solutions. Because it's asynchronous, you can put Promises and Streams right into your template variables, and Dust will handle them properly.

So for example, you can pass ReQL cursors straight into Dust, and it'll stream them into the template, so you get progressive rendering in the browser without buffering the whole result set in memory.

    r.table("messages").orderBy({index: "date"}).run(conn, function(err, cursor) {
      dust.render("inbox", { messages: cursor }).pipe(res);
    });


JarMan, for working with Java archives (JAR files). You can check the manifest, see if the JARs listed in the manifest's classpath exist, browse the methods, interfaces, etc. of a class file in the JAR, etc. I've found it handy.

https://github.com/argonium/jarman


At the moment Anvil is my favourite child:

- https://github.com/zserge/anvil - a new reactive UI library for android. It totally changed the way I develop android apps now.

Also there is some tiny ones, but found useful over the years:

- https://bitbucket.org/zserge/jsmn/wiki/Home - JSMN, a very fast and lightweight JSON parser for embedded systems

- https://bitbucket.org/zserge/mucks - A wrapper for Tmux/Screen/DVTM to keep persistent terminal sessions. Usefule when you use terminal as an IDE

- https://bitbucket.org/zserge/gambiarra - minimalist Lua unit-testing library


http://utter.io/

Mostly operational framework for implementing lightweight federation with OpenStack and Bitcoin. Worked on it for a year before starting to work again as a technology evangelist. Still noodling on it when I have time.


Not mine (but I am using it in production and it fits the brief down to a tee).

The world's best open source content management system https://github.com/SpontaneousCMS/spontaneous


Leaps, another Google Docs clone except written in Golang. It comes with a web UI for hosting your own pair programming environments.

http://jeffail.github.io/leaps/

The above link has a three step guide for pair programming your local files over LAN (including installation). The service is quite flexible and also allows you to share hosted documents through MySQL and postgreSQL and do things like user authentication etc.

I have a pair programming website set up as a proof of concept that uses leaps with postgreSQL here: https://megrim.uk/, it's hosted across three ARM micro computers under my sofa so go easy on it.


Javascript database - https://github.com/kristopolous/db.js

Javascript event system - https://github.com/kristopolous/EvDa

* Self-contained

* Piecemeal

* Vertically sophisticated - simple things remain simple; hard things remain possible

* Focus on pleasant, consistent, ease, and flexibility

My end-users are programmers and my UX is the API and documentation.

I care about facilitating both novice and experienced programmers equal enjoyment and proportional productivity with the most minimum ramp-up necessary.

If I have to think about how to do it in the library or look up how to invoke things, I consider that an impetus for re-design.


JSON Archetypes: https://github.com/servant-app/json-archetypes

Community-Driven Standards For Popular Types Of Data in JSON.

Think Products, Blog Posts, Events, Contacts, etc.


NAVCOM AI, full autopilot for various class of vehicles... in 2007.

http://robots-everywhere.com/portfolio/navcom_ai/


https://github.com/longshoreman/longshoreman

Longshoreman is a simple solution for deploying Docker containers to a server cluster.


https://github.com/dieselpoint/norm

Norm is a lightweight layer over JDBC. Access a database in one line of code.


http://sourceforge.net/projects/oovcde/ - creates C++ analysis diagrams


Out of curiosity, is sf.net your preference for FOSS hosting in 2015?


Hammerspoon - crazy powerful desktop automation for OS X. https://github.com/Hammerspoon/hammerspoon

We get a few hundred downloads of each release, but I like to think that the market for people who want to program their desktop, has to be a bit bigger than that :)

(Our website sucks, which probably doesn't help, but we don't currently have any contributors who are good at making pretty web sites)


»A Beg­inner’s Guide to Finding User Needs« read: http://jdittrich.github.io/userNeedResearchBook/ source: https://github.com/jdittrich/userNeedResearchBook

Is a free/libre guide teaching how to find out what your users’ needs are.


mountebank - the first open source tool to provide multi-protocol over the wire test doubles.

http://www.mbtest.org/ https://github.com/bbyars/mountebank

There are some excellent HTTP/S stubbing libraries out there but no open source ones that let you also stub other protocols. mountebank was first built to support testing Java serialization over a mule-based TCP layer, supports HTTP/S, SMTP, and I'm working on first-class SOAP support. The only tools that provide this capability today are commercial (e.g. CA Lisa) and not nearly as friendly to CI/CD practices.

By the way, thanks for this thread. Independently of my own self-promotion, it's a great idea. Great open source developers are rarely good marketers, which means the best tools often rot in obscurity, and users of the tools rarely recognize that they can help by the simplest of actions. Find the ones you like on this page, star them, fork them, link to them. Help the open source community shine.


AppFS ( http://appfs.rkeene.org/ )

It's a "universal package format". It's similar to lazyfs (from 0install) with a bit more structure for packages. It's digitally signed from end-to-end. It uses FUSE. It supports writing, SUID files, and advanced configuration which can be updated at runtime without unmounting.


Droopescan, a plugin-based scanner that aids security researchers in identifying issues with several CMSs, mainly Drupal & Silverstripe.

https://github.com/droope/droopescan

I've been working on it for heaps! Sponsored in part by the company I work for, I reckon it's pretty decent ^^


Hacker News Android app: https://github.com/hidroh/materialistic

API testing with Cucumber: https://github.com/hidroh/cucumber-api


jsLPSolver. https://github.com/JWally/jsLPSolver

Easy to use, kind of quick linear programming / mixed integer linear programming solver in javaScript that takes models as easy to understand javaScript objects instead of tableaus.


I created shortcode engine for PHP, already battle-tested: https://github.com/thunderer/Shortcode . I'm proud of it because it's well engineered and it is not copied from WordPress nor it relies on WP.


http://playtomic.org/ / https://github.com/playtomic is a bunch of services for game developers, self-hosted and very cross-platform.


SeaweedFS Distributed File System

https://github.com/chrislusf/seaweedfs

Seaweed-FS is a simple and highly scalable distributed file system. There are two objectives: to store billions of files! to serve the files fast!


libeot: Convert EOT (Microsoft proprietary embedded fonts) to TTF. https://github.com/umanwizard/libeot

As far as I can tell, the only free software capable of doing this.


json-sempai: Use JSON files as if they're python modules! https://github.com/kragniz/json-sempai

It's entirely dumb and not very useful.


keystonejs.com a Node CMS kinda like wordpress meets django


put the http:// in front of it so hn makes it clickable.



> Please list the projects you are most proud of along with their project URLs.

This is what the "Show HN:" submission convention is for.


worked on a small petproject to enable annotations in javascript (https://github.com/warmuuh/yaap) just for fun ;) (its not that practical, but in combination with wire.js, its quite fun to work like with Spring)


Ket (http://sourceforge.net/projects/ket/)

For most trivial algebra, it's quicker to use paper and pencil than a full algebra system. Ket is a faster alternative with the benefit of clipboards, save/load and export to LaTeX and HTML.

Most algebra consists of recombining existing expressions. These can be added in plain text and substituted into one another by clicking and dragging one equation into another. You can then reorganize the resulting equation using click-and-drag algebra by dragging terms to different parts of the equation, e.g. y=mx+c y-c=mx (y-c)/m=x x=(y-c)/m.

Most real-world algebra problems require translation from real-world information into a coherent mathematical framework. For simple cases, the standard approach is the back-of-the-envelope calculation. This shows only enough working to keep the idea organized in your mind as you solve it. This part of a maths problem is more akin to writing the first draft of an essay. That is, you list relevant known equations and solution fragments which you organize into a coherent narrative.

For this you need an algebra-centred text editor. Most of the time spend doing algebra on computers or on paper is writing and rewriting respectively. To avoid this, Ket is a modal editor (built around Vim-like commands) in which keyboard letters correspond to simple editing commands. That is, the editor focuses on transforming existing expressions and only incidentally on adding new ones. In addition to redrafting working, with each command, the user performs an algebraic step.

A text editor represents a line of text as a list of characters. Ket represents an equation as a tree of functions, constants and variables. And instead of a cursor editing around a particular character, editing takes place around a tree branch. So editing commands edit a function, variable or value at a time in plain text while keeping the larger whole in conventional mathematical notation. And because each command is a single key press, each editing step is as quick as touch typing. Furthermore, while some commands perform algebraic transformations, others simply edit the data structure. This is analogous to algebra on paper where symbols are cancelled by scoring them out.

A text editor represents an essay as a list of lines of characters. Ket represents a document as a list of equations where each is represented as a tree of functions, constants and variables. Instead of a cursor editing around a particular character, editing takes place around a tree branch. So editing commands edit a function, variable or value at a time in plain text while keeping the larger whole in conventional mathematical notation. And because each command is a single key press, each editing step is as quick as touch typing. Furthermore, while some commands perform algebraic transformations, others simply edit the data structure.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: