Tuesday, October 8, 2013

There's light at the end of the table...


Light Table - a new IDE from Chris Granger on Vimeo.

Light Table is a cross platform code editor with a sleek interface and some really nifty features. I know what you might be thinking, "Oh great, ANOTHER editor." It's true, we have lots of editors already, but a lot of thought went into the design of this one. The closest approximation to an already existing editor would be TextMate with the main differences being that it's free and it's not restricted to just Mac users. It's still in alpha stage, but already quite usable. Probably the coolest feature is what Chris calls InstaREPL, which is basically like inline code evaluation as you type. So if I'm writing a Clojure program and I type (+ 3 4), on the other pane it prints (+ 3 4) => 7. It works with variables too.

It's not a one-trick pony. In keeping with the inline theme, to be reminded of what a function does, just put the cursor (click on) the function name, and the documentation for it appears on the other pane. Under the hood the editor is mostly written in ClojureScript with a little bit of Clojure to evaluate the ClojureScript. Node.js and Chromium are also used in the presentation. The editor currently integrates development with Clojure, Node.js, and Python. More languages are planned for the future.

Go go gadget selector!

SelectorGadget is a Chrome browser extension that will show you the CSS selector or XPath of the DOM element(s) you click on. It also allows you to refine the search string by adding or removing elements simply by clicking on them. For anyone doing screen scraping or DOM manipulation, this tool comes in very handy and it sure beats digging through the page source.

The name is a reference to the great old cartoon Inspector Gadget.

Friday, September 20, 2013

Ringing Overtones and Super Colliders

Overtone is a Clojure-based frontend to the SuperCollider audio programming environment. Clojure (and functional programming in general) has piqued my interest and taken me on a trip down memory lane when I was a wannabe Perlmonk, and way back in elementary school with the Lisp-based Logo Writer program that used a little turtle to drawn designs on the screen. It's made me realize that I have more experience in functional programming than I initially thought. Several years of object oriented languages have made Clojure feel a little alien, but it's starting to come back to me. When I told my dad I was learning a Lisp dialect, he said, "There was a saying years ago like there's two kinds of programming languages: Lisp, and everything else." I don't know if Lisp is really that different, but it gave me a good laugh.

But I digest...

Overtone, along with Leiningen, nREPL, Emacs Live, and SCIDE becomes a powerful realtime composing environment. Combine it with Quil, a Clojure frontend to Processing, and add visuals to the performance. Because Clojure runs on the JVM, one has access to all that implies. Already my head is spinning trying to conceive of the power to craft sounds and visuals as fast as you can type them.

Thursday, May 30, 2013

Create a blog using Behavior-Driven Development

Reposted from oembot.tumblr.com: This is how to design robust dynamic web applications with Ruby on Rails. This is a simple yet effective example of Behaviour-Driven Development with code examples.

Sunday, March 24, 2013

Valuable Sound Tools

Sound design and music production are more accessible than ever before. There are dozens of free and open-source projects for producing, altering, enhancing, modulating, mixing, and analyzing sound with a computer, and as computers are now more capable and accessible than ever before, I've decided to write this article. I got into music production through the demoscene back in 1998. Using tracker software I began remixing existing songs and learning how they were put together, then I began creating my own compositions. As this process was autodidactic, early efforts were...well let's just say that nobody will ever hear them. Even back then, there was a plethora of resources for the up-and-coming computer musician to get started with a modest investment.

Fast forward to today. Symmetric multiprocessing, social media, and multi-touch devices have added several new dimensions to the game. It's not unheard of for people to perform an impromptu DJ set or musical performance using their laptop, tablet, or smartphone. As with all other forms of intellectual property, self marketing and distribution of music is now easier than ever. Except for a computer, you no longer need expensive hardware to make music. Let's look at a few software projects that might put the current state of computer music in perspective. VST plugins are great. Better than great, in fact, they're AWESOME. The modular combinations of instruments and effects allows literally infinite possibilities for creating and manipulating sound. KVRAudio is an excellent resource for modular music making. Their database lists at the time of writing 2500+ free plugins counting VST, DirectX, AU, RTAS, and LADSPA/LV2/DSSI. Gersic.com's database lists almost that many free plugins. These are just two of many sites that catalog audio software. Until about 2005, VST plugins were traditionally created in C++, the language of Steinberg's VST SDK, or sometimes Delphi (Object Pascal). Now thanks to some outside the box thinking, the programming languages one can use to create plugins for this industry standard format are numerous.

