April 2013
2 posts
TraceGL: A JavaScript Codeflow Visualization and...
Rik Arends has just released TraceGL, an interesting JavaScript codeflow debugging tool using WebGL for its UI rendering.  Described as “an oscilloscope, for code”, TraceGL is an improvement on the familiar step debuggers that can be found in browser dev tools like Chrome, Firebug, and now Firefox itself. TraceGL works by instrumenting all of your code so it knows when calls took...
Apr 23rd
29 notes
Link: Excellent Article Clarifying Mozilla's...
John Resig has written an excellent article clarifying some of the questions that have arisen over the past few weeks regarding Mozilla’s asm.js project. If you haven’t heard of it already, asm.js is a highly optimizable subset of JavaScript designed mostly for compilers like Emscripten. I wrote an article about it a few weeks ago when the spec was first released right here on this...
Apr 3rd
8 notes
March 2013
2 posts
An Iron Man Like 3d Hologram Controlled by Leap...
The Leap Motion is a very cool piece of technology.  It’s a small $80 box that you can put on your desk to control an ordinary computer using hand motions.  It’s extremely accurate, allowing for very fine motor control using all of your fingers.  If you haven’t seen it, be sure to check it out.  I’m definitely getting in line for one to play with myself. Robbie...
Mar 7th
79 notes
Rawson.js: A JavaScript Camera RAW File Viewer...
Rawson.js, by Franz Buchinger, is a JavaScript renderer for RAW image files in the browser.  It uses an Emscripten port of the dcraw C library to JavaScript to render in a canvas element.  Rawson.js can also extract metadata from RAW images, as you can see in the demo. Thanks to the dcraw C library, Rawson.js enables viewing of RAW images from over 500 different cameras and many file types....
Mar 5th
18 notes
February 2013
9 posts
Parallel.js: A JavaScript Multicore Processing...
Parallel.js is a very nice looking wrapper around JavaScript Web Workers making some interesting applications of multicore/parallelized processing in JavaScript much easier.  Usually with Web Workers, you must write a totally separate script and load it into the worker thread.  This isn’t very convenient in some cases, especially when you need to share code between the main and worker...
Feb 26th
27 notes
Holla: A Sugary API Abstraction for WebRTC Voice...
I posted about PeerJS recently, which is a nice API on top of WebRTC for peer-to-peer networking of arbitrary data.  However, one of the main selling points for WebRTC is its voice and video calling support.  Holla is a JavaScript library that aims to make working with WebRTC’s voice and video calling APIs much easier.  WebRTCs APIs are pretty low level and not something everyone wants to...
Feb 19th
23 notes
asm.js: A Low Level, Highly Optimizable Subset of...
David Herman, Luke Wagner, and Alon Zakai (also the developer of Emscripten) of Mozilla have been working on the asm.js spec, which aims to be a subset of the JavaScript language that can be highly optimized after you have opted in.  It is designed mostly for compilers like Emscripten to target, but the best part is that it’s backwards compatible with the existing JS syntax since it is a...
Feb 18th
28 notes
Qt GUI Toolkit Ported to JavaScript via Emscripten
We have seen a lot of projects get compiled to JavaScript via Emscripten, including LLVM itself, but nothing quite as complicated and impressive as emscripten-qt, a port of the Qt cross platform GUI toolkit to JavaScript using Emscripten.  Qt already works on many platforms natively including most desktop operating systems and some mobile ones as well, but thanks to Emscripten it can now work in...
Feb 15th
23 notes
PeerJS: A Peer to Peer Networking Library in...
I just caught wind of PeerJS, a project that makes peer to peer networking using the new WebRTC browser APIs easier.  WebRTC is extremely cutting edge and the library currently only works in Chrome Canary and Dev Channel, so take this with a grain of salt but it is exciting to see cutting edge libraries like this. PeerJS actually consists of two parts: the client side script that communicates...
Feb 14th
27 notes
Node.js Source Map Support for Better Compiled...
Evan Wallace, who’s work I’ve covered several times before has been working on a module to add source map support to Node.js.  Source maps will be really important for debugging compiled to JavaScript languages like CoffeeScript, as well as for debugging minified or concatenated production JavaScript. As their name implies, source maps provide a mapping from the compiled code the...
Feb 8th
5 notes
IDBWrapper: A Cross Browser IndexedDB Wrapper for...
Jens Arps has been working on IDBWrapper, a JavaScript library that wraps the IndexedDB API and makes it much easier to work with.  IndexedDB is very low level and perhaps one of the hardest browser APIs to deal with, so various wrappers are necessary to make it useful to most people. IndexedDB is a JavaScript API found currently in Firefox, Chrome, and IE10 that implements a client side data...
Feb 6th
10 notes
Using WebGL for High Performance JavaScript...
Florian Boesch has been working on webgl-heatmap.js, a library for rendering heatmaps using JavaScript and WebGL.  As he explains in his blog post about it, he was looking at other heatmap drawing libraries out there and found that they weren’t fast enough.  Most other libraries were just using regular old 2d canvases, but he found that when you have hundreds of thousands of points to draw,...
Feb 4th
28 notes
Cutting Edge Standards: Canvas Blending Modes &...
There have been a number of interesting cutting edge standards proposals that I’ve seen out there recently and thought worth sharing.  Several of these come from Adobe, which seems to really be investing themselves in the web platform recently.  They’re the ones behind the CSS regions and exclusions features that will offer really beautiful magazine-like text layout (e.g. flowing...
Feb 1st
20 notes
January 2013
21 posts
Verold Studio: A Realtime WebGL-based...
Ross McKegney, CTO of Verold, a Toronto based startup working on brining 3D experiences to the web submitted their browser-based collaborative 3D editor and it looks pretty awesome.  It allows 3D artists to import 3D object files (specifically OBJ, Collada, or FBX files) into their web interface and then collaboratively edit scenes and finally share or embed them. The editor works in real time,...
Jan 31st
16 notes
Howler.js: A Cross Browser JavaScript Audio...
Howler.js was just released this week and it looks like a nice way to control audio playback from your JavaScript application or game.  It defaults to using the Web Audio API over the HTML5 audio element for performance and control reasons.  For a game, the Web Audio API is really important for precise timing and effects, as compared with the HTML5 audio element which is more suited towards casual...
Jan 30th
27 notes
Teoria: A JavaScript Music Theory Library for...
There have been a lot of music related projects in the JavaScript community lately, some of which I’ve posted about.  Teoria is an interesting library for working with music theory in JavaScript, and would be a good fit for sheet music editors and viewers, and other music composition applications in the browser. Teoria has several object types: notes, chords, intervals, and scales.  Each...
Jan 28th
40 notes
MathBox.js: A 3d Math Visualization Library using...
I’ve always been impressed by the work of Steven Wittens, and MathBox.js is certainly no exception.  MathBox.js is a JavaScript library for creating high quality 3d math visualizations using WebGL.  It is built on top of Three.js and tQuery, which is a jQuery-like API for Three.js.  MathBox.js provides APIs to “visualize mathematical relationships and animate them smoothly”....
Jan 25th
38 notes
Magic Xylophone: A Camera Controlled Virtual...
Magic Xylophone is a getUserMedia and Web Audio API demo that lets you control a virtual xylophone by moving your hands.  It draws an image of the xylophone keys on top of the live video feed from your webcam, performs some motion detection on the video feed, and detects when your image intersects with any of the keys.  Then it generates audio using the Web Audio API for any of the keys you press,...
Jan 23rd
16 notes
Firefox OS Gets Real with Developer Preview...
Mozilla has been working hard on Firefox OS, their mobile operating system using web technologies as the primary application platform.  Today they have announced that developer preview devices will be available soon.  Billed as the Geeksphone, these devices actually look pretty good specs wise, including a Snapdragon processor, an 8 MB camera, and a 4.3” screen for the Peak model and...
Jan 22nd
28 notes
OMGIF Animated GIF Encoder, MEGA's JavaScript...
OMGIF! An Animated GIF Encoder in JavaScript Dean McNamee wrote an animated GIF encoder in JavaScript, working anywhere JS runs including the browser and Node.js.  You can add multiple frames and encode your GIFs right in the browser. Woo! MEGA’s JavaScript Encryption You may or may not have heard that Kim Dotcom’s new file hosting site MEGA (née Megaupload) has launched over the weekend.  They...
Jan 21st
29 notes
Basket.js: A JavaScript Loader With...
Basket.js is an interesting project that caches JavaScript files in localStorage for subsequent requests rather than relying on the browser’s built-in caching features.  I’ve long thought about doing something like this using the FileSystem API, but localStorage is probably a better idea (at least for fallback) since it is supported everywhere (even IE8). Why do this and not just...
Jan 18th
20 notes
WebDriver API Draft Published, Enables Remote...
The W3C just published a draft of the WebDriver API, which will enable browser and platform agnostic control over browsers for automated testing.  The API is being specified by editors from Facebook and Mozilla, and looks to be a fairly nice way to write scripts to control browser behavior, DOM manipulation and inspection, and more from a separate controlling process.  This will make it possible...
Jan 17th
12 notes
Voxel.js: A Minecraft-like Block Based Game Engine...
Max Ogden and James Halliday (probably better known as substack on the internets) have been working on voxel.js, which is a block based game engine for the browser built with three.js, WebGL, and an interesting combination of Node.js based tools.  The engine is built of several small components: voxel-engine: the main module for building voxel games - you can plug any voxel module into the...
Jan 16th
32 notes
jQuery 1.9 and 2.0-beta Released, Drops IE 6-8...
In an interesting turn of events, jQuery 2.0 will drop support for Internet Explorer versions 6 through 8, leaving only IE 9 and 10 supported.  jQuery 2.0 beta, along with 1.9 final were released today, and it seems we’re coming to the end of an era of sorts.  jQuery 1.9 will be the last version to support old IE versions, so if you have an app that needs to support those browsers, you will...
Jan 15th
36 notes
The WebSpeech API Enables Voice Recognition and...
The new WebSpeech API, driven by Google but supported by at least Apple and perhaps other browser vendors is yet another interesting API for JavaScript applications that will enable some pretty amazing stuff in the future.  The API adds support for both voice recognition as well as speech synthesis to JavaScript. You may remember that Chrome had added support for an additional form input...
Jan 14th
16 notes
VexFlow: A Music Notation Language and Renderer...
I mentioned the precursor to VexFlow a long time ago, but I think it is worth revisiting since it has had many updates since then.  VexFlow is a music notation renderer written in JavaScript supporting both Canvas and SVG backends.  VexTab is a language that goes along with VexFlow for simply describing music notation using a simple textual language. As you can see from the below screenshot, it...
Jan 11th
31 notes
MIDI.js: A SoundFont-based MIDI Sequencer in...
MIDI.js isn’t particularly new, but it just came up again and I haven’t talked about it before.  It is an entire MIDI sequencer written in JavaScript, from Soundfont to speakers using the Web Audio API.  There are a number of demos available on the website which show off the library, including simple MIDI players, visualizations, virtual instruments and more. MIDI.js works by...
Jan 10th
23 notes
PolyCrypt: A WebCrypto API Polyfill In JavaScript...
The W3C is working on a cryptography API for JavaScript, which will enable JavaScript to perform “basic cryptographic operations in web applications, such as hashing, signature generation and verification, and encryption and decryption.  Additionally, it describes an API for applications to generate and/or manage the keying material necessary to perform these operations. Uses for this API...
Jan 9th
22 notes
Firefox 18 Released with 25% Faster IonMonkey JS...
Browser releases are always exciting for web developers, and Firefox 18 is no exception.  Coming just seven weeks after Firefox 17, version 18 brings many new features for developers and users alike. The first major feature is the new IonMonkey JavaScript engine, which Mozilla claims is up to 25% faster than the old engine.  It works by first translating JavaScript to an intermediate...
Jan 8th
14 notes
Badass JS Roundup: Literate CoffeeScript,...
Today I have a little roundup of a few cool things I’ve seen around the web recently.  If you think I missed something awesome, please submit it and I might feature it in the future! Literate CoffeeScript Literate programming is an approach to programming introduced by Donald Knuth in the 1980s that seems to be getting a bit of a comeback lately.  A so-called literate program is a program...
Jan 8th
15 notes
The JavaScript DSP API, RiverTrail, and the Future...
A few months ago, Opera drafted a spec for a new DSP (Digital Signal Processing) API for JavaScript.  This API would enable access to special vector instructions available to modern processors from JavaScript, and could possibly enable speedups of vectorizable JavaScript code.  Instead of writing a for-loop to do the same computation to every element in an array in serial, you could call a method...
Jan 4th
21 notes
LLVM.js: LLVM Itself Compiled to JavaScript via...
Whoa, now this is a cool idea.  The Emscripten guys are back at it again compiling LLVM itself to JavaScript to run in the browser.  Now you can compile and run LLVM IR assembly directly in the browser using LLVM.js. Emscripten, for those that don’t know is an LLVM bytecode to JavaScript compiler.  LLVM is a compiler backend for many languages like C and C++ via the Clang compiler,...
Jan 3rd
24 notes
Qtzweb: A Quartz Composer to WebGL & JavaScript...
Cody Brocious of Accuvant LABS has been working on Qtzweb, a Quartz Composer to WebGL compiler.  Quartz Composer, for those who don’t know, is a node-based visual programming environment from Apple included with the Mac developer tools.  You connect together various nodes which represent sources and effects and can very quickly design cool visualizations and the like.  On the Mac, you can...
Jan 2nd
30 notes
glMatrix 2.0, Ember Data, Continuum ES6 VM, and...
Happy New Year!  I am, once again, going to try to blog more this year.  The posts will perhaps be shorter, but I’m shooting for 4-5 posts a week so we’ll see how it goes. glMatrix 2.0 Released Just today version 2.0 of the glMatrix library was released.  If you haven’t heard of it already, glMatrix is a high performance vector and matrix math library in JavaScript, mostly for...
Jan 1st
12 notes
October 2012
5 posts
1 tag
Badass JavaScript News Roundup
This is a roundup of some of the news and cool things I’ve found recently.  Let me know what I missed in the comments and don’t forget to update your RSS subscription to rss.badassjs.com instead of the old FeedBurner URL.  More info here.  Thanks! New Collaborative Docs Site WebPlatform.org Launches Fresh out the gate this morning, the W3C, Apple, Adobe, Facebook, Google and many...
Oct 8th
27 notes
1 tag
Pedalboard.js: A JavaScript Guitar Effect...
Audio in JavaScript is kind of a brave new world at the moment, with the Web Audio API finally beginning to win the audio API wars (Firefox is working on implementing it).  The API has support in WebKit based browsers such as Chrome and Safari, and as of iOS 6, Mobile Safari as well. As developers begin to explore building audio applications in the browser, we are beginning to see more and more...
Oct 4th
40 notes
Doppio: A Java Virtual Machine, Compiler and...
There is no shortage of impressive things that have been done in JavaScript, and we’ve seen JVM implementations in JavaScript before as well.  However, Doppio appears to be the most complete and actively worked on project of the bunch. Basically, Doppio is a project to get Java running in the browser without plugins.  It includes an implementation of the Java Virtual Machine (VM), as well...
Oct 3rd
37 notes
Moving Off FeedBurner: Please Update Your RSS...
TL;DR - please update your RSS subscription URL to rss.badassjs.com. Thank you! Ever since I started this blog, I’ve used Google’s FeedBurner service as a way to track subscriptions to the RSS feed.  Unfortunately, it looks like FeedBurner is slowly coming to an end. Although Google has not yet announced anything to that effect, it is clear that the service is not being actively...
Oct 2nd
6 notes
TypeScript: Microsoft's New Typed JavaScript...
Microsoft is getting into the compile-to-JavaScript language game by announcing TypeScript today.  TypeScript is a “typed superset of JavaScript that compiles to plain JavaScript”, and Microsoft is billing it as “a language for application-scale JavaScript development”, though it’s not like we haven’t been able to build applications with normal JavaScript in the...
Oct 1st
19 notes
July 2012
3 posts
1 tag
The Badass JavaScript Roundup is Back!
Well it’s been far too long since I did a roundup of the awesome JavaScript that has been circulating the Internet lately, and it’s about time I changed that.  Dancer.js is a “high-level audio API, designed to make sweet visualizations” that made the rounds on hacker news a few weeks back.  It has a pretty sweet demo, so be sure to check it out! Sigma.js is another...
Jul 17th
45 notes
2 tags
Plucked HTML5 Audio Editor, and ThreeAudio.js...
We have two audio related items in the news today: the beginnings of an HTML5 audio editor called Plucked and a Three.js based audio visualization toolkit called ThreeAudio.js. Plucked Plucked is the beginnings of a basic HTML5 audio editor based on the Web Audio API, which means that at the moment, it only works in Chrome, WebKit nightly builds, and Safari 6 beta.  Although it says it can edit...
Jul 12th
23 notes
1 tag
AAC.js, the Latest Official.fm Labs JavaScript...
Official.fm Labs just released another JavaScript audio codec, and perhaps the next biggest in usage after MP3.  AAC.js is a pure JavaScript Advanced Audio Coding decoder built on Aurora.js.  AAC is now one of the most widely deployed audio codecs, and such names as the iTunes Store distribute music in the AAC format, so it’s great to have a decoder in JavaScript. AAC.js is another codec...
Jul 9th
24 notes
June 2012
2 posts
Shumway: Mozilla's Flash VM and Runtime in...
Mozilla Labs has been working on some pretty interesting projects recently, including PDF.js their PDF renderer in JavaScript, and now Shumway, their “experiment that explores building a faithful and efficient renderer for the SWF file format without native code assistance.” We have seen other experiments of this type including Tobias Schneider’s Gordon project a couple years...
Jun 18th
22 notes
FLAC.js, Aurora, and the Future of Web Audio
I don’t often toot my own horn on this blog, but I thought this was worth a mention.  Over at Official.fm Labs, we just released FLAC.js our JavaScript FLAC audio decoder, and Aurora.js, our framework to make building JS audio decoders easier.  Check out our blog post over there for more detailed info and the demo here, but the quick story is that we think the Web Audio API is a really...
Jun 15th
24 notes
April 2012
2 posts
The JSConf 2012 videos are being released!
Well the title pretty much says it all, but I thought I’d let everyone know that the JSConf 2012 videos are beginning to be released.  JSConf is one of the premier JavaScript conferences that always sells out within a few seconds, so if you didn’t make it this year, you’re in luck because they always record the talks and release them for free after the event.  I wasn’t...
Apr 25th
19 notes
WebKit.js: Yes it has finally happened! Browser...
I knew this was going to happen eventually, it was just a matter of time.  WebKit has been ported to JavaScript, and no, this is not just some Emscripten compile, it is a full hand port of the popular browser engine to JS.  WebKit.js uses WebGL as a rendering backend and basically enables developers to never worry about browser differences again since we can now control what browser our users are...
Apr 1st
79 notes
March 2012
2 posts
SQL.js: SQLite Compiled to JavaScript via...
Alon Zakai, the creator of Emscripten is back at it again, this time releasing SQL.js, which is a compilation of SQLite to JavaScript using his own tool.  The demo page shows it in use, and if you view source, just how easy he’s made it to use after it has been compiled.   var db = SQL.open(); var data = db.exec(command); You can run any SQL queries you can think of and it will work just...
Mar 6th
41 notes
First Look: Blossom - A SproutCore Spinoff Using...
SproutCore has always been an interesting project.  It is the application framework behind Apple’s impressive iCloud apps, and the MobileMe ones before that, as well as many other high profile projects.  The SproutCore view layer has gone through many revisions.  At one point it used Ruby templates combined with CSS, and then it switched to a JavaScript only system, which still used...
Mar 2nd
18 notes
February 2012
6 posts
1 tag
CoffeePhysics: A Fast New Physics Engine Written...
Justin Windle has just released a new physics engine called CoffeePhysics, which as it’s name states, is written in CoffeeScript.  It is quite lightweight (minified, it’s just 8KB), but also very powerful. There are a number of demos that show the performance and features of the library, including attraction, collision, cloth simulation, a balloon of balls around your mouse, and a...
Feb 29th
64 notes
Badass JavaScript Roundup #8: Mobile, mobile,...
Welcome back to the Badass JavaScript roundup series.  Been busy recently, so sorry about the lack of posts.  Let’s jump right in! PhoneGap has become an Apache incubator project called Cordova, with a nice website and everything.  Be sure to check that out if you’re into developing mobile web apps. Tower.js is an interesting take on frameworks for Node.js, and in fact looks almost...
Feb 27th
19 notes