Hi, my name is Andreas, figuring on Github under the alias @ciscoheat. My language of choice is Haxe, and with its power and elegance I'm trying to create useful libraries in the spirit of simplicity and synergy.

Haxe libraries

All of these are available on haxelib for a quick install.

The list is sorted in order of "importance", where importance is my estimation of how much the library will impact your thinking, programming style, and other long term benefits.

Name Targets Description
haxedci All Taking programming into the next era with the DCI architecture. If you take your time to study and understand this paradigm created by the author of MVC, you will become a better programmer, guaranteed.
HaxeContracts All Contracts is a way out of the wasteful unit testing that the current programming paradigm force most programmers into. Using Contracts you will move tests into program code, and greatly improve the integrity of your objects.
buddy All The interesting things in a system usually happens between objects, and this is where most code-based testing should be. Buddy is a BDD library for helping you move the testing mentality upwards, from method-level to interactions between objects.
dataclass All Data is the very foundation of a system, representing what the system is (compared to functionality that represents what the system does). DataClass helps you define the foundation of your system, simple data objects, using a minimal Haxe syntax. Here's a crude DataClass generator
immutable All Enforce your objects to be immutable, both class fields and local vars. Local vars vill behave similar to const and let in ES6. This helps you to think of data in a more functional and also event-like manner, when it becomes something that cannot change.
mithril-hx Browser, Node.js Mithril is a small, yet great javascript MVC framework that is faster and more flexible than most others. Here are Haxe externs for this library, which lets you solve complex problems with simple tools.
slambda All Do you crave Short Lambdas? Understandable, every other language have them. Here's a tiny library that adds those convenient x => x + 1 expressions to your Haxe code with a single using statement.
asynctools All A partial port of the Async.js library, with macros for simplifying asynchronous programming.
haxelow Browser, Node.js, Others A small, flat JSON database library, if you need to store Haxe objects strongly-typed in JSON.

Haxe-related

Name Targets Description
empty-haxe-project Neko, Node.js, Browser A convenient starting point for a new project, or if you just want to play around and get started quickly. Clone the branch of your choice from the repo, then follow the README.md instructions.
viagrant All and more If you're using Vagrant, this will get a box with all your Haxe needs up and running in a few minutes. It also supports LAMP, a very convenient CMS, concrete5, and some other goodies.

Synergy between the libraries

Here's how I picture a system using the above libraries:

Setting up

  1. Clone empty-haxe-project to a directory and follow the README.md instructions to rename the project
  2. If you want, use viagrant to create the configuration for a Vagrant virtual machine in the same directory, starting it with vagrant up.

Designing the system

  1. Create the data objects with dataclass and validate their integrity with HaxeContracts when needed. Remember to make them immutable when possible.
  2. Use buddy to draw up the guidelines for the system behavior using pending tests
  3. Let the data objects interact in Contexts with the help of haxedci, fleshing out the pending buddy tests with testing of the Contexts. HaxeContracts will be of use too in the Contexts.

Programming style

  1. Use slambda for functional programming and asynchronous calls with short and convenient lambda expressions.

Implementation details

  1. Let users interact with your system in an impressive browser app built with mithril-hx
  2. For data storage where speed isn't a big concern, use the convenient JSON storage of haxelow.

Contact info

If you want to give feedback for a specific library, I appreciate if you open a Github issue for it. If you want to get in touch about anything else, my email is ciscoheat AT gmail, and I also twitter quite infrequently under the name thedciguy. Hope to hear from you!

/Andreas