VST.NET - Marc Jacobi's laudable effort to allow plugins to be written in any .NET language. He also created a related project MIDI.NET which brings MIDI IO to the .NET platform. Keep in mind the Mono Project which makes .NET software cross platform.

JVSTWrapper - Daniel Martin's brilliant project to make it possible to create cross-platform VST plugins that run on the Java Virtual Machine. Daniel's wrapper has inspired:
  • ClojureVST - Write plugins in the Clojure dialect of Lisp.
  • Opaz-PlugDK - Write plugins in any combination of JRuby, Mirah, and Java. The generated plugins are automatically prepared for use on Windows, Mac, and Linux.


JVSTHost - A Java-based cross-platform VST host written by Martin Roth and Matthew Yee-King aims to work with as many plugins as possible, including those created with JVSTWrapper (and Opaz and ClojureVST).

Frinika - A cross-platform digital audio workstation containing sequencer, MIDI support, software synthesizers, audio recorder, and piano roll/tracker-style/notation editing. Written in Java, this program is unique in that it allows the user to edit a track in a piano roll interface, a tracker interface, or traditional music notation.

Ari Russo has created a number of Ruby-based tools for sound and MIDI, including domain specific languages for Open Sound Control and MIDI.

This is just a sample of open source projects that you can start using right now to compose music. Whether you use Windows, Mac, or Linux, all of the software listed here is supported by your OS. These projects range from compiled to interpreted and dynamic languages, and the possibilities are only limited by your imagination.

Wednesday, February 6, 2013

The Case for Wikipedia

From the About Wikipedia page:

Wikipedia (i/ˌwɪkɨˈpiːdi.ə/ or i/ˌwɪkiˈpiːdi.ə/ wik-i-pee-dee-ə) is a multilingual, web-based, free-content encyclopedia project operated by the Wikimedia Foundation and based on an openly editable model. The name "Wikipedia" is a portmanteau of the words wiki (a technology for creating collaborative websites, from the Hawaiian word wiki, meaning "quick") and encyclopedia. Wikipedia's articles provide links to guide the user to related pages with additional information.

Wikipedia is written collaboratively by largely anonymous Internet volunteers who write without pay. Anyone with Internet access can write and make changes to Wikipedia articles, except in limited cases where editing is restricted to prevent disruption or vandalism. Users can contribute anonymously, under a pseudonym, or, if they choose to, with their real identity.

The fundamental principles by which Wikipedia operates are the five pillars. The Wikipedia community has developed many policies and guidelines to improve the encyclopedia; however, it is not a formal requirement to be familiar with them before contributing.

Since its creation in 2001, Wikipedia has grown rapidly into one of the largest reference websites, attracting 470 million unique visitors monthly as of February 2012.[1] There are more than 77,000 active contributors working on over 22,000,000 articles in 285 languages. As of today, there are 4,130,994 articles in English. Every day, hundreds of thousands of visitors from around the world collectively make tens of thousands of edits and create thousands of new articles to augment the knowledge held by the Wikipedia encyclopedia.

People of all ages, cultures and backgrounds can add or edit article prose, references, images and other media here. What is contributed is more important than the expertise or qualifications of the contributor. What will remain depends upon whether it fits within Wikipedia's policies, including being verifiable against a published reliable source, thereby excluding editors' opinions and beliefs and unreviewed research, and whether the content is free of copyright restrictions and contentious material about living people. Contributions cannot damage Wikipedia because the software allows easy reversal of mistakes and many experienced editors are watching to help ensure that edits are cumulative improvements. Begin by simply clicking the Edit link at the top of any editable page!

Wikipedia is a live collaboration differing from paper-based reference sources in important ways. Unlike printed encyclopedias, Wikipedia is continually created and updated, with articles on historic events appearing within minutes, rather than months or years. Older articles tend to grow more comprehensive and balanced; newer articles may contain misinformation, unencyclopedic content, or vandalism. Awareness of this aids obtaining valid information and avoiding recently added misinformation.


Because of its open nature, its non-profit status, and its multi-lingual platform for sharing information, the Wikimedia Foundation relies on donations to stay in operation and improve its offerings. This is the Case for Wikipedia (and other Wikimedia projects.) Please give whatever you can so that this amazing resources is available in the future, whether it be a one-time donation, continual financial support, or writing and/or improving content